Apa format alamat geografis / lokasi yang tepat yang cocok untuk alamat di Bumi? Saat ini saya punya:
- negara
- kota
- jalan
- jumlah
- data teks (untuk kesederhanaan)
- zip
- lat / lng
Tapi saya yakin saya bisa memperbaikinya: mungkin ada negara bagian atau wilayah seperti negara. Atau tidak ada wilayah / wilayah / negara bagian, katakanlah, di Singapura atau Hong Kong.
Mungkin tidak ada jalan, tapi jalan atau bulevar atau yang lainnya. Sejumlah bangunan mungkin majemuk. Mungkin ada lantai. Nomor kamar. Dll ....
Jawaban:
Google telah mengembangkan perpustakaan yang membantu memvalidasi alamat pos untuk setiap negara di dunia, yang dapat Anda gunakan untuk merancang skema untuk menyimpan data ini.
Cari bidang yang paling umum diperlukan di seluruh alamat dari basis pelanggan yang ditargetkan untuk memulai, dan saat Anda mengidentifikasi negara lain dengan persyaratan yang berbeda, Anda dapat terus menyesuaikan skema Anda.
sumber
Address
kelas dari SDK Android bisa menjadi tempat lain yang baik untuk memulai.Cara universal untuk menyimpan alamat / lokasi geografis dalam database adalah yang ini:
Ini membutuhkan jumlah kode pemrograman paling sedikit (sehingga menghemat biaya perawatan) dan sepenuhnya kompatibel dengan alamat apa pun. Namun, ada tiga masalah besar:
Kurangnya validasi data berarti bahwa bidang tersebut dapat digunakan untuk tujuan selain menyimpan alamat. Salah satu tujuannya adalah serangan DOS yang dimaksudkan untuk mengisi ruang basis data Anda dengan memasukkan 2 GB data di bidang alamat.
Data yang disimpan dengan cara ini tidak memungkinkan untuk memprosesnya untuk keperluan intelijen bisnis dan data mining. Misalnya, berapa banyak pengguna dari India? Tidak ada cara mudah untuk mengatakannya, karena alamat-alamat itu tidak akan dinormalisasi.
Pengguna dapat secara keliru memasukkan alamat yang tidak lengkap atau salah.
Untuk mengurangi masalah pertama, batasi bidang ke apa yang Anda pikir sebagai batas yang masuk akal. Secara pribadi, saya akan mulai dengan 1000 karakter, dan kemudian menguranginya berdasarkan panjang alamat yang dimasukkan oleh pengguna pertama setelah Anda mendapatkan kumpulan data yang cukup besar.
Untuk mengurangi dua masalah lainnya, Anda dapat menggunakan API pihak ketiga yang mem-parsing alamat dan memberi Anda data yang berisi negara, kota, kode pos, dll. Jika memungkinkan, API harus dapat menampilkan alamat tersebut di peta kembali ke pengguna untuk mengurangi risiko bagi pengguna memasukkan alamat yang tidak lengkap atau salah: sebagian besar pengguna tahu di mana mereka tinggal, dan melihat posisi yang berbeda pada peta akan segera memberi mereka petunjuk bahwa mereka harus memeriksa input mereka.
Perhatikan bahwa API apa pun yang Anda gunakan, itu tidak akan sempurna. Ini akan menemukan sebagian besar alamat, tetapi tidak semuanya. Ini berarti bahwa jika API memberi tahu bahwa alamat tersebut tidak ada, tetapi pengguna bersikeras bahwa itu memang ada, Anda harus secara apriori mempercayai pengguna, meskipun ia mungkin salah.
Ini juga berarti bahwa Anda masih harus menyimpan input pengguna asli, berdampingan dengan hasil API. Ini berarti bahwa skema tersebut menjadi:
sumber
Tidak ada.
Setiap negara memiliki format alamat yang berbeda. Jika Anda beruntung, dan mereka memiliki format sama sekali!
Jelas lintang / bujur akan memberi Anda titik di dunia, tetapi itu tidak benar-benar berguna untuk mengidentifikasi setiap rumah. Pertimbangkan saja blok menara misalnya.
Taruhan terbaik Anda adalah untuk memeriksa setiap layanan pos negara untuk format resmi. Ini bisa bagus untuk database backend Anda. Tetapi Anda mungkin harus menyederhanakannya untuk pengguna akhir karena akan berisi lebih banyak bidang daripada kebanyakan orang.
Misalnya di Inggris termasuk hal-hal seperti 'lokalitas tergantung ganda', tetapi tidak ada yang akan tahu apa artinya jika Anda bertanya kepada mereka.
sumber
Satu-satunya format universal adalah memiliki satu bidang teks yang mungkin memiliki beberapa baris teks. Ini akan memungkinkan alamat apa pun yang mungkin ada di bumi.
sumber
Saya telah mengembangkan solusi perangkat lunak untuk digunakan di banyak negara. Kami mengatasi masalah ini dengan memulai dengan entitas yang lebih besar terlebih dahulu, yaitu negara kemudian memiliki bidang ke bawah yang paling umum atau terkecil. Ini bekerja dengan baik untuk semua negara yang telah kami uji sejauh ini. Kami juga memiliki sistem pencegahan duplikat yang cerdas, dan penggabungan untuk mereka yang entah bagaimana masuk ke dalam sistem karena pengguna sangat 'kreatif'. Di bagian admin kami memiliki urutan bidang alamat per pengaturan negara. yaitu Jepang memiliki Post / Zip-code pertama di mana sebagai Inggris / AS terakhir.
Secara umum, kami menggunakan:
Setelah dimasukkan dan disimpan, versi terkonjugasi dapat ditampilkan meninggalkan bidang yang tidak perlu.
Seperti yang saya katakan, ini berfungsi untuk semua negara tempat kami memiliki perangkat lunak dan merupakan hasil pengembangan sejak 1989.
Semoga ini bisa membantu entah bagaimana atau setidaknya memberikan wawasan lain.
sumber
No 10 Street Downing Street, City Westminster, State London, Country UK
. Sebaliknya, Anda akan melihat10 Downing Street, Westminster, London, UK
Seperti yang telah dinyatakan, yang paling universal (tetapi tidak praktis untuk divalidasi dan mungkin paling tidak berguna) adalah bidang unicode besar tunggal.
Anda dapat memisahkan negara dari sisa alamat dan menyimpannya sebagai kode negara ISO. Ini akan menormalkan negara dan menawarkan beberapa utilitas dalam memvalidasi sisa alamat.
Anda juga dapat memisahkan kode pos alias kode pos dari sisa alamat. Ini juga akan memiliki beberapa utilitas dalam memvalidasi sisa alamat, dan dapat membantu (meskipun tidak tepat) dalam geolokasi. Misalnya: di Kanada Anda dapat secara unik mengidentifikasi alamat yang hanya menentukan kode pos dan nomor jalan (alias nomor rumah); ini mungkin tidak benar di semua negara.
Mendedikasikan bidang ke negara bagian / provinsi atau kota mulai menjadi lebih bermasalah karena variasi dalam cara masing-masing negara merumuskan alamat. Saya telah menyiapkan tabel alamat yang memiliki bidang-bidang seperti itu karena audiens awal difokuskan pada Amerika Utara, mengetahui bahwa audiens internasional akan menimbulkan masalah untuk menyesuaikan diri. Dalam kebanyakan kasus, mereka dapat "ditanduk sepatu", tetapi ini merupakan kompromi yang canggung dan berpotensi gagal - jelas tidak universal.
sumber
Bertentangan dengan jawaban Mitchdav, saya akan menyarankan agar tidak menggunakan perpustakaan Google. Saya mencari di repositori untuk berbagai tempat internasional dengan skema pengalamatan yang tidak ortodoks, berharap menemukan data unit test, tetapi yang mengkhawatirkan saya menemukan nol hit di seluruh repositori.
Saya pikir taruhan terbaik Anda adalah memperlakukan alamat sebagai teks multi-baris bentuk bebas. Ini menyebalkan bahwa Anda mungkin tidak dapat memvalidasi semua alamat, tetapi beberapa format pengalamatan benar-benar aneh dan mungkin tidak diantisipasi dan pada akhirnya tanggung jawab mengisi alamat yang benar terletak pada pengguna dan dalam sebagian besar aplikasi pengguna menanggung konsekuensi negatif dari mengisi sebuah alamat tidak valid.
Anda mungkin, mungkin, menggunakan validator untuk memberikan peringatan , tetapi tidak lebih dari itu. Tetapi jangan menolak alamat yang tidak divalidasi, karena jika tidak, Anda mungkin kehilangan beberapa pelanggan. Yang mengarah ke pertanyaan tentang bagaimana mengkomunikasikan peringatan kepada pengguna sedemikian rupa sehingga akan berkomunikasi bahwa, jika pengguna tinggal di daerah dengan format alamat yang aneh, aman untuk mengabaikan peringatan ...
sumber
Seperti yang Anda katakan alamat di bumi hanya ada panjang lat atau ...
https://what3words.com
Apa 3 kata, adalah sebuah algoritma (jadi bukan basis data sehingga dapat tertanam ke dalam apa pun) yang dapat menentukan patch 3x3 meter di mana saja di Bumi.
Tonga dan beberapa negara bagian lain telah mengadopsinya sebagai sistem kode pos mereka, sementara itu tidak akan menggantikannya sebagai overlay yang keren, dan dibuat dengan sangat baik dan dipikirkan.
sumber