Dans ce document, vous allez découvrir comment utiliser des exemples de données d'ID de lieu de Places Insights à l'aide de fonctions de comptage de lieux, ainsi que des recherches ciblées de Place Details pour renforcer la confiance dans vos résultats.
Pour obtenir une implémentation de référence détaillée de ce modèle, consultez ce notebook explicatif :

Le modèle architectural
Ce modèle architectural vous offre un workflow reproductible pour combler le fossé entre l'analyse statistique de haut niveau et la vérification sur le terrain. En combinant l'évolutivité de BigQuery et la précision de l'API Places, vous pouvez valider vos résultats d'analyse en toute confiance. Cela est particulièrement utile pour la sélection de sites, l'analyse de la concurrence et les études de marché, où la confiance dans les données est primordiale.
Ce modèle comporte quatre étapes clés :
- Effectuer une analyse à grande échelle : utilisez une fonction de comptage de lieux de Places Insights dans BigQuery pour analyser les données de lieux sur une vaste zone géographique, comme une ville ou une région entière.
- Isoler et extraire des échantillons : identifiez les zones d'intérêt (par exemple, les "points chauds" à forte densité) à partir des résultats agrégés et extrayez les
sample_place_idsfournis par la fonction. - Récupérer les détails sur le terrain : utilisez les ID de lieu extraits pour effectuer des appels ciblés à l'API Place Details afin d'obtenir des informations détaillées et réelles pour chaque lieu.
- Créer une visualisation combinée : superposez les données détaillées sur les lieux à la carte statistique de haut niveau initiale pour vérifier visuellement que les décomptes agrégés reflètent la réalité sur le terrain.
Solution workflow
Ce workflow vous permet de combler le fossé entre les tendances macroéconomiques et les faits microéconomiques. Vous commencez par une vue statistique générale, puis vous explorez de manière stratégique les données pour les vérifier à l'aide d'exemples spécifiques et concrets.
Analyser la densité de lieux à grande échelle avec Places Insights
La première étape consiste à comprendre le paysage à un niveau élevé. Au lieu de récupérer des milliers de points d'intérêt individuels, vous pouvez exécuter une seule requête pour obtenir un résumé statistique.
La fonction PLACES_COUNT_PER_H3
de Places Insights
est idéale pour cela. Elle agrège les décomptes de points d'intérêt dans un système de grille hexagonale
(H3), ce qui vous permet d'identifier rapidement les zones à
forte ou faible densité en fonction de vos critères spécifiques (par exemple, les restaurants bien notés et ouverts).
Voici un exemple de requête. Notez que vous devrez fournir la zone géographique de votre recherche. Vous pouvez utiliser un ensemble de données ouvert, tel que l'ensemble de données public Overture Maps Data BigQuery public dataset, pour récupérer les données de limites géographiques.
Pour les limites d'ensembles de données ouverts fréquemment utilisées, nous vous recommandons de les matérialiser dans une table de votre propre projet. Cela réduit considérablement les coûts BigQuery et améliore les performances des requêtes.
-- 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
)
);
Filtrer et valider par ID de marque
Si vous souhaitez valider les décomptes et les exemples d'ID de lieu pour des marques spécifiques, fournissez une liste d'ID de marque à l'aide du filtre brand_ids.
Pour obtenir l'ID de marque d'une marque cible, interrogez la table brands dans BigQuery :
SELECT id, name
FROM `YOUR_PROJECT.places_insights___us.brands`
WHERE LOWER(name) LIKE "%starbucks%";
Après avoir récupéré l'ID de marque cible (par exemple, "1413758728321880760"
pour Starbucks), transmettez-le dans le tableau de filtres brand_ids :
SELECT *
FROM
`places_insights___us.PLACES_COUNT_PER_H3`(
JSON_OBJECT(
'geography', your_defined_geography,
'h3_resolution', 8,
'brand_ids', ["1413758728321880760"]
)
);
Lors de l'étape 3, la vérification sur le terrain, au lieu de confirmer qu'un lieu correspond à des catégories générales, vous pouvez comparer par programmation le nom à afficher renvoyé par l'API Place Details au nom de marque attendu à l'aide d'une correspondance d'expression régulière. Par exemple, vous pouvez comparer le champ response.display_name.text.
Le résultat de cette requête vous donne une table de cellules H3 et le nombre de lieux dans chacune d'elles, ce qui constitue la base d'une carte de densité.

