2 천만 미국 주소의 대량 지오 코딩


34

미국에서 검색 할 수 있고 위도와 경도 정보를 반환 할 수있는 무료 또는 합리적으로 가격이 책정 된 데이터베이스가 있습니까?


빠르기는 괜찮지 만 정확성이 가장 중요합니다. -Wyatt Earp 지오 코더를 처리 할 때 많은 주소를 지오 코딩하기 위해 저렴한 가격을 제공하는 일부 (예 :이 스레드에서 참조되는 것과 같은)가 있지만 여러 다른 영역에서 매우 정밀한 정확도를 찾고 있다면 프리미엄 지오 코더. 특히 우편 일치가 발생하지 않는 경우 결과는 더욱 일관되고 매우 정확합니다. 가장 정확한 지오 코딩과 관련하여 경쟁 할 수있는 것은 많지 않습니다. 그렇지 않으면 계산은 사용자에게 다른 기술을 제공하지 않을 것입니다.

2
고품질의 필요성에 대한 의견을 제시하지만 제안은 없습니다. 제안 사항 중 일부를 제공하십시오. 그렇지 않으면 사용자 질문에 답변하는 데 도움이되지 않습니다.
RyanDalton

답변:


30

많은 레코드의 경우 웹 서비스를 고려하지 않아도됩니다. 그들은 당신이 당신의 작업을 완료하기 전에 조절하거나 당신을 차단합니다.

따라서 옵션은 로컬에서 실행되며 여러 가지 상용 또는 무료 옵션이 있습니다.

무료 옵션은 공간 데이터베이스에로드해야하는 인구 조사 TIGER 데이터 세트를 사용합니다. PostGIS 용 TIGER 또는 sqlite 에 대해 지오 코딩하는 라이브러리를 찾을 수 있습니다 . 심지어 TIGI를 지오 코딩 하기 위해 ArcGIS를 사용할 수도 있습니다 . 물론 ArcGIS는 무료가 아니므로 다음 상업용 옵션으로 연결됩니다. ArcGIS 라이센스 기회가있는 경우 TeleAtlas ( Tom Tom ) 또는 Navteq 데이터 세트 가있는 StreetMap DVD가있는 것 입니다. StreetMap Premium이 번들로 제공 되는지 여부에 따라 다릅니다 . 이 두 데이터 세트는 TIGER보다 더 일관된 결과를 제공 할 것입니다.

일단 데이터가로드되면 자신에게 호의를 베풀고 거리 데이터베이스의 여러 사본을 작성하고 입력 데이터의 서브 세트가있는 여러 머신에서 지오 코딩 프로세스를 실행하십시오. 한 대의 컴퓨터에서만 실행하지 마십시오. 실행중인 프로세스에 관계없이 메모리가 누출되어 완료되기 전에 여러 번 충돌 할 가능성이 있다는 것을 언급하지 않기 위해 며칠 동안 기다리게됩니다. 이는 프로세스에 대해 다른 검사 점을 원한다는 것을 의미합니다.


2
입력 및 주소 데이터를 더 작은 부분 (예 : 상태)으로 분할하는 것이 유리하다는 것을 알았습니다. 따라서 로케이터를보다 빠르게 사용하고 너무 오랫동안 실행 한 후 프로세스가 잠길 가능성이 줄어 듭니다. 로케이터 생성 및 지오 코딩을 한 번에 수행하기 위해 상태 기반 루프를 스크립팅하는 것은 일반적으로 그리 어렵지 않습니다.
Nathanus

26

SmartyStreets (주소 확인 회사)에서 근무합니다. 우리의 서비스는 모든 사람에게 무료입니다 (기본 수준까지). 신생 기업은 또한 첫해 무료로 당사 서비스를 무료로 사용하도록 요청할 수 있습니다. 따라서 해당 분류에 적합하면 1 년간 무제한 서비스에 대한 요금이 부과되지 않습니다.

Ragi는 웹 서비스를 권장하지만 API는 약 5 시간 (대략 초당 약 1000 시간) 내에 2 천만 개의 주소를 쉽게 정리, 표준화 및 지오 코딩 할 수 있습니다. 그 시간 중 일부는 컴퓨터의 속도 (귀하의 코어 수)와 네트워크 연결 (3G를 통해 시도하지 말고 표준 광대역 연결은 정상적으로 작동)에 따라 다릅니다.

