In diesem Dokument finden Sie eine Referenzarchitektur und ein Beispiel für die Erstellung von Kartendatenvisualisierungen mit Standortdaten in Google Cloud BigQuery und Google Maps Platform Datasets API. Anwendungsfälle sind beispielsweise die Analyse offener Daten von Kommunen, die Erstellung einer Karte zur Telekommunikationsabdeckung oder die Visualisierung von Routen einer mobilen Fahrzeugflotte.
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 der 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 Laden der Karte 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 Komponente für die Kartenvisualisierung.
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 und Aktualisierungshäufigkeit der Quelldaten :
- 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.
- Wenn Sie Datasets einfach aus BigQuery erstellen möchten, 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 Polygongeometrien, um die Größe der Quelldatei zu reduzieren und die Kartenleistung zu verbessern.
- Kacheln
- Die Google Maps Datasets API erstellt Kartenkacheln aus Ihrer Quelldatei, 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 eine Ebene mit einem Bundesstaat oder Land herauszoomt (z.B. z5–z12), kann die Karte anders aussehen als beim Heranzoomen auf eine Stadt oder Nachbarschaft (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.
Wenn Sie diese Abfrage über Cloud Shell ausführen möchten, führen Sie das folgende Code-Snippet 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. - Den
wktdes Features: Punkt-, Linien- oder Polygongeometrie im WKT-Format. WKT ist das Standarddatenformat, das BigQuery-Geografiespalten in einer Abfrage zurückgeben.
Hinweis: Wenn Sie Ihre Abfrageergebnisse visuell überprüfen möchten, bevor Sie ein Dataset erstellen, können Sie Ihre Daten mit Looker Studio schnell in einem Dashboard in BigQuery visualisieren.
Wenn Sie die Tabelle in eine CSV-Datei in einem Google Cloud Storage-Bucket exportieren möchten, verwenden Sie den bq extract Befehl in Cloud Shell:
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 Ihrer 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 Ihres Datasets abgeschlossen ist, können Sie eine Vorschau in der Datasets-Benutzeroberfläche aufrufen.

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 Ihre Client-App erstellen
Schließlich können Sie das Dataset mit der Maps JavaScript API einer clientseitigen App zur Datenvisualisierung 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 Ihrer Dataset-Ebene fest. Weitere Informationen finden Sie in der vollständigen Anleitung zum datengestützten Gestalten 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 Webanwendung mit einer einzelnen Seite 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