В этом документе вы узнаете, как использовать примеры данных идентификаторов мест из Places Insights , используя функции подсчета мест , а также целевые поиски сведений о местах, чтобы повысить уверенность в ваших результатах.
Архитектурный образец
Этот архитектурный шаблон обеспечивает воспроизводимый рабочий процесс, позволяющий преодолеть разрыв между высокоуровневым статистическим анализом и проверкой на практике. Сочетание масштаба BigQuery с точностью API Places позволяет вам уверенно подтверждать свои аналитические результаты. Это особенно полезно для выбора площадок, анализа конкурентов и маркетинговых исследований, где доверие к данным имеет первостепенное значение.
Суть этой модели включает четыре ключевых шага:
- Выполняйте крупномасштабный анализ: используйте функцию подсчета мест из Places Insights в BigQuery для анализа данных о местах в большой географической зоне, например, в целом городе или регионе.
- Выделение и извлечение образцов: выявление интересующих областей (например, «горячих точек» с высокой плотностью) из агрегированных результатов и извлечение идентификаторов
sample_place_ids
, предоставленных функцией. - Извлечение достоверных сведений: использование извлеченных идентификаторов мест для совершения целевых вызовов API сведений о местах с целью получения подробных реальных сведений о каждом месте.
- Создайте комбинированную визуализацию: наложите подробные данные о местоположении поверх исходной статистической карты высокого уровня, чтобы визуально убедиться, что агрегированные данные отражают реальность на месте.
Рабочий процесс решения
Этот рабочий процесс позволяет преодолеть разрыв между макроэкономическими тенденциями и микроэкономическими фактами. Вы начинаете с общего статистического представления и стратегически углубляетесь в детали, чтобы проверить данные на конкретных примерах из реальной жизни.
Анализируйте плотность мест в любом масштабе с помощью Places Insights
Ваш первый шаг — понять ландшафт на высоком уровне. Вместо того, чтобы выбирать тысячи отдельных точек интереса (POI), вы можете выполнить один запрос для получения статистической сводки.
Функция PLACES_COUNT_PER_H3
Places Insights идеально подходит для этого. Она объединяет количество точек интереса (POI) в шестиугольную сетку (H3) , позволяя быстро определять области с высокой или низкой плотностью посетителей на основе заданных критериев (например, работающие рестораны с высоким рейтингом).
Пример запроса приведен ниже. Обратите внимание, что вам потребуется указать географию области поиска. Для получения данных о географических границах можно использовать открытый набор данных, например, публичный набор данных Overture Maps Data BigQuery.
Для часто используемых границ открытых наборов данных мы рекомендуем материализовать их в таблицу в вашем проекте. Это значительно снижает затраты на BigQuery и повышает производительность запросов.
-- This query counts all highly-rated, operational restaurants
-- across a large geography, grouping them into H3 cells.
SELECT *
FROM
`places_insights___gb.PLACES_COUNT_PER_H3`(
JSON_OBJECT(
'geography', your_defined_geography,
'h3_resolution', 8,
'types', ['restaurant'],
'business_status', ['OPERATIONAL'],
'min_rating', 3.5
)
);
Результатом этого запроса является таблица ячеек H3 и количество мест в каждой из них, что составляет основу для тепловой карты плотности.
Изолируйте горячие точки и извлеките идентификаторы мест выборки
Результат функции PLACES_COUNT_PER_H3
также возвращает массив sample_place_ids
, содержащий до 250 идентификаторов мест на элемент ответа. Эти идентификаторы служат связующим звеном между агрегированной статистикой и отдельными местами, которые в неё входят.
Ваша система может сначала определить наиболее релевантные ячейки из исходного запроса. Например, вы можете выбрать 20 ячеек с наибольшим количеством. Затем, из этих ключевых точек, вы объединяете идентификаторы sample_place_ids
в один список. Этот список представляет собой тщательно отобранную выборку наиболее интересных точек интереса из наиболее релевантных областей, подготавливая вас к целевой проверке.
Если вы обрабатываете результаты BigQuery в Python с использованием pandas DataFrame, логика извлечения этих идентификаторов проста:
# Assume 'results_df' is a pandas DataFrame from your BigQuery query.
# 1. Identify the 20 busiest H3 cells by sorting and taking the top results.
top_hotspots_df = results_df.sort_values(by='count', ascending=False).head(20)
# 2. Extract and flatten the lists of sample_place_ids from these hotspots.
# The .explode() function creates a new row for each ID in the lists.
all_sample_ids = top_hotspots_df['sample_place_ids'].explode()
# 3. Create a final list of unique Place IDs to verify.
place_ids_to_verify = all_sample_ids.unique().tolist()
print(f"Consolidated {len(place_ids_to_verify)} unique Place IDs for spot-checking.")
Аналогичную логику можно применить и при использовании других языков программирования.
Получайте точные данные с помощью API Places
Благодаря консолидированному списку идентификаторов мест вы переходите от масштабной аналитики к выборке конкретных данных. Эти идентификаторы будут использоваться для запросов к API Place Details, чтобы получить подробную информацию о каждом выбранном месте.
Это критически важный этап проверки. Places Insights сообщает, сколько ресторанов находится в определённом районе, а Places API сообщает, о каких именно ресторанах идёт речь: название, точный адрес, широта/долгота, рейтинг пользователей и даже прямая ссылка на местоположение на Google Картах. Это обогащает ваши данные, превращая абстрактные идентификаторы в конкретные, проверяемые места.
Полный список данных, доступных через Place Details API, и стоимость их получения см. в документации API . FieldMask
устанавливается в запросе для управления данными, возвращаемыми API.
Запрос к API Places для получения конкретного идентификатора с использованием клиентской библиотеки Python будет выглядеть следующим образом:
# A request to fetch details for a single Place ID.
request = {"name": f"places/{place_id}"}
# Define the fields you want returned in the response as a comma-separated string.
fields_to_request = "displayName,formattedAddress,location,googleMapsUri"
# The response contains ground truth data.
response = places_client.get_place(
request=request,
metadata=[("x-goog-fieldmask", fields_to_request)]
)
Более подробную информацию см. в примерах клиентской библиотеки Places API (новая) .
Создайте комбинированную визуализацию для проверки
Последний шаг — объединить оба набора данных в едином представлении. Это обеспечивает быстрый и интуитивно понятный способ выборочной проверки вашего первоначального анализа. Визуализация должна состоять из двух слоёв:
- Базовый слой: картограмма или тепловая карта, созданная на основе исходных результатов
PLACES_COUNT_PER_H3
, показывающая общую плотность мест в вашем регионе. - Верхний слой: набор отдельных маркеров для каждого образца POI, нанесенных на карту с использованием точных координат, полученных из API Places на предыдущем этапе.
Логика построения этого комбинированного представления выражена в следующем примере псевдокода:
# Assume 'h3_density_data' is your aggregated data from Step 1.
# Assume 'detailed_places_data' is your list of place objects from Step 3.
# Create the base choropleth map from the H3 density data.
# The 'count' column determines the color of each hexagon.
combined_map = create_choropleth_map(
data=h3_density_data,
color_by_column='count'
)
# Iterate through the detailed place data to add individual markers.
for place in detailed_places_data:
# Construct the popup information with key details and a link.
popup_html = f"""
<b>{place.name}</b><br>
Address: {place.address}<br>
<a href="{place.google_maps_uri}" target="_blank">View on Maps</a>
"""
# Add a marker for the current place to the base map.
combined_map.add_marker(
location=[place.latitude, place.longitude],
popup=popup_html,
tooltip=place.name
)
# Display the final map with both layers.
display(combined_map)
Накладывая конкретные, достоверные маркеры на карту плотности высокого уровня, вы можете мгновенно подтвердить, что области, обозначенные как «горячие точки», действительно содержат высокую концентрацию анализируемых вами объектов. Это визуальное подтверждение значительно повышает доверие к вашим выводам, основанным на данных.
Заключение
Этот архитектурный шаблон обеспечивает надежный и эффективный метод валидации крупномасштабных геопространственных данных. Используя Places Insights для широкого масштабируемого анализа и API Place Details для целенаправленной проверки данных на местах, вы создаете мощный цикл обратной связи. Это гарантирует, что ваши стратегические решения, будь то выбор места для розничной торговли или планирование логистики, будут основаны на данных, которые не только статистически значимы, но и проверяемо точны.
Следующие шаги
- Изучите другие функции подсчета мест, чтобы увидеть, как они могут ответить на различные аналитические вопросы.
- Ознакомьтесь с документацией API Places, чтобы узнать о других полях, которые вы можете запросить для дальнейшего обогащения своего анализа.
Авторы
Хенрик Валв | Инженер DevX