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


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

目标

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

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

费用

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

准备工作

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

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  3. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  4. 新项目会自动启用 BigQuery。如需在现有项目中启用 BigQuery,请转到

    启用 BigQuery API。

    启用 API

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

浏览示例数据

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

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

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

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

IBTrACS 收集国际监测中心报告的 TC 相关数据,这些监测中心负责预测和报告 TC,IBTrACS 还会包括一些重要的历史数据集。目前,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 函数将 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 中的玛丽亚飓风查询结果

在 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 中设置可视化内容的格式

“样式”部分提供了可供自定义的视觉样式列表。某些属性仅适用于某些类型的数据。例如,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. 函数 (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. 在 Google Cloud 控制台中,进入管理资源页面。

    转到“管理资源”

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

后续步骤