Tworzenie zbioru danych

Tworzenie zbioru danych składa się z 2 etapów:

  1. Wyślij żądanie utworzenia zbioru danych.

  2. Poproś o przesłanie danych do zbioru danych.

Wymagania wstępne

Podczas tworzenia zbioru danych:

  • Nazwy wyświetlane muszą być niepowtarzalne w obrębie projektu Google Cloud.
  • Wyświetlana nazwa musi mieć mniej niż 64 bajty (znaki te są reprezentowane w formacie UTF-8, dlatego w niektórych językach każdy znak może być reprezentowany przez wiele bajtów).
  • Opisy muszą mieć mniej niż 1000 bajtów.

Podczas przesyłania danych:

  • Obsługiwane typy plików to CSV, GeoJSON i KML.
  • Maksymalny obsługiwany rozmiar pliku to 350 MB.
  • Nazwy kolumn atrybutów nie mogą zaczynać się od ciągu „?_”.
  • Trójwymiarowe geometrie nie są obsługiwane. Obejmuje to sufiks „Z” w formacie WKT oraz współrzędne wysokości w formacie GeoJSON.

Wymagania GeoJSON

Interfejs Maps Datasets API obsługuje bieżącą specyfikację GeoJSON. Interfejs Maps Datasets API obsługuje też pliki GeoJSON, które zawierają dowolny z tych typów obiektów:

  • Obiekty geometryczne. Obiekt geometryczny to kształt przestrzenny określany jako suma punktów, linii i wielokątów z opcjonalnymi otworami.
  • Obiekty funkcji. Obiekt cech zawiera geometrię i dodatkowe pary nazwa/wartość, których znaczenie jest charakterystyczne dla aplikacji.
  • Kolekcje funkcji. Kolekcja cech to zbiór obiektów cech.

Interfejs Maps Datasets API nie obsługuje plików GeoJSON, które zawierają dane w układzie współrzędnych (CRS) innym niż WGS84.

Więcej informacji na temat GeoJSON znajdziesz w artykule Zgodność z RFC 7946.

Wymagania dotyczące plików KML

Interfejs Maps Datasets API ma następujące wymagania:

  • Wszystkie adresy URL muszą być lokalne (lub względne) w stosunku do samego pliku.
  • Obsługiwane są geometrie punktów, linii i wielokątów.
  • Wszystkie atrybuty danych są traktowane jako ciągi znaków.
Te funkcje formatu KML nie są obsługiwane:
  • Ikony lub <styleUrl> zdefiniowane poza plikiem.
  • Linki sieciowe, np. <NetworkLink>
  • warstwy nad powierzchnią, takie jak <GroundOverlay>
  • geometrie 3D lub tagi związane z wysokością, np. <altitudeMode>
  • Specyfikacje aparatu, np. <LookAt>
  • Style zdefiniowane w pliku KML.

Wymagania dotyczące pliku CSV

W przypadku plików CSV obsługiwane nazwy kolumn są wymienione poniżej w kolejności uzależnionej od ich priorytetu:

  • latitude, longitude
  • lat, long
  • x, y
  • wkt (Znany tekst)
  • address, city, state, zip
  • address
  • Pojedyncza kolumna zawierająca wszystkie dane adresowe, np. 1600 Amphitheatre Parkway Mountain View, CA 94043

Twój plik zawiera np. kolumny o nazwie x, y i wkt. Ponieważ kolumny x i y mają wyższy priorytet, co wynika z kolejności obsługiwanych nazw kolumn na liście powyżej, używane są wartości z kolumn x i y, a kolumna wkt jest ignorowana.

Ponadto:

  • Każda nazwa kolumny musi należeć do jednej kolumny. Oznacza to, że nie możesz mieć kolumny o nazwie xy, która zawiera zarówno dane współrzędnych x, jak i y. Współrzędne x i y muszą znajdować się w osobnych kolumnach.
  • Wielkość liter w nazwach kolumn nie jest rozróżniana.
  • Kolejność nazw kolumn nie ma znaczenia. Jeśli na przykład plik CSV zawiera kolumny lat i long, mogą one występować w dowolnej kolejności.

Postępowanie w przypadku błędów przesyłania danych

Podczas przesyłania danych do zbioru danych możesz napotkać jeden z częstych błędów opisanych w tej sekcji.

Błędy GeoJSON

