Apakah ada database gratis atau dengan harga terjangkau untuk AS yang dapat dicari dan mengembalikan informasi garis lintang dan bujur?
Apakah ada database gratis atau dengan harga terjangkau untuk AS yang dapat dicari dan mengembalikan informasi garis lintang dan bujur?
Jawaban:
Untuk banyak catatan, bahkan tidak mempertimbangkan layanan web. Mereka akan mencekik atau memotong Anda sebelum Anda bisa menyelesaikan tugas Anda.
Jadi, pilihan Anda menjadi menjalankannya secara lokal, dan untuk itu Anda memiliki beberapa opsi komersial atau gratis.
Opsi gratis akan menggunakan dataset sensus TIGER yang perlu Anda muat ke dalam basis data spasial. Anda dapat menemukan perpustakaan yang melakukan geocode terhadap TIGER untuk PostGIS atau bahkan sqlite . Heck Anda bahkan dapat menggunakan ArcGIS untuk melakukan geocode terhadap TIGER. Tentu saja, ArcGIS tidak gratis, yang membawa saya ke opsi komersial berikutnya. Jika Anda memiliki lisensi ArcGIS kemungkinan Anda memiliki StreetMap DVD dengan TeleAtlas ( maksud saya Tom Tom ) atau dataset Navteq. Itu tergantung jika Anda mendapatkan StreetMap Premium yang dibundel. Salah satu dari dua set data tersebut mungkin akan memberi Anda hasil yang lebih konsisten daripada TIGER.
Bantulah diri Anda sendiri dan buat beberapa salinan dari database jalan begitu data Anda dimuat dan jalankan proses geocoding pada beberapa mesin dengan subset dari data input. Jangan mencoba menjalankannya hanya pada satu mesin atau Anda akan menunggu berhari-hari sampai selesai belum lagi bahwa kemungkinan besar proses apa pun yang Anda jalankan mungkin akan membocorkan memori dan crash beberapa kali sebelum selesai. Ini berarti Anda ingin memiliki pos pemeriksaan yang berbeda untuk proses Anda.
Saya bekerja di SmartyStreets (perusahaan verifikasi alamat). Layanan kami gratis untuk semua orang (hingga tingkat dasar). Startup juga dapat meminta untuk menggunakan layanan kami sepenuhnya gratis untuk tahun pertama. Jadi, jika Anda memenuhi klasifikasi itu, tidak ada biaya untuk layanan tak terbatas kami selama setahun ..
Ragi merekomendasikan layanan web, namun API kami dapat dengan mudah membersihkan, menstandarisasi, dan membuat geocode 20 juta alamat untuk Anda dalam waktu sekitar 5 jam (sekitar 1000 per detik). Beberapa waktu itu akan tergantung pada kecepatan mesin Anda (berapa banyak core yang Anda miliki) dan koneksi jaringan Anda (jangan mencobanya melalui 3G, tetapi koneksi broadband standar akan baik-baik saja).
Hanya ingin menunjukkan bahwa itu mungkin dilakukan dengan layanan web.
Pembaruan: Pada 1Aug2017, saya telah menguji dari jarak jauh layanan web kami dan mendapatkan 70.000 pencarian berkelanjutan per detik hanya menggunakan satu MacBook pro 2015 di jaringan nirkabel. Ya itu cukup cepat. Itu berarti daftar kecil seperti 20 juta alamat hanya akan memakan waktu sekitar 5 menit.
Saya menggunakan langkah - langkah ini menjelaskan bagaimana membangun geocoder postgis menggunakan data TigerLine 2010. Saya menjalankannya sekarang - ini tidak cepat, karena akan butuh 3 minggu untuk membuat geocode 2 juta alamat.
Namun, ini gratis, tidak dicekik, dan membutuhkan seseorang dengan keterampilan pengkodean dan postgres minimal kurang dari 2 hari untuk menyiapkan dan memuat dengan satu data negara (besar) untuk memulai geocoding. Saya juga sama sekali tidak melakukan penyetelan postgres untuk sistem dan itu berjalan di atas NFS mounts, jadi saya curiga ada satu atau dua perintah yang bernilai besar dari peningkatan kinerja yang bisa saya dapatkan dari itu jika saya perlu.
Daripada menggunakan layanan web, saya memasukkan semua alamat saya ke dalam database postgres, dan kemudian saya menjalankan skrip perl yang cepat dan kotor untuk melakukan geocode pada mereka semua satu per satu:
perl -e for ($i=1; $i<[max_key_value]; $i+=1)
{printf "UPDATE source_addresses
SET (rating, new_address, lon, lat)
= (g.rating, pprint_addy(g.addy),
ST_X(g.geomout), ST_Y(g.geomout) )
FROM (SELECT DISTINCT ON (address_id) address_id, (g1.geo).*
FROM (SELECT address_id, (geocode(address)) As geo
FROM source_addresses As ag
WHERE ag.rating IS NULL and address_id = $i
) As g1
ORDER BY address_id, rating LIMIT 1
) As g WHERE g.address_id = source_addresses.address_id;\n"
} | psql -d geocoder
(baris hanya untuk dibaca)
Sehingga menghasilkan "geocode alamat dengan nilai ID ini dan menggunakan pernyataan pembaruan yang paling cocok", dan mengirimkannya ke psql untuk melakukannya. Hanya mencoba untuk melakukan geocode alamat tanpa peringkat - yaitu yang belum geocode. Jadi itu dapat dimulai kembali, dan masing-masing dilakukan secara independen.
Saya kira Anda ingin Geocode tetapi tidak membayar apa pun untuk itu? Ada banyak layanan yang dapat Anda geocode pada 20 juta catatan, tetapi Anda harus membayarnya. Esri, Pitney Bowes, dan lainnya menawarkan layanan ini melalui berlangganan atau dengan biaya per x geocode. 20 juta bukanlah hal sepele, tapi saya berasumsi ada kasus bisnis untuk ini.
Lokasi data Anda sangat penting karena kualitas perubahan layanan web (presisi, skala dll ...) Saya melakukan geocode alamat saya dari google api, facebook api dan ex-simplegeo dengan geodatabase saya.
http://blog.programmableweb.com/2012/06/21/7-free-geocoding-apis-google-bing-yahoo-and-mapquest/
Posting ini mungkin sudah terlambat untuk membantu poster aslinya. Namun, bagi orang lain yang ingin melakukan georeferensi data dalam jumlah besar secara gratis, Anda dapat memeriksa perangkat lunak saya yang disebut "Easy Georeferencer" yang dibuat secara independen, mudah digunakan, dan kuat (lihat tangkapan layar di bagian bawah pos).
Program ini sederhana dan mudah digunakan, dan dijalankan langsung dari file exe yang tidak memerlukan instalasi. Anda dapat memilih untuk melakukan geocode antara sumber data GNS atau GeoNames, dan Anda dapat melakukan apa yang sejauh ini tidak dapat dilakukan oleh geocoder lain, geocode provinsi berdasarkan basis data unit administrasi GADM, serta perbatasan negara bersejarah geocode dari dataset CShapes. Satu-satunya peringatan adalah bahwa ia tidak melakukan geocode data alamat. Semua output datang sebagai shapefile yang siap untuk visualisasi / analisis langsung dalam GIS.
Sejauh mengenai efisiensi dan penanganan data besar, program ini telah diuji coba geocode 100.000 catatan hanya dalam 3 jam. Untuk dataset yang lebih besar, peningkatan waktu pemrosesan yang diharapkan akan turun secara melengkung karena sebagian besar waktu pemrosesan hanya menuju tahap awal ketika dataset referensi negara dimuat, tetapi mengambil setelahnya. Juga, kita tidak perlu khawatir tentang leher botol internet atau masalah konektivitas ketika melakukan geocoding dataset besar karena perangkat lunak, set data referensi, dan pemrosesan semuanya didasarkan pada komputer lokal. Tingkat kecocokan bisa mencapai 80-90 persen karena didasarkan pada akuntansi pencocokan nama fuzzy untuk perbedaan ejaan.
Rincian lebih lanjut, termasuk makalah pengantar dan panduan pemula termasuk dalam paket unduhan. Tidak perlu ragu untuk mencobanya, program ini hanyalah sebuah file sederhana yang dapat Anda tempatkan dan jalankan di desktop Anda tanpa komitmen atau kekacauan komputer Anda.
Perangkat lunak ini dapat diunduh dari: http://geocodeanything.wordpress.com/
Semoga itu bisa membantu.
Karena Anda akan melakukan geocoding alamat AS, saya pikir alat Street Address to Coordinates dari Data Science Toolkit akan berfungsi dengan baik untuk Anda.
This API takes either a single string representing a postal address, or a JSON-encoded array of addresses, and returns a JSON object with a key for every address. The value for each key is either null if no information was found for the address, or an object containing location information, including country, region, city and latitude/longitude coordinates.
Anda mungkin ingin mengunduh mesin virtual dan menjalankannya dari perangkat keras Anda sendiri. Dengan begitu, Anda tidak perlu khawatir tentang batas API plus Anda mengendalikannya juga. Oh dan apakah saya mengatakan bahwa ini gratis? ;-)
Saya belum melihat referensi ke tingkat presisi yang Anda butuhkan, tetapi saya berasumsi bahwa Anda ingin atap panjang atau dekat dengan itu. Kualitas alamat input dapat menjadi faktor juga. Daftar alamat yang dibersihkan dengan baik akan memberikan kode yang lebih baik dan lebih cepat daripada daftar alamat yang tidak lengkap atau buruk. Juga, apakah hit rate 90% dapat diterima atau Anda membutuhkan semua 20 juta alamat yang dikodekan? Saya tidak memiliki solusi gratis, tetapi ada yang relatif murah yang saya ketahui dan gunakan. ZP4 dari Semaphore Corp, http://www.semaphorecorp.com/menawarkan scrubber alamat / geocoder dan add-on yang akan memproses alamat dan mengembalikan alamat yang dibersihkan, sebuah bendera yang menunjukkan apakah alamat tersebut dapat dikirimkan oleh USPS, dan lat panjang untuk ZIP + 4. Presisi ZIP + 4 umumnya dekat dengan presisi atap di area bawaan (sisi jalan yang benar dan di blok yang benar) dan tidak menutup di area pedesaan. Biaya untuk lisensi 30 hari adalah $ 120. Setelah waktu itu, scrubber alamat masih akan berfungsi, tetapi Validasi Poin Pengiriman (DPV) dan pengembalian geo tidak akan berfungsi. Dengan komputer yang relatif cepat, dibangun dalam dua tahun terakhir, dan semua data hte disimpan dan diakses secara lokal, 20 juta catatan harus dilakukan dalam waktu sekitar 10 hari. Saya telah alamat geocoding selama 15 tahun terakhir dan saya telah menggunakan ZP4 untuk sebagian besar waktu itu. Sebelum mereka menawarkan long-lat atau DPV,
Saya melakukan geocoding 18 juta alamat saat ini sehingga saya ingin membagikan pengaturan saya.
Pada dasarnya saya menggunakan buku pedoman yang memungkinkan untuk mengatur instance Amazon EC2 sebagai server PostGIS Tiger Geocoder, kemudian menggunakan skrip untuk mengumpulkan alamat geocode, memetakannya ke blok sensus.
Biaya Amazon EC2: persyaratan minimum 180G SSD berharga sekitar $ 18 / bulan. Total biaya t2.large saya sekitar $ 90 / bulan.
Jika Anda memiliki kotak linux dengan SSD> 180G, Anda juga dapat menggunakannya secara gratis.
Kinerja rata-rata saya adalah sekitar 170 ~ 300 ms / alamat berkualitas baik, 400 ~ 600 ms / alamat kualitas buruk. Dengan kualitas yang buruk maksud saya banyak dari mereka memiliki kota yang hilang atau salah, kode pos, atau bahkan hanya salah alamat. Alamat semacam ini membutuhkan waktu lebih lama untuk melakukan geocode, sehingga kinerja Anda bergantung pada kualitas input. Contoh Amazon EC2 yang saya gunakan dapat melakukan geocode sekitar 4 juta alamat yang diformat sangat buruk dalam satu bulan.
Untuk detail lebih lanjut, lihat posting blog saya tentang pengaturan sistem dan skrip
AWS memiliki sejumlah server geocoding yang tersedia sekarang. Dapatkan server Anda sendiri dan buang data Anda di sana. https://aws.amazon.com/marketplace/search/results/ref=dtl_navgno_search_box?page=1&searchTerms=geocode
Jika alur kerja Anda menggunakan Python, geopy adalah solusi yang bagus. Anda dapat menulis logika geocoding dasar secara abstrak, dan kemudian memilih dari satu dari banyak penyedia (ArcGIS, Baidu, Bing, DataBC, GeocodeFarm, GoecoderDotUS, GeoNames, Google, IGN France, LiveAddress, NaviData, Nominatim (OSM), OpenCage, OpenMapQuest, BOSS Place Finder Yahoo !, What3Words, Yandex ... phew). Anda bahkan dapat menggunakan semuanya dan akhirnya memilih titik yang memiliki kepercayaan diri tertinggi untuk diperbaiki melalui validasi oleh beberapa layanan geocoding. Banyak dari layanan ini memerlukan pendaftaran (tetapi tidak semua). Mereka mungkin tidak sama-sama cocok untuk digunakan di AS, tetapi manfaat melakukannya dengan fungsi Python yang rapi adalah Anda harus dapat mengontrolnya.
Ini contoh singkatnya:
from geopy.geocoders import Nominatim
geolocator = Nominatim(country_bias='New Zealand', timeout=4)
geocoded = geolocator.geocode('Raglan, Waikato', exactly_one=True)
if geocoded is not None:
# success
lat = geocoded.latitude
lon = geocoded.longitude
https://geopy.readthedocs.org/en/1.10.0/
Sungguh satu-satunya bagian yang sulit adalah memastikan bahwa alamat Anda tidak terbentuk dengan buruk. Akan tetapi, mungkin masih perlu banyak waktu untuk melakukan geocode pada 20 juta lokasi ... dan jenis beban itu mungkin akan melanggar ketentuan layanan seseorang. Semoga ini bisa membantu seseorang.
jika permintaan geocode Anda tidak melebihi 2.500 per hari, Anda dapat menggunakan Google Geocoding API . Anda harus melirik api, ia dapat kembali ke hasil sebagai json atau xml.
Batas Penggunaan:
Penggunaan Google Geocoding API tunduk pada batas permintaan 2.500 permintaan geolokasi per hari. (Pengguna Google Maps API for Business dapat melakukan hingga 100.000 permintaan per hari.)
Contoh:
http://maps.google.com/maps/geo?key=yourkeyhere&output=json&q=520+3rd+Street+San+Francisco+CA
Hasil Contoh:
{
"name": "520 3rd Street San Francisco CA",
"Status": {
"code": 200,
"request": "geocode"
},
"Placemark": [ {
"id": "p1",
"address": "520 3rd St, San Francisco, Kaliforniya 94107, Amerika Birleşik Devletleri",
"AddressDetails": {
"Accuracy" : 8,
"Country" : {
"AdministrativeArea" : {
"AdministrativeAreaName" : "CA",
"SubAdministrativeArea" : {
"Locality" : {
"LocalityName" : "San Francisco",
"PostalCode" : {
"PostalCodeNumber" : "94107"
},
"Thoroughfare" : {
"ThoroughfareName" : "520 3rd St"
}
},
"SubAdministrativeAreaName" : "San Francisco"
}
},
"CountryName" : "USA",
"CountryNameCode" : "US"
}
},
"ExtendedData": {
"LatLonBox": {
"north": 37.7826364,
"south": 37.7799384,
"east": -122.3942267,
"west": -122.3969247
}
},
"Point": {
"coordinates": [ -122.3955757, 37.7812874, 0 ]
}
} ]
}
dan Anda dapat memeriksa beberapa contoh tautan untuk geocoding dari google:
3. Mulai dengan Google GeoCoding
Saya harap ini membantu Anda