웹 서비스를 통해 가능하다는 것을 지적하고 싶었습니다.

업데이트 : 2017 년 8 월 1 일부터 무선으로 웹 서비스를 원격으로 테스트했으며 무선 네트워크에서 단일 2015 MacBook Pro 만 사용하여 초당 70,000 건의 조회를 얻었습니다. 예, 아주 빠릅니다. 즉, 2 천만 개의 주소와 같은 작은 목록은 약 5 분이 소요됩니다.


2
음, 경우에 당신이하게하려고 그를 그에게 한 푼도 충전없이 2000 만 개 기록을 지오 코딩 물론이 처음부터 자신의 스택을 구축하는 것보다 더 나은 솔루션이의 다음, (매우 인상적인) 초 당 1,000 / 요청을 할 수 있습니다.
Ragi Yaser Burhum

1
전혀. 최대 1000이 아닌 1000 / 초 좋은 표준입니다. 멀티 스레딩, 다중 코어 및 빠른 네트워크 연결로 인해 처리량이 증가 할 수도 있습니다. 최근 서비스를 사용하여 1 억 8 천만 주소를 처리 한 비영리 고객이 있습니다. 전국 선거가 다가 오면서 많은 단체들이 주소를 정리하고 지오 코딩하려고합니다.
Jeffrey

1
@RagiYaserBurhum Chris는 "합리적으로 가격이 책정 된"솔루션을 찾고 있습니다. 물론, 처음부터 자신의 스택을 구축하는 것은 "무료"일 수 있지만 기회 비용을 고려할 때 실제로 그렇습니까? 직접 수행함으로써 얻을 수있는 이점 : 잠재적으로 비용이 들지 않습니다 ( "무료"). 기존 서비스 사용의 이점 : 많은 시간과 시간 절약. 또한, 요즘에는 웹 트래픽 (병렬화)이 일정한 트래픽로드를 처리하기 위해 초당 수천 건의 요청이 일상적 일 수 있습니다. 결국, 나는이 문제에 대해 "무료"와 "합리적인 가격"이 선호의 문제라고 생각합니다.
Matt

1
@Matt Hands down "free"가 항상 무료 인 것은 아닙니다. 나는 그것에 반박하지 않을 것입니다 (시간은 돈이 가치가 있습니다). 필자는 대부분의 오픈 소스 솔루션 비용이 실제로 사용 라이센스에서 지원 서비스로 비용 모델이 바뀌는 것을 잘 알고 있습니다. 나는 아이러니려고 노력하지 않은, 나는 Jeffey 무료 (또는 합리적인 가격)에 대한 솔루션을 제공 할 수있는 경우이 있다는 생각 입니다 더 나은 솔루션을 제공합니다. 최고의에서 나와 SmartyStreets에서 가격, 20m 지점은 $ 100,000의 비용 것입니다. 상용 사용 사례조차도 비용의 일부를 할 수 있다고 확신합니다.
Ragi Yaser Burhum

1
또한 초당 1000 / req (현대 아키텍처에서 매우 가능)는 여전히 지오 코딩을 위한 멋진 엔지니어링이 필요합니다 . 그들은 :)
Ragi Yaser Burhum

8

2010 TigerLine 데이터를 사용하여 postgis 지오 코더를 작성하는 방법을 설명하는 이 연습 을 사용했습니다 . 지금 실행 중입니다. 2 백만 개의 주소를 지오 코딩하는 데 3 주가 걸리므로 빠르지는 않습니다.

그러나 무료이며 방해받지 않고 2 일 미만의 최소 코딩 및 사후 기술을 가진 사람이 지오 코딩을 시작하기 위해 하나의 (대형) 상태 데이터를 설정하고로드하는 데 소요되었습니다. 또한 시스템에 대한 postgres 조정을 전혀 수행하지 않았으며 NFS 마운트를 통해 실행 중이므로 필요한 경우 1-2 배 정도의 성능 향상이 있다고 생각합니다.

