Membuat set data

Membuat {i>dataset<i} adalah proses dua langkah:

  1. Buat permintaan untuk membuat set data.

  2. Buat permintaan untuk mengupload data ke set data.

Prasyarat

Saat membuat set data:

  • Nama tampilan dalam project Google Cloud Anda harus berbeda-beda.
  • Nama tampilan harus kurang dari 64 byte (Karena karakter ini direpresentasikan dalam UTF-8, dalam beberapa bahasa, setiap karakter dapat direpresentasikan oleh beberapa byte).
  • Deskripsi harus kurang dari 1000 byte.

Saat mengupload data:

  • Jenis file yang didukung adalah CSV, GeoJSON, dan KML.
  • Ukuran file maksimum yang didukung adalah 350 MB.
  • Nama kolom atribut tidak boleh diawali dengan string "?_".
  • Geometri tiga dimensi tidak didukung. Geometri 3D ini mencakup akhiran "Z" dalam format WKT, dan koordinat ketinggian dalam format GeoJSON.

Persyaratan GeoJSON

Maps Datasets API mendukung spesifikasi GeoJSON saat ini. Maps Datasets API juga mendukung file GeoJSON yang berisi salah satu jenis objek berikut:

  • Objek geometri. Objek geometri adalah bentuk spasial, yang digambarkan sebagai gabungan titik, garis, dan poligon dengan lubang opsional.
  • Objek fitur. Objek fitur berisi geometri beserta pasangan nama/nilai tambahan, yang memiliki arti khusus untuk aplikasi.
  • Koleksi fitur. Koleksi fitur adalah sekumpulan objek fitur.

Maps Datasets API tidak mendukung file GeoJSON yang memiliki data dalam sistem referensi koordinat (CRS) selain WGS84.

Untuk mengetahui informasi selengkapnya tentang GeoJSON, lihat Dokumen RFC 7946.

Persyaratan KML

Maps Datasets API memiliki persyaratan berikut:

  • Semua URL harus bersifat lokal (atau relatif) terhadap file tersebut.
  • Geometri titik, garis, dan poligon didukung.
  • Semua atribut data dianggap sebagai string.
Fitur KML berikut tidak didukung:
  • Ikon atau <styleUrl> yang ditentukan di luar file.
  • Network link, seperti <NetworkLink>
  • Overlay bumi, seperti <GroundOverlay>
  • Geometri 3D atau tag terkait ketinggian seperti <altitudeMode>
  • Spesifikasi kamera seperti <LookAt>
  • Gaya yang ditentukan di dalam file KML.

Persyaratan CSV

Untuk file CSV, nama kolom yang didukung tercantum di bawah ini sesuai urutan prioritas:

  • latitude, longitude
  • lat, long
  • x, y
  • wkt (Well-Known Text)
  • address, city, state, zip
  • address
  • Satu kolom yang berisi semua informasi alamat, seperti 1600 Amphitheatre Parkway Mountain View, CA 94043

Misalnya, file Anda berisi kolom bernama x, y, dan wkt. Karena x dan y memiliki prioritas yang lebih tinggi, sebagaimana ditentukan oleh urutan nama kolom yang didukung dalam daftar di atas, nilai dalam kolom x dan y akan digunakan dan kolom wkt akan diabaikan.

Selain itu:

  • Setiap nama kolom hanya boleh untuk satu kolom. Artinya, Anda tidak dapat memiliki kolom bernama xy yang berisi data koordinat x dan y. Koordinat x dan y harus berada dalam kolom terpisah.
  • Nama kolom tidak peka huruf besar/kecil.
  • Urutan nama kolom tidak akan memengaruhi apa pun. Misalnya, jika file CSV Anda berisi kolom lat dan long, keduanya dapat muncul dalam urutan apa pun.

Menangani error upload data

Saat mengupload data ke set data, Anda mungkin mengalami salah satu error umum yang dijelaskan di bagian ini.

Error GeoJSON

