BigQuery GIS 使用入门

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

目标

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

  • 使用 BigQuery GIS 函数将纬度和经度列转换为地理位置点
  • 运行查询,以查找有 30 辆以上可租借单车的所有花旗单车站点
  • BigQuery Geo Viz 中直观呈现您的结果

费用

本教程使用 Google Cloud 的以下收费组件:

  • BigQuery

您需要支付以下费用:

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

准备工作

  1. 登录您的 Google 帐号。

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

  2. 在 Cloud Console 的项目选择器页面上,选择或创建 Cloud 项目。

    转到项目选择器页面

  3. 确保您的 Google Cloud 项目已启用结算功能。 了解如何确认您的项目已启用结算功能

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

    启用 API

浏览示例数据

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

纽约市花旗单车行程数据集

NYC Citi Bike Trips

花旗单车 (Citi Bike) 是美国规模最大的共享单车计划,在曼哈顿、布鲁克林、皇后区和泽西城拥有 10000 辆单车和 600 个单车站点。此数据集包括花旗单车自 2013 年 9 月推出以来每天更新的花旗单车行程数据。这些数据已经过花旗单车的处理,移除了因工作人员维护和检修系统而产生的行程,以及时长不到 60 秒的行程(此类行程被视为误启动行程)。

您可以通过查看 citibike_stations 表的详细信息,在 BigQuery 控制台中探索这些数据:

转到 citibike_stations 架构

此表中有三列与本教程有关:

  • bike_stations.longitude 站点的经度。这些值为十进制格式的有效 WGS 84 经度。
  • bike_stations.latitude 站点的纬度。这些值为十进制格式的有效 WGS 84 纬度。
  • num_bikes_available 可供租借的单车数量。

查询具有 30 辆以上可用单车的单车站点

在本教程的本部分,您将运行一个标准 SQL 查询,该查询查找纽约市有 30 辆以上可供租借单车的所有花旗单车站点。

查询详情

以下标准 SQL 查询用于查找有 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 函数将 latitudelongitude 列中的值转换为 GEOGRAPHY 类型(点)。
  • FROM `bigquery-public-data.new_york.citibike_stations`
    FROM 子句指定要查询的表:citibike_stations
  • WHERE num_bikes_available > 30
    WHERE 子句过滤 num_bikes_available 列中的值,使其仅包含有 30 辆以上可用单车的站点。

运行查询

如需使用 Cloud Console 运行查询,请执行以下操作:

  1. 转到 Cloud Console 中的 BigQuery 页面。

    转到 BigQuery 页面

  2. 查询编辑器文本区域中输入以下标准 SQL 查询。

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

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

    单车站点查询结果

在 Geo Viz 中可视化查询结果

接下来,您将使用 BigQuery Geo Viz(一种使用 Maps API 将 BigQuery 中的地理空间数据可视化的网站工具集)将您的结果可视化。

启动 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 查询。

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

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

    查看结果

  5. 您将进入第二步。在第二步中,在几何图形列 (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 属性的范围应仅包含颜色。

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

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

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

  3. (Value) 字段中,输入 #0000FF(即蓝色的 HTML 颜色代码)。

    填充颜色

  4. 检查地图。如果将鼠标悬停在其中一个点上,将显示其值。

    地图点详情

  5. 点击 fillOpacity

  6. (Value) 字段中,输入 .5

    填充不透明度

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

    具有半透明点的地图

  8. 根据可用单车数更改点的大小。点击 circleRadius

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

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

      圆半径

  10. 检查地图。现在,每个圆的半径均对应于该位置的可用单车数。

    最终地图

  11. 关闭 Geo Viz。

清理

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

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

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

  1. 在 Cloud Console 中,转到管理资源页面。

    转到“管理资源”页面

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

后续步骤