Membuat kemampuan validasi lokasi menggunakan Google Maps Platform

Tujuan

Anda sering kali perlu memvalidasi lokasi suatu tempat. Ada beberapa layanan berbeda di Google Maps Platform yang dapat membantu Anda menangani kasus penggunaan ini. Dokumen ini membantu Anda memilih antara dua layanan validasi lokasi utama - Address Validation API dan Geocoding API.

Address Validation API adalah penawaran dari Google Maps Platform yang membantu pelanggan memvalidasi apakah alamat sudah akurat atau tidak.

Geocoding dengan Geocoding API adalah proses konversi alamat menjadi koordinat geografis, yang dapat Anda gunakan untuk menempatkan penanda pada peta atau posisi di peta.

Ringkasan tingkat tinggi tentang perbedaan antara Validasi Alamat dan Geocoding API dapat ditemukan di sini.

Kapan harus memilih Validasi Alamat vs Geocoding API

Address-Validation-vs-Geocoding

Catatan tentang diagram alur di atas:

  • Kasus penggunaan interaksi pengguna mengacu pada saat pengguna hadir untuk berinteraksi dengan hasil.
  • Places Autocomplete adalah javascript API, sehingga cocok untuk berintegrasi dengan Antarmuka Pengguna.
  • Anda mungkin mengetahui adanya masalah kualitas data di alamat yang sudah ada. Jadi, meskipun Anda mungkin hanya ingin melakukan geocoding, sebaiknya jalankan lokasi tersebut melalui Address Validation API untuk memperbaiki set data.

Ada banyak situasi ketika Anda mungkin memilih, berdasarkan pohon keputusan di atas, untuk menggunakan satu produk daripada produk lainnya. Tetapi situasi lain mungkin melibatkan penggunaan kedua produk untuk memenuhi tujuan Anda.

Anda dapat memilih untuk menggunakan Address Validation API daripada Geocoding API saat:

  • Ada kemungkinan besar data yang dipertanyakan, atau bahwa mendapatkan alamat yang salah akan berdampak negatif pada downstream. Hal ini karena Address Validation API memberikan lebih banyak masukan tentang alasan input tidak menerima hasil presisi tinggi.
  • Anda perlu memperbaiki input pengguna (misalnya, kesalahan ejaan atau kolom yang hilang), sehingga meningkatkan kemungkinan hasil yang akurat pada output.
  • Region target Anda menampilkan lebih banyak metadata dari Address Validation API dibandingkan dengan Geocoding API, seperti klasifikasi jenis bangunan sebagai tempat tinggal vs. komersial.

Anda dapat memilih untuk menggunakan Geocoding daripada Address Validation API saat:

  • Tujuan utama Anda adalah mengambil lokasi alamat dan akurasi alamat individual mungkin tidak terlalu penting.
    • Misalnya, untuk membuat peta panas dari satu set data yang besar.
  • Anda memerlukan solusi global dan Address Validation API tidak tersedia di semua wilayah target.

Berikut adalah beberapa contoh yang menunjukkan kemampuan Address Validation API dibandingkan dengan Geocoding API.

Contoh Alamat Tidak Valid

1 Fake St, Mountain View, CA 94043, Amerika Serikat

Address Validation API mengelompokkan input ini menjadi komponen alamat individualnya (jalan, kota, negara bagian, dll.). Fitur ini juga dapat memberikan masukan terperinci tentang alasan alamat tidak valid hingga ke tingkat PREMISE.

Jalan Palsu tidak ada di Mountain View, CA, dan Address Validation API menunjukkan hal tersebut pada detail tingkat komponen yang ditampilkan:

{
  "componentName": {
    "text": "Fake St",
    "languageCode": "en"
   },
   "componentType": "route",
   "confirmationLevel":"UNCONFIRMED_BUT_PLAUSIBLE"
 }

Properti penting yang harus diperiksa dalam kasus ini adalah confirmationLevel. Dengan menampilkan UNCONFIRMED_BUT_PLAUSIBLE terhadap Jalan Palsu, API telah menentukan bahwa jalan dapat memiliki nama tersebut, tetapi tidak dapat dicocokkan dengan data alamat pendukung.

