本教學課程將介紹地理空間分析。地理空間分析可讓您輕鬆在 BigQuery 中分析及視覺化地理空間資料。
目標
在本教學課程中,您將執行下列作業:
- 使用地理空間分析函式將經度與緯度的資料欄轉換為地理點
- 執行查詢以繪製颶風路徑
- 在 BigQuery Geo Viz 中以視覺化的方式呈現結果
費用
BigQuery 是一種付費產品,您在這個教學課程中將會產生 BigQuery 使用費。BigQuery 提供部分免費資源,但有一定限度。詳情請參閱「BigQuery 免費作業和免費級別」。
事前準備
開始本教學課程之前,請使用 Google Cloud 主控台建立或選取專案。
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
- 新專案會自動啟用 BigQuery。如要在現有專案中啟用 BigQuery,請前往
Enable the BigQuery API.
- 選用:為專案啟用計費功能。如果您不想啟用帳單功能或提供信用卡,本文件中的步驟仍可正常運作。BigQuery 會提供沙箱,讓您執行這些步驟。詳情請參閱「啟用 BigQuery 沙箱」。
匯出樣本資料
本教學課程使用 Google Cloud Public Dataset Program 提供的資料集。公開資料集是儲存在 BigQuery 中且可供一般大眾使用的任何資料集。公開資料集是在 BigQuery 託管的資料集,讓您能夠存取及整合到應用程式中。Google 為這些資料集的儲存空間付費,並透過專案提供資料的公開存取權。您只需要支付資料查詢費用 (每月前 1 TB 免費,相關規定請參閱查詢費率詳情)。
全球颶風軌跡 (IBTrACS) 資料集
NOAA 的 International Best Track Archive for Climate Stewardship (IBTrACS) 提供全球熱帶氣旋 (TC) 軌跡上的歷史位置和強度。熱帶氣旋在北大西洋和東北太平洋海盆稱為颶風,在西北太平洋海盆稱為颱風,在南北印度洋海盆稱為旋風,而在西南太平洋海盆則稱之為熱帶氣旋。
IBTrACS 收集各地國際監測中心回報的 TC 資料。國際監測中心負責預測和回報 TC 資訊,也包含部分重要歷史資料集。IBTrACS 包含來自 9 個不同國家/地區的資料。歷史上,描述這些系統的資料已涵蓋了軌跡和強度的最佳預測資料 (因此有「最佳軌跡」之說)。
您可以在 Google Cloud 主控台中查看 hurricanes
資料表的詳細資料,開始探索這份資料:
查詢 2017 年瑪莉亞颶風的路徑
在本教學課程的這個部分,您將執行 GoogleSQL 查詢,找出 2017 年颶風瑪麗亞的路徑。如果要繪製該颶風的路徑,您可以查詢該颶風在不同時間點的位置。
查詢詳細資料
下列 GoogleSQL 查詢可用於查詢瑪莉亞颶風的路徑。
SELECT ST_GeogPoint(longitude, latitude) AS point, name, iso_time, dist2land, usa_wind, usa_pressure, usa_sshs, (usa_r34_ne + usa_r34_nw + usa_r34_se + usa_r34_sw)/4 AS radius_34kt, (usa_r50_ne + usa_r50_nw + usa_r50_se + usa_r50_sw)/4 AS radius_50kt FROM `bigquery-public-data.noaa_hurricanes.hurricanes` WHERE name LIKE '%MARIA%' AND season = '2017' AND ST_DWithin(ST_GeogFromText('POLYGON((-179 26, -179 48, -10 48, -10 26, -100 -10.1, -179 26))'), ST_GeogPoint(longitude, latitude), 10) ORDER BY iso_time ASC
查詢子句會執行下列動作:
SELECT ST_GeogPoint(longitude, latitude) AS point, name, iso_time, dist2land, usa_wind, usa_pressure, usa_sshs, (usa_r34_ne + usa_r34_nw + usa_r34_se + usa_r34_sw)/4 AS radius_34kt, (usa_r50_ne + usa_r50_nw + usa_r50_se + usa_r50_sw)/4 AS radius_50kt
SELECT
子句會選擇風暴的全部天氣資料,然後使用ST_GeogPoint
函式,將latitude
和longitude
資料欄中的值轉換為GEOGRAPHY
類型 (資料點)。
FROM
bigquery-public-data.noaa_hurricanes.hurricanes
FROM
子句指定要查詢的資料表:hurricanes
。
WHERE name LIKE '%MARIA%' AND season = '2017' AND ST_DWithin(ST_GeogFromText('POLYGON((-179 26, -179 48, -10 48, -10 26, -100 -10.1, -179 26))'), ST_GeogPoint(longitude, latitude), 10)
WHERE
子句只會篩選出對應至 2017 年颶風季節中瑪利亞颶風的大西洋資料點資料。
ORDER BY iso_time ASC
ORDER BY
子句對資料點進行排序,形成按時間順序排列的風暴路徑。
執行查詢
如何使用 Google Cloud 控制台執行查詢:
前往 Google Cloud 控制台的「BigQuery」頁面。
在「Query editor」(查詢編輯器) 文字區域中輸入下列 GoogleSQL 查詢。
SELECT ST_GeogPoint(longitude, latitude) AS point, name, iso_time, dist2land, usa_wind, usa_pressure, usa_sshs, (usa_r34_ne + usa_r34_nw + usa_r34_se + usa_r34_sw)/4 AS radius_34kt, (usa_r50_ne + usa_r50_nw + usa_r50_se + usa_r50_sw)/4 AS radius_50kt FROM `bigquery-public-data.noaa_hurricanes.hurricanes` WHERE name LIKE '%MARIA%' AND season = '2017' AND ST_DWithin(ST_GeogFromText('POLYGON((-179 26, -179 48, -10 48, -10 26, -100 -10.1, -179 26))'), ST_GeogPoint(longitude, latitude), 10) ORDER BY iso_time ASC
按一下「執行」。
查詢需要一些時間才會完成。查詢執行完畢之後,您的結果會呈現於「Query results」(查詢結果) 窗格中。
在 Geo Viz 中將查詢結果視覺化
下一步,您會透過 BigQuery Geo Viz 將查詢結果視覺化。BigQuery Geo Viz 是一個網頁工具,使用 Google Maps API 在 BigQuery 中顯示地理空間資料。
啟用 Geo Viz 並進行身分驗證
在您使用 Geo Viz 之前,您必須在 BigQuery 中對資料進行身分驗證並授予存取權。
如何設定 Geo Viz:
開啟 Geo Viz 網頁版工具。
在第一步「Select data」(選取資料) 中按一下 [Authorize] (授權)。
在「Choose an account」(選擇帳戶) 對話方塊中,按一下您的 Google 帳戶。
在存取對話方塊中,按一下 [Allow] (允許) 以取得您 BigQuery 資料的 Geo Viz 存取權。
在 Geo Viz 中執行查詢
在您進行身分驗證並授予權限後,下一步是在 Geo Viz 中執行查詢。
執行查詢:
在第一步「Select data」(選取資料) 中,於「Project ID」(專案 ID) 欄位中輸入您的專案 ID。
在查詢視窗中,輸入下列 GoogleSQL 查詢。
SELECT ST_GeogPoint(longitude, latitude) AS point, name, iso_time, dist2land, usa_wind, usa_pressure, usa_sshs, (usa_r34_ne + usa_r34_nw + usa_r34_se + usa_r34_sw)/4 AS radius_34kt, (usa_r50_ne + usa_r50_nw + usa_r50_se + usa_r50_sw)/4 AS radius_50kt FROM `bigquery-public-data.noaa_hurricanes.hurricanes` WHERE name LIKE '%MARIA%' AND season = '2017' AND ST_DWithin(ST_GeogFromText('POLYGON((-179 26, -179 48, -10 48, -10 26, -100 -10.1, -179 26))'), ST_GeogPoint(longitude, latitude), 10) ORDER BY iso_time ASC
按一下「執行」。
查詢完成後,按一下「Show results」。您也可以按一下第二步的「資料」。
您會進入步驟二。在步驟二的「Geometry column」中,選擇 [point]。系統即會繪製對應至瑪利亞颶風路徑的資料點。
在 Geo Viz 中設定視覺化格式
「Style」(樣式) 區段會提供視覺化樣式清單以供您自訂。某些屬性僅適用於某些類型的資料。例如,circleRadius
僅會影響資料點。
系統支援的樣式屬性包含:
- fillColor:多邊形或是點的填充顏色。例如,可以使用「linear」或「interval」函式以數值來對應顏色漸層。
- fillOpacity:多邊形或是點的填充透明度。值必須在零至一的範圍內,其中
0
= 透明,且1
= 不透明。 - strokeColor:多邊形或線條的筆觸或外框顏色。
- strokeOpacity:多邊形或線條的筆觸或外框的透明度。值必須在零至一的範圍內,其中
0
= 透明,且1
= 不透明。 - strokeWeight:多邊形或線條的筆觸或外框寬度 (以像素為單位)。
- circleRadius:資料點的圓半徑 (以公尺為單位)。例如,「linear」函式能夠以數值對應資料點的大小,以建立散佈圖的樣式。
每種樣式可能得到全局值 (應用於每個結果) 或是資料導向值 (根據每個結果資料列的資料採取不同的應用方式)。針對資料導向值,以下的項目皆會影響其結果:
- 「function」:用於從欄位值計算樣式值的函式。
- 「identity」:每個欄位的資料值都做為樣式值使用。
- 「categorical」:將領域中列出的每個欄位的資料值以一對一的方式對應至範圍中的相應樣式。
- 「interval」:每個欄位的資料值會無條件捨去至領域中最接近的值,並依據範圍中對應的樣式進行樣式設定。
- 「linear」:每個欄位的資料值會線性內插於領域的值之間,並混合採用範圍中對應的樣式。
- 「field」:將資料中的指定欄位當成樣式函式的輸入使用。
- 「domain」:來自欄位的範例輸入值的已排序清單。範例輸入 (領域) 會根據指定的函式與範例輸出 (範圍) 配對,並用於推測所有輸入 (包括未列於領域中的輸入) 的樣式值。領域中的值必須要有相同的類型 (文字或數字等),做為您要進行視覺化之欄位的值。
- 「range」:樣式規則的範例輸出值清單。範圍中的值必須要有相同的類型 (顏色或數字),做為您要控制的樣式屬性。例如,
fillColor
屬性的範圍應該僅包含顏色。
如要將您的地圖進行格式化,請進行以下操作:
按一下第二步中的 [Add styles],或按一下第三步的 [Style]。
更換資料點的顏色。按一下 [fillColor]。
在「fillColor」面板中:
- 按一下 [Data driven]。
- 在「Function」(函式) 部分選擇 [linear]。
- 在「Field」(欄位) 部分,選擇
usa_wind
。 - 針對「Domain」(領域),分別在第一個和第二個方塊中輸入
0
和150
。 針對「Range」(範圍),按一下第一個方塊,然後在「Hex」方塊中輸入
#0006ff
;按一下第二個方塊,然後輸入#ff0000
。資料點的顏色就會因風速不同而改變。藍色代表風速較弱,紅色代表風速較強。
查看您的地圖。將游標懸停在其中一個資料點上,即會顯示該點的天氣資料。
按一下 [fillOpacity]。
在「Value」(值) 欄位中,輸入 .5。
查看您的地圖。資料點的填充顏色目前為半透明。
根據颶風半徑,變更資料點的大小。按一下 [circleRadius]。
在「circleRadius」面板中:
- 按一下「Data driven」。
- 在「Function」(函式) 部分選擇 [linear]。
- 在「Field」(欄位) 部分,選擇
radius_50kt
。 - 在「Domain」(領域) 部分,分別在第一個和第二個方塊中輸入
0
和135
。 在「Range」(範圍) 部分,分別在第一個和第二個方塊中輸入
5
和135000
。
查看您的地圖。現在每個資料點的半徑都跟颶風的半徑對應。
關閉 Geo Viz。
清除所用資源
如要避免系統向您的 Google Cloud 帳戶收取本教學課程中所用資源的相關費用,請刪除含有該項資源的專案,或者保留專案但刪除個別資源。
- 您可以刪除建立的專案。
- 或者您可以保留該專案以備將來使用。
如要刪除專案,請進行以下操作:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
後續步驟
- 如要進一步瞭解如何視覺化地理空間分析選項,請參閱「視覺化地理空間資料」。
- 如要使用地理空間資料,請參閱「使用地理空間資料」。
- 如要進一步瞭解可在地理空間分析中使用的地理位置函式,請參閱「GoogleSQL 中的地理位置函式」。