Dans ce document, vous allez apprendre à utiliser des exemples de données Place ID de Places Insights à l'aide des fonctions de décompte des lieux, ainsi que des recherches ciblées Place Details pour renforcer la fiabilité de vos résultats.
Schéma 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 de la vérité terrain. En combinant l'évolutivité de BigQuery et la précision de l'API Places, vous pouvez valider vos résultats analytiques 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 fiabilité des données est primordiale.
Le cœur de ce modèle implique quatre étapes clés :
- Effectuez des analyses à grande échelle : utilisez une fonction de comptage des lieux dans Places Insights de BigQuery pour analyser les données sur les lieux dans 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,
"points chauds" à haute densité) à partir des résultats agrégés et extraire le
sample_place_ids
fourni par la fonction. - Récupérer les détails de la vérité 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éez une visualisation combinée : superposez les données détaillées sur les lieux à la carte statistique générale initiale pour vérifier visuellement que les nombres 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 et les faits micro. Vous commencez par une vue statistique générale, puis vous effectuez une analyse stratégique pour vérifier les données à l'aide d'exemples concrets spécifiques.
Analyser la densité des lieux à grande échelle avec Places Insights
La première étape consiste à comprendre le paysage de manière générale. Au lieu d'extraire des milliers de points d'intérêt (POI) individuels, vous pouvez exécuter une seule requête pour obtenir un récapitulatif statistique.
La fonction PLACES_COUNT_PER_H3
de Places Insights est idéale pour cela. Il agrège les nombres de POI dans un système de grille hexagonale (H3), ce qui vous permet d'identifier rapidement les zones de densité élevée ou faible 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 géographie de votre zone de recherche. Un ensemble de données ouvert, tel que l'ensemble de données public Overture Maps Data BigQuery, peut être utilisé pour récupérer des données sur les 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
)
);
Le résultat de cette requête vous donne un tableau de cellules H3 et le nombre de lieux dans chacune d'elles, ce qui constitue la base d'une carte de densité.
Isoler les zones sensibles 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
, avec un maximum de 250 ID de lieux par élément de la réponse. Ces ID permettent de relier la statistique agrégée aux lieux individuels qui y contribuent.
Votre système pourrait d'abord identifier les cellules les plus pertinentes à partir de la requête initiale.
Par exemple, vous pouvez sélectionner les 20 cellules les plus fréquentes. Ensuite, à partir de ces points chauds, vous consolidez les sample_place_ids
dans une seule liste.
Cette liste représente un échantillon sélectionné des POI 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.")
La même logique peut être appliquée si vous utilisez d'autres langages de programmation.
Récupérer les détails de la vérité terrain avec l'API Places
Maintenant que vous avez votre liste consolidée d'ID de lieux, vous passez de l'analyse à grande échelle à la récupération de données spécifiques. Vous utiliserez ces ID pour interroger l'API Place Details et 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 indiquait le nombre de restaurants dans une zone, l'API Places vous indique lesquels, en fournissant leur nom, leur adresse exacte, leur latitude/longitude, leur note attribuée par les utilisateurs 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. Le FieldMask
est défini dans la requête pour contrôler les données renvoyées par l'API.
Une requête adressée à l'API Places pour un ID spécifique à l'aide de la bibliothèque cliente Python se présente comme suit :
# 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)]
)
Pour en savoir plus, consultez les exemples de bibliothèques clientes de l'API Places (New).
Créer une visualisation combinée pour la validation
La dernière étape consiste à rassembler les deux ensembles de données dans une même 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_H3
initiaux, qui indique la densité globale des lieux dans votre zone géographique. - Couche supérieure : ensemble de repères individuels pour chaque échantillon de POI, représentés à 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 marqueurs spécifiques et véridiques sur la carte de densité de haut niveau, vous pouvez immédiatement confirmer que les zones identifiées comme points chauds contiennent effectivement 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 les 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 basée sur la vérité terrain, 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 d'un site de vente au détail ou de la planification logistique, sont basées sur des données qui sont non seulement statistiquement pertinentes, mais aussi vérifiables.
Étapes suivantes
- Explorez d'autres fonctions de décompte des lieux pour découvrir 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 | Ingénieur DevX