Error GeoJSON umum mencakup:

  • Kolom type tidak ada, atau type bukan string. File data GeoJSON yang diupload harus berisi kolom string dengan nama type sebagai bagian dari definisi Objek fitur dan Objek geometri masing-masing.

Error KML

Error KML umum mencakup:

  • File data tidak boleh berisi salah satu fitur KML yang tidak didukung yang tercantum di atas. Jika tidak, impor data mungkin akan gagal.

Error CSV

Error CSV umum mencakup:

  • Beberapa baris tidak memiliki nilai untuk kolom geometri. Semua baris dalam file CSV harus berisi nilai yang tidak kosong untuk kolom geometri. Kolom geometri mencakup:
    • latitude, longitude
    • lat, long
    • x, y
    • wkt
    • address, city, state, zip
    • address
    • Satu kolom yang berisi semua informasi alamat, seperti 1600 Amphitheatre Parkway Mountain View, CA 94043
  • Jika x dan y adalah kolom geometri Anda, pastikan bahwa unitnya adalah bujur dan lintang. Beberapa set data publik menggunakan sistem koordinat yang berbeda di bagian header x dan y. Jika unit yang salah digunakan, set data mungkin berhasil diimpor, tetapi data yang dirender dapat menampilkan titik set data di lokasi yang tidak terduga.

Membuat permintaan untuk membuat set data

Buat set data dengan mengirimkan permintaan POST ke endpoint set data:

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

Teruskan isi JSON ke permintaan yang menentukan set data. Anda harus:

  • Tentukan displayName set data. Nilai displayName harus unik untuk semua set data.

  • Tetapkan usage ke USAGE_DATA_DRIVEN_STYLING.

Contoh:

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

Respons berisi ID set data, dalam bentuk projects/PROJECT_NUMBER_OR_ID/datasets/DATASET_ID beserta informasi tambahan. Gunakan ID set data saat membuat permintaan untuk memperbarui atau mengubah set data.

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

Membuat permintaan untuk mengunggah data ke {i>dataset<i}

Setelah membuat set data, upload data dari Google Cloud Storage atau dari file lokal ke set data.

Mengupload data dari Cloud Storage

Anda mengupload dari Cloud Storage ke set data dengan mengirimkan permintaan POST ke endpoint set data yang juga menyertakan ID set data:

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

Dalam isi permintaan JSON:

  • Gunakan inputUri untuk menentukan jalur file ke resource yang berisi data di Cloud Storage. Jalur ini akan terlihat seperti gs://GCS_BUCKET/FILE.

    Pengguna yang mengajukan permintaan memerlukan peran Storage Object Viewer, atau peran lain yang mencakup izin storage.objects.get. Untuk mengetahui informasi lebih lanjut tentang cara mengelola akses ke Cloud Storage, lihat Ringkasan kontrol akses.

  • Gunakan fileFormat untuk menentukan format file data sebagai: FILE_FORMAT_GEOJSON (file GeoJson), FILE_FORMAT_KML (file KML), atau FILE_FORMAT_CSV (file CSV).

Contoh:

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

Respons tersebut dalam bentuk:

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

Mengupload data dari file

Untuk mengupload data dari file, kirim permintaan POST HTTP ke endpoint set data yang juga menyertakan ID set data:

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

Permintaan tersebut berisi:

  • Header Goog-Upload-Protocol disetel ke multipart.

  • Properti metadata yang menentukan jalur ke file yang menentukan jenis data yang akan diupload, baik sebagai: FILE_FORMAT_GEOJSON (file GeoJSON), FILE_FORMAT_KML (file KML), atau FILE_FORMAT_CSV (file CSV).

    Konten file ini memiliki format berikut:

    {"local_file_source": {"file_format": "FILE_FORMAT_GEOJSON"}}
  • Properti rawdata yang menentukan jalur ke file GeoJSON, KML, atau CSV yang berisi data yang akan diupload.

Permintaan berikut menggunakan opsi curl -F untuk menentukan jalur ke kedua file:

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

Respons tersebut dalam bentuk:

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