Функция PLACES_COUNT_PER_H3 агрегирует данные об объектах инфраструктуры в стандартизированные ячейки пространственной сетки H3 с заданным разрешением. Рекомендуется использовать эту функцию для анализа плотности в регионе, составления карт конкурентов и создания тепловых карт с шестиугольными областями.
Чтобы вызвать функцию PLACES_COUNT_PER_H3, используйте предложение FROM, поскольку функция возвращает таблицу.
Синтаксис и параметры
SELECT * FROM `PROJECT_NAME.LINKED_DATASET_NAME.PLACES_COUNT_PER_H3`( filters )
Параметры
PROJECT_NAME– название вашего облачного проекта Google Cloud. Если вы не укажете название проекта, запрос будет по умолчанию относиться к активному проекту.LINKED_DATASET_NAME– название набора данных Places Insights, на который вы подписаны (например,places_insights___us).filters(JSON) – объект JSON, созданный с помощьюJSON_OBJECTи содержащий параметры фильтрации в виде пар "ключ-значение".
Обязательные фильтры 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 идентификаторов мест, расположенных в этой ячейке. Позволяет выполнять прямые запросы фундаментальной истины с помощью Places API. |
Как агрегировать плотность объектов инфраструктуры в регионе с помощью PLACES_COUNT_PER_H3
Функция обрабатывает географические границы, указанные в фильтрах, определяет все пересекающиеся шестиугольники H3 с целевым разрешением и возвращает точное количество мест и идентификаторы мест для каждого шестиугольника.
Пример: подсчет продуктовых магазинов и универсальных магазинов шаговой доступности, доступных для инвалидов-колясочников, в штате Нью-Йорк
Этот запрос позволяет получить список работающих и доступных для инвалидов-колясочников магазинов у дома и продуктовых магазинов в штате Нью-Йорк, используя уровень разрешения 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 с фильтрацией по бренду
В следующем примере используется фильтр brand_ids, чтобы получить количество мест и примеры идентификаторов мест для определенных брендов, таких как Starbucks "1413758728321880760" и Dunkin "1314981297593671295":
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'] ) );
Как динамически визуализировать результаты H3 в Looker Studio
На изображениях ниже показаны данные из PLACES_COUNT_PER_H3, представленные в Looker Studio в виде заполненной карты. Чем темнее ячейка H3, тем выше концентрация результатов:

Чтобы импортировать данные в Looker Studio, выполните следующие действия:
- Чтобы получить результаты, запустите функцию выше в BigQuery.
- На панели результатов BigQuery нажмите Открыть в -> Looker Studio. Результаты будут автоматически импортированы в Looker Studio.
Looker Studio создаст страницу отчета по умолчанию и добавит на нее заголовок, таблицу и гистограмму с результатами.

Выделите все содержимое страницы и удалите его.
Нажмите Вставка > Заполненная карта, чтобы добавить в отчет заполненную карту.
В разделе Типы диаграмм -> Настройка настройте поля, как показано ниже:

Заполненная карта выглядит так, как показано выше. При желании вы можете выбрать Типы диаграмм -> Стиль, чтобы настроить внешний вид карты.
Подробнее о визуализации результатов запросов…
Пример. Запрос статистики по объектам инфраструктуры в ячейке H3 с определенными фильтрами
В этом примере показано, как запросить статистику по количеству объектов инфраструктуры в пространственной сетке H3 за определенный месяц, используя фильтр snapshot_date. Он определяет географическую область поиска, используя буфер вокруг местоположения, и применяет дополнительные критерии для количества коннекторов для зарядки электромобилей, используя 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')] ) ) );