Dengan menggunakan hasil API sebagai masukan, dapat disimpulkan bahwa komponen jalan dari input ini (Fake St) salah.

Dengan menggunakan alamat yang sama dengan Geocoding API, Geocoding API dapat mencocokkan alamat dengan “California” seperti yang Anda lihat di tangkapan layar dari alat geocoding yang dapat Anda coba di sini:

alt_text

Akan tetapi, hasilnya adalah geocode dari seluruh status, dengan masukan minimal mengenai komponen mana pada input yang berpotensi rusak.

Contoh Kesalahan Ejaan

76 Buckingamm Palace Road, Londn, SW1W 9TQ, GB

Alamat di atas mengandung beberapa kesalahan ejaan, satu pada nama jalan, dan satunya lagi di daerah lokal.

Address Validation dan Geocoding API dapat memperbaiki kesalahan ini dan mencapai hasil 76 Buckingham Palace Road, London, SW1W 9TQ. Namun, Address Validation API dapat memberikan informasi selengkapnya tentang proses tersebut.

Lihat salah satu komponen alamat yang salah eja saat input:

{
  "componentName": {
    "text": "Buckingham Palace Road",
    "languageCode": "en"
        },
        "componentType": "route",
        "confirmationLevel": "CONFIRMED",
        "spellCorrected": true
     }
}

Address Validation API menampilkan tanda untuk menunjukkan bahwa koreksi telah dilakukan pada kolom. Logika bisnis dapat diterapkan terhadap flag ini untuk memeriksa kembali koreksi dengan penyedia data, seperti pelanggan yang sedang melakukan checkout e-commerce.

Contoh Kesalahan Data dan Kesalahan Ejaan yang Tidak Ada

Bollschestraße 86, 12587, Jerman

Alamat di atas memiliki kesalahan ejaan dalam nama jalan, dan tidak ada kota (lokalitas) Berlin.

Address Validation API dapat memperbaiki kedua error ini dan menampilkan geocode tingkat PREMISE, serta alamat yang diverifikasi ke tingkat PREMISE:

Bölschestraße 86, 12587 Berlin, DE

Geocoding API tidak berhasil mengatasi error input dalam kasus ini, dan menampilkan hasil ZERO_RESULTS.

Contoh Metadata Alamat Tambahan

111 8th Avenue Ste 123, New York, NY 10011-5201, AS

Alamat ini benar, kecuali untuk nomor unit (Ste 123), yang tidak ada di dalam gedung.

Address Validation API dapat memvalidasi alamat ke PREMISE (111 8th Ave), dan memberikan beberapa metadata tentang properti, termasuk bahwa properti tersebut bersifat komersial

lokasi:

"business": true

Selain itu, nilai dpvConfirmation yang ditampilkan sebagai bagian dari uspsData dalam respons adalah S:

"dpvConfirmation": "S"

Nilai dpvConfirmation dari S menunjukkan bahwa alamat divalidasi ke tingkat PREMISE, tetapi nomor unit yang diberikan dalam input tidak terkait dengan alamat tersebut.

Geocoding API tidak dapat memberikan informasi ini.

Memahami respons Geocoding API

Ringkasan

Jika Anda menggunakan Geocoding API, hasil geocode berisi berbagai petunjuk dalam respons yang dapat digunakan untuk memahami detail alamat yang diberikan.

Cara kerja Geocoding API adalah dengan me-resolve komponen alamat dalam hierarki.

Misalnya, 123 Example Street, Chicago, 60007, USA di-resolve dalam urutan berikut:

/ Example Street/ Chicago/ 60007/ USA akan dievaluasi sesuai urutan tersebut. Pertandingan pertama dalam kasus ini adalah Chicago dan, lebih khusus lagi, Kode Pos 60007. Oleh karena itu, metode ini menampilkan Place_id berikut untuk Kode Pos tersebut:

ChIJwRKzf8ixD4gRHiXqucwr_HQ

Geocode API berisi info berikut dalam respons:

        "partial_match": true,
           "place_id": "ChIJwRKzf8ixD4gRHiXqucwr_HQ",
           "types": [
               "postal_code"
           ]

