Ya, selalu antisipasi koordinat untuk berfluktuasi.
Meskipun bangunan tidak mungkin bergeser di permukaan bumi, menggunakan koordinat sebagai pengidentifikasi / tombol untuk alamat adalah ide yang buruk karena data set yang akan pindah dari bawah Anda:
Akurasi masalah definisi. Apakah alamat disematkan paling akurat di kotak suratnya, atau struktur terbesarnya, atau pintu depan? Pintu depan yang mana? Mungkin jalan masuk?
Ketepatan desimal adalah masalah lain. Apakah 33.754208
sama dengan 33.754209
? Ini bisa diperbaiki dengan pembulatan, tetapi kemudian Anda kehilangan presisi. Menambahkan presisi desimal adalah kemewahan yang mungkin tidak Anda miliki. Tidak peduli seberapa tepat desimal Anda, mereka kemungkinan akan berbeda (terutama mengingat bagaimana komputer membandingkan jenis float) bahkan jika mereka "sama". Anda sepenuhnya bergantung pada detail implementasi tingkat rendah pada saat ini.
Ketika Anda tidak mengontrol kumpulan data dan Anda menggunakan atribut fisik untuk memasukkan sesuatu, Anda tidak dapat menjamin bahwa kunci tersebut tidak akan berubah. Tapi itu masalah karena database Anda mengharapkan pengidentifikasi menjadi unik dan konstan. Bahkan jika Anda memperbaruinya, bagaimana dengan tabrakan dengan titik data lain?
Bahkan jika Anda memiliki kumpulan data, Anda mengalami dua masalah pertama. Definisi dan implementasi berubah. Anda tidak akan pernah bisa memperbarui data koordinat Anda, bahkan untuk "akurasi," yang lebih baik, tetapi alamat masih berubah apakah Anda suka atau tidak, membatalkan cache Anda.
Apa yang dapat Anda lakukan, adalah kuncinya . Jangan gunakan koordinat sebagai pengidentifikasi; melainkan, tetapkan kunci yang dijamin unik di seluruh aplikasi Anda ( atau mungkin dunia ) dan jangan pernah biarkan itu berubah.
Di SmartyStreets, saya banyak berurusan dengan alamat geocoding. Misalnya, alamat itu adalah standar bangunan. Tidak ada nomor sekunder (apartemen / suite). Meskipun data kami adalah level-blok (hampir-atap), jika kami bisa mendapatkan setepat mungkin, seperti apa koordinatnya? Saat ini, kami menetapkan 33.75425, -84.38721
yang hanya beberapa meter dari tempat Google Maps meletakkannya. Haruskah itu koordinat yang berbeda jika lobi dan unit di gedung itu? Jawaban atas pertanyaan itu dapat berubah, sehingga mengubah kumpulan data yang mendasarinya. Dan bagaimana dengan unit yang tepat di atas satu sama lain (Anda bisa menentukan titik di sebuah bangunan, tapi lantai mana yang Anda maksud)? Google jelas melewati pertanyaan yang sama persis, dan jika jawabannya berubah, maka lakukan koordinatnya.
Karena itu, kami selalu menyarankan agar orang memberikan alamat kunci yang mereka kontrol untuk mengidentifikasinya secara unik, dan tidak pernah mengubahnya.
Mengapa?
Alamatnya berantakan. Mereka juga dapat berubah, terutama jika Anda mulai mengajukan pertanyaan filosofis tentang "Apa arti alamat sebenarnya? Apakah itu mewakili bangunan atau penduduk? Atau kotak surat?" dan ketika Anda mulai mempertimbangkan bahwa alamat bersifat temporal, yang berarti bahwa alamat itu berubah seiring waktu, itu menjadi lebih buruk.
Kami juga mendengar orang yang mencoba mem-hashing alamat atau menggunakan barcode titik pengiriman sebagai pengidentifikasi. Jangan lakukan itu, karena bahkan dalam format standar, alamat dapat berubah namun tetap menjadi alamat "sama". Dan barcode titik pengiriman, secara keliru dianggap unik untuk suatu alamat, dua kali lebih bersalah: ia berubah dan tidak selalu unik. Keren ya
tl; dr Jadikan basis data Anda sesedikit mungkin pada alamat dan koordinat yang sebenarnya.