按 H3 查询 POI 数量

PLACES_COUNT_PER_H3 函数会以指定分辨率将地图注点 (POI) 数据汇总到标准化的 H3 空间网格单元中。此函数是进行区域密度分析、竞争地图绘制和生成六边形分级统计热图的推荐途径。

如需调用 PLACES_COUNT_PER_H3 函数,请使用 SQL FROM 子句,因为该函数会返回一个表。

语法和参数

SELECT * FROM `PROJECT_NAME.LINKED_DATASET_NAME.PLACES_COUNT_PER_H3`(
  filters
)

参数

  • PROJECT_NAME:您的 Google Cloud 项目的名称。如果您未指定项目名称,查询将默认使用活跃项目。
  • LINKED_DATASET_NAME:您订阅的地点数据分析数据集的名称(例如 places_insights___us)。
  • filters (JSON):使用 JSON_OBJECT 构建的 JSON 对象,其中包含键值对过滤条件参数。

必需的 JSON 过滤条件

  • geography (GEOGRAPHY):要编入索引的边界搜索区域(点、线串或多边形)。
  • h3_resolution (INTEGER):H3 单元格分辨率级别(支持的值范围为 0 到 11)。

可选 JSON 过滤条件

  • 其他参数(例如 types、business_status、price_level 和 min_rating),用于过滤每个单元格中统计的地点。查看过滤条件参数的完整列表。

输出表架构

该函数会返回一个 BigQuery 表,其中每个与目标几何图形相交的 H3 单元格索引对应一行:

列名 数据类型 说明
h3_cell_index STRING 单元格的唯一 H3 索引标识符。
geography GEOGRAPHY 表示 H3 单元格物理边界的多边形。
count INTEGER 此特定 H3 单元格内匹配的营业地点的确切总数;如果没有匹配的地点,则为零。
sample_place_ids ARRAY<STRING> 一个数组,最多包含 250 个位于此单元格内的地点 ID,可使用 Places API 直接进行标准答案查询。

使用 PLACES_COUNT_PER_H3 汇总区域地图注点密度

该函数会处理过滤条件中指定的地理边界,识别目标分辨率下所有相交的 H3 六边形,并返回每个六边形的确切地点数量和地点 ID。

示例:统计纽约州设有无障碍通道的杂货店和便利店

此查询使用 H3 分辨率级别 8 汇总了纽约州营业中且设有轮椅无障碍通道的便利店和杂货店。纽约州的边界几何图形是从 bigquery-public-data.geo_us_boundaries.states 公共数据集动态查询的。

-- Query POI count per H3 cell intersecting the New York State polygon boundary
SELECT *
FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_PER_H3`(
  JSON_OBJECT(
      'geography', (
        -- Dynamically retrieve the boundary geography for New York State
        SELECT state_geom
        FROM `bigquery-public-data.geo_us_boundaries.states`
        WHERE state = 'NY'
        LIMIT 1
      ),
      'types', ['grocery_store', 'convenience_store'],
      'business_status', ['OPERATIONAL'],
      'h3_resolution', 8,
      'wheelchair_accessible_entrance', TRUE
  )
)
ORDER BY count DESC;

回答格式

该查询会生成一个逐行表,将单元格直接映射到空间计数:

H3 查询的 BigQuery 结果。

示例:按品牌过滤,统计每个 H3 单元格中的地点数量

以下示例使用 brand_ids 过滤条件检索特定品牌(例如 Starbucks "1413758728321880760" 和 Dunkin "1314981297593671295")的地点数量和示例地点 ID:

DECLARE geo GEOGRAPHY;

-- Get the geography for New York City.
SET geo = (SELECT geometry FROM `bigquery-public-data.overture_maps.division_area`
  WHERE country = 'US' AND subtype = 'locality' AND names.primary = 'New York'  LIMIT 1);

SELECT * FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_PER_H3`(
  JSON_OBJECT(
      'geography', geo,
      'h3_resolution', 8,
      'brand_ids', ["1413758728321880760", "1314981297593671295"],
      'business_status', ['OPERATIONAL']
    )
);

在 Looker Studio 中动态直观呈现 H3 结果

下图显示了 PLACES_COUNT_PER_H3 中的数据在 Looker Studio 中以填充地图的形式显示。H3 单元格颜色越深,结果越集中:

填充地图,用于过滤纽约市设有无障碍设施的便利店和杂货店。

如需将数据导入 Looker Studio,请执行以下操作:

  1. 在 BigQuery 中运行上述函数,即可生成结果。
  2. 在 BigQuery 结果窗格中,依次点击打开方式 -> Looker Studio。您的结果会自动导入 Looker Studio。
  3. Looker Studio 会创建一个默认报告页面,并使用结果的标题、表格和条形图对其进行初始化。

    Looker Studio 中的默认报告。

  4. 选择页面上的所有内容并将其删除。

  5. 依次点击插入 -> 填充地图,向报告中添加填充地图。

  6. 在图表类型 -> 设置下,按如下所示配置字段:

    Looker Studio 中的热图设置。

  7. 填充地图如上所示。您可以选择图表类型 -> 样式,进一步配置地图的外观。

如需详细了解如何直观呈现地点数据分析结果,请参阅直观呈现查询结果。

示例:使用特定过滤条件按 H3 单元格查询历史 POI 数量

此示例演示了如何使用 snapshot_date 过滤条件查询特定快照月份 H3 空间网格中的历史 POI 数量。它使用某个地点周围的缓冲区来定义地理搜索区域,并使用 max_ev_charge_connector_count 以及特定的 regular_opening_hours 为电动汽车充电桩连接器数量应用额外的条件。

SELECT *
FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_PER_H3`(
  JSON_OBJECT(
    'geography', ST_BUFFER(ST_GEOGPOINT(-74.0060, 40.7128), 5000), -- 5km radius around NYC
    'h3_resolution', 8,
    'business_status', ['OPERATIONAL'],
    'snapshot_date', '2026-01', -- Target snapshot month (YYYY-MM)
    'max_ev_charge_connector_count', 3, -- Maximum connector count
    'regular_opening_hours', JSON_OBJECT(
      'monday', [JSON_OBJECT('start_time', '09:00', 'end_time', '12:00')]
    )
  )
);