本教程将向您介绍地理空间分析。借助地理空间分析,您可以在 BigQuery 中轻松分析和直观呈现地理空间数据。
目标
在本教程中,您将执行以下操作:
- 使用地理空间分析函数将纬度和经度列转换为地理位置点
- 运行绘制飓风路径的查询
- 在 BigQuery Geo Viz 中将结果可视化
费用
BigQuery 是一款付费产品,本教程中涉及的操作将产生 BigQuery 使用费。BigQuery 提供一些有特定限额的免费资源。如需了解详情,请参阅 BigQuery 免费操作和免费层级。
准备工作
开始学习本教程前,请先使用 Google Cloud Console 创建或选择项目。
- 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 公共数据集计划提供的数据集。 公共数据集是存储在 BigQuery 中且可供公众使用的任何数据集。公共数据集由 BigQuery 托管,可供您访问并集成到您的应用中。Google 会支付这些数据集的存储费用,并使用项目提供对数据的公开访问权限。您只需支付数据查询费用(每月前 1 TB 数据免费,具体以查询价格详情为准)。
全球飓风轨迹 (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
函数将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 页面。
在查询编辑器文本区域中输入以下 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
点击运行。
查询需要一些时间才能完成。查询运行后,结果将显示在查询结果窗格中。
在 Geo Viz 中直观呈现查询结果
接下来,您将使用 BigQuery Geo Viz(一种使用 Google Maps API 将 BigQuery 中的地理空间数据可视化的 Web 工具)将您的结果可视化。
启动 Geo Viz 并进行身份验证
在使用 Geo Viz 之前,您必须对 BigQuery 中的数据进行身份验证并授予访问权限。
如需设置 Geo Viz,请执行以下操作:
打开 Geo Viz Web 工具。
在第一步选择数据 (Select data) 下,点击授权 (Authorize)。
在选择账号对话框中,点击您的 Google 账号。
在访问对话框中,点击允许以授予 Geo Viz 对 BigQuery 数据的访问权限。
在 Geo Viz 中运行查询
进行身份验证并授予访问权限后,下一步就是在 Geo Viz 中运行查询。
如需运行查询,请执行以下步骤:
第一步是选择数据,在项目 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
点击运行。
查询完成后,点击显示结果。您还可以点击第二步数据。
您将进入第二步。在第二步中,对于几何图形列 (Geometry column),选择点。这绘制了与飓风玛丽亚的路径相对应的点。
在 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
属性的范围应仅包含颜色。
要设置地图格式,请执行以下操作:
点击第二步中的添加样式 (Add styles) 或点击第三步样式。
更改点的颜色。点击 fillColor。
在 fillColor 面板中,执行以下操作:
- 点击数据驱动 (Data driven)。
- 在函数 (Function) 部分,选择 linear。
- 在字段 (Field) 部分,选择
usa_wind
。 - 在区间 (Domain) 部分,分别在第一个框和第二个框中输入
0
和150
。 在范围 (Range) 部分,点击第一个框,并在十六进制颜色值 (Hex) 框中输入
#0006ff
。然后点击第二个框并输入#ff0000
.系统即会根据风速更改点的颜色。蓝色代表风速较弱,红色代表风速较强。
检查地图。如果将鼠标指针悬停在其中一个点上,该点的天气数据即会显示。
点击 fillOpacity。
在值字段中,输入 .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 中的地理函数。