웹 서비스를 사용하는 대신 모든 주소를 postgres 데이터베이스에로드 한 다음 한 번에 하나씩 지오 코딩하기 위해 빠르고 더러운 펄 스크립트를 실행하고 있습니다.

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 

(가독성을 위해서만 줄 바꿈)

따라서 "이 ID 값으로 주소를 지오 코딩하고 가장 일치하는 항목"업데이트 문을 생성하고이를 psql로 파이프합니다. 등급이없는 주소 만 지오 코딩하려고 시도합니다. 즉, 이미 지오 코딩되지 않은 주소입니다. 다시 시작할 수 있고 각각 독립적으로 수행됩니다.


일부 주소에 대해 2010 TigerLine 데이터가 정확하지 않은 것을 발견 했습니까?
Chris Muench

완벽한 데이터는 아닙니다. 그러나 내가 가지고있는 주소 데이터는 품질 관점에서 정화조입니다. 작성된 지오 코더는 "등급"필드를 제공하며 낮을수록 좋습니다. 내 대답에 예를 추가하겠습니다.
Adam Musch

@ChrisMuench : 하나 또는 두 개의 캘리포니아 주소를 알려 주시면 지오 코더를 통해 해당 주소를 선택하여 기꺼이 알려 주시기 바랍니다.
Adam Musch

글쎄, NY에서 일부 주소에 대해 postgis 지오 코더를 시도했는데, 500 피트에서 1 마일 정도 떨어져있을 수 있습니다.
Chris Muench

너무 늦었지만 다른 사람이 유용하다고 생각할 수 있습니다 ... 주소가 잘 분석되는지 확인하십시오. 쉼표를 추가하면 "123 Oak St. Anytown ST 12345"라는 일반 연결이 550 배 증가했습니다. "123 Oak St., Anytown, ST, 12345"
aaryno

3

지오 코딩을 원하지만 비용을 지불하지 않으려는 것 같습니다. 2 천만 개의 레코드를 지오 코딩 할 수있는 서비스가 많이 있지만 비용이 많이 듭니다. Esri, Pitney Bowes 및 기타는 구독 또는 x 당 지오 코드 당 비용으로 이러한 서비스를 제공합니다. 2 천만은 사소한 것이 아니지만 이에 대한 비즈니스 사례가 있다고 가정합니다.



3

이 게시물이 원본 포스터를 작성하기에는 너무 늦었을 수 있습니다. 그러나 많은 양의 데이터를 무료로 지리 참조하려는 다른 사람들을 위해 독립적으로 생성되고 사용하기 쉽고 강력한 내 소프트웨어 인 "Easy Georeferencer"를 확인할 수 있습니다 (포스트 하단의 스크린 샷 참조).

이 프로그램은 사용하기 쉽고 간단하며 설치가 필요없는 exe 파일에서 직접 실행됩니다. GNS 또는 GeoNames 데이터 소스 사이를 지오 코딩하도록 선택할 수 있으며, 지금까지 다른 지오 코더로는 할 수없는 일을 할 수 있습니다. GADM 관리 단위 데이터베이스를 기반으로 한 지역을 지오 코딩하고 CShapes 데이터 세트의 히스토리 국가 경계를 지오 코딩합니다. 유일한 경고는 주소 데이터를 지오 코딩하지 않는다는 것입니다. 모든 출력은 GIS에서 즉시 시각화 / 분석 할 수있는 형태 파일로 제공됩니다.

대용량 데이터의 효율성 및 처리와 관련하여 프로그램은 단 3 시간 만에 10 만 개의 레코드를 지오 코딩하도록 테스트되었습니다. 더 큰 데이터 세트의 경우 처리 시간의 대부분 증가는 국가 기준 데이터 세트가로드 될 때 처리 단계의 대부분이 초기 단계로만 진행되고 이후에 픽업되기 때문에 곡선으로 떨어집니다. 또한 소프트웨어, 참조 데이터 세트 및 처리가 모두 로컬 컴퓨터를 기반으로하기 때문에 대용량 데이터 세트를 지오 코딩 할 때 인터넷 병목 현상이나 연결 문제에 대해 걱정할 필요가 없습니다. 일치율은 철자 차이에 대한 퍼지 이름 일치 계정을 기반으로하기 때문에 최대 80-90 %를 얻을 수 있습니다.

