使用 BigQuery GIS 繪製颶風路徑

本教學課程將為您介紹 BigQuery GIS。BigQuery GIS 讓您可以在 BigQuery 中輕鬆進行分析,並將地理空間資料視覺化。

目標

在本教學課程中,您將執行下列作業:

  • 使用 BigQuery GIS 函式將經度與緯度的資料欄轉換為地理點
  • 執行查詢以繪製颶風路徑
  • BigQuery Geo Viz 中以視覺化的方式呈現結果

費用

本教學課程使用的 Google Cloud Platform 收費元件包括:

  • BigQuery

您需要支付以下費用:

  • 在 BigQuery 的公開資料集中查詢資料
    • 每個月前 1TB 免費
    • 如果您使用固定費率,則查詢費用會包含在每個月的固定費率中。

事前準備

  1. 登入您的 Google 帳戶。

    如果您沒有帳戶,請申請新帳戶

  2. 選取或建立 Google Cloud Platform 專案。

    前往「Manage resources」(管理資源) 頁面

  3. 請確認您已啟用 Google Cloud Platform 專案的計費功能。

    瞭解如何啟用計費功能

  4. 新專案會自動啟用 BigQuery。如要在現有專案中啟用 BigQuery,請前往 啟用BigQuery API。

    啟用 API

匯出樣本資料

本課程使用透過 Google Cloud Platform 公開資料集方案提供的資料集。公開資料集是儲存在 BigQuery 中且可供一般大眾使用的任何資料集。公開資料集是在 BigQuery 託管的資料集,讓您能夠存取及整合到應用程式中。Google 為這些資料集的儲存空間付費,並透過專案提供資料的公開存取權。您只需要支付資料查詢費用 (每月前 1 TB 免費,相關規定請參閱查詢費率詳情)。

全球颶風軌跡 (IBTrACS) 資料集

全球颶風軌跡 (IBTrACS)

NOAA 的 International Best Track Archive for Climate Stewardship (IBTrACS) 提供全球熱帶氣旋 (TC) 軌跡上的歷史位置和強度。熱帶氣旋在北大西洋和東北太平洋海盆稱為颶風,在西北太平洋海盆稱為颱風,在南北印度洋海盆稱為旋風,而在西南太平洋海盆則稱之為熱帶氣旋。

IBTrACS 收集各地國際監測中心回報的 TC 資料。國際監測中心負責預測和回報 TC 資訊,也包含部分重要歷史資料集。最近 IBTrACS 收錄了 9 個國家/地區的資料。歷史上,描述這些系統的資料已涵蓋了軌跡和強度的最佳預測資料 (因此有「最佳軌跡」之說)。

您可以在 GCP 主控台中查看 hurricanes 資料表的詳細資料,開始探索這份資料:

前往颶風結構定義

查詢 2017 年瑪莉亞颶風的路徑

在本節教學課程中,您將執行標準 SQL 查詢來尋找 2017 年瑪利亞颶風的路徑。如果要繪製該颶風的路徑,您可以查詢該颶風在不同時間點的位置。

查詢詳細資料

以下的標準 SQL 查詢將用於尋找瑪利亞颶風的路徑。

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 函式,將 latitudelongitude 資料欄中的值轉換為 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 子句對資料點進行排序,形成按時間順序排列的風暴路徑。

執行查詢

如何使用 GCP Console 中的 BigQuery 網頁版 UI 執行查詢:

  1. 前往 GCP Console。

    前往 GCP Console

  2. 在「Query editor」(查詢編輯器) 文字區域中輸入以下標準 SQL 查詢。

    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
    
  3. 按一下 [Run] (執行)

    查詢需要一些時間才會完成。查詢執行完畢之後,您的結果會呈現於「Query results」(查詢結果) 窗格中。

    瑪莉亞颶風查詢結果

在 Geo Viz 中將查詢結果視覺化

下一步,您會透過 BigQuery Geo Viz 將查詢結果視覺化。BigQuery Geo Viz 是一個網頁工具,使用 Google Maps API 在 BigQuery 中顯示地理空間資料。

啟用 Geo Viz 並進行身分驗證

在您使用 Geo Viz 之前,您必須在 BigQuery 中對資料進行身分驗證並授予存取權。

如何設定 Geo Viz:

  1. 開啟 Geo Viz 網頁版工具。

    開啟 Geo Viz 網頁版工具。

  2. 在第一步「Select data」(選取資料) 中按一下 [Authorize] (授權)

    Geo Viz 授權按鈕

  3. 在「Choose an account」(選擇帳戶) 對話方塊中,按一下您的 Google 帳戶。

    選擇帳戶對話框

  4. 在存取對話方塊中,請按一下 [Allow] (允許) 以將您的 BigQuery 資料存取權提供給 Geo Viz。

    允許存取對話框

對 BigQuery GIS 資料執行標準 SQL 查詢

在您進行身分驗證並授予權限後,下一步是在 Geo Viz 中執行查詢。

