Как запросить количество объектов инфраструктуры по H3

Функция 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

Схема таблицы результатов

Функция возвращает таблицу 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;

Формат ответа

В результате запроса будет создана таблица, в которой ячейки сопоставлены с количеством объектов:

Результаты BigQuery для запроса H3.

Пример. Подсчет мест в ячейке 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, выполните следующие действия:

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

    Отчет по умолчанию в Looker Studio.

  4. Выделите все содержимое страницы и удалите его.

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

  6. В разделе Типы диаграмм -> Настройка настройте поля, как показано ниже:

    Настройка тепловой карты в Looker Studio.

  7. Заполненная карта выглядит так, как показано выше. При желании вы можете выбрать Типы диаграмм -> Стиль, чтобы настроить внешний вид карты.

Подробнее о визуализации результатов запросов…

Пример. Запрос статистики по объектам инфраструктуры в ячейке 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')]
    )
  )
);