소개 용지 및 초보자 안내서를 포함한 자세한 내용은 다운로드 패키지에 포함되어 있습니다. 이 프로그램을 시도하는 데 주저 할 필요는 없습니다.이 프로그램은 컴퓨터에 대한 헌신이나 혼란없이 데스크탑에 배치하고 실행할 수있는 간단한 파일입니다.

소프트웨어는 http://geocodeanything.wordpress.com/ 에서 다운로드 할 수 있습니다.

희망이 도움이됩니다.

여기에 이미지 설명을 입력하십시오


소프트웨어 제품을 생산하는 회사의 저작자 / 개발자 및 / 또는 작업자임을 항상 공개해야합니다.
RyanDalton

@RyanDalton 나는 "내가 만든 소프트웨어"를 썼을 때 필자가 저자라고 밝혔지만, 문장에서 강조되지 않았기 때문에 어떻게 눈에 띄지 않았는지 알 수있다. 내 소프트웨어를 묵인하고 있음을 명확하게하기 위해 내 말을 변경했습니다.
Karim Bahgat

2

미국 주소를 지오 코딩 할 때 Data Science Toolkit 의 Street Address to Coordinates 도구가 적합 하다고 생각 합니다.

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.

그래도 가상 머신 을 다운로드 하여 자신의 하드웨어에서 실행할 수 있습니다. 그렇게하면 API 제한에 대해 걱정할 필요가 없으며 제어 할 수도 있습니다. 아 그리고 나는 그것이 무료라고 말했습니까? ;-)


꽤 놀랍습니다! 전에 들어 본 적이없는 것에 놀랐습니다. 또한 VM을 다운로드하여 이미 자신의 시스템에서 실행할 준비가되어있는 것이 좋습니다.
RyanDalton

오픈 소스이기도합니다. :) github.com/petewarden/dstk
RK

2

나는 당신이 필요로하는 정밀도 수준에 대한 언급을 보지 못했지만 옥상 위도 또는 그와 가까운 거리를 원한다고 가정합니다. 입력 주소의 품질도 중요한 요소가 될 수 있습니다. 잘 정리 된 주소 목록은 불완전하거나 잘못된 주소 목록보다 더 우수하고 빠르게 코딩됩니다. 또한 90 %의 적중률이 허용됩니까, 아니면 2 천만 개의 주소를 모두 코딩해야합니까? 나는 무료 솔루션이 없지만 내가 알고 사용하는 비교적 저렴한 솔루션이 있습니다. Semaphore Corp의 ZP4, http://www.semaphorecorp.com/주소 스크러버 / 지오 코더 및 애드온을 제공하여 주소를 처리하고 정리 된 주소를 반환합니다. 주소는 USPS가 제공 가능한지 여부를 나타내는 플래그, ZIP + 4의 경우에는 위도입니다. ZIP + 4 정밀도는 일반적으로 건물 지역 (거리의 올바른면과 정확한 블록)에서 옥상 정밀도에 가깝고 시골 지역에서는 가깝지 않습니다. 30 일 라이센스 비용은 $ 120입니다. 그 후에도 주소 스크러버는 계속 작동하지만 DPV (Delivery Point Validation) 및 지역 반환은 작동하지 않습니다. 지난 2 년 내에 구축 된 비교적 빠른 컴퓨터와 모든 로컬 데이터가 로컬로 저장 및 액세스되므로 약 10 일 내에 2 천만 건의 레코드를 작성해야합니다. 지난 15 년간 주소를 지오 코딩 해 왔으며 대부분의 시간 동안 ZP4를 사용하고 있습니다. 그들이 긴 위도 또는 DPV를 제공하기 전에


2

현재 1,800 만 개의 주소를 지오 코딩하고 있으므로 설정을 공유하고 싶습니다.

기본적으로 Amazon EC2 인스턴스를 PostGIS Tiger Geocoder 서버로 설정하기 위해 사용 가능한 플레이 북을 사용한 다음 스크립트를 사용하여 지오 코딩 주소를 배치하고 센서스 블록에 매핑합니다.

Amazon EC2의 비용 : 최소 요구 사항 180G SSD는 약 $ 18 / 월입니다. 내 t2.large 인스턴스 비용은 총 $ 90 / 월입니다.

