Dieses Dokument enthält eine Referenzarchitektur und ein Beispiel für das Erstellen von Kartendatenvisualisierungen mit Standortdaten in Google Cloud BigQuery und der Google Maps Platform Datasets API, z. B. zum Analysieren offener kommunaler Daten, zum Erstellen einer Karte zur Telekommunikationsabdeckung oder zum Visualisieren von Spuren der Bewegung einer mobilen Fahrzeugflotte.
Kartenbasierte Datenvisualisierungen sind ein leistungsstarkes Tool, um Nutzer einzubinden und räumliche Erkenntnisse aus Standortdaten zu gewinnen. Standortdaten sind Daten mit Punkt-, Linien- oder Polygon-Features. Wetterkarten helfen Nutzern beispielsweise, Reisen zu planen und sich auf Unwetter vorzubereiten. Business-Intelligence-Karten helfen Nutzern, Erkenntnisse aus ihrer Datenanalyse zu gewinnen, und Telekommunikationskarten helfen Nutzern, die Abdeckung und Qualität ihrer Anbieter in einem bestimmten Versorgungsgebiet 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 langsamen Ladezeiten beim ersten Laden der Karte führt. Das visuelle Element muss auf allen Geräten leistungsfähig sein, auch auf Smartphones mit geringerer Leistung, die Einschränkungen bei Arbeitsspeicher und GPU haben. Schließlich müssen Entwickler eine Bibliothek zum Rendern großer Datenmengen auswählen, die portierbar, zuverlässig und leistungsfähig ist.
Referenzarchitektur
Für die Entwicklung von Anwendungen mit großen Datenvisualisierungen sind zwei Hauptkomponenten erforderlich.
- Kunden-Backend: alle Backend-App-Daten und ‑Dienste, z. B. Verarbeitung und Speicherung.
- Kundenclient: Die Benutzeroberfläche Ihrer App mit einer Visualisierungskomponente zur Kartendarstellung.
Unten sehen Sie ein Systemdiagramm, das zeigt, wie diese beiden Komponenten mit dem App-Nutzer, Google Cloud und der Google Maps Platform interagieren, um eine App zur Visualisierung großer Datenmengen zu erstellen.

