In diesem Dokument finden Sie eine Referenzarchitektur und ein Beispiel für die Erstellung von Kartendatenvisualisierungen mit Standortdaten in Google Cloud BigQuery und der Google Maps Platform Datasets API. Sie können damit beispielsweise offene Daten von Kommunen analysieren, eine Karte zur Telekommunikationsabdeckung erstellen oder Bewegungen einer mobilen Fahrzeugflotte visualisieren.
Kartendatenvisualisierungen sind ein leistungsstarkes Tool, um Nutzer anzusprechen und räumliche Erkenntnisse aus Standortdaten zu gewinnen. Standortdaten sind Daten mit Punkt-, Linien- oder Polygonmerkmalen. Wetterkarten helfen Nutzern beispielsweise, Reisen zu planen und sich auf Stürme vorzubereiten. Business-Intelligence-Karten helfen Nutzern, Erkenntnisse aus ihren Datenanalysen zu gewinnen, und Telekommunikationskarten helfen Nutzern, die Abdeckung und Qualität ihrer Anbieter in einem bestimmten Servicegebiet zu verstehen.
Für App-Entwickler ist es jedoch schwierig, große Kartendatenvisualisierungen zu erstellen, die leistungsstark sind und eine gute Nutzererfahrung bieten. Große Datenmengen müssen clientseitig in den Arbeitsspeicher geladen werden, was zu langen Ladezeiten beim ersten Kartenaufruf führt. Die Visualisierung muss auf allen Geräten leistungsstark sein, einschließlich Mobiltelefonen der unteren Preisklasse mit Einschränkungen bei Arbeitsspeicher und GPU. Außerdem müssen Entwickler eine Bibliothek für das Rendering großer Datenmengen auswählen, die portabel, zuverlässig und leistungsstark ist.
Referenzarchitektur
Für die Entwicklung von Apps mit großen Datenvisualisierungen sind zwei Hauptkomponenten erforderlich.
- Kunden-Back-End : Alle Back-End-App-Daten und ‑Dienste wie Verarbeitung und Speicherung.
- Kunden-Client : Die Benutzeroberfläche Ihrer App mit einer Kartenvisualisierungskomponente.
Das folgende Systemdiagramm zeigt, wie diese beiden Komponenten mit dem App-Nutzer, Google Cloud und der Google Maps Platform interagieren, um eine App für die Visualisierung großer Datenmengen zu erstellen.

