In questo documento imparerai a utilizzare i dati di esempio degli ID luogo di Places Insights, utilizzando le funzioni di conteggio dei luoghi, insieme alle ricerche mirate di Place Details per aumentare la fiducia nei risultati.
Per un'implementazione di riferimento dettagliata di questo pattern, consulta questo notebook esplicativo:

Il pattern architetturale
Questo pattern architetturale ti offre un workflow ripetibile per colmare il divario tra l'analisi statistica di alto livello e la verifica dei dati di fatto. Combinando la scalabilità di BigQuery con la precisione dell'API Places, puoi convalidare con sicurezza i risultati delle tue analisi. Ciò è particolarmente utile per la selezione dei siti, l'analisi della concorrenza e le ricerche di mercato, dove la fiducia nei dati è fondamentale.
Il nucleo di questo pattern prevede quattro passaggi chiave:
- Esegui analisi su larga scala: utilizza una funzione di conteggio dei luoghi di Places Insights in BigQuery per analizzare i dati dei luoghi in un'area geografica di grandi dimensioni, ad esempio un'intera città o regione.
- Isola ed estrai i campioni: identifica le aree di interesse (ad esempio gli "hotspot" con alta densità) dai risultati aggregati ed estrai i
sample_place_idsforniti dalla funzione. - Recupera i dettagli dei dati di fatto: utilizza gli ID luogo estratti per effettuare chiamate mirate all'API Place Details per recuperare dettagli completi e reali per ogni luogo.
- Crea una visualizzazione combinata: sovrapponi i dati dettagliati sui luoghi alla mappa statistica iniziale di alto livello per convalidare visivamente che i conteggi aggregati riflettano la realtà sul campo.
Flusso di lavoro della soluzione
Questo workflow ti consente di colmare il divario tra le tendenze a livello macro e i fatti a livello micro. Inizia con una visione statistica generale e approfondisci strategicamente per verificare i dati con esempi specifici e reali.
Analizza la densità dei luoghi su larga scala con Places Insights
Il primo passo è comprendere il panorama ad alto livello. Anziché recuperare migliaia di singoli punti di interesse (PDI), puoi eseguire una singola query per ottenere un riepilogo statistico.
La funzionePLACES_COUNT_PER_H3
Places Insights
è ideale per questo scopo. Aggrega i conteggi dei PDI in un sistema di griglia esagonale (H3), consentendoti di identificare rapidamente le aree ad alta o bassa densità in base ai tuoi criteri specifici (ad es. ristoranti con una valutazione elevata che sono operativi).
Di seguito è riportato un esempio di query. Tieni presente che dovrai fornire l'area geografica di ricerca. Per recuperare i dati sui confini geografici, è possibile utilizzare un dataset aperto, come il Overture Maps Data set di dati pubblico BigQuery.
Per i confini dei dataset aperti utilizzati di frequente, ti consigliamo di materializzarli in una tabella nel tuo progetto. Ciò riduce notevolmente i costi di BigQuery e migliora le prestazioni delle query.
-- 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
)
);
Filtro e convalida per ID brand
Se vuoi convalidare i conteggi e gli ID luogo di esempio per brand specifici,
fornisci un elenco di ID brand utilizzando il filtro brand_ids.
Per ottenere l'ID brand di un brand target, esegui una query sulla tabella brands in BigQuery:
SELECT id, name
FROM `YOUR_PROJECT.places_insights___us.brands`
WHERE LOWER(name) LIKE "%starbucks%";
Dopo aver recuperato l'ID brand di destinazione (ad esempio, "1413758728321880760"
per Starbucks), passalo all'interno dell'array di filtri brand_ids:
SELECT *
FROM
`places_insights___us.PLACES_COUNT_PER_H3`(
JSON_OBJECT(
'geography', your_defined_geography,
'h3_resolution', 8,
'brand_ids', ["1413758728321880760"]
)
);
Durante il passaggio 3, la verifica dei dati di fatto, anziché confermare che un luogo corrisponde a categorie generali, puoi confrontare in modo programmatico il nome visualizzato restituito dall'API Place Details con il nome del brand previsto utilizzando una corrispondenza con espressione regolare. Ad esempio, puoi confrontare il campo response.display_name.text.
L'output di questa query fornisce una tabella di celle H3 e il numero di luoghi all'interno di ciascuna, che costituisce la base per una mappa termica della densità.

