使用 BigQuery GIS 绘制飓风的路径

本教程为您介绍 BigQuery GIS。借助 BigQuery GIS,您可以轻松分析并直观呈现 BigQuery 中的地理空间数据。

目标

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

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

费用

本教程使用 Google Cloud Platform 的计费组件,包括:

  • Google BigQuery

您需要支付以下费用:

  • 查询 BigQuery 公共数据集中的数据。
    • 每月前 1 TB 免费。
    • 如果您使用固定价格,则查询费用包含在每月固定价格中。

准备工作

  1. 登录您的 Google 帐号。

    如果您还没有 Google 帐号,请注册新帐号

  2. 选择或创建 Google Cloud Platform 项目。

    转到“管理资源”页面

  3. 确保您的 Google Cloud Platform 项目已启用结算功能。

    了解如何启用结算功能

  4. 系统会自动为新项目启用 BigQuery。 如需在现有项目中启用 BigQuery,请转至 启用BigQuery API。

    启用 API

浏览示例数据

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

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

全球飓风轨迹 (IBTrACS)

全球热带气旋 (TC) 轨迹的历史位置和强度由 NOAA 的国际台风最佳路径资料气候管理会议 (IBTrACS) 提供。热带气旋在北大西洋和东北太平洋海盆称为飓风,在西北太平洋海盆称为台风,在印度洋北部和南部海盆称为气旋,在西南太平洋海盆称为热带气旋。

IBTrACS 收集国际监测中心报告的 TC 相关数据,这些监测中心负责预测和报告 TC,IBTrACS 还会包括一些重要的历史数据集。目前,IBTrACS 包括来自 9 个不同国家/地区的数据。从历史上看,描述这些系统的数据包括了对其轨迹和强度的最佳估计(因此称为“最佳轨迹”)。

您可以在 GCP Console 中查看 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 网页界面运行查询:

  1. 转到 GCP Console。

    转到 GCP Console

  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. 点击运行

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

    飓风玛丽亚查询结果

在 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. 在第一步选择数据下,点击授权

    Geo Viz 授权按钮

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

    选择帐号对话框

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

    允许访问对话框

对 BigQuery GIS 数据运行标准 SQL 查询

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

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

  1. 第一步是选择数据,在项目 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. 点击运行

  4. 查询完成后,点击查看结果。您还可以点击第二步定义列 (Define columns)。

    查看结果

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

    映射的结果

设置可视化的格式

“样式”部分提供了可供自定义的视觉样式列表。某些属性仅适用于某些类型的数据。例如,circleRadius 仅影响点。

支持的样式属性包括:

  • fillColor - 多边形或点的填充颜色。例如,“linear”或“interval”函数可用于将数值映射到颜色的渐变。
  • fillOpacity - 多边形或点的填充透明度。值必须在 0 到 1 的范围内,其中 0 = 透明,1 = 不透明。
  • strokeColor - 多边形或线的笔画或轮廓颜色。
  • strokeOpacity - 多边形或线的笔画或轮廓透明度。值必须在 0 到 1 的范围内,其中 0 = 透明,1 = 不透明。
  • strokeWeight - 多边形或线的笔画或轮廓宽度(以像素为单位)。
  • circleRadius - 表示点的圆的半径(以像素为单位)。例如,“linear”函数可用于将数值映射到点大小,以创建散点图样式。

每种样式都可能被赋予全局值(应用于每个结果)或数据驱动的值(根据每个结果行中的数据以不同方式应用)。对于数据驱动的值,以下内容将用于确定结果:

  • function - 用于根据字段值计算样式值的函数。
  • identity - 每个字段的数据值均用作样式值。
  • categorical - 区间中列出的每个字段的数据值都将与范围内的相应样式一对一映射。
  • interval - 每个字段的数据值均向下舍为区间中最接近的值,然后将样式设置为范围内的相应样式。
  • linear - 使用区间中的值对每个字段的数据值进行线性插值,然后将样式设置为范围内相应样式的混合样式。
  • field - 数据中的指定字段用作样式函数的输入。
  • domain - 来自字段的样本输入值的有序列表。样本输入(区间)基于给定函数与样本输出(范围)配对,并用于推断所有输入(即使未在区间中列出)的样式值。区间中的值必须与要可视化的字段的值具有相同类型(文本、数字等)。
  • range - 样式规则的样本输出值列表。范围中的值必须与要控制的样式属性具有相同类型(颜色或数字)。例如,fillColor 属性的范围应仅包含颜色。

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

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

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

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

    1. 点击数据驱动 (Data driven)。
    2. 对于函数,选择线性
    3. 对于字段,选择 usa_wind
    4. 对于网域,在第一个框中输入 0,在第二个框中输入 150
    5. 对于范围,点击第一个框并在十六进制颜色值框中输入 #0006ff。点击第二个框并输入 #ff0000。这会根据风速更改点的颜色。蓝色用于指示较弱的风,红色用于指示较强的风。

      填充颜色

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

    地图点详情

  5. 点击 fillOpacity

  6. 字段中,输入 .5

    填充透明度

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

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

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

    1. 点击数据驱动 (Data driven)。
    2. 对于函数,选择线性
    3. 对于字段,选择 radius_50kt
    4. 对于网域,在第一个框中输入 0,在第二个框中输入 135
    5. 对于范围,在第一个框中输入 5,在第二个框中输入 15

      圆半径

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

    最终地图

  11. 关闭 Geo Viz。

清理

为避免因本教程中使用的资源而导致我们向您的 Google Cloud Platform 帐号收取费用,请执行以下操作:

  • 您可以删除自己创建的项目。
  • 或者您可以保留该项目以供将来使用。

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

  1. 在 GCP Console 中,转到“项目”页面。

    转到“项目”页面

  2. 在项目列表中,选择要删除的项目,然后点击删除
  3. 在对话框中输入项目 ID,然后点击关闭以删除项目。

后续步骤

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面