Designaspekte
Es gibt eine Reihe von Designaspekten, die Sie beachten müssen, um eine leistungsstarke Datenvisualisierung mit Google Cloud und der Google Maps Platform zu erstellen.
- Größe der Quelldaten und Aktualisierungshäufigkeit :
- Wenn die Quelldaten im GeoJSON-Format weniger als 5 MB groß sind oder sehr häufig aktualisiert werden, z.B. eine Live-Wetterradarvorhersage, sollten Sie die Daten als GeoJSON-Objekt clientseitig in Ihrer App bereitstellen und mit einer deck.gl-Ebene rendern.
- Wenn Ihre Daten mehr als 5 MB groß sind und nicht häufiger als einmal pro Stunde aktualisiert werden, sollten Sie die in diesem Dokument beschriebene Architektur der Datasets API verwenden.
- Datasets unterstützen Dateien mit einer Größe von bis zu 350 MB.
- Wenn Ihre Daten größer als 350 MB sind, sollten Sie die Geometriedaten in der Quelldatei reduzieren oder vereinfachen, bevor Sie sie an Datasets übergeben (siehe Datenreduzierung unten).
- Schema und Format
- Achten Sie darauf, dass Ihre Daten für jedes Feature eine global eindeutige ID-Property haben. Mit einer eindeutigen ID können Sie ein bestimmtes Feature auswählen und gestalten oder Daten mit einem Feature verknüpfen, um es zu visualisieren. Sie können beispielsweise ein ausgewähltes Feature beim Nutzerereignis „Klick“ gestalten.
- Formatieren Sie Ihre Daten gemäß der Spezifikation der Datasets API als CSV oder GeoJSON mit gültigen Spaltennamen, Datentypen und Typen von GeoJSON-Objekten.
- Um Datasets einfach aus BigQuery zu erstellen, erstellen Sie in Ihrem SQL-CSV-Export eine Spalte mit dem Namen
wkt. Datasets unterstützt den Import von Geometrien aus einer CSV-Datei im WKT-Format (Well-Known Text) aus einer Spalte mit dem Namenwkt. - Prüfen Sie, ob Ihre Daten gültige Geometrien und Datentypen haben. GeoJSON muss beispielsweise im WGS84-Koordinatensystem vorliegen und die richtige Reihenfolge der Geometrien haben.
- Verwenden Sie ein Tool wie geojson-validate, um sicherzustellen, dass alle Geometrien in einer Quelldatei gültig sind, oder ogr2ogr, um eine Quelldatei zwischen Formaten oder Koordinatensystemen zu transformieren.
- Datenreduzierung
- Minimieren Sie die Anzahl der Properties von Features. Sie können einem Feature zur Laufzeit zusätzliche Properties über einen eindeutigen ID-Schlüssel hinzufügen (Beispiel).
- Verwenden Sie nach Möglichkeit Ganzzahldatentypen für Property-Objekte, um den Speicherplatz für Kacheln zu minimieren und dafür zu sorgen, dass Kacheln in einer Client-App schnell über HTTPS geladen werden können.
- Vereinfachen und/oder aggregieren Sie sehr komplexe Feature-Geometrien. Verwenden Sie BigQuery-Funktionen wie ST_Simplify für komplexe Polygon-Geometrien, um die Größe der Quelldatei zu reduzieren und die Kartenleistung zu verbessern.
- Kacheln
- Die Google Maps Datasets API erstellt aus Ihrer Quelldatei Kartenkacheln, die mit einem Web- oder mobilen Maps SDK verwendet werden können.
- Kartenkacheln sind ein zoomabhängiges Indexierungssystem, mit dem Daten effizienter in eine visuelle App geladen werden können.
- Bei niedrigeren Zoomstufen werden möglicherweise dichte oder komplexe Features entfernt. Wenn ein Nutzer auf einen Bundesstaat oder ein Land herauszoomt (z.B. z5–z12), kann die Karte anders aussehen als beim Heranzoomen auf eine Stadt oder ein Stadtviertel (z.B. z13–z18).
Beispiel: Eisenbahnen in London
In diesem Beispiel wenden wir die Referenzarchitektur an, um eine Web anwendung mit Google Cloud und Google Maps zu erstellen, die alle Eisenbahnen in London anhand von OpenStreetMap-Daten (OSM) visualisiert.
Vorbereitung
- Zugriff auf die BigQuery Sandbox und die Cloud Console
- Achten Sie darauf, dass Sie ein Google Cloud-Projekt und ein Abrechnungskonto eingerichtet haben.
Schritt 1: Daten in BigQuery abfragen
Rufen Sie die öffentlichen BigQuery
-Datasets auf. Das Dataset
„bigquery-public-data“ und die Tabelle geo_openstreetmap.planet_features enthalten
die gesamten OpenStreetMap
-Daten (OSM) der Welt, einschließlich aller möglichen Features. Im OSM-Wiki finden Sie alle verfügbaren
Features, die Sie abfragen können, darunter OSM
Wiki amenity,
road und landuse.
Verwenden Sie Cloud Shell oder die BigQuery Cloud Console, um die Tabelle mit SQL abzufragen. Im folgenden Code-Snippet wird der Befehl bq query verwendet, um alle Eisenbahnen abzufragen, die auf London beschränkt sind. Dazu werden ein Begrenzungs rahmen und die ST_Intersects() Funktion verwendet.
Führen Sie dieses Code-Snippet in Cloud Shell aus und aktualisieren Sie die Projekt-ID, das Dataset und den Tabellennamen für Ihre Umgebung.
bq query --use_legacy_sql=false \
--destination_table PROJECTID:DATASET.TABLENAME \
--replace \
'SELECT
osm_id,
feature_type,
(SELECT value
FROM unnest(all_tags)
WHERE KEY = "name") AS name,
(SELECT value
FROM unnest(all_tags)
WHERE KEY = "railway") AS railway,
geometry as wkt
FROM bigquery-public-data.geo_openstreetmap.planet_features
WHERE ("railway") IN (SELECT key FROM unnest(all_tags))
AND ST_Intersects(
geometry,
ST_MakePolygon(ST_MakeLine(
[ST_GeogPoint(-0.549370, 51.725346),
ST_GeogPoint(-0.549370, 51.2529407),
ST_GeogPoint(0.3110581, 51.25294),
ST_GeogPoint(0.3110581, 51.725346),
ST_GeogPoint(-0.549370, 51.725346)]
))
)'
Die Abfrage gibt Folgendes zurück:
- Eine eindeutige ID für jedes Feature:
osm_id - Den
feature_type, z. B. Punkte, Linien usw. - Den
namedes Features, z.B.Paddington Station - Den
railway-Typ, z. B. Hauptstrecke, Tourismus, Militär usw. - Das
wktdes Features: Punkt-, Linien- oder Polygon-Geometrie im WKT-Format. WKT ist das Standarddatenformat, das BigQuery-Geografiespalten in einer Abfrage zurückgeben.
Hinweis: Wenn Sie Ihre Abfrageergebnisse visuell validieren möchten, bevor Sie ein Dataset erstellen, können Sie Ihre Daten mit Looker Studio schnell in einem Dashboard in BigQuery visualisieren.
Verwenden Sie den bq extract Befehl in Cloud Shell, um die Tabelle in eine CSV-Datei in einem Google Cloud Storage-Bucket zu exportieren:
bq extract \
--destination_format "CSV" \
--field_delimiter "," \
--print_header=true \
PROJECTID:DATASET.TABLENAME \
gs://BUCKET/FILENAME.csv
Hinweis: Sie können jeden Schritt mit Cloud Scheduler automatisieren, um Ihre Daten regelmäßig zu aktualisieren.
Schritt 2: Dataset aus der CSV-Datei erstellen
Erstellen Sie als Nächstes ein Google Maps Platform-Dataset aus der Abfrageausgabe in Google Cloud Storage (GCS). Mit der Datasets API können Sie ein Dataset erstellen und dann Daten aus einer in GCS gehosteten Datei in Ihr Dataset hochladen.
Aktivieren Sie dazu die Maps Datasets API in Ihrem Google Cloud-Projekt und lesen Sie die API Dokumentation. Es gibt Python und Node.js Clientbibliotheken, mit denen Sie die Datasets API aus der Logik in Ihrem App-Back-End aufrufen können. Außerdem gibt es eine Datasets Benutzeroberfläche, mit der Sie Datasets manuell in der Cloud Console erstellen können.
Nachdem der Upload des Datasets abgeschlossen ist, können Sie eine Vorschau des Datasets auf der Datasets-Benutzeroberfläche ansehen.

