使用地理空间分析绘制飓风路径


本教程将向您介绍地理空间分析。借助地理空间分析,您可以在 BigQuery 中轻松分析和直观呈现地理空间数据。

目标

在本教程中,您将执行以下操作:

  • 使用地理空间分析函数将纬度和经度列转换为地理位置点
  • 运行绘制飓风路径的查询
  • 在 BigQuery 中可视化您的结果
  • BigQuery Geo Viz 中可视化您的结果

费用

BigQuery 是一款付费产品,本教程中涉及的操作将产生 BigQuery 使用费。BigQuery 提供一些有特定限额的免费资源。如需了解详情,请参阅 BigQuery 免费操作和免费层级

准备工作

开始学习本教程前,请先使用 Google Cloud 控制台创建或选择项目。

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  4. 新项目会自动启用 BigQuery。如需在现有项目中启用 BigQuery,请前往
  5. Enable the BigQuery API.

    Enable the API

  6. 可选:为项目启用结算功能。如果您不想启用结算功能或提供信用卡,本文档中的步骤仍然有效。BigQuery 提供执行这些步骤的沙盒。如需了解详情,请参阅启用 BigQuery 沙盒
  7. 浏览示例数据

    本教程使用通过Google Cloud 公共数据集计划提供的数据集。 公共数据集是存储在 BigQuery 中且可供公众使用的任何数据集。公共数据集由 BigQuery 托管,可供您访问并集成到您的应用中。Google 会支付这些数据集的存储费用,并使用项目提供对数据的公开访问权限。您只需支付数据查询费用(每月前 1 TB 数据免费,具体以查询价格详情为准)。

    全球飓风轨迹 (IBTrACS) 数据集

    全球飓风轨迹 (IBTrACS) 数据集

    全球热带气旋 (TC) 轨迹的历史位置和强度由 NOAA 的 International Best Track Archive for Climate Stewardship (IBTrACS) 提供。热带气旋在北大西洋和东北太平洋海盆称为飓风,在西北太平洋海盆称为台风,在印度洋北部和南部海盆称为气旋,在西南太平洋海盆称为热带气旋。

    IBTrACS 收集国际监测中心报告的 TC 相关数据,这些监测中心负责预测和报告 TC,IBTrACS 还会包括一些重要的历史数据集。BTrACS 包括来自 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 函数将 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 子句会对这些点进行排列,形成按时间顺序排列的风暴路径。

    运行查询

    如需使用 Google Cloud 控制台运行查询,请执行以下操作:

    1. 前往 Google Cloud 控制台中的 BigQuery 页面。

      转到 BigQuery 页面

    2. 查询编辑器文本区域中输入以下 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
    3. 点击运行

      查询需要一些时间才能完成。查询运行后,结果将显示在查询结果窗格中。

      BigQuery 中的玛丽亚飓风查询结果

    在 BigQuery 中直观呈现查询结果

    如需在 BigQuery 中直观呈现结果,请按以下步骤操作:

    1. 如需在 BigQuery 中将结果可视化,请在查询结果窗格中点击可视化图表

    2. 对于数据列,请选择 usa_wind

      系统会显示一张地图,其中包含飓风随时间变化的位置点,并按风速的颜色渐变设置样式。

    3. 可选:如需调整点的可见性,请将最小值设置为 0,然后从颜色列表中选择其他颜色渐变。

    BigQuery 中的玛丽亚飓风查询结果可视化图表

    在 Geo Viz 中直观呈现查询结果

    您还可以使用 BigQuery Geo Viz(一种使用 Google Maps API 将 BigQuery 中的地理空间数据可视化的 Web 工具)将结果可视化。

    启动 Geo Viz 并进行身份验证

    在使用 Geo Viz 之前,您必须对 BigQuery 中的数据进行身份验证并授予访问权限。

    如需设置 Geo Viz,请执行以下操作:

    1. 打开 Geo Viz Web 工具。

      打开 Geo Viz Web 工具

    2. 在第一步选择数据 (Select data) 下,点击授权 (Authorize)。

      Geo Viz 授权按钮

    3. 选择账号对话框中,点击您的 Google 账号。

      选择账号对话框

    4. 在访问对话框中,点击允许以授予 Geo Viz 对 BigQuery 数据的访问权限。

      “允许 Geo Viz 访问”对话框

    在 Geo Viz 中运行查询

    进行身份验证并授予访问权限后,下一步就是在 Geo Viz 中运行查询。

    如需运行查询,请执行以下步骤:

    1. 第一步是选择数据,在项目 ID 字段中输入您的项目 ID。

    2. 在查询窗口中,输入以下 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
    3. 点击运行

    4. 查询完成后,点击显示结果。您还可以点击第二步数据

    5. 您将进入第二步。在第二步中,对于几何图形列 (Geometry column),选择。这绘制了与飓风玛丽亚的路径相对应的点。

      BigQuery Geo Viz 中的映射结果

    在 Geo Viz 中设置可视化内容的格式

    样式部分提供了可供自定义的视觉样式列表。如需详细了解样式属性和值,请参阅设置可视化图表的格式

    要设置地图格式,请执行以下操作:

    1. 点击第二步中的添加样式 (Add styles) 或点击第三步样式

    2. 更改点的颜色。点击 fillColor

    3. fillColor 面板中,执行以下操作:

      1. 点击数据驱动 (Data driven)。
      2. 函数 (Function) 部分,选择 linear
      3. 字段 (Field) 部分,选择 usa_wind
      4. 区间 (Domain) 部分,分别在第一个框和第二个框中输入 0150
      5. 范围 (Range) 部分,点击第一个框,并在十六进制颜色值 (Hex) 框中输入 #0006ff。然后点击第二个框并输入 #ff0000.系统即会根据风速更改点的颜色。蓝色代表风速较弱,红色代表风速较强。

        在 BigQuery Geo Viz 中添加填充颜色

    4. 检查地图。如果将鼠标指针悬停在其中一个点上,该点的天气数据即会显示。

      地图点详情

    5. 点击 fillOpacity

    6. 字段中,输入 .5

      在 BigQuery Geo Viz 中设置地图填充不透明度

    7. 检查地图。点的填充颜色现在为半透明。

    8. 根据飓风的半径更改点的大小。点击 circleRadius

    9. circleRadius 面板中,请执行以下操作:

      1. 点击数据驱动 (Data driven)。
      2. 函数 (Function) 部分,选择 linear
      3. 字段 (Field) 部分,选择 radius_50kt
      4. 区间 (Domain) 部分,分别在第一个框和第二个框中输入 0135
      5. 范围 (Range) 部分,分别在第一个框和第二个框中输入 5135000

        在 BigQuery Geo Viz 中添加圆半径

    10. 检查地图。现在,每个点的半径均对应于飓风的半径。

      BigQuery Geo Viz 最终地图

    11. 关闭 Geo Viz。

    清理

    为避免因本教程中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。

    • 删除您在教程中创建的项目。
    • 或者您可以保留该项目以供将来使用。

    如需删除项目,请执行以下操作:

    1. In the Google Cloud console, go to the Manage resources page.

      Go to Manage resources

    2. In the project list, select the project that you want to delete, and then click Delete.
    3. In the dialog, type the project ID, and then click Shut down to delete the project.

    后续步骤