Typowe błędy GeoJSON:

  • Brak pola type lub type nie jest ciągiem znaków. Przesłany plik danych GeoJSON musi zawierać pole ciągu znaków o nazwie type w każdej definicji obiektu cechy i definicji obiektu Geometry.

Błędy KML

Typowe błędy w formacie KML to:

  • Plik danych nie może zawierać żadnych nieobsługiwanych funkcji KML wymienionych powyżej. W przeciwnym razie import danych może się nie udać.

Błędy pliku CSV

Typowe błędy w pliku CSV:

  • W niektórych wierszach brakuje wartości kolumny geometrycznej. Wszystkie wiersze w pliku CSV muszą zawierać niepuste wartości kolumn geometrycznych. Kolumny geometryczne:
    • latitude, longitude
    • lat, long
    • x, y
    • wkt
    • address, city, state, zip
    • address
    • Pojedyncza kolumna zawierająca wszystkie dane adresowe, np. 1600 Amphitheatre Parkway Mountain View, CA 94043
  • Jeśli kolumny geometryczne to x i y, upewnij się, że wybrane jednostki to długość i szerokość geograficzna. Niektóre publiczne zbiory danych korzystają z różnych układów współrzędnych w nagłówkach x i y. Jeśli zostaną użyte nieprawidłowe jednostki, zbiór danych może się zaimportować, ale wyrenderowane dane mogą wskazywać punkty zbioru danych w nieoczekiwanych lokalizacjach.

Prześlij prośbę o utworzenie zbioru danych

Utwórz zbiór danych, wysyłając żądanie POST do punktu końcowego zbiorów danych:

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

Przekaż do żądania treść JSON, która określa zbiór danych. Musisz:

  • Określ displayName zbioru danych. Wartość displayName musi być unikalna dla wszystkich zbiorów danych.

  • Ustaw usage na USAGE_DATA_DRIVEN_STYLING.

Na przykład:

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

Odpowiedź zawiera identyfikator zbioru danych w formacie projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID wraz z dodatkowymi informacjami. Używaj identyfikatora zbioru danych przy wysyłaniu żądań aktualizacji lub modyfikacji zbioru danych.

{
  "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" 
}

Prześlij prośbę o przesłanie danych do zbioru danych

Po utworzeniu zbioru danych prześlij do niego dane z Google Cloud Storage lub z pliku lokalnego.

Prześlij dane z Cloud Storage

Aby przesłać dane z Cloud Storage do zbioru danych, wyślij do punktu końcowego zbiorów danych żądanie POST, które zawiera też identyfikator zbioru danych:

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

W treści żądania JSON:

  • Użyj inputUri, aby określić ścieżkę pliku do zasobu zawierającego dane w Cloud Storage. Ścieżka ma postać gs://GCS_BUCKET/FILE.

    Użytkownik wysyłający żądanie musi mieć rolę Wyświetlający obiekty Cloud Storage lub dowolną inną rolę z uprawnieniem storage.objects.get. Więcej informacji o zarządzaniu dostępem do Cloud Storage znajdziesz w artykule Omówienie kontroli dostępu.

  • Użyj operatora fileFormat, aby określić format pliku danych w formacie FILE_FORMAT_GEOJSON (plik GeoJson), FILE_FORMAT_KML (plik KML) lub FILE_FORMAT_CSV (plik CSV).

Na przykład:

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

Odpowiedź ma postać:

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

Prześlij dane z pliku

Aby przesłać dane z pliku, wyślij żądanie HTTP POST do punktu końcowego zbiorów danych, które zawiera też identyfikator zbioru danych:

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

Prośba zawiera:

  • Nagłówek Goog-Upload-Protocol jest ustawiony na multipart.

  • Właściwość metadata określająca ścieżkę do pliku określającego typ danych do przesłania: FILE_FORMAT_GEOJSON (plik GeoJSON), FILE_FORMAT_KML (plik KML) lub FILE_FORMAT_CSV (plik CSV).

    Zawartość tego pliku ma następujący format:

    {"local_file_source": {"file_format": "FILE_FORMAT_GEOJSON"}}
  • Właściwość rawdata określająca ścieżkę do pliku GeoJSON, KML lub CSV zawierającego dane do przesłania.

W tym żądaniu do określenia ścieżki do 2 plików używana jest opcja curl -F:

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

Odpowiedź ma postać:

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