執行查詢:

  1. 在第一步「Select data」中,於「Project ID」欄位中輸入您的專案 ID。

  2. 在查詢的視窗中,請輸入以下標準 SQL 查詢。

    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
    
  3. 按一下 [Run]

  4. 當查詢完畢之後,按一下 [See results]。您也可以點選第二步的 [Define columns]

    查看結果

  5. 您會進入步驟二。在步驟二的「Geometry column」中,選擇 [point]。系統即會繪製對應至瑪利亞颶風路徑的資料點。

    地圖上的結果

設定您的視覺化格式

在樣式的部分,它提供您自定義的視覺化樣式列表。某些屬性僅適用於某些類型的資料。例如 circleRadius 僅會影響資料點。

系統支援的樣式屬性包含:

  • fillColor:多邊形或是點的填充顏色。例如,可以使用「linear」或「interval」函式以數字值來對應顏色漸層。
  • fillOpacity:多邊形或是點的填充透明度。值必須在零和一的範圍內,其中 0 = 透明,且 1 = 不透明。
  • strokeColor:多邊形或線條的筆觸或外框顏色。
  • strokeOpacity:多邊形或線條的筆觸或外框的透明度。值必須在零和一的範圍內,其中 0 = 透明,且 1 = 不透明。
  • strokeWeight:多邊形或線條的筆觸或外框寬度 (以像素為單位)。
  • circleRadius:資料點的圓半徑 (以像素為單位)。例如,「linear」函式能夠以數字值對應資料點的大小,以建立散佈圖的樣式。

每種樣式可能得到全局值 (應用於每個結果) 或是資料導向值 (根據每個結果資料列的資料採取不同的應用方式)。針對資料導向值,以下的項目皆會影響其結果:

  • 「function」:用於從欄位值計算樣式值的函式。
  • 「identity」:每個欄位的資料值都做為樣式值使用。
  • 「categorical」:將領域中列出的每個欄位的資料值以一對一的方式對應至範圍中的相應樣式。
  • 「interval」:每個欄位的資料值會無條件捨去至領域中最接近的值,並依據範圍中對應的樣式進行樣式設定。
  • 「linear」:每個欄位的資料值會線性內插於領域的值之間,並混合採用範圍中對應的樣式。
  • 「field」:將資料中的指定欄位當成樣式函式的輸入使用。
  • 「domain」:來自欄位的範例輸入值的已排序清單。範例輸入 (領域) 會根據指定的函式與範例輸出 (範圍) 配對,並用於推測所有輸入 (包括未列於領域中的輸入) 的樣式值。領域中的值必須要有相同的類型 (文字或數字等),做為您要進行視覺化之欄位的值。
  • 「range」:樣式規則的範例輸出值清單。範圍中的值必須要有相同的類型 (顏色或數字),做為您要控制的樣式屬性。例如,fillColor 屬性的範圍應該僅包含顏色。

如要將您的地圖進行格式化,請進行以下操作:

  1. 按一下第二步中的 [Add styles],或按一下第三步的 [Style]

  2. 更換資料點的顏色。按一下 [fillColor]

  3. 在「fillColor」面板中:

    1. 按一下 [Data driven]
    2. 在「Function」中選擇 [linear]
    3. 在「Field」中選擇 usa_wind
    4. 在「Domain」中,分別於第一個和第二個方塊輸入 0150
    5. 在「Range」中,按一下第一個方塊,然後在「Hex」方塊中輸入 #0006ff;按一下第二個方塊,然後輸入 #ff0000。資料點的顏色就會因風速不同而改變。藍色代表風速較弱,紅色代表風速較強。

      填滿顏色

  4. 查看您的地圖。將游標懸停在其中一個資料點上,即會顯示該點的天氣資料。

    地圖資料點的詳細資訊

  5. 按一下 [fillOpacity]

  6. 在「Value」(值) 欄位中,輸入 .5

    填滿顏色不透明度

  7. 查看您的地圖。資料點的填充顏色目前為半透明。

  8. 根據颶風半徑,變更資料點的大小。 點選 [circleRadius]

  9. 在「circleRadius」面板中:

    1. 按一下「Data driven」
    2. 在「Function」中選擇 [linear]
    3. 在「Field」中選擇 radius_50kt
    4. 在「Domain」中,分別於第一個和第二個方塊輸入 0135
    5. 在「Range」中,分別於第一個和第二個方塊輸入 515

      圓半徑

  10. 查看您的地圖。現在每個資料點的半徑都跟颶風的半徑對應。

    最終地圖

  11. 關閉 Geo Viz。

清除所用資源

如何避免系統向您的 Google Cloud Platform 帳戶收取您在本教學課程中使用資源的相關費用:

  • 您可以刪除您所建立的專案。
  • 或者您可以保留該專案以備將來使用。

若要刪除專案,請進行以下操作:

  1. 前往 GCP 主控台的「Projects」(專案) 頁面。

    前往專案頁面

  2. 在專案清單中選取要刪除的專案,然後按一下 [Delete] (刪除)
  3. 在對話方塊中輸入專案 ID,按一下 [Shut down] (關閉) 即可刪除專案。

相關資源

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