按 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 单元格分辨率级别(支持的值范围为 011)。

可选的 JSON 过滤条件

  • 其他参数,例如 typesbusiness_statusprice_levelmin_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 汇总区域 POI 密度

该函数会处理过滤条件中指定的边界地理位置,识别目标分辨率下的所有相交 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 过滤条件检索 地点计数和特定品牌(例如星巴克 "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 结果

下图显示了在 Looker Studio 中以填充地图形式显示的 PLACES_COUNT_PER_H3 中的数据。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')]
    )
  )
);