Dataset erstellen

Das Erstellen eines Datasets erfolgt in zwei Schritten:

  1. Stellen Sie eine Anfrage zum Erstellen des Datasets.

  2. Stellen Sie eine Anfrage zum Hochladen von Daten in das Dataset.

Voraussetzungen

Beim Erstellen eines Datensatzes ist Folgendes zu beachten:

  • Anzeigenamen müssen innerhalb Ihres Google Cloud-Projekts eindeutig sein.
  • Anzeigenamen müssen kleiner als 64 Byte sein. Da diese Zeichen in UTF-8 dargestellt werden, kann in einigen Sprachen jedes Zeichen durch mehrere Bytes dargestellt werden.
  • Beschreibungen müssen kleiner als 1.000 Byte sein.

Beim Hochladen von Daten ist Folgendes zu beachten:

  • Unterstützte Dateitypen sind CSV, GeoJSON und KML.
  • Die maximal zulässige Dateigröße beträgt 350 MB.
  • Die Namen von Attributspalten dürfen nicht mit dem String „?_“ beginnen.
  • Dreidimensionale Geometrien werden nicht unterstützt. Dazu gehören das Suffix „Z“ im WKT-Format und die Höhenkoordinaten im GeoJSON-Format.

Anforderungen für GeoJSON-Dateien

Die Maps Datasets API unterstützt die aktuelle GeoJSON-Spezifikation. Die Maps Datasets API unterstützt auch GeoJSON-Dateien, die einen der folgenden Objekttypen enthalten:

  • Geometrieobjekte. Ein Geometrieobjekt ist eine räumliche Form, die als Einheit aus Punkten, Linien und Polygonen mit optionalen Löchern beschrieben wird.
  • Feature-Objekte. Ein Feature-Objekt enthält eine Geometrie sowie zusätzliche Name/Wert-Paare, deren Bedeutung anwendungsspezifisch ist.
  • Feature-Sammlungen. Eine Feature-Sammlung besteht aus einer Reihe von Feature-Objekten.

Die Maps Datasets API unterstützt nur GeoJSON-Dateien mit Daten in einem anderen Koordinatenreferenzsystem als WGS84.

Weitere Informationen zu GeoJSON finden Sie unter diesem Link.

Anforderungen für KML-Dateien

Für die Maps Datasets API gelten die folgenden Anforderungen:

  • Alle URLs müssen lokal oder relativ zur Datei selbst sein.
  • Punkt-, Linien- und Polygongeometrien werden unterstützt.
  • Alle Datenattribute werden als Strings betrachtet.
Die folgenden KML-Funktionen werden nicht unterstützt:
  • <styleUrl> oder Symbole, die außerhalb der Datei definiert wurden
  • Netzwerk-Links, z. B. <NetworkLink>
  • Boden-Overlays, z. B. <GroundOverlay>
  • 3D-Geometrien oder höhenbezogene Tags wie <altitudeMode>
  • Kameraspezifikationen wie etwa <LookAt>
  • In der KML-Datei definierte Stile

Anforderungen für CSV-Dateien

Im Folgenden sind die zulässigen Spaltennamen für CSV-Dateien nach ihrer Priorität aufgelistet:

  • latitude, longitude
  • lat, long
  • x, y
  • wkt (Well-Known Text)
  • address, city, state, zip
  • address
  • Eine einzelne Spalte mit allen Adressinformationen, z. B. 1600 Amphitheatre Parkway Mountain View, CA 94043

Die Datei enthält beispielsweise Spalten mit den Namen x, y und wkt. Da x und y eine höhere Priorität haben – wie aus der Reihenfolge der zulässigen Spaltennamen in der Liste oben hervorgeht –, werden die Werte in den Spalten x und y verwendet und die Spalte wkt ignoriert.

Außerdem gilt:

  • Jeder Spaltennamen muss zu einer einzigen Spalte gehören. Das heißt, Sie können keine Spalte namens xy mit x- und y-Koordinatendaten haben. Die x- und y-Koordinaten müssen sich in separaten Spalten befinden.
  • Bei Spaltennamen wird Groß-/Kleinschreibung nicht berücksichtigt.
  • Die Reihenfolge der Spaltennamen spielt keine Rolle. Wenn die CSV-Datei beispielsweise die Spalten lat und long enthält, können sie in beliebiger Reihenfolge verwendet werden.

Behandlung von Fehlern beim Hochladen von Daten

Beim Hochladen von Daten in einen Datensatz kann einer der in diesem Abschnitt beschriebenen Fehler auftreten.

GeoJSON-Fehler

Häufiger GeoJSON-Fehler:

  • Das Feld type fehlt oder type ist kein String. Die hochgeladene GeoJSON-Datendatei muss als Bestandteil der Definition jedes Feature- und Geometrieobjekts ein Stringfeld mit dem Namen type enthalten.

KML-Fehler

Häufiger KML-Fehler:

  • Wenn die Datendatei eine der oben aufgeführten nicht unterstützten KML-Features enthält, kann der Datenimport fehlschlagen.

CSV-Fehler

Häufige CSV-Fehler:

  • Bei einigen Zeilen fehlen Werte für eine Geometriespalte. Alle Zeilen in einer CSV-Datei müssen in den Geometriespalten Werte enthalten, die nicht leer sind. Geometriespalten sind:
    • latitude, longitude
    • lat, long
    • x, y
    • wkt
    • address, city, state, zip
    • address
    • Eine einzelne Spalte mit allen Adressinformationen, z. B. 1600 Amphitheatre Parkway Mountain View, CA 94043
  • Wenn x und y Ihre Geometriespalten sind, müssen die Einheiten Längen- bzw. Breitengrad sein. Einige öffentliche Datasets verwenden unter den Spaltenüberschriften x und y andere Koordinatensysteme. Wenn die falschen Einheiten verwendet werden, wird der Datensatz unter Umständen trotzdem erfolgreich importiert. Die Datensatzpunkte können bei den gerenderten Daten aber an unerwarteten Orten auftreten.

