ABD için aranabilen ve enlem ve boylam bilgileri döndüren ücretsiz veya uygun fiyatlı veri tabanları var mı?
ABD için aranabilen ve enlem ve boylam bilgileri döndüren ücretsiz veya uygun fiyatlı veri tabanları var mı?
Yanıtlar:
Bu kadar çok kayıt için, bir web servisini bile düşünmeyin. Görevinizi tamamlamadan önce sizi boğacak ya da kesecekler.
Böylece, seçeneğiniz yerel olarak çalıştırılabilir ve bunun için birkaç ticari veya ücretsiz seçeneğiniz var.
Ücretsiz seçenekler, uzamsal bir veritabanına yüklemeniz gereken sayım TIGER veri kümesini kullanır. PostGIS ve hatta sqlite için TIGER'e karşı coğrafi kodlayan kütüphaneleri bulabilirsiniz . HGER'de TIGER'e karşı kodlama yapmak için ArcGIS'i bile kullanabilirsiniz . Tabii ki, ArcGIS ücretsiz değil, bu da beni bir sonraki ticari seçeneklere getiriyor. Bir ArcGIS lisans şansınız varsa, TeleAtlas ( Tom Tom'u kastediyor ) veya Navteq veri setine sahip StreetMap DVD'niz var . Bu, StreetMap Premium'un paketlenmiş olup olmadığına bağlıdır . Bu iki veri kümesinden herhangi biri muhtemelen TIGER'den daha tutarlı sonuçlar verecektir.
Verileriniz yüklendikten sonra kendinize bir iyilik yapın ve sokak veritabanının birkaç kopyasını alın ve giriş verilerinin alt kümesi bulunan birkaç makinede coğrafi kodlama işlemini çalıştırın. Yalnızca bir makinede çalıştırmayı denemeyin, aksi takdirde, çalıştırdığınız işlemin muhtemelen bellek sızdırması ve bitmeden birkaç kez çökmesine neden olacağından bahsetmemesi için günlerce bekleyeceksiniz. Bu, işleminiz için farklı kontrol noktalarına sahip olmak istediğiniz anlamına gelir.
SmartyStreets'te (adres doğrulama şirketi) çalışıyorum. Hizmetimiz herkes için ücretsizdir (temel seviyeye kadar). Yeni başlayanlar, ilk yıl boyunca hizmetimizi tamamen ücretsiz kullanma talebinde bulunabilirler. Bu sınıflandırmaya uyursanız, bir yıl boyunca sınırsız hizmetimizden ücret alınmaz.
Ragi bir web servisine karşı tavsiyede bulunur, ancak API'mız sizin için yaklaşık 20 saat içinde 20 milyon adresi kolayca temizleyebilir, standartlaştırabilir ve coğrafi olarak kodlayabilir (saniyede yaklaşık 1000). Bu sürenin bir kısmı, makinenizin hızına (kaç çekirdeğiniz olduğunu) ve ağ bağlantınıza (3G'yi denemeyin, ancak standart bir geniş bant bağlantısı iyi sonuç verir) bağlıdır.
Sadece bir web servisiyle kesinlikle mümkün olduğunu belirtmek istedim.
Güncelleme: 1Aug2017 tarihinden itibaren, web servisimizi uzaktan test ettim ve kablosuz ağda yalnızca tek bir 2015 MacBook pro kullanarak saniyede 70.000 sürekli arama yaptım. Evet, oldukça hızlı. Bu, 20 milyon adres gibi küçük bir listenin sadece 5 dakika alacağı anlamına geliyor.
2010 TigerLine verilerini kullanarak bir postgis geocoder inşasını açıklayan bu çözümü kullandım. Şu anda çalıştırıyorum - 2 milyon adresin coğrafi kodunun belirlenmesi 3 hafta alacağı için hızlı değil.
Bununla birlikte, ücretsiz, engellenmemiş ve coğrafi kodlamaya başlamak için bir (büyük) devletin verilerini kurmak ve yüklemek için en az kodlama ve postgres becerilerine sahip 2 günden az bir süre aldı. Ayrıca, sistem için hiçbir postgres ayarlaması yapmadım ve NFS bağlantılarının üzerinden geçiyor, bu yüzden gerekirse ihtiyacım olursa alabileceğim bir veya iki büyüklükte performans kazancı değerinde olduğundan şüpheleniyorum.
Web servislerini kullanmak yerine, tüm adreslerimi postgres veritabanına yükledim ve ardından bir kerede hepsini coğrafi olarak kodlamak için hızlı ve kirli bir perl betiği çalıştırıyorum:
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
(satır yalnızca okunabilirlik için kesiliyor)
Böylece, "bu ID değerine sahip bir adresi coğrafi olarak kodlayın ve en iyi eşleşmeyi kullanın" update deyimi ve bunu yapmak için psql'ye yönlendirir. Yalnızca derecelendirme yapmadan adres kodlama girişiminde bulunur; yani önceden kodlanmamış. Böylece yeniden başlatılabilir ve her biri bağımsız olarak yapılır.
Sanırım Geocode'a girmek istiyorsun ama bunun için para ödemiyor musun? 20 milyon kaydı coğrafi olarak kodlayabileceğiniz bir sürü hizmet var, ancak size mal olacak. Esri, Pitney Bowes ve diğerleri, bu hizmetleri abonelik yoluyla veya x coğrafi kod başına ücret karşılığında sunmaktadır. 20 milyon önemsiz değildir, ancak bunun için bir iş vakası olduğunu varsayıyorum.
Verilerinizin konumu çok önemlidir çünkü web hizmetlerinin kalitesi değişir (hassasiyet, ölçek vb.) Adresimi google api, facebook api ve ex-simplegeo adresinden coğrafi veritabanımla coğrafi olarak kodlarım.
http://blog.programmableweb.com/2012/06/21/7-free-geocoding-apis-google-bing-yahoo-and-mapquest/
Bu yazı muhtemelen asıl afişe yardımcı olmak için çok geç. Ancak, büyük miktarda veriyi coğrafi olarak değerlendirmek isteyenler için, bağımsız olarak oluşturulan, kullanımı kolay ve yine de güçlü olan "Kolay Georeferencer" adlı yazılımımı inceleyebilirsiniz (yazının altındaki ekran görüntüsüne bakın).
Programın kullanımı basit ve doğrudandır ve doğrudan kurulum gerektirmeyen bir exe dosyasından çalıştırılır. GNS veya GeoNames veri kaynağı arasında coğrafi kodlamayı seçebilir ve şimdiye kadar başka hiçbir coğrafi kodlayıcının yapamadığını, GADM yönetim birimleri veritabanına dayanan coğrafi kodları ve CShapes veri kümesinden tarihi ülke sınırlarını coğrafi kodlamayı seçebilirsiniz. Tek uyarı, adres verilerini coğrafi kodlamamasıdır. Tüm çıktılar, bir CBS'de anında görselleştirme / analiz için hazır şekil dosyaları olarak gelir.
Büyük verilerin verimliliği ve işlenmesi ile ilgili olarak, program sadece 3 saat içinde 100.000 kayıt coğrafi kodlamak için test edildi. Daha büyük veri kümeleri için, işlem süresindeki beklenen artış, eğri olarak düşmelidir, çünkü işlem zamanının çoğu, yalnızca ülke referans veri setleri yüklendiğinde ilk aşamaya gider, ancak daha sonra toplanır. Ayrıca, büyük veri setlerini coğrafi kodlarken internet şişe bağları veya bağlantı sorunları hakkında endişelenmenize gerek yoktur, çünkü yazılım, referans veri setleri ve işlemlerin tümü yerel bilgisayara dayanır. Yazım farkları için belirsiz ad eşleştirme hesaplamasına dayandığından, eşleşme oranları yüzde 80-90'a kadar çıkabilir.
Tanıtım belgesi ve başlangıç kılavuzu dahil olmak üzere daha fazla ayrıntı indirme paketine dahil edilmiştir. Denemekte tereddüt etmenize gerek yok, program, bilgisayarınızın herhangi bir taahhüdü veya karmaşası olmadan masaüstünüze yerleştirebileceğiniz ve çalıştırabileceğiniz basit bir dosyadır.
Yazılım şu adresten indirilebilir: http://geocodeanything.wordpress.com/
Umarım yardımcı olur.
ABD adreslerini coğrafi olarak kodlayacağınız için , Veri Bilim Araç Seti'nden Koordinatlara Yönelik Sokak Adresinin sizin için iyi çalışması gerektiğini düşünüyorum.
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.
Yine de sanal makineyi indirmek ve kendi donanımınızdan çalıştırmak isteyebilirsiniz . Bu şekilde, API sınırları konusunda endişelenmenize gerek yok, siz de onu kontrol edebilirsiniz. Oh ve ücretsiz olduğunu söyledim mi? ;-)
İhtiyacınız olan hassasiyet seviyesine bir referans görmedim, ancak çatı katının uzun lat veya buna yakın olmasını istediğinizi farz ediyorum. Giriş adresinin kalitesi de bir faktör olabilir. İyi temizlenmiş bir adres listesi eksik veya hatalı adres listesinden daha iyi ve daha hızlı kodlanır. Ayrıca,% 90 isabet oranı kabul edilebilir mi yoksa kodlanmış 20 milyon adresin tümüne mi ihtiyacınız var? Ücretsiz bir çözümüm yok ama bildiğim ve kullandığım nispeten ucuz bir çözüm var. Semaphore Corp'dan ZP4, http://www.semaphorecorp.com/bir adres temizleyici / coğrafi kodlayıcı sunar ve adresleri işleyen ve temizlenmiş bir adres, adresin USPS'nin teslim edilip edilemeyeceğini belirten bir bayrak ve ZIP + 4 için uzun olanı döndüren ekler sunar. ZIP + 4 hassasiyeti genellikle inşaat alanlarında (caddenin doğru tarafı ve doğru blokta) çatı hassasiyetine yakındır ve kırsal alanlarda yakın değildir. 30 günlük lisansın ücreti 120 ABD Dolarıdır. Bu sürenin sonunda adres temizleyici çalışmaya devam eder, ancak Teslim Noktası Doğrulama (DPV) ve coğrafi iadeler çalışmayacaktır. Son iki yıl içerisinde oluşturulmuş nispeten hızlı bir bilgisayarla ve yerel olarak depolanan ve erişilen tüm veri verilerinde 20 milyon kayıt yaklaşık 10 gün içinde yapılmalıdır. Son 15 yıldır coğrafi kodlama adresleri oldum ve çoğu zaman ZP4 kullanıyorum. Uzun lat veya DPV teklif etmeden önce,
Şu anda 18 milyon adrese coğrafi kod veriyorum, bu yüzden kurulumumu paylaşmak istiyorum.
Temel olarak Amazon EC2 örneğini PostGIS Tiger Geocoder sunucusu olarak ayarlamak için uygun bir oyun kitabı kullandım, daha sonra coğrafi kod adreslerini toplu halde tutmak için komut dosyası kullandım, sayım bloğuna eşledim.
Amazon EC2'nin maliyeti: minimum gereksinim 180G SSD'nin maliyeti yaklaşık 18 $ / ay. T2.large örneğim, toplamda yaklaşık 90 $ / ay tuttu.
SSD> 180G olan bir linux kutunuz varsa, temelde ücretsiz de kullanabilirsiniz.
Ortalama performansım yaklaşık 170 ~ 300 ms / iyi kalite adres, 400 ~ 600 ms / kötü kalite adres. Kötü kaliteyle, birçoğunun eksik veya yanlış şehir, posta kodu veya hatta sadece yanlış adresleri var. Bu tür bir adresin coğrafi kodlaması çok uzun zaman alıyor, bu nedenle performansınız girdi kalitesine bağlı. Kullandığım Amazon EC2 örneği bir ayda yaklaşık 4 milyon gerçekten kötü biçimlendirilmiş adresleri coğrafi olarak kodlayabilir.
Daha fazla ayrıntı için, sistem kurulumu ve komut dosyaları hakkında blog yazıma bakın
AWS'nin şu anda mevcut olan bir çok coğrafi kodlama sunucusu var. Kendi sunucunuzu alın ve verilerinizi oraya bırakın. https://aws.amazon.com/marketplace/search/results/ref=dtl_navgno_search_box?page=1&searchTerms=geocode
İş akışınız Python'da ise, coğrafi harika bir çözümdür. Temel coğrafi kodlama mantığınızı soyut olarak yazabilir ve daha sonra birçok sağlayıcıdan birini (ArcGIS, Baidu, Bing, DataBC, GeocodeFarm, GoecoderDotUS, GeoNames, Google, IGN Fransa, LiveAddress, NaviData, Nominatim (OSM), OpenCap, OpenMapQuest, BOSS Yer Bulucu, What3Words, Yandex ... phew). Hepsini bile kullanabilirsiniz ve nihayetinde birden fazla coğrafi kodlama servisi tarafından doğrulama ile doğru olma konusunda en yüksek güvene sahip olan noktayı seçebilirsiniz. Bu hizmetlerin çoğu kayıt gerektirir (ancak hepsini değil). ABD'de kullanım için eşit derecede uygun olmayabilirler, ancak temiz bir Python işlevi ile yapmanın faydası, bunun için kontrol edebilmeniz gerektiğidir.
İşte kısa bir örnek:
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/
Gerçekten de zor olan tek şey, adreslerinin kötü bir şekilde oluşturulmamasını sağlamak. Ancak, 20 milyon lokasyonun coğrafik olarak kodlanması muhtemelen çok zaman alacaktır, ancak ... bu tür bir yük muhtemelen birinin hizmet şartlarını ihlal edecektir. Umarım bu olsa birine yardımcı olur.
coğrafi kod isteğiniz günde 2,500'ü geçmezse, Google Geocoding API'sini kullanabilirsiniz . api'ye bir göz atmalısınız, sonuçlara json veya xml olarak dönebilirsiniz.
Kullanım Sınırı:
Google Geocoding API'sinin kullanımı, günlük 2500 coğrafi konum istek sorgusuna tabidir. (İşletmeler için Google Haritalar API'sı kullanıcısı günde 100.000 adede kadar istekte bulunabilir.)
Örnek:
http://maps.google.com/maps/geo?key=yourkeyhere&output=json&q=520+3rd+Street+San+Francisco+CA
Örnek Sonuç:
{
"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 ]
}
} ]
}
ve coğrafi kodlama için bazı linkleri google’dan kontrol edebilirsiniz:
3. Google GeoCoding ile Başlarken
umarım sana yardım eder