Die Funktion PLACES_COUNT_PER_H3 aggregiert POI-Daten (Points of Interest) in standardisierte H3-räumliche Rasterzellen mit einer angegebenen Auflösung. Diese Funktion ist die empfohlene Methode für die Analyse der regionalen Dichte, die Kartierung von Mitbewerbern und die Erstellung von hexagonalen Choroplethen-Heatmaps.
Verwenden Sie zum Aufrufen der Funktion PLACES_COUNT_PER_H3 eine SQL-FROM-Klausel, da die Funktion eine Tabelle zurückgibt.
Syntax und Parameter
SELECT * FROM `PROJECT_NAME.LINKED_DATASET_NAME.PLACES_COUNT_PER_H3`( filters )
Parameter
PROJECT_NAME: Der Name Ihres Google Cloud-Projekts. Wenn Sie keinen Projektnamen angeben, wird die Abfrage standardmäßig für das aktive Projekt ausgeführt.LINKED_DATASET_NAME: Der Name Ihres abonnierten Places Insights-Datasets (z. B.places_insights___us).filters(JSON): Ein JSON-Objekt, das mitJSON_OBJECTerstellt wurde und Schlüssel/Wert-Filterparameter enthält.
Erforderliche JSON-Filter
geography(GEOGRAPHY): Der zu indexierende Suchbereich (Punkt, Linestring oder Polygon).h3_resolution(INTEGER): Die Auflösungsstufe der H3-Zelle (unterstützte Werte reichen von0bis11).
Optionale JSON-Filter
- Zusätzliche Parameter wie
types,business_status,price_levelundmin_rating, um die in jeder Zelle gezählten Orte zu filtern. Vollständige Liste der Filterparameter
Schema der Ausgabetabelle
Die Funktion gibt eine BigQuery-Tabelle mit einer Zeile pro H3-Zellenindex zurück, der sich mit der Zielgeometrie überschneidet:
| Spaltenname | Datentyp | Beschreibung |
|---|---|---|
h3_cell_index |
STRING | Die eindeutige H3-Index-ID für die Zelle. |
geography |
GEOGRAPHY | Ein Polygon, das die physische Grenze der H3-Zelle darstellt. |
count |
INTEGER | Die genaue Gesamtzahl der übereinstimmenden betrieblichen Orte innerhalb dieser spezifischen H3-Zelle oder 0, wenn keine Orte übereinstimmen. |
sample_place_ids |
ARRAY<STRING> | Ein Array mit bis zu 250 Orts-IDs innerhalb dieser Zelle, das direkte Grundwahrheitsabfragen über die Places API ermöglicht. |
Regionale POI-Dichte mit PLACES_COUNT_PER_H3 aggregieren
Die Funktion verarbeitet die in Ihren Filtern angegebene geografische Begrenzung, identifiziert alle sich überschneidenden H3-Sechsecke in der Zielauflösung und gibt die genaue Anzahl der Orte und die Orts-IDs für jedes Sechseck zurück.
Beispiel: Rollstuhlgerechte Lebensmittelgeschäfte und Supermärkte im Bundesstaat New York zählen
In dieser Abfrage werden geöffnete, rollstuhlgerechte Convenience Stores und Lebensmittelgeschäfte im Bundesstaat New York mit einer H3-Auflösung von 8 aggregiert. Die Grenzgeometrie des Bundesstaats New York wird dynamisch aus dem öffentlichen Dataset bigquery-public-data.geo_us_boundaries.states abgefragt.
-- Query POI count per H3 cell intersecting the New York State polygon boundary SELECT * FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_PER_H3`( JSON_OBJECT( 'geography', ( -- Dynamically retrieve the boundary geography for New York State SELECT state_geom FROM `bigquery-public-data.geo_us_boundaries.states` WHERE state = 'NY' LIMIT 1 ), 'types', ['grocery_store', 'convenience_store'], 'business_status', ['OPERATIONAL'], 'h3_resolution', 8, 'wheelchair_accessible_entrance', TRUE ) ) ORDER BY count DESC;
Antwortformat
Die Abfrage liefert eine zeilenweise Tabelle, in der Zellen direkt räumlichen Zählungen zugeordnet werden:

Beispiel: Orte pro H3-Zelle zählen, gefiltert nach Marke
Im folgenden Beispiel wird der Filter brand_ids verwendet, um die Anzahl der Orte und Beispiel-Orts-IDs für bestimmte Marken wie Starbucks "1413758728321880760" und Dunkin "1314981297593671295" abzurufen:
DECLARE geo GEOGRAPHY; -- Get the geography for New York City. SET geo = (SELECT geometry FROM `bigquery-public-data.overture_maps.division_area` WHERE country = 'US' AND subtype = 'locality' AND names.primary = 'New York' LIMIT 1); SELECT * FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_PER_H3`( JSON_OBJECT( 'geography', geo, 'h3_resolution', 8, 'brand_ids', ["1413758728321880760", "1314981297593671295"], 'business_status', ['OPERATIONAL'] ) );
H3-Ergebnisse in Looker Studio dynamisch visualisieren
Die folgenden Bilder zeigen Daten aus PLACES_COUNT_PER_H3, die in Looker Studio als Karte mit ausgefüllten Bereichen dargestellt werden. Je dunkler die H3-Zelle, desto höher die Konzentration der Ergebnisse:

So importieren Sie Ihre Daten in Looker Studio:
- Führen Sie die obige Funktion in BigQuery aus, um die Ergebnisse zu generieren.
- Klicken Sie im BigQuery-Ergebnisbereich auf Öffnen in -> Looker Studio. Ihre Ergebnisse werden automatisch in Looker Studio importiert.
Looker Studio erstellt eine Standardberichtsseite und initialisiert sie mit einem Titel, einer Tabelle und einem Balkendiagramm der Ergebnisse.

Wählen Sie alles auf der Seite aus und löschen Sie es.
Klicken Sie auf Einfügen -> Karte mit ausgefüllten Bereichen, um dem Bericht eine Karte mit ausgefüllten Bereichen hinzuzufügen.
Konfigurieren Sie unter Diagrammtypen -> Einrichtung die Felder wie unten dargestellt:

Die ausgefüllte Karte wird wie oben dargestellt. Optional können Sie Diagrammtypen -> Stil auswählen, um das Erscheinungsbild der Karte weiter zu konfigurieren.
Weitere Informationen zum Visualisieren von Places Insights-Ergebnissen finden Sie unter Abfrageergebnisse visualisieren.
Beispiel: Historische POI-Anzahl nach H3-Zelle mit bestimmten Filtern abfragen
In diesem Beispiel wird gezeigt, wie Sie mit dem Filter snapshot_date die Anzahl der POIs in einem H3-räumlichen Raster für einen bestimmten Snapshot-Monat abfragen. Es wird ein geografischer Suchbereich mit einem Puffer um einen Standort definiert und es werden zusätzliche Kriterien für die Anzahl der Ladeanschlüsse für Elektrofahrzeuge mit max_ev_charge_connector_count und bestimmten regular_opening_hours angewendet.
SELECT * FROM `PROJECT_NAME.places_insights___us.PLACES_COUNT_PER_H3`( JSON_OBJECT( 'geography', ST_BUFFER(ST_GEOGPOINT(-74.0060, 40.7128), 5000), -- 5km radius around NYC 'h3_resolution', 8, 'business_status', ['OPERATIONAL'], 'snapshot_date', '2026-01', -- Target snapshot month (YYYY-MM) 'max_ev_charge_connector_count', 3, -- Maximum connector count 'regular_opening_hours', JSON_OBJECT( 'monday', [JSON_OBJECT('start_time', '09:00', 'end_time', '12:00')] ) ) );