Schritt 4: Dataset mit einer Karten-ID verknüpfen
Nachdem Sie Ihr Dataset erstellt haben, können Sie eine Karte ID mit einem zugehörigen Kartenstil erstellen. Im Stileditor können Sie eine Karten-ID und einen Stil mit dem Dataset verknüpfen. Hier können Sie auch cloudbasiertes Gestalten von Karteninhalten anwenden , um das Erscheinungsbild Ihrer Karte anzupassen.
Schritt 5: Kartenvisualisierung für die Client-App erstellen
Schließlich können Sie das Dataset mit der Maps JavaScript API einer clientseitigen Datenvisualisierungs-App hinzufügen. Initialisieren Sie Ihr Kartenobjekt mit der Karten-ID, die im vorherigen Schritt mit Ihrem Dataset verknüpft wurde. Legen Sie dann den Stil und die Interaktivität der Dataset-Ebene fest. Weitere Informationen finden Sie in der vollständigen Anleitung zu datengestützten Stilen mit Datasets.
Mit der Maps JavaScript API können Sie den Stil anpassen, Ereignishandler hinzufügen, um den Stil dynamisch zu ändern, und vieles mehr. Beispiele finden Sie in der Dokumentation. Im Folgenden definieren wir eine setStyle-Funktion, um den Stil für Punkt- und Linien-Features für dieses Beispiel basierend auf dem Attribut „feature_type“ zu erstellen.
function setStyle(params) {
const map.getDatasetFeatureLayer("your-dataset-id");
const datasetFeature = params.feature;
const type = datasetFeature.datasetAttributes["feature_type"];
if (type == "lines") {
return {
fillColor: "blue",
strokeColor: "blue",
fillOpacity: 0.5,
strokeWeight: 1,
}
} else if (type == "points") {
return {
fillColor: "black",
strokeColor: "black",
strokeOpacity: 0.5,
pointRadius: 2,
fillOpacity: 0.5,
strokeWeight: 1,
}
}
}
Wenn dieser Code in einer einseitigen Web-App initialisiert wird, ergibt sich die folgende Visualisierung der Kartendaten:

An dieser Stelle können Sie Ihre Kartenvisualisierung in der Funktion setStyle() erweitern, indem Sie Logik hinzufügen, um Features zu filtern, Stile basierend auf der Nutzerinteraktion hinzuzufügen und mit dem Rest Ihrer Anwendung zu interagieren.
Fazit
In diesem Dokument haben wir eine Referenzarchitektur und eine Beispielimplementierung einer Anwendung zur Visualisierung großer Datenmengen mit Google Cloud und der Google Maps Platform beschrieben. Mit dieser Referenzarchitektur können Sie Apps zur Visualisierung von Standortdaten aus beliebigen Daten in Google Cloud BigQuery erstellen, die auf jedem Gerät mit der Google Maps Datasets API leistungsstark sind.
Nächste Schritte
Zum Weiterlesen:
- Dokumentation zur Google Maps Platform Datasets API
- Daten in Echtzeit mit datengestützten Stilen ansehen
- Einführung in raumbezogene Analysen in BigQuery
- GeoJSON in BigQuery für raumbezogene Analysen verwenden
Beitragende
Hauptautoren:
- Ryan Baumann, Google Maps Platform Solutions Engineering Manager