Geocoding API dapat mengonfirmasi jenis tempat asal alamat ini. Daftar alamat types yang ditampilkan oleh Geocoding API dapat ditemukan di sini.

Jika tidak ada komponen input yang diselesaikan, API akan menampilkan:

{
   "results": [],
   "status": "ZERO_RESULTS"
}

Pembuatan permintaan hanya dengan alamat tanpa nomor rumah akan menampilkan hasil dalam bentuk:

"types": [
  "route"
]

Artinya, Geocoding API tidak dapat menemukan atau mencocokkan nomor jalan.

Catatan: Untuk mengetahui apakah sebuah alamat ada, periksa apakah ada parameter (seperti types, partial_match, results, status) yang ditetapkan dalam respons Geocoding API. Hal ini secara bertahap akan meningkatkan tingkat keyakinan bahwa alamat mungkin ada, tetapi tidak akan membuatnya 100% akurat. Itulah sebabnya kita memerlukan Address Validation API.

Anda dapat menggunakan teknik di atas untuk meningkatkan keyakinan dalam akurasi alamat hanya dari respons Geocoding API. Namun, tidak seperti hasil Address Validation API, Geocoding API tidak akan menampilkan masukan yang tepat untuk menentukan akurasi hasil.

Location type

Untuk memahami bagian ini dengan benar, Anda perlu memahami berbagai jenis lokasi yang dapat ditampilkan dari respons Geocoding API:

  • ROOFTOP menunjukkan bahwa hasil yang ditampilkan adalah geocode presisi yang informasi lokasinya kita miliki akurat hingga presisi alamat jalan.
  • RANGE_INTERPOLATED menunjukkan bahwa hasil yang ditampilkan mencerminkan perkiraan (biasanya di jalan) interpolasi antara dua titik tepat (seperti persimpangan). Hasil interpolasi umumnya dikembalikan bila rooftop-geocode tidak tersedia untuk alamat jalan.
  • GEOMETRIC_CENTER menunjukkan bahwa hasil yang ditampilkan adalah pusat geometris dari hasil seperti polyline (misalnya, jalan) atau poligon (wilayah).
  • APPROXIMATE menunjukkan bahwa hasil yang ditampilkan tidak satu pun di atas.

Jika Geocoding API menampilkan location_type dari ROOFTOP atau RANGE_INTERPOLATED, bukan berarti alamat tersebut ada. Demikian pula, jika Geocoding API ditampilkan dengan tanda partial_match yang ditetapkan ke true, hasil tersebut mungkin masih menjadi hasil yang tepat untuk Anda.

Jenis pencocokan palsu ini adalah masalah yang sangat sulit untuk dipecahkan dengan Geocoding API. Setidaknya, Anda dapat mempertimbangkan untuk menerapkan beberapa validasi pascapemrosesan dasar pada negara dan lokalitas permintaan / respons. Lebih baik lagi, coba bandingkan alamat yang sebenarnya untuk kesalahan eja dan/atau alamat yang tidak lengkap.

Catatan: Jika Anda memutuskan untuk menggunakan Geocoding API, sebaiknya lakukan pemeriksaan kualitas data antara permintaan awal dan respons Geocoding API secara rutin.

Kecocokan parsial dan pencocokan salah

Jika alamat memiliki kecocokan parsial, yang berarti Geocoding API tidak bisa mengidentifikasi alamat dengan tepat, maka respons akan berisi:

"partial_match": true,
"types": [
           "locality",
           "political"
         ]

Bahkan yang lebih penting daripada jenis lokasi di atas adalah mempertimbangkan saat partial_match = true dalam respons. partial_match menunjukkan bahwa Geocoding API tidak menampilkan kecocokan persis untuk permintaan asli, meskipun dapat cocok dengan sebagian dari alamat yang diminta.

Sebaiknya Anda memeriksa permintaan asli untuk mengetahui alamat yang tidak lengkap. Kecocokan parsial paling sering terjadi untuk alamat jalan yang tidak ditemukan di lokasi yang ditentukan dalam permintaan. Kecocokan parsial juga mungkin dikembalikan bila sebuah permintaan memiliki kecocokan terhadap dua atau beberapa lokasi di daerah yang sama.

