2012-06-12 3 views
14

Google 지오 코더가 어떻게 작동하는지 궁금합니다.Google 지오 코더는 어떻게 작동합니까?

geocommons' geocoder 또는 PostGIS's new Tiger Geocoder과 같은 오픈 소스 지오 코더의 일부 구현을 연구했습니다. 이것은 내가 지금까지 알고있는 대략적인 것입니다 (숙제를 해왔음을 희망적으로 증명하기 위해) :

오픈 소스 지오 코더의 핵심에는 세 가지 주요 요소가 있다는 것을 알고 있습니다.

1.- 임의의 문자열을 받아 (taking the example from here)으로 정규화 어드레스 정규화 :

normalize_address('address string'); 

e.g.: SELECT naddy.* FROM normalize_address('29645 7th Street SW Federal Way 98023') AS naddy; 

address | predirabbrev |  streetname  | streettypeabbrev | postdirabbrev | internal | location | stateabbrev | zip | parsed 
---------+-------------+-----------------------+------------------+---------------+----------+----------+-------------+-------+-------- 
29645 |    | 7th Street SW Federal | Way    |    |   |   |    | 98023 | 

하고 :

2.- 이름 일부 마법 퍼지 매칭을 수행하는 지오 코더 핵심 알고리즘은 Levenshtein Distance입니다.

:

좋은 예

는 단어 새끼 고양이와 (즉, 다른에 하나의 문자열을 변경하는 데 필요한 편집의 수이기 때문에 거리가 3) 앉아 사이의 Levenshtein 거리를 계산 위키 백과 문서의 하나입니다
kitten → sitten (substitution of 's' for 'k') 
sitten → sittin (substitution of 'i' for 'e') 
sittin → sitting (insertion of 'g' at the end). 

3 - 집이 어디에 있는지 짐작하기 위해 끝에서 거리 세그먼트를 보간합니다. 이 예를 생성하려면 무료 Census Tiger street dataset의 덩어리를 다운로드하십시오. 위의 예에서

street interpolation example

는 관심 거리 세그먼트 (쉐퍼 힐스 DR)은 그가 끝나는를 노드 (300) (너무 300 쉐퍼 힐스 DR) 및 시작 노드로부터 을 갖는다 400 (400 Schaeffer Hills Drv). 이 Schaeffer Hills Drv와 일치하고 거리 310에 대한 요청이 있었다면 알고리즘은 내 녹색 화살표가있는 곳에 interpolate (그 중 10 %를 트래버스)합니다.

이것이 오픈 소스 지오 코더 도구의 기능입니다. 그럼에도 불구하고 Google은 분명히 똑똑하고 모든 종류의 비 전통적인 힌트를 사용합니다.

어떻습니까?

예를 들어, 680 Mission st (도시, 주, 카운티, 아무 것도 아님)을 입력 할 수 있습니다. 너무 많은 성냥을 발견 할 것이기 때문에 표준 주소 정상화 자의 대부분은 폭파 할 것입니다. 하지만 내가 SF에 있기 때문에 나는 을 추측하고 있습니다. Google은 내 IP를 사용하여 일부 geoip-like information을 얻었으며, some expanding bounding은 약간의 퍼지 검색이 포함 된 힌트로 사용되며, 가장 가까운 세그먼트를 찾습니다. 내 답변은 정확합니다. !).

나는 위에서 설명한 기술 외에도 Google 지오 코더가 어떻게 작동하는지에 대한 답을 찾고 있습니다.

업데이트 :

OK는 지금까지 우리는 (바울의 예를 참조) 힌트 두 종류의 힌트

  • 지역 관심의 경계 상자로 GeoIP가
    • 나와 있습니다.
    • 기타?
  • +3

    I suspec 정확한 정보를 가진 아무도 기밀 유지 계약을 위반하지 않고 질문에 대답 할 수 있습니다. –

    +0

    당신은이 질문을 여기에서하는 것이 더 나을 것입니다 : http://gis.stackexchange.com/ –

    +0

    @ Suvi 나는 gis.stackexchange에 대해 알고 있습니다. 그럼에도 불구하고,이 포럼은 더 많은 눈을 가지고 있습니다. 나는 다음과 같이 기대하고 있습니다. -/ – rburhum

    답변

    6

    블랙 박스에서 파킹하여 찾을 수있는 것 중 하나는 Google 지오 코더가 토큰의 순서에 완전히 민감하지 않다는 것입니다 (스트리트/도시/주/국가의 예상 강요가 없습니다. 당신이 그것을 따라갈 때). 어느 것이 모든 것을 전체 텍스트 검색으로 던진 다음 되돌아 오는 것을 보게 될 것이라고 나에게 말한다. 아니면 그렇지 않을 수도 있습니다. "sault saint marie adams 200"및 "sault saint marie 200 adams"를 검색해보십시오. 유럽 ​​결과

    을 : 맵 창

    Query with map window over Europe: European results.

    쿼리 유럽 전역 : 당신은지도 힌트가 직접 플레이에 오는 것을 볼 수있는 임무의 예에 관하여

    , 즉, 좋은 하나 Query with map window over North America: American results.

    북미를 통해 쿼리 : 미국 결과

    4

    또 다른 데이터 출처 : 카운티 속성 맵이 있습니다. 이것들은 단지 도로뿐만 아니라 재산 선 (및 그 거리 주소)을 포함합니다. Google지도에서 종종이를 볼 수 있습니다. 실제로 인접한 속성을 구분하는 희미한 선이 표시됩니다. 때로는 건물을 개략적으로 묘사하기도합니다 (카운티지도에서는이 두 가지가 종종 포함됩니다).

    GPS 좌표가 정확한 주소를 찾는 것이 2D 쿼리처럼 간단 할 수 있으므로 주어진 역 다각형을 찾을 수 있습니다. 물리적으로 멀리있을 때이 작업을 올바르게 보았습니다. 도로에서 그러나 재산의 내부에서 아직도. 그리고 그것은 다른 거리에 더 가까운 핸드셋에도 불구하고 정확한 거리 주소를 돌려 줬다.

    이러한지도는 공개되는 경향이 있으며 일부 카운티는 자체 온라인 인터페이스를 가지고 있습니다. 특정 줄거리를 소유 한 사람을 찾아 볼 수도 있습니다.

    +0

    역 지오 코딩은 훨씬 쉬운 문제입니다. 위도/경도를 얻고 가장 가까운 피쳐 (구획 또는 거리 세그먼트)로 스냅합니다. 지오 코딩을 수행하는 데 필요한 또 다른 데이터 소스 인 Parcel 기능에 대한 주제가 제기됩니다. 그들에 대한 전통적인 지오 코드의 프로세스는 거리 세그먼트 접근법과 매우 유사합니다. 그래서 내 질문에 아직 답이 없습니다 :(감사합니다.) – rburhum

    +1

    내 대답을 잘못 밝혀 주셔서 감사합니다. 삭제되었습니다 .Google 위치 정보 백서에서도 관련성이있는 지오 코딩과 관련된 잠재적 인 인프라에 대해 논의하고 있다고 생각했습니다. 물론 당신의 대답에 +1하십시오. – arttronics

    관련 문제