SSD가 180G 이상인 Linux 상자가있는 경우 기본적으로 무료로 사용할 수도 있습니다.

내 평균 성능은 약 170 ~ 300 ms / 좋은 품질 주소, 400 ~ 600 ms / 나쁜 품질 주소입니다. 품질이 나쁘다는 것은 도시, 우편 번호 또는 주소가 잘못되었거나 잘못되었음을 나타냅니다. 이러한 종류의 주소는 지오 코딩하는 데 시간이 오래 걸리므로 성능은 입력 품질에 따라 다릅니다. 필자가 사용한 Amazon EC2 인스턴스는 한 달에 약 4 백만 개의 잘못된 형식의 주소를 지오 코딩 할 수 있습니다.

자세한 내용은 시스템 설정스크립트에 대한 내 블로그 게시물을 참조하십시오



1

워크 플로가 Python 인 경우 geopy는 훌륭한 솔루션입니다. 기본 지오 코딩 로직을 추상적으로 작성한 다음 많은 제공자 (ArcGIS, Baidu, Bing, DataBC, GeocodeFarm, GoecoderDotUS, GeoNames, Google, IGN France, LiveAddress, NaviData, Nominatim (OSM), OpenCage, OpenMapQuest, Yahoo! BOSS Place Finder, What3Words, Yandex ... 휴). 당신은 그것들을 모두 사용할 수 있으며 궁극적으로 여러 지오 코딩 서비스에 의한 유효성 검사를 통해 정확성이 가장 높은 지점을 선택할 수 있습니다. 이러한 서비스 중 다수는 등록이 필요하지만 전부는 아닙니다. 그것들은 미국에서 사용하기에 똑같이 적합하지 않을 수도 있지만, 깔끔한 파이썬 함수로 그것을 사용하면 얻을 수있는 이점은 그것을 제어 할 수 있어야한다는 것입니다.

다음은 간단한 예입니다.

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/

실제로 유일한 어려운 부분은 주소가 잘못 형성되지 않도록하는 것입니다. 그러나 2 천만 개 위치를 지오 코딩하는 데 여전히 상당한 시간이 소요될 것입니다.하지만 이런 종류의로드는 아마도 누군가의 서비스 약관을 위반할 것입니다. 이것이 누군가를 돕기를 바랍니다.


이것으로 CSV를 사용할 수 있습니까?
Salman

물론, 파이썬으로 읽으면.
alphabetasoup

0

지오 코드 요청이 하루 2,500 개를 초과하지 않으면 Google 지오 코딩 API를 사용할 수 있습니다 . api를 한눈에 살펴보면 json 또는 xml로 결과로 돌아갈 수 있습니다.

사용 한도 :

Google 지오 코딩 API를 사용하려면 하루에 2,500 개의 지리 위치 요청이 쿼리 제한됩니다. (Google Maps API for Business 사용자는 하루에 최대 100,000 개의 요청을 수행 할 수 있습니다.)

예:

http://maps.google.com/maps/geo?key=yourkeyhere&output=json&q=520+3rd+Street+San+Francisco+CA

결과 예 :

{
  "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 ]
    }
  } ]
}

Google에서 지오 코딩에 대한 예제 링크를 확인할 수 있습니다.

1. 단일 코드

2. 역 지오 코딩

3. Google GeoCoding으로 시작

나는 그것이 당신을 돕는 희망


15
2 천만 개 위치를 지오 코딩하는 데는 약 22 년 (8,000 일)이 소요됩니다. 완전히 합리적인 솔루션.
Andy W

나는이 알고 그가 어떤 솔루션을 찾을 수 없습니다 경우 일, 그는 그것을 사용할 수 있습니다 당 2,500을 초과하지 않는 그의 지오 요청 ...이 옵션 인 경우 나는 표명 한
아라곤

4
이는 서비스 약관을 위반합니다. Google지도에 결과를 표시하지 않으면 부적절합니다. 당신이 할지라도, 나는 어떤 사람들이 2 천만개의 특징을 위해 약간 뻗어있는 "캐싱 논쟁"을 발견한다!
Ragi Yaser Burhum
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.