地理空间分析使用入门

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

浏览示例数据

本教程使用通过 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 辆以上可用单车的单车站点

在本教程的本部分,您将运行一个 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 函数将 latitudelongitude 列中的值转换为 GEOGRAPHY 类型(点)。
  • FROM `bigquery-public-data.new_york.citibike_stations`
    FROM 子句指定要查询的表:citibike_stations
  • WHERE num_bikes_available > 30
    WHERE 子句过滤 num_bikes_available 列中的值,使其仅包含有 30 辆以上可用单车的站点。

运行查询

如需使用 Google Cloud 控制台运行查询,请执行以下操作:

  1. 前往 Google Cloud 控制台中的 BigQuery 页面。

    转到 BigQuery 页面

  2. 查询编辑器文本区域中输入以下 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
  3. 点击运行

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

    单车站点查询结果

在 BigQuery 中将结果可视化

如需在交互式地图中将结果可视化,请按以下步骤操作:

  1. 查询结果窗格中,点击可视化

    单车站点位置的可视化效果。

    地图上的各点表示每个单车站点的位置。

  2. 您可以为地图应用统一样式或数据驱动型样式。如需可视化每个站点的可用单车数量,请在数据列部分,选择 num_bikes_available

  3. 如需提高能见度,请尝试调整不透明度颜色点大小。如果您的数据包含离群值,您可以调整最小值最大值。值超出此范围的地理位置仍会显示在地图上,但不会应用任何颜色。

  4. 如需查看地理位置的属性,请点击相应地理位置。

  5. 如需以卫星模式查看地图,请点击卫星

单车站点位置的风格化可视化效果。

在 Geo Viz 中直观呈现查询结果

您还可以使用 BigQuery Geo Viz(一种使用 Google 地图 API 将 BigQuery 中的地理空间数据可视化的 Web 工具)将结果可视化。

启动 Geo Viz 并进行身份验证

在使用 Geo Viz 之前,您必须对 BigQuery 中的数据进行身份验证并授予访问权限。

如需设置 Geo Viz,请执行以下操作:

  1. 打开 Geo Viz Web 工具。

    打开 Geo Viz Web 工具

    您可能需要启用 Cookie 才能授权并使用此工具。

  2. 在第一步查询下,点击授权

    Geo Viz 授权按钮

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

    选择账号对话框

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

    允许访问对话框

对地理空间数据运行 GoogleSQL 查询

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

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

  1. 第一步是选择数据,在项目 ID 字段中输入您的项目 ID。

  2. 在查询窗口中,输入以下 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
  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. 检查地图。如果您点击其中一个点,将显示其值。

    地图点详情

  6. 点击 fillOpacity

  7. 字段中,输入 0.5 并点击应用样式

    填充不透明度

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

    具有半透明点的地图

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

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

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

      圆半径

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

    最终地图

  12. 关闭 Geo Viz。