Anfrage zum Erstellen des Datasets stellen

Erstellen Sie ein Dataset. Senden Sie dazu eine POST-Anfrage an den Endpunkt datasets:

https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets

Übergeben Sie einen JSON-Text an die Anfrage, mit der das Dataset definiert wird. Die folgenden Anforderungen müssen erfüllt sein:

  • Geben Sie den displayName des Datasets an. Der Wert von displayName muss für alle Datasets eindeutig sein.

  • Setzen Sie usage auf USAGE_DATA_DRIVEN_STYLING.

Beispiel:

curl -X POST -d '{
    "displayName": "My Test Dataset", 
    "usage": "USAGE_DATA_DRIVEN_STYLING"
  }' \
  -H 'X-Goog-User-Project: PROJECT_NUMBER_OR_ID' \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $TOKEN" \
  https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets

Die Antwort enthält die ID des Datasets im Format projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID sowie weitere Informationen. Verwenden Sie die Dataset-ID, wenn Sie Anfragen zum Aktualisieren oder Ändern des Datasets stellen.

{
  "name": "projects/PROJECT_NUMBER_OR_ID/datasets/f57074a0-a8b6-403e-9df1-e9fc46",
  "displayName": "My Test Dataset",
  "usage": [
    "USAGE_DATA_DRIVEN_STYLING"
  ],
  "createTime": "2022-08-15T17:50:00.189682Z",
  "updateTime": "2022-08-15T17:50:00.189682Z" 
}

Anfrage zum Hochladen von Daten in das Dataset stellen

Nachdem Sie das Dataset erstellt haben, laden Sie die Daten aus Google Cloud Storage oder aus einer lokalen Datei in das Dataset hoch.

Daten aus Cloud Storage hochladen

Für den Upload aus Cloud Storage in das Dataset senden Sie eine POST-Anfrage an den Endpunkt datasets, die auch die ID des Datasets enthält:

https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID:import

Geben Sie im JSON-Anfragetext Folgendes ein:

  • Verwenden Sie inputUri, um den Dateipfad zur Ressource anzugeben, die die Daten in Cloud Storage enthält. Dieser Pfad hat das Format gs://GCS_BUCKET/FILE.

    Der Nutzer, der die Anfrage stellt, benötigt die Rolle Storage-Objekt-Betrachter oder eine andere Rolle mit der Berechtigung storage.objects.get. Weitere Informationen zum Verwalten des Zugriffs auf Cloud Storage finden Sie unter Übersicht über die Zugriffssteuerung.

  • Verwenden Sie fileFormat, um das Dateiformat der Daten anzugeben: FILE_FORMAT_GEOJSON (GeoJson-Datei), FILE_FORMAT_KML (KML-Datei) oder FILE_FORMAT_CSV (CSV-Datei).

Beispiel:

curl -X POST  -d '{
    "gcs_source":{
      "inputUri": "gs://my_bucket/my_csv_file",
      "fileFormat": "FILE_FORMAT_CSV"
    }
  }' \
  -H 'X-Goog-User-Project: PROJECT_NUMBER_OR_ID' \
  -H "content-type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  https://mapsplatformdatasets.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID/datasets/f57074a0-a8b6-403e-9df1-e9fc46:import

Die Antwort hat das folgende Format:

{
  "name": "projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID@VERSION_NUMBER"
}

Daten aus einer Datei hochladen

Wenn Sie Daten aus einer Datei hochladen möchten, senden Sie eine HTTP-POST-Anfrage an den Endpunkt datasets, die auch die ID des Datasets enthält:

https://mapsplatformdatasets.googleapis.com/upload/v1/projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID:import

Die Anfrage enthält:

  • Der Header Goog-Upload-Protocol ist auf multipart festgelegt.

  • Das Attribut metadata, das den Pfad zu einer Datei angibt, die den Typ der hochzuladenden Daten angibt, entweder FILE_FORMAT_GEOJSON (GeoJSON-Datei), FILE_FORMAT_KML (KML-Datei) oder FILE_FORMAT_CSV (CSV-Datei).

    Der Inhalt dieser Datei hat das folgende Format:

    {"local_file_source": {"file_format": "FILE_FORMAT_GEOJSON"}}
  • Die Eigenschaft rawdata, die den Pfad zur GeoJSON-, KML- oder CSV-Datei angibt, die die hochzuladenden Daten enthält.

In der folgenden Anfrage wird die Option curl -F verwendet, um den Pfad zu den beiden Dateien anzugeben:

curl -X POST \
  -H 'X-Goog-User-Project: PROJECT_NUMBER_OR_ID' \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-Goog-Upload-Protocol: multipart" \
  -F "metadata=@csv_metadata_file" \
  -F "rawdata=@csv_data_file" \
  https://mapsplatformdatasets.googleapis.com/upload/v1/projects/PROJECT_NUMBER_OR_ID/datasets/f57074a0-a8b6-403e-9df1-e9fc46:import

Die Antwort hat das folgende Format:

{
  "name": "projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID@VERSION_NUMBER"
}