POI-Anzahl nach H3 abfragen

Die PLACES_COUNT_PER_H3 Funktion aggregiert Daten zu Points of Interest (POI) in standardisierten H3-Raumzellen mit einer bestimmten Auflösung. Diese Funktion ist der empfohlene Weg für regionale Dichteanalysen, Wettbewerbsanalysen 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 standardmäßig das aktive Projekt für Ihre Abfrage verwendet.
  • LINKED_DATASET_NAME: Der Name Ihres abonnierten Datasets für Places Insights, z. B. places_insights___us.
  • filters (JSON): Ein JSON-Objekt, das mit JSON_OBJECT erstellt wurde und Schlüssel-Wert-Filter parameter enthält.

Erforderliche JSON-Filter

  • geography (GEOGRAPHY): Der zu indexierende Begrenzungsbereich (Punkt, Linienzug oder Polygon).
  • h3_resolution (INTEGER): Die Auflösungsebene der H3-Zelle. Die unterstützten Werte liegen zwischen 0 und 11.

Optionale JSON-Filter

Ausgabeschema der Tabelle

Die Funktion gibt eine BigQuery-Tabelle mit einer Zeile pro H3-Zellenindex zurück, der Ihre Zielgeometrie schneidet:

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 Orte in dieser bestimmten H3-Zelle oder null, wenn keine Orte übereinstimmen.
sample_place_ids ARRAY<STRING> Ein Array mit bis zu 250 Orts-IDs, die sich in dieser Zelle befinden. So können Sie mit der Places API direkte Ground-Truth-Abfragen ausführen.

Regionale POI-Dichte mit PLACES_COUNT_PER_H3 aggregieren

Die Funktion verarbeitet die in Ihren Filtern angegebene Begrenzungsgeografie, ermittelt alle sich überschneidenden H3-Hexagone mit der Zielauflösung und gibt die genaue Anzahl der Orte und Orts-IDs für jedes Hexagon zurück.

Beispiel: Anzahl der barrierefreien Lebensmittelgeschäfte und Convenience-Stores im Bundesstaat New York

Mit dieser Abfrage werden die Anzahl der barrierefreien Convenience-Stores und Lebensmittelgeschäfte im Bundesstaat New York mit einer H3-Auflösungsebene 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 ergibt eine Tabelle, in der die Zellen direkt den räumlichen Zählungen zugeordnet sind:

BigQuery-Ergebnisse für die H3-Abfrage

Beispiel: Anzahl der Orte pro H3-Zelle nach Marke filtern

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 dynamisch in Looker Studio visualisieren

Die folgenden Bilder zeigen Daten aus PLACES_COUNT_PER_H3 in Looker Studio als Karte mit ausgefüllten Bereichen. Je dunkler die H3-Zelle ist, desto höher ist die Konzentration der Ergebnisse:

Gefüllte Karte zum Filtern von barrierefreien Minimärkten und Lebensmittelgeschäften in New York.

So importieren Sie Ihre Daten in Looker Studio:

  1. Führen Sie die obige Funktion in BigQuery aus, um Ihre Ergebnisse zu generieren.
  2. Klicken Sie im Bereich „BigQuery-Ergebnisse“ auf Öffnen in -> Looker Studio. Ihre Ergebnisse werden automatisch in Looker Studio importiert.
  3. Looker Studio erstellt eine Standardberichtseite und initialisiert sie mit einem Titel, einer Tabelle und einem Balkendiagramm der Ergebnisse.

    Standardbericht in Looker Studio.

  4. Wählen Sie alles auf der Seite aus und löschen Sie es.

  5. Klicken Sie auf Einfügen -> Karte mit ausgefüllten Bereichen , um Ihrem Bericht eine Karte mit ausgefüllten Bereichen hinzuzufügen.

  6. Konfigurieren Sie unter Diagrammtypen -> Einrichtung die Felder wie unten dargestellt:

    Heatmaps in Looker Studio einrichten

  7. Die Karte mit ausgefüllten Bereichen wird wie oben dargestellt angezeigt. 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: Anzahl der POIs 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-Raumraster für einen bestimmten Snapshot-Monat abfragen. Dabei wird ein geografischer Suchbereich mit einem Puffer um einen Standort definiert und zusätzliche Kriterien für die Anzahl der Ladestecker für Elektrofahrzeuge mit max_ev_charge_connector_count sowie bestimmte 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')]
    )
  )
);