Convalidare i dati di Places Insights utilizzando ID luogo di esempio

In questo documento imparerai a utilizzare i dati di esempio degli ID luogo di Places Insights, utilizzando le funzioni di conteggio dei luoghi, insieme a ricerche mirate dei dettagli dei luoghi, per aumentare l'affidabilità dei risultati.

Una mappa termica della densità dei luoghi di Londra, con indicatori individuali sovrapposti per
convalidare i dati statistici.

Il pattern architetturale

Questo pattern architetturale ti offre un flusso di lavoro ripetibile per colmare il divario tra l'analisi statistica di alto livello e la verifica dei dati di riferimento. Combinando la scalabilità di BigQuery con la precisione dell'API Places, puoi convalidare con sicurezza i risultati analitici. Ciò è particolarmente utile per la selezione dei siti, l'analisi della concorrenza e le ricerche di mercato, in cui la fiducia nei dati è fondamentale.

Il fulcro di questo pattern prevede quattro passaggi chiave:

  1. 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'ampia area geografica, ad esempio un'intera città o regione.
  2. Isola ed estrai campioni:identifica le aree di interesse (ad es. "hotspot" ad alta densità) dai risultati aggregati ed estrai il sample_place_ids fornito dalla funzione.
  3. Recupera i dettagli di riferimento: utilizza gli ID luogo estratti per effettuare chiamate mirate all'API Place Details per recuperare dettagli reali e completi per ogni luogo.
  4. Crea una visualizzazione combinata:sovrapponi i dati dettagliati dei luoghi alla mappa statistica di primo livello iniziale per verificare visivamente che i conteggi aggregati riflettano la realtà sul campo.

Flusso di lavoro della soluzione

Questo flusso di lavoro ti consente di colmare il divario tra le tendenze a livello macro e i fatti a livello micro. Inizi con una visione statistica generale e fai il drill-down in modo strategico per verificare i dati con esempi specifici e reali.

Analizzare la densità di luoghi su larga scala con Places Insights

Il primo passo è comprendere il panorama a un livello generale. Anziché recuperare migliaia di singoli punti di interesse, puoi eseguire una singola query per ottenere un riepilogo statistico.

La funzione PLACES_COUNT_PER_H3 Places Insights è ideale per questo. Aggrega i conteggi dei PDI in un sistema di griglia esagonale (H3), consentendoti di identificare rapidamente le aree di densità alta o bassa in base ai tuoi criteri specifici (ad es. ristoranti con un punteggio elevato che sono operativi).

Di seguito è riportato un esempio di query. Tieni presente che dovrai fornire la geografia dell'area di ricerca. Un set di dati aperto, come il set di dati pubblici di BigQuery Overture Maps Data, può essere utilizzato per recuperare i dati sui confini geografici.

Per i confini dei set di dati aperti utilizzati di frequente, consigliamo di materializzarli in una tabella del tuo progetto. Ciò riduce significativamente 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
    )
  );

L'output di questa query fornisce una tabella di celle H3 e il conteggio dei luoghi all'interno di ciascuna, formando la base per una mappa termica di densità.

Una tabella dei risultati della query BigQuery che mostra le colonne per h3_cell_index, count e sample_place_ids.

Isolare gli hotspot ed estrarre gli ID luogo campione

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 dalla statistica aggregata ai 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ù alti. Dopodiché, da questi hotspot, consolida i sample_place_ids in un unico elenco. Questo elenco rappresenta un campione selezionato dei PDI più interessanti delle aree più pertinenti, preparandoti alla 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.

Recuperare i dettagli della verità di riferimento con l'API Places

Con l'elenco consolidato di ID luogo, ora puoi passare dall'analisi su larga scala al recupero di dati specifici. Utilizzerai questi ID per eseguire query sull'API Place Details per informazioni dettagliate su ogni località di esempio.

Questo è un passaggio di convalida fondamentale. Mentre Places Insights ti diceva quanti ristoranti si trovavano in una zona, l'API Places ti dice quali sono i ristoranti, 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. FieldMask viene impostato nella richiesta per controllare i dati restituiti dall'API.

Una richiesta all'API Places per un ID specifico utilizzando la libreria client Python avrebbe il seguente aspetto:

# 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)]
)

Per maggiori dettagli, consulta gli esempi della libreria client dell'API Places (nuova).

Creare una visualizzazione combinata per la convalida

Il passaggio finale consiste nell'unire entrambi i set di dati in un'unica visualizzazione. In questo modo puoi controllare immediatamente e in modo intuitivo l'analisi iniziale. La visualizzazione deve avere due livelli:

  1. Livello di base:una mappa coropletica o termica generata dai risultati PLACES_COUNT_PER_H3 iniziali, che mostra la densità complessiva dei luoghi nella tua area geografica.
  2. Livello superiore: un insieme di singoli indicatori per ogni punto d'interesse 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 pseudo-codice:

# 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 i marcatori specifici e basati sui dati di fatto alla mappa della 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 crea una fiducia significativa nelle tue conclusioni basate sui dati.

Conclusione

Questo pattern architetturale fornisce un metodo solido ed efficiente per convalidare gli approfondimenti 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 reali, crei un potente ciclo di feedback. In questo modo, le tue decisioni strategiche, che si tratti di selezione di siti di vendita al dettaglio o pianificazione della logistica, si basano su dati non solo statisticamente significativi, ma anche verificabili e accurati.

Passaggi successivi

Collaboratori

Henrik Valve | DevX Engineer