Isola gli hotspot ed estrai gli ID luogo di esempio
Il risultato della funzione PLACES_COUNT_PER_H3 restituisce anche un array di sample_place_ids, fino a 250 ID luogo per elemento della risposta. Questi ID
sono il collegamento tra la statistica aggregata e i singoli luoghi che
contribuiscono a generarla.
Il sistema potrebbe prima identificare le celle più pertinenti dalla query iniziale.
Ad esempio, potresti selezionare le prime 20 celle con i conteggi più elevati. Poi, da questi hotspot, consolidi le sample_place_ids in un unico elenco.
Questo elenco rappresenta un campione selezionato dei PDI più interessanti delle aree più pertinenti, preparandoti per una verifica mirata.
Se elabori i risultati di BigQuery in Python utilizzando un DataFrame pandas, la logica per estrarre questi ID è semplice:
# 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.")
Una logica simile può essere applicata se si utilizzano altri linguaggi di programmazione.
Recupera i dettagli dei dati di fatto con l'API Places
Con l'elenco consolidato degli ID luogo, ora passi dall'analisi su larga scala al recupero di dati specifici. Utilizzerai questi ID per eseguire query sull'API Place Details per ottenere informazioni dettagliate su ogni località di esempio.
Questo è un passaggio di convalida fondamentale. Mentre Places Insights ti diceva quanti ristoranti si trovavano in un'area, l'API Places ti dice quali ristoranti sono, fornendo il nome, l'indirizzo esatto, la latitudine/longitudine, la valutazione degli utenti e persino un link diretto alla loro posizione su Google Maps. In questo modo, i dati di esempio vengono arricchiti, trasformando gli ID astratti in luoghi concreti e verificabili.
Per l'elenco completo dei dati disponibili dall'API Place Details e il costo associato al recupero, consulta la documentazione dell'API.
Una richiesta all'API Places per un ID specifico utilizzando la libreria client Python sarebbe simile a questa. Per maggiori dettagli, consulta gli esempi di librerie client dell'API Places (nuova).
# 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)]
)
Tieni presente che i campi di questa richiesta estraggono i dati da due SKU di fatturazione diversi.
formattedAddresselocationfanno parte dello SKU Place Details Essentials.displayNameegoogleMapsUrifanno parte dello SKU Place Details Pro.
Quando una singola richiesta Place Details include campi di più SKU, l'intera richiesta viene fatturata alla tariffa dello SKU di livello più alto. Pertanto, questa chiamata specifica verrà fatturata come richiesta Place Details Pro.
Per controllare i costi, utilizza sempre FieldMask per richiedere solo i campi richiesti dalla tua applicazione.
Crea una visualizzazione combinata per la convalida
Il passaggio finale consiste nell'unire i due set di dati in un'unica visualizzazione. In questo modo, puoi verificare rapidamente e in modo intuitivo l'analisi iniziale. La visualizzazione deve avere due livelli:
- Livello di base: una mappa coropletica o termica generata dai risultati iniziali di
PLACES_COUNT_PER_H3, che mostra la densità complessiva dei luoghi nella tua area geografica. - Livello superiore: un insieme di singoli indicatori per ogni PDI di esempio, tracciati utilizzando le coordinate precise recuperate dall'API Places nel passaggio precedente.
La logica per la creazione di questa visualizzazione combinata è espressa in questo esempio di pseudocodice:
# 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)
Sovrapponendo gli indicatori specifici dei dati di fatto alla mappa di densità di alto livello, puoi confermare immediatamente che le aree identificate come hotspot contengono effettivamente un'alta concentrazione dei luoghi che stai analizzando. Questa conferma visiva aumenta notevolmente la fiducia nelle conclusioni basate sui dati.
Conclusione
Questo pattern architetturale fornisce un metodo solido ed efficiente per convalidare insight geospaziali su larga scala. Sfruttando Places Insights per un'analisi ampia e scalabile e l'API Place Details per una verifica mirata e basata su dati di fatto, crei un potente ciclo di feedback. In questo modo, le tue decisioni strategiche, che si tratti della selezione di un sito di vendita al dettaglio o della pianificazione logistica, si basano su dati non solo statisticamente significativi, ma anche verificabilmente accurati.
Passaggi successivi
- Esplora altre funzioni di conteggio dei luoghi per scoprire come possono rispondere a diverse domande analitiche.
- Consulta la documentazione dell'API Places per scoprire altri campi che puoi richiedere per arricchire ulteriormente la tua analisi.
Collaboratori
Henrik Valve | DevX Engineer
Esegui in Google Colab
Visualizza il codice sorgente su GitHub