本教程将向您介绍地理空间分析。 借助地理空间分析,您可以在 BigQuery 中分析和直观呈现地理空间数据。
目标
在本教程中,您将执行以下操作:
- 使用地理空间分析函数将纬度和经度列转换为地理位置点
- 运行查询,以查找有 30 辆以上可租借单车的所有花旗单车站点
- 在 BigQuery Geo Viz 中可视化您的结果
费用
本教程使用 Google Cloud 的收费组件,包括 BigQuery。
您需要支付以下费用:
须知事项
- 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.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- 新项目会自动启用 BigQuery。如需在现有项目中启用 BigQuery,请转到
Enable the BigQuery API.
浏览示例数据
本教程使用通过 Google Cloud 公共数据集计划提供的数据集。 公共数据集是存储在 BigQuery 中且可供公众使用的任何数据集。公共数据集由 BigQuery 托管,可供您访问并集成到您的应用中。Google 会支付这些数据集的存储费用,并通过项目提供对数据的公开访问权限。您只需支付数据查询费用(每月前 1 TB 数据免费,具体以查询价格详情为准)。
纽约市花旗单车行程数据集
花旗单车 (Citi Bike) 是美国规模最大的共享单车计划,在曼哈顿、布鲁克林、皇后区和泽西城拥有 10000 辆单车和 600 个单车站点。此数据集包括花旗单车自 2013 年 9 月推出以来每天更新的花旗单车行程数据。这些数据已经过花旗单车的处理,移除了因工作人员维护和检修系统而产生的行程,以及时长不到 60 秒的行程(此类行程被视为误启动行程)。
您可以通过查看 citibike_stations
表的详细信息,在 BigQuery 控制台中探索这些数据:
此表中有三列与本教程有关:
bike_stations.longitude
站点的经度。这些值为十进制格式的有效 WGS 84 经度。bike_stations.latitude
站点的纬度。这些值为十进制格式的有效 WGS 84 纬度。num_bikes_available
可供租借的单车数量。
查询具有 30 辆以上可用单车的单车站点
在本教程的本部分,您将运行一个 GoogleSQL 查询,该查询查找纽约市有 30 辆以上可供租借单车的所有花旗单车站点。
查询详情
以下 GoogleSQL 查询用于查找有 30 辆以上可用单车的花旗单车站点。
SELECT ST_GeogPoint(longitude, latitude) AS WKT, num_bikes_available FROM `bigquery-public-data.new_york.citibike_stations` WHERE num_bikes_available > 30
查询子句执行以下操作:
SELECT ST_GeogPoint(longitude, latitude) AS WKT, num_bikes_available
SELECT
子句选择num_bikes_available
列,并使用ST_GeogPoint
函数将latitude
和longitude
列中的值转换为GEOGRAPHY
类型(点)。
FROM `bigquery-public-data.new_york.citibike_stations`
FROM
子句指定要查询的表:citibike_stations
。
WHERE num_bikes_available > 30
WHERE
子句过滤num_bikes_available
列中的值,使其仅包含有 30 辆以上可用单车的站点。
运行查询
如需使用 Google Cloud 控制台运行查询,请执行以下操作:
转到 Google Cloud 控制台中的 BigQuery 页面。
在查询编辑器文本区域中输入以下 GoogleSQL 查询。
-- Finds Citi Bike stations with > 30 bikes SELECT ST_GeogPoint(longitude, latitude) AS WKT, num_bikes_available FROM `bigquery-public-data.new_york.citibike_stations` WHERE num_bikes_available > 30
点击运行。
查询需要一些时间才能完成。查询运行后,结果将显示在查询结果窗格中。
在 Geo Viz 中直观呈现查询结果
接下来,您将使用 BigQuery Geo Viz(一种使用 Google Maps API 将 BigQuery 中的地理空间数据可视化的 Web 工具)将您的结果可视化。
启动 Geo Viz 并进行身份验证
在使用 Geo Viz 之前,您必须对 BigQuery 中的数据进行身份验证并授予访问权限。
如需设置 Geo Viz,请执行以下操作:
打开 Geo Viz Web 工具。
您可能需要启用 Cookie 才能授权并使用此工具。
在第一步查询下,点击授权。
在选择账号对话框中,点击您的 Google 账号。
在访问对话框中,点击允许以授予 Geo Viz 对 BigQuery 数据的访问权限。
对地理空间数据运行 GoogleSQL 查询
进行身份验证并授予访问权限后,下一步就是在 Geo Viz 中运行查询。
如需运行查询,请执行以下步骤:
第一步是选择数据,在项目 ID 字段中输入您的项目 ID。
在查询窗口中,输入以下 GoogleSQL 查询。
-- Finds Citi Bike stations with > 30 bikes SELECT ST_GeogPoint(longitude, latitude) AS WKT, num_bikes_available FROM `bigquery-public-data.new_york.citibike_stations` WHERE num_bikes_available > 30
点击运行。
查询完成后,点击显示结果。您还可以点击第二步定义列 (Define columns)。
您将进入第二步。在第二步中,在几何图形列 (Geometry column) 部分,选择 WKT。这将绘制与地图上的单车站点相对应的点。
设置可视化内容的格式
“样式”部分提供了可供自定义的视觉样式列表。某些属性仅适用于某些类型的数据。例如,circleRadius
只会影响点。
支持的样式属性包括:
- 填充颜色多边形或点的填充颜色。例如,“linear”或“interval”函数可用于将数值映射到颜色的渐变。
- 填充不透明度多边形或点的填充不透明度。值必须在 0 到 1 的范围内,其中
0
= 透明,1
= 不透明。 - strokeColor。多边形或线条的笔划或轮廓颜色。
- strokeOpacity多边形或线条的笔划或轮廓不透明度。值必须在 0 到 1 的范围内,其中
0
= 透明,1
= 不透明。 - strokeWeight。多边形或线条的笔划或轮廓宽度(以像素为单位)。
- 圆半径表示点的圆半径(以像素为单位)。例如,“linear”函数可用于将数值映射到点大小,以创建散点图样式。
每种样式都可能被赋予全局值(应用于每个结果)或数据驱动的值(根据每个结果行中的数据以不同方式应用)。对于数据驱动的值,以下内容将用于确定结果:
- function。用于根据字段值计算样式值的函数。
- identity。每个字段的数据值均用作样式值。
- categorical。区间中列出的每个字段的数据值都将与范围内的相应样式一对一映射。
- interval。每个字段的数据值均向下舍为区间中最接近的值,然后将样式设置为范围内的相应样式。
- linear。使用区间中的值对每个字段的数据值进行线性插值,然后将样式设置为范围内相应样式的混合样式。
- field。数据中的指定字段用作样式函数的输入。
- 网域来自字段的样本输入值的有序列表。样本输入(区间)基于给定函数与样本输出(范围)配对,并用于推断所有输入(即使未在区间中列出)的样式值。区间中的值必须与要可视化的字段的值具有相同类型(文本、数字等)。
- range。样式规则的样本输出值列表。范围中的值必须与要控制的样式属性具有相同类型(颜色或数字)。例如,
fillColor
属性的范围应仅包含颜色。
要设置地图格式,请执行以下操作:
点击第二步中的添加样式 (Add styles) 或点击第三步样式。
更改点的颜色。点击 fillColor。
在值 (Value) 字段中,输入
#0000FF
(即蓝色的 HTML 颜色代码)。点击应用样式。
检查地图。如果您点击其中一个点,将显示其值。
点击 fillOpacity。
在值字段中,输入
0.5
并点击应用样式。检查地图。点的填充颜色现在为半透明。
根据可用单车数更改点的大小。点击 circleRadius。
在 circleRadius 面板中,请执行以下操作:
- 点击数据驱动 (Data driven)。
- 在函数 (Function) 部分,选择 linear。
- 在字段 (Field) 部分,选择
num_bikes_available
。 - 在区间 (Domain) 部分,分别在第一个框和第二个框中输入
30
和60
。 在范围 (Range) 部分,分别在第一个框和第二个框中输入
5
和20
。
检查地图。现在,每个圆的半径均对应于该位置的可用单车数。
关闭 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 函数的文档,请参阅 GoogleSQL 中的地理位置函数。