Designaspekte
Es gibt eine Reihe von Designüberlegungen, die Sie beachten sollten, um mit Google Cloud und der Google Maps Platform eine leistungsstarke Datenvisualisierung zu erstellen.
- Größe und Aktualisierungshäufigkeit der Quelldaten:
- Wenn die Quelldaten im GeoJSON-Format kleiner als 5 MB 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 größer als 5 MB sind und nicht öfter als einmal pro Stunde aktualisiert werden, sollten Sie die in diesem Dokument beschriebene Datasets API-Architektur 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 kürzen oder vereinfachen, bevor Sie sie an Datasets übergeben (siehe „Daten kürzen“ unten).
- Schema und Format
- Achten Sie darauf, dass Ihre Daten für jedes Feature ein global eindeutiges ID-Attribut haben. Mit einer eindeutigen ID können Sie ein bestimmtes Element auswählen und gestalten oder Daten mit einem Element verknüpfen, um sie zu visualisieren, z. B. ein ausgewähltes Element beim Nutzerereignis „Klick“ gestalten.
- Formatieren Sie Ihre Daten gemäß der Datasets API-Spezifikation als CSV oder GeoJSON mit gültigen Spaltennamen, Datentypen und GeoJSON-Objekttypen.
- Wenn Sie Datasets ganz einfach aus BigQuery erstellen möchten, erstellen Sie in Ihrem SQL-CSV-Export eine Spalte mit dem Namen
wkt. Datasets unterstützen den Import von Geometriedaten 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 enthalten. GeoJSON muss beispielsweise im WGS84-Koordinatensystem vorliegen, die Geometrie muss im Uhrzeigersinn angegeben sein usw.
- Mit einem Tool wie geojson-validate können Sie prüfen, ob alle Geometrien in einer Quelldatei gültig sind. Mit ogr2ogr können Sie eine Quelldatei in ein anderes Format oder Koordinatensystem umwandeln.
- Datenbereinigung
- Minimieren Sie die Anzahl der Attribute von Elementen. Sie können einem Feature zur Laufzeit zusätzliche Attribute über einen eindeutigen Kennungsschlüssel hinzufügen (Beispiel).
- Verwenden Sie nach Möglichkeit Ganzzahl-Datentypen für Attributobjekte, um den Speicherplatz für Kacheln zu minimieren und die Kacheln so zu speichern, dass sie in einer Client-App über HTTPS geladen werden können.
- Vereinfachen und/oder aggregieren Sie sehr komplexe Feature-Geometrien. Erwägen Sie die Verwendung von BigQuery-Funktionen wie ST_Simplify für komplexe Polygon-Geometrien, um die Größe der Quelldatei zu reduzieren und die Kartenleistung zu verbessern.
- Tiling
- Die Google Maps Datasets API erstellt Kartenkacheln aus Ihrer Quelldatendatei, die mit einem Maps SDK für das Web oder für Mobilgeräte verwendet werden können.
- Kartenkacheln sind ein zoombasiertes Indexierungssystem, mit dem Daten effizienter in eine visuelle App geladen werden können.
- Auf Kartenkacheln werden dichte oder komplexe Elemente bei niedrigeren Zoomstufen möglicherweise nicht angezeigt. Wenn ein Nutzer auf ein Bundesland oder ein Land herauszoomt (z.B. z5–z12), sieht die Karte möglicherweise anders aus als bei einem Zoom auf eine Stadt oder ein Viertel (z.B. z13–z18).
Beispiel: Eisenbahnen in London
In diesem Beispiel wenden wir die Referenzarchitektur an, um eine Webanwendung mit Google Cloud und Google Maps zu erstellen, die alle Eisenbahnstrecken in London anhand von Open Street Map-Daten (OSM) visualisiert.
Vorbereitung
- Zugriff auf die BigQuery-Sandbox und die Cloud Console
- Sie benötigen ein Google Cloud-Projekt und ein Rechnungskonto.
Schritt 1: Daten in BigQuery abfragen
Rufen Sie Öffentliche BigQuery-Datasets auf. Das Dataset „bigquery-public-data“ und die Tabelle geo_openstreetmap.planet_features enthalten die Open Street Map-Daten (OSM) für die gesamte Welt, einschließlich aller möglichen Features. Im OSM-Wiki finden Sie alle verfügbaren Features, die Sie abfragen können, darunter 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 Eisenbahnstrecken abzufragen, die mithilfe eines Begrenzungsrahmens und der Funktion ST_Intersects() auf London gefiltert wurden.
Führen Sie den folgenden Code-Snippet aus, um diese Abfrage über Cloud Shell auszuführen. Aktualisieren Sie dabei 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 Kennung für jedes Feature
osm_id - die
feature_type, z. B. Punkte, Linien usw. - Der
namedes Features, z.B.Paddington Station - Der Typ von
railway, z. B. Haupt, Tourismus, Militär usw. - Die
wktdes Elements – Punkt-, Linien- oder Polygongeometrie im WKT-Format. WKT ist das Standarddatenformat, das BigQuery-Geografiespalten in einer Abfrage zurückgeben.
Hinweis: Wenn Sie die Abfrageergebnisse visuell prüfen möchten, bevor Sie ein Dataset erstellen, können Sie die Daten mit Looker Studio schnell in einem Dashboard aus BigQuery visualisieren.
Verwenden Sie den Befehl bq extract 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 zuerst 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 über die Logik im Backend Ihrer App aufrufen können. Außerdem gibt es eine Dataset-GUI, mit der Sie Datasets manuell in der Cloud Console erstellen können.
Nachdem das Dataset hochgeladen wurde, können Sie sich eine Vorschau des Datasets in der Dataset-GUI ansehen.

Schritt 4: Dataset mit einer Karten-ID verknüpfen
Nachdem Sie das Dataset erstellt haben, können Sie eine Karten-ID mit einem zugehörigen Kartenstil erstellen. Im Kartenstil-Editor können Sie eine Karten-ID und einen Stil mit dem Dataset verknüpfen. Hier können Sie auch das cloudbasierte 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 mithilfe der Maps JS API einer clientseitigen Datenvisualisierungs-App hinzufügen. Initialisieren Sie das Kartenobjekt mit der Karten-ID, die mit dem Dataset aus dem vorherigen Schritt verknüpft ist. Legen Sie dann den Stil und die Interaktivität der Dataset-Ebene fest. Weitere Informationen finden Sie im Leitfaden zu datengestützten Stilen mit Datasets.
Mit der Maps JavaScript API können Sie den Stil anpassen, Event-Handler 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 Punkt- und Linien-Feature-Stil 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 der obige Code in einer einseitigen Web-App initialisiert wird, wird die folgende Kartendatenvisualisierung generiert:

Von hier aus können Sie die Kartendarstellung in der Funktion setStyle() erweitern, indem Sie Logik zum Filtern von Elementen hinzufügen, Stile basierend auf Nutzerinteraktionen hinzufügen und mit dem Rest Ihrer Anwendung 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 erläutert. Mit dieser Referenzarchitektur können Sie Apps zur Visualisierung von Standortdaten aus beliebigen Daten in Google Cloud BigQuery erstellen, die mit der Google Maps Datasets API auf jedem Gerät leistungsstark sind.
Nächste Aktionen
Zum Weiterlesen:
- Dokumentation zur Google Maps Platform Datasets API
- Daten mit datengestützten Stilen in Echtzeit 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