POI-Anzahl nach H3 abfragen

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 mit JSON_OBJECT erstellt 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 von 0 bis 11).

Optionale JSON-Filter

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:

BigQuery-Ergebnisse für H3-Abfrage.

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:

Flächenkartogramm 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 die Ergebnisse zu generieren.
  2. Klicken Sie im BigQuery-Ergebnisbereich auf Öffnen in -> Looker Studio. Ihre Ergebnisse werden automatisch in Looker Studio importiert.
  3. Looker Studio erstellt eine Standardberichtsseite 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 dem Bericht eine Karte mit ausgefüllten Bereichen hinzuzufügen.

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

    Heatmap-Einrichtung in Looker Studio.

  7. 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')]
    )
  )
);