Isoler les points chauds et extraire des exemples d'ID de lieu
Le résultat de la fonction PLACES_COUNT_PER_H3 renvoie également un tableau de sample_place_ids, jusqu'à 250 ID de lieu par élément de la réponse. Ces ID sont le lien entre la statistique agrégée et les lieux individuels qui y contribuent.
Votre système peut d'abord identifier les cellules les plus pertinentes à partir de la requête initiale.
Par exemple, vous pouvez sélectionner les 20 premières cellules avec les décomptes les plus élevés. Ensuite, à partir de ces points chauds, vous consolidez les sample_place_ids dans une seule liste.
Cette liste représente un échantillon organisé des points d'intérêt les plus intéressants des zones les plus pertinentes, ce qui vous prépare à une vérification ciblée.
Si vous traitez vos résultats BigQuery dans Python à l'aide d'un DataFrame pandas, la logique d'extraction de ces ID est simple :
# 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.")
Une logique similaire peut être appliquée si vous utilisez d'autres langages de programmation.
Récupérer les détails sur le terrain avec l'API Places
Avec votre liste consolidée d'ID de lieu, vous passez maintenant de l'analyse à grande échelle à la récupération de données spécifiques. Vous utiliserez ces ID pour interroger l'API Place Details afin d'obtenir des informations détaillées sur chaque exemple de lieu.
Il s'agit d'une étape de validation essentielle. Alors que Places Insights vous indique le nombre de restaurants dans une zone, l'API Places vous indique quels restaurants il s'agit, en fournissant leur nom, leur adresse exacte, leur latitude/longitude, leur note utilisateur et même un lien direct vers leur emplacement sur Google Maps. Cela enrichit vos exemples de données, en transformant des ID abstraits en lieux concrets et vérifiables.
Pour obtenir la liste complète des données disponibles dans l'API Place Details et le coût associé à leur récupération, consultez la documentation de l'API documentation.
Voici à quoi ressemblerait une requête adressée à l'API Places pour un ID spécifique à l'aide de la bibliothèque cliente Python would look like this. Pour en savoir plus, consultez Exemples de bibliothèque cliente de l'API Places (nouvelle version).
# 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 = "formattedAddress,location,displayName,googleMapsUri"
# The response contains ground truth data.
response = places_client.get_place(
request=request,
metadata=[("x-goog-fieldmask", fields_to_request)]
)
Sachez que les champs de cette requête extraient des données de deux SKU de facturation différents.
formattedAddressetlocationfont partie du SKU Place Details Essentials.displayNameetgoogleMapsUrifont partie du SKU Place Details Pro.
Lorsqu'une seule requête Place Details inclut des champs provenant de plusieurs SKU, l'ensemble de la requête est facturé au tarif du SKU de niveau le plus élevé. Par conséquent, cet appel spécifique sera facturé en tant que requête Place Details Pro.
Pour contrôler vos coûts, utilisez toujours FieldMask pour ne demander que les champs dont votre application a besoin.
Créer une visualisation combinée pour la validation
pour visualiser les résultats à l'aide d'ID de lieu.La dernière étape consiste à rassembler les deux ensembles de données dans une seule vue. Cela vous permet de vérifier immédiatement et de manière intuitive votre analyse initiale. Votre visualisation doit comporter deux calques :
- Calque de base : carte choroplèthe ou carte de densité générée à partir des résultats
PLACES_COUNT_PER_H3initiaux, indiquant la densité globale des lieux sur votre zone géographique. - Calque supérieur : ensemble de repères individuels pour chaque exemple de point d'intérêt, tracé à l'aide des coordonnées précises récupérées à partir de l'API Places à l'étape précédente.
La logique de création de cette vue combinée est exprimée dans cet exemple de pseudo-code :
# 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)
En superposant les repères spécifiques et réels sur la carte de densité de haut niveau, vous pouvez immédiatement confirmer que les zones identifiées comme points chauds contiennent bien une forte concentration des lieux que vous analysez. Cette confirmation visuelle renforce considérablement la confiance dans vos conclusions basées sur les données.
Conclusion
Ce modèle architectural fournit une méthode robuste et efficace pour valider des insights géospatiaux à grande échelle. En tirant parti de Places Insights pour une analyse large et évolutive, et de l'API Place Details pour une vérification ciblée et réelle, vous créez une boucle de rétroaction puissante. Vous vous assurez ainsi que vos décisions stratégiques, qu'il s'agisse de la sélection de sites de vente au détail ou de la planification logistique, sont basées sur des données non seulement statistiquement significatives, mais également vérifiables.
Étapes suivantes
- Explorez d'autres fonctions de comptage de lieux pour voir comment elles peuvent répondre à différentes questions analytiques.
- Consultez la documentation de l'API Places pour découvrir d'autres champs que vous pouvez demander afin d'enrichir davantage votre analyse.
Contributeurs
Henrik Valve | DevX Ingénieur
Exécuter dans Google Colab
Afficher la source sur GitHub