Có bất kỳ cơ sở dữ liệu miễn phí hoặc giá hợp lý nào cho Hoa Kỳ có thể được tìm kiếm và trả về thông tin vĩ độ và kinh độ không?
Có bất kỳ cơ sở dữ liệu miễn phí hoặc giá hợp lý nào cho Hoa Kỳ có thể được tìm kiếm và trả về thông tin vĩ độ và kinh độ không?
Câu trả lời:
Đối với nhiều hồ sơ, thậm chí không xem xét một dịch vụ web. Họ sẽ đạp ga hoặc cắt bạn trước khi bạn có thể hoàn thành nhiệm vụ của mình.
Vì vậy, tùy chọn của bạn trở thành chạy nó cục bộ và bạn có một số tùy chọn thương mại hoặc miễn phí.
Các tùy chọn miễn phí sẽ sử dụng bộ dữ liệu điều tra dân số mà bạn cần tải vào cơ sở dữ liệu không gian. Bạn có thể tìm thấy các thư viện mã hóa địa lý chống lại TIGER cho PostGIS hoặc thậm chí là sqlite . Heck bạn thậm chí có thể sử dụng ArcGIS để mã hóa địa lý chống lại TIGER. Tất nhiên, ArcGIS không miễn phí, điều này đưa tôi đến các tùy chọn thương mại tiếp theo. Nếu bạn có giấy phép ArcGIS thì rất có thể bạn có DVD StreetMap với TeleAtlas ( ý tôi là Tom Tom ) hoặc bộ dữ liệu Navteq. Điều đó phụ thuộc nếu bạn có gói StreetMap Premium . Bất kỳ bộ dữ liệu nào trong hai bộ dữ liệu đó có thể sẽ cung cấp cho bạn kết quả phù hợp hơn so với TIGER.
Tự mình làm và tạo một vài bản sao của cơ sở dữ liệu đường phố sau khi dữ liệu của bạn được tải và chạy quy trình mã hóa địa lý trên một số máy có tập hợp con của dữ liệu đầu vào. Đừng cố chạy nó trên một máy hoặc bạn sẽ đợi hàng ngày để nó kết thúc, chưa kể rằng rất có thể bất kỳ quá trình nào bạn chạy có thể sẽ bị rò rỉ bộ nhớ và bị hỏng vài lần trước khi kết thúc. Điều này có nghĩa là bạn muốn có các điểm kiểm tra khác nhau cho quy trình của mình.
Tôi làm việc tại SmartyStreets (một công ty xác minh địa chỉ). Dịch vụ của chúng tôi miễn phí cho mọi người (lên đến mức cơ bản). Các công ty khởi nghiệp cũng có thể yêu cầu sử dụng dịch vụ của chúng tôi hoàn toàn miễn phí trong năm đầu tiên. Vì vậy, nếu bạn phù hợp với phân loại đó, sẽ không mất phí cho dịch vụ không giới hạn của chúng tôi trong một năm ..
Ragi khuyên bạn nên sử dụng dịch vụ web, tuy nhiên, API của chúng tôi có thể dễ dàng dọn dẹp, chuẩn hóa và mã hóa địa chỉ 20 triệu địa chỉ cho bạn trong khoảng 5 giờ (khoảng 1000 mỗi giây). Một số thời gian sẽ phụ thuộc vào tốc độ của máy của bạn (bạn có bao nhiêu lõi) và kết nối mạng của bạn (không thử qua 3G, nhưng kết nối băng thông rộng tiêu chuẩn sẽ hoạt động tốt).
Chỉ muốn chỉ ra rằng nó chắc chắn là có thể với một dịch vụ web.
Cập nhật: Kể từ 1Aug2017, tôi đã kiểm tra từ xa dịch vụ web của chúng tôi và nhận được 70.000 lượt tra cứu duy trì mỗi giây chỉ bằng một MacBook Pro 2015 duy nhất trên mạng không dây. Vâng, nó khá nhanh. Điều đó có nghĩa là một danh sách nhỏ như 20 triệu địa chỉ sẽ chỉ mất khoảng 5 phút.
Tôi đã sử dụng hướng dẫn này mô tả cách xây dựng bộ mã hóa địa lý postgis bằng dữ liệu TigerLine 2010. Tôi đang chạy nó ngay bây giờ - không nhanh lắm, vì sẽ mất 3 tuần để mã hóa địa lý 2 triệu địa chỉ.
Tuy nhiên, nó miễn phí, không bị lỗi và mất một người có kỹ năng mã hóa và hậu kỳ tối thiểu dưới 2 ngày để thiết lập và tải với một dữ liệu (trạng thái) lớn để bắt đầu mã hóa địa lý. Tôi cũng đã hoàn toàn không điều chỉnh postgres cho hệ thống và nó đang chạy trên các mount NFS, vì vậy tôi nghi ngờ có một hoặc hai lệnh tăng hiệu suất đáng kể mà tôi có thể thoát khỏi nó nếu tôi cần.
Thay vì sử dụng các dịch vụ web, tôi đã tải tất cả các địa chỉ của mình vào cơ sở dữ liệu postgres và sau đó tôi đang chạy một tập lệnh perl nhanh và bẩn để mã hóa tất cả chúng cùng một lúc:
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
(ngắt dòng chỉ để dễ đọc)
Vì vậy, nó tạo ra một "mã địa lý địa chỉ có giá trị ID này và sử dụng câu lệnh cập nhật phù hợp nhất" và chuyển nó sang psql để thực hiện. Nó chỉ cố gắng đến địa chỉ mã hóa địa lý mà không có xếp hạng - tức là địa chỉ chưa được mã hóa địa lý. Vì vậy, nó có thể khởi động lại, và mỗi cái được thực hiện độc lập.
Tôi đoán bạn muốn Geocode nhưng không trả bất cứ điều gì cho nó? Có một loạt các dịch vụ mà bạn có thể mã hóa địa lý 20 triệu hồ sơ, nhưng nó sẽ khiến bạn phải trả giá. Esri, Pitney Bowes và các dịch vụ khác cung cấp các dịch vụ này thông qua đăng ký hoặc với chi phí cho mỗi x mã địa lý. 20 triệu không phải là chuyện nhỏ, nhưng tôi cho rằng có một trường hợp kinh doanh cho việc này.
Vị trí dữ liệu của bạn rất quan trọng vì chất lượng dịch vụ web thay đổi (độ chính xác, tỷ lệ, v.v ...) Tôi mã hóa địa chỉ của tôi từ google api, facebook api và ex-Simplegeo với cơ sở dữ liệu địa lý của tôi.
http://blog.programizableweb.com/2012/06/21/7-free-geocoding-apis-google-bing-yahoo-and-mapquest/
Bài đăng này có lẽ là quá muộn để giúp các poster gốc. Tuy nhiên, đối với những người khác muốn tìm kiếm số lượng lớn dữ liệu miễn phí, bạn có thể kiểm tra phần mềm của tôi có tên "Easy Georeferencer" được tạo độc lập, dễ sử dụng và mạnh mẽ (xem ảnh chụp màn hình ở cuối bài).
Chương trình này đơn giản và dễ sử dụng và được chạy trực tiếp từ tệp exe không cần cài đặt. Bạn có thể chọn mã hóa địa lý giữa nguồn dữ liệu GNS hoặc GeoNames và bạn có thể làm những gì mà không có trình mã hóa địa lý nào có thể làm được, các mã địa lý dựa trên cơ sở dữ liệu của đơn vị quản trị GADM, cũng như biên giới quốc gia lịch sử mã hóa từ bộ dữ liệu CShapes. Nhắc nhở duy nhất là nó không dữ liệu địa chỉ mã địa lý. Tất cả các kết quả đầu ra là các shapefile đã sẵn sàng để hiển thị / phân tích ngay lập tức trong một hệ thống GIS.
Liên quan đến hiệu quả và xử lý dữ liệu lớn, chương trình đã được thử nghiệm mã địa lý 100 000 hồ sơ chỉ trong 3 giờ. Đối với các bộ dữ liệu lớn hơn, thời gian xử lý dự kiến sẽ giảm xuống vì phần lớn thời gian xử lý chỉ chuyển sang giai đoạn ban đầu khi các bộ dữ liệu tham chiếu quốc gia được tải, nhưng sẽ xuất hiện sau đó. Ngoài ra, người ta không phải lo lắng về vấn đề kết nối hoặc kết nối internet khi mã hóa bộ dữ liệu lớn vì phần mềm, bộ dữ liệu tham chiếu và xử lý đều dựa trên máy tính cục bộ. Tỷ lệ trùng khớp có thể lên tới 80-90 phần trăm vì nó dựa trên kế toán khớp tên mờ cho sự khác biệt về chính tả.
Thông tin chi tiết, bao gồm giấy giới thiệu và hướng dẫn cho người mới bắt đầu được bao gồm trong gói tải xuống. Không cần phải đắn đo về việc thử nó, chương trình chỉ là một tệp đơn giản mà bạn có thể đặt và chạy trên máy tính để bàn của mình mà không có bất kỳ cam kết hay sự lộn xộn nào của máy tính.
Phần mềm có thể được tải xuống từ: http://geocodeanything.wordpress.com/
Mong rằng sẽ giúp.
Vì bạn sẽ mã hóa địa chỉ địa chỉ Hoa Kỳ, tôi nghĩ rằng công cụ Địa chỉ đường đến tọa độ từ Bộ công cụ khoa học dữ liệu sẽ hoạt động tốt cho bạn.
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.
Bạn có thể muốn tải xuống máy ảo và chạy nó từ phần cứng của riêng bạn. Bằng cách đó, bạn không phải lo lắng về các giới hạn API cộng với việc bạn cũng kiểm soát nó. Oh và tôi đã nói rằng nó miễn phí? ;-)
Tôi chưa thấy bất kỳ tài liệu tham khảo nào về mức độ chính xác mà bạn cần nhưng tôi giả định rằng bạn muốn sử dụng mái nhà dài hoặc gần đó. Chất lượng của địa chỉ đầu vào cũng có thể là một yếu tố. Một danh sách các địa chỉ được làm sạch sẽ mã tốt hơn và nhanh hơn danh sách các địa chỉ không đầy đủ hoặc xấu. Ngoài ra, tỷ lệ trúng 90% có thể chấp nhận được hay bạn cần tất cả 20 triệu địa chỉ được mã hóa? Tôi không có giải pháp miễn phí, nhưng có một giải pháp tương đối rẻ tiền mà tôi biết và sử dụng. ZP4 từ Semaphore Corp, http://www.semaphorecorp.com/cung cấp một bộ lọc địa chỉ / trình mã hóa địa lý và các tiện ích bổ sung sẽ xử lý địa chỉ và trả về một địa chỉ đã được làm sạch, một cờ cho biết địa chỉ đó có thể phân phối được USPS hay không, và lat lat cho ZIP + 4. Độ chính xác của ZIP + 4 thường gần với độ chính xác trên mái nhà ở các khu vực xây dựng (bên phải đường và trên khối chính xác) và không gần với khu vực nông thôn. Chi phí cho một giấy phép 30 ngày là $ 120. Sau thời gian đó, bộ lọc địa chỉ sẽ vẫn hoạt động, nhưng Xác thực điểm phân phối (DPV) và trả về địa lý sẽ không hoạt động. Với một máy tính tương đối nhanh, được xây dựng trong vòng hai năm qua và tất cả dữ liệu hte được lưu trữ và truy cập cục bộ, 20 triệu bản ghi sẽ được thực hiện trong khoảng 10 ngày. Tôi đã được mã hóa địa chỉ trong 15 năm qua và tôi đã sử dụng ZP4 trong phần lớn thời gian đó. Trước khi họ cung cấp lat-lat hoặc DPV,
Tôi đang mã hóa 18 triệu địa chỉ ngay bây giờ vì vậy tôi muốn chia sẻ thiết lập của mình.
Về cơ bản, tôi đã sử dụng một playbook ansible để thiết lập phiên bản Amazon EC2 làm máy chủ Bộ mã hóa địa lý Tiger PostGIS, sau đó sử dụng tập lệnh để bó địa chỉ mã địa lý, ánh xạ chúng vào khối điều tra dân số.
Chi phí của Amazon EC2: yêu cầu tối thiểu SSD 180G có giá khoảng $ 18 / tháng. Ví dụ t2.lund của tôi có giá khoảng 90 đô la / tháng.
Nếu bạn có hộp linux với SSD> 180G, về cơ bản bạn cũng có thể sử dụng nó miễn phí.
Hiệu suất trung bình của tôi là khoảng 170 ~ 300 ms / địa chỉ chất lượng tốt, 400 ~ 600 ms / địa chỉ chất lượng kém. Bởi chất lượng kém, ý tôi là rất nhiều trong số họ đã thiếu hoặc sai thành phố, mã zip hoặc thậm chí chỉ sai địa chỉ. Loại địa chỉ này mất nhiều thời gian hơn cho mã địa lý, do đó hiệu suất của bạn phụ thuộc vào chất lượng của đầu vào. Ví dụ Amazon EC2 mà tôi đã sử dụng có thể mã hóa địa lý khoảng 4 triệu địa chỉ được định dạng thực sự xấu trong một tháng.
Để biết thêm chi tiết, xem bài đăng trên blog của tôi về thiết lập hệ thống và tập lệnh
AWS hiện có một số máy chủ mã hóa địa lý. Nhận máy chủ của riêng bạn và đổ dữ liệu của bạn ở đó. https://aws.amazon.com/marketplace/search/results/ref=dtl_navgno_search_box?page=1&searchTerms=geocode
Nếu quy trình làm việc của bạn bằng Python, geopy là một giải pháp tuyệt vời. Bạn có thể viết logic mã hóa cơ bản một cách trừu tượng, sau đó chọn một trong nhiều nhà cung cấp (ArcGIS, Baidu, Bing, DataBC, GeocodeFarm, GoecoderDotUS, GeoNames, Google, IGN France, LiveAddress, NaviData, Nominatim (OSM) Trình tìm địa điểm Yahoo! BOSS, What3emme, Yandex ... phew). Bạn thậm chí có thể sử dụng tất cả chúng và cuối cùng chọn điểm có độ tin cậy cao nhất là chính xác thông qua xác nhận bởi nhiều dịch vụ mã hóa địa lý. Nhiều dịch vụ trong số này yêu cầu đăng ký (nhưng không phải tất cả). Chúng có thể không phù hợp như nhau để sử dụng ở Hoa Kỳ, nhưng lợi ích của việc thực hiện với chức năng Python gọn gàng là bạn sẽ có thể kiểm soát điều đó.
Đây là một ví dụ ngắn:
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/vi/1.10.0/
Thực sự phần khó khăn duy nhất là đảm bảo rằng địa chỉ của bạn không được hình thành kém. Có lẽ vẫn sẽ mất một khoảng thời gian đáng kể để mã hóa địa lý 20 triệu vị trí, tuy nhiên ... và loại tải đó có thể sẽ vi phạm các điều khoản dịch vụ của ai đó. Hy vọng điều này sẽ giúp ai đó mặc dù.
nếu yêu cầu mã địa lý của bạn không vượt quá 2.500 mỗi ngày, bạn có thể sử dụng API mã hóa địa lý của Google . bạn nên lướt qua api, nó có thể trở lại kết quả là json hoặc xml.
Giới hạn sử dụng:
Việc sử dụng API mã hóa địa lý của Google phải tuân theo giới hạn truy vấn là 2.500 yêu cầu định vị địa lý mỗi ngày. (Người dùng API Google Maps dành cho doanh nghiệp có thể thực hiện tối đa 100.000 yêu cầu mỗi ngày.)
Thí dụ:
http://maps.google.com/maps/geo?key=yourkeyhere&output=json&q=520+3rd+Street+San+Francisco+CA
Kết quả ví dụ:
{
"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 ]
}
} ]
}
và bạn có thể kiểm tra một số liên kết ví dụ cho mã hóa địa lý từ google:
3. Bắt đầu với Google GeoCoding
tôi hy vọng nó sẽ giúp bạn