Misalnya, "21 Henr St, Bristol, UK" menampilkan kecocokan sebagian untuk Henry Street dan Henrietta Street. Perhatikan bahwa jika permintaan menyertakan komponen alamat yang salah eja, Geocoding API mungkin menyarankan alamat alternatif. Saran yang terpicu melalui cara ini tidak akan ditandai sebagai kecocokan sebagian.

Alamat Sintetis

Geocoding API dapat menampilkan lokasi untuk alamat "sintetik" yang tidak ada sebagai lokasi akurat di database Google.

Dalam skenario seperti ini, objek respons sering kali berisi ID Tempat yang panjang, dan properti berikut: geometry.location_type=APPROXIMATE.

Jika Anda menemukan indikator ini dalam respons, sebaiknya tandai alamat input sebagai tidak valid dan coba validasi ulang dengan cara lain.

Catatan: Ini adalah contoh lain untuk Address Validation API Anda mendapatkan masukan langsung jika alamat tidak ada.

Memahami respons Address Validation API

Sudah ada dokumentasi bagus tentang cara memahami respons dari Address Validation API, jadi kita tidak akan membahas detail lebih lanjut di sini.

Praktik terbaik

Menentukan geografi

Saat melakukan panggilan ke Validasi Alamat atau Geocoding API, praktik terbaiknya adalah mencoba membatasi area geografis untuk menelusuri alamat tersebut. Kedua API ini menerapkan hal ini dengan dua cara berbeda:

  • Geocoding API - Pembiasan Region

    Jika mengetahui geocode akan berada di negara tertentu, Anda akan mendapatkan hasil yang jauh lebih baik dengan menggunakan Pembiasan Wilayah. Misalnya, jika Anda melakukan geocoding di Kanada, kami sarankan untuk menambahkan &region=ca ke permintaan Anda agar mengarah ke Kanada. Perhatikan bahwa Pembiasan Wilayah hanya mengutamakan hasil dalam wilayah tersebut. Anda tetap bisa mendapatkan hasil di luar wilayah tersebut.

  • Address Validation API - Kode Wilayah

    Dengan cara yang sama, Address Validation API memberikan hasil yang lebih akurat jika kode ISO2 diteruskan dalam permintaan, menggunakan kolom regionCode.

Menyimpan ID tempat

Untuk menyimpan informasi dari Google Maps Platform tentang lokasi untuk permintaan mendatang, Anda dapat menyimpan ID tempat tanpa batas waktu dalam database sebagai atribut lokasi. Anda hanya perlu membuat permintaan Find Place satu kali per placeID. Anda juga dapat menelusuri ID tempat setiap kali pengguna meminta detail transaksi.

Untuk memastikan Anda selalu memiliki informasi terbaru, perbarui ID tempat setiap 12 bulan menggunakan permintaan Place Details dengan parameter place_id.

Catatan: Pastikan Anda juga meninjau panduan praktik terbaik untuk Geocoding.

Kesimpulan

Dokumen ini menjelaskan perbedaan inti antara Validasi Alamat dan Geocoding API. Singkatnya, pertimbangkan untuk menggunakan Address Validation API saat:

  • Alamat surat yang akurat diperlukan, terutama untuk tujuan pengiriman.
  • Data input diketahui berkualitas buruk. Address Validation API lebih memaafkan error input, akan menyoroti komponen alamat yang tidak dapat diverifikasi, dan melakukan koreksi pada data input.
  • Informasi lebih lanjut diperlukan untuk alamat, seperti Perumahan vs Komersial (tersedia di wilayah tertentu).

Langkah Berikutnya

Download Laporan Resmi Meningkatkan checkout, pengiriman, dan operasi dengan alamat yang andal , serta lihat Webinar Meningkatkan checkout, pengiriman, dan operasi dengan Validasi Alamat .

Disarankan bacaan lebih lanjut:

Kontributor

Google mengelola artikel ini. Awalnya, kontributor berikut ini ditulis.

Penulis utama:

Henrik Valve | Engineer Solusi

Thomas Anglaret | Engineer Solusi

Sarthak Ganguly | Engineer Solusi