Saya memiliki database yang memiliki 300.000 alamat, yang akan ditampilkan di peta. Saya tahu jika saya geo-kode semua alamat itu akan terlalu mahal bagi saya. Jadi saya bertanya-tanya apakah mungkin untuk geo-code alamat dengan cepat / realtime, ketika pengguna akan memilih alamat (alamat properti) itu akan mencari melalui database dan kemudian geo-code alamat dan kemudian memetakannya dengan atribut lainnya.
Akan sangat menyenangkan jika Anda dapat membagikan kode, konsep, atau apa pun. Ngomong-ngomong, backend saya ada di mysql yang didukung oleh Joomla.
google-maps
geocoding
php
mysql
google-maps-api
pengguna1089553
sumber
sumber
Jawaban:
Mehul, saya dulu bekerja di industri verifikasi alamat dengan perusahaan bernama SmartyStreets. Ada banyak layanan geocoding di luar sana, tetapi hanya sedikit yang akan mendukung pemrosesan batch dengan volume yang Anda butuhkan. (Google dan lainnya tidak mengizinkan sebagian besar penggunaan API atau menyimpan / menyimpan hasil caching mereka.)
Jika Anda pergi ke database MySQL Anda dan melakukan ekspor tabel Anda yang berisi alamat, simpan itu sebagai file CSV misalnya. Anda kemudian dapat memprosesnya menggunakan alat web SmartyList atau alat baris perintah . Seperti yang saya katakan, ada beberapa layanan di luar sana, tetapi Anda akan menginginkan sesuatu, saya kira, yang memverifikasi keberadaan alamat juga (maka alasan geocoding) - jika alamat itu salah atau tidak lengkap, demikian juga hasil geocoding . Hanya beberapa layanan yang melakukan ini.
LiveAddress adalah layanan yang disertifikasi CASS oleh USPS. Ada beberapa di luar sana jadi lakukan riset, tetapi Anda menginginkan sesuatu "on-the-fly" / cepat dan murah jadi sekali lagi saya sarankan LiveAddress. Itu tidak hanya akan memverifikasi alamat tetapi kemudian melakukan apa yang Anda butuhkan yang menyediakan informasi lat / lon dan juga ketepatan hasil geocoding. Semuanya berbasis web dan akan memproses puluhan juta rekaman dalam waktu singkat (lihat pertanyaan ini sebagai referensi ).
Jika Anda memiliki kebutuhan lebih lanjut untuk melakukan geocode alamat ketika pengguna berinteraksi, LiveAddress juga memiliki versi API yang dapat menyambungkan apa saja dan juga mendukung pemrosesan batch on-the-fly, tetapi dibayar sebagai langganan, bukan satu kali pembayaran.
sumber
Jika Anda suka Python, Anda bisa menggunakan GeoPy API , dikombinasikan dengan binding GDAL Python atau Fiona , dan membuat skrip yang sangat mendasar seperti ini untuk mengonversi alamat ke titik shapefile.
Ini akan melakukan geolokasi file bernama 'address_to_geocode', membuat shapefile keluaran bernama 'my_output.shp' di folder my_output:
File seharusnya hanya memiliki satu baris untuk satu alamat, seperti misalnya:
Di sini saya menggunakan Google API, tetapi dengan GeoPy sangat mendasar untuk beralih ke API differents, seperti Yahoo !, GeoNames, atau MapPoint .
sumber
Pilihan lain untuk menyelesaikan masalah Anda adalah mengimpor dataset Anda ke tabel fusi dan mengatur bidang alamat sebagai lokasi. Maka itu akan geocode poin secara otomatis. Setelah selesai, Anda dapat mengekspor data sebagai KML.
Atau .. secara alternatif, Anda dapat menulis skrip php untuk menggunakan geocoder yahoo yang memiliki batas 50.000 catatan, jadi cepat atau lambat Anda akan memiliki semua poin Anda di-geocode dalam database Anda.
Saya harap ini membantu!
sumber
sejauh ini geocoder terbaik dan termudah yang saya gunakan https://pypi.python.org/pypi/geocoder/1.8.0 bing maps, google maps, OSM dll.
sumber
Mungkin bukan jawaban terbaik untuk pertanyaan Anda tetapi Anda dapat mencoba BatchGeo. Versi gratis akan membuat Anda banyak menderita, tetapi masih cukup baik untuk pekerjaan saya. Padahal, kami telah membeli versi pro.
Trik untuk mendapatkan koordinat dari file KML adalah dengan mengimpornya ke ArcGIS nanti.
sumber
Saya telah berhasil menggunakan geopy yang menggunakan layanan web geocoding Google. Ini bekerja dengan sempurna hingga 2k poin per 24 jam.
sumber
Matej, Itu karena Google API memungkinkan untuk menarik hingga 2.5k per hari.
Tentang solusi Geo, batch belum ditemukan didukung itu karena dari ulasan saya tentang kode geo python itu tampaknya membuka koneksi setiap kali dia meminta koordinat baru, 300k mungkin akan macet selamanya (mungkin dengan kesalahan 400).
Bermain dengan Poligons harus melakukan trik tetapi tergantung pada area 'Play ground' Anda, apakah itu 1 negara atau negara.
Untuk 1 negara, poligon harus bekerja dengan sangat baik.
Untuk n negara solusi tidak akan berfungsi karena pengumpulan akan memakan waktu lebih lama kapan saja Anda menambahkan negara lain. Cara terbaik untuk melakukannya adalah memuat dengan malas.
=> mulai dengan ide poligon, setiap hal di negara lain, buat tabel database besar untuk menyimpan data, akhirnya Anda akan menyimpan data yang Anda butuhkan saya kira.
sumber
Jika Anda ingin melakukannya dengan PHP - MySQL di sini adalah solusi yang bekerja untuk saya:
sumber
Coba api geocoding ini . Ini gratis untuk penggunaan kecil tetapi jika Anda ingin lebih banyak, mereka membuat Anda membayar. Namun itu murah dan Anda dapat memproses dengan mudah, saya memproses jutaan per bulan melalui mereka.
sumber
Anda dapat menyimpan data Anda sebagai file teks (satu catatan per baris) kemudian batch geocode menggunakan layanan ini: http://geocode.xyz/batch (berfungsi untuk sebagian besar negara Eropa)
atau, Anda dapat menulis kode Anda sendiri untuk mengakses REST / JSON API: http://geocode.xyz/api (gratis untuk pencarian tanpa batas)
sumber
Gunakan alat Mappointing (Pointing map | Batch Geocoding Tool ( http://www.mappointing.com/ )) Dalam alat ini Anda dapat memproses data menggunakan kunci API gratis peta Google. Dan juga alat ini menyediakan perhitungan Jarak & alat pencarian Place.
sumber