문제

요구 사항 중 하나가 GPS 데이터를 기반으로 실시간 리버스 지오 코딩 작업을 수행 할 수 있어야하는 응용 프로그램에서 작업 중입니다. 특히, 나는 위도, 경도 쌍 맵이있는 주/지방을 결정하고 우리가 한 주/지방에서 다른 주로 이동했을 때 감지 할 수 있어야합니다.

지금까지 몇 가지 아이디어가 있지만 다음 중 하나에 대한 아이디어가 있는지 궁금했습니다.

  • 효율적인 방식 으로이 문제를 해결하기위한 가장 좋은 방법은 무엇입니까?
  • 찾기에 좋은 곳은 어디이며 북미 주/지방 경계에 적합한 형식은 무엇입니까?

스타터로서 여기에 내가 가진 두 가지 주요 아이디어가 있습니다.

  1. 그리드 매핑의 각 직사각형이 특정 주 지방에 대한 북미를 그리드로 나누십시오. 위도와 경도 (또는 그 반대)를 기준 으로이 테이블을 조회하십시오 (이 테이블은 더 정확하게 자랍니다).
  2. 각 상태에 대한 다각형을 정의하고 어떤 종류의 계산을 수행하여 어떤 다각형의 Lat/lon 쌍이 있는지 확인하십시오. 나는 이것에 대해 정확히 어떻게 해야할지 잘 모르겠습니다. HTML 이미지 맵은 주/지방의 경계를 정의하는 한 가지 방법으로 떠 오릅니다.

나는 관심있는 사람들이나 그들이 제안하고 싶은 멋진 도서관을 가지고있는 사람들을 위해 파이썬에서 일하고 있습니다.

분명히 ... 웹 액세스를 사용할 수 없으므로 기존 리버스 지오 코딩 서비스를 사용하는 것은 런타임에 옵션이 아닙니다.

도움이 되었습니까?

해결책

첫 번째 아이디어의 변형을 사용하는 것이 좋습니다. 공간 색인. 공간 인덱스는 사각형으로 구축 된 데이터 구조로, LAT/Long을 페이로드에 매핑합니다. 이 경우 직사각형을 State-Province 쌍에 매핑 할 것입니다. an R- 트리 좋은 선택 일 수 있습니다. 여기에 있습니다 R- 트리 파이썬 패키지. 연속 검색 결과를 비교하여 로밍을 감지 할 수 있습니다.

다른 팁

국가를위한 오프라인 리버스 지오 코딩 모듈을 만들었습니다. https://bitbucket.org/richardpenman/reverse_geocode

>>> import reverse_geocode 
>>> coordinates = (-37.81, 144.96), (31.76, 35.21)
>>> reverse_geocode.search(coordinates)
[{'city': 'Melbourne', 'code': 'AU', 'country': 'Australia'},
 {'city': 'Jerusalem', 'code': 'IL', 'country': 'Israel'}]

상태에 대한 데이터를 추가 할 수 있는지 확인하겠습니다.

나는 자신의 솔루션을 처음부터 구현하지 못하게 될 것입니다. 이것은 꽤 큰 사업이며 이미이 작업을 수행하는 도구가 이미 있습니다. 오픈 소스 접근 방식 (읽기 : 무료)을 찾고 있다면이 블로그 게시물을 살펴보십시오. PostGIS를 사용하여 지오 코드를 역전시킵니다.

상태 경계를 다각형 (예 : OpenStreetMap을 통해)으로 잡을 수있는 경우 현재 상태를 결정하는 것은 단지 폴리 폰 테스트입니다.

주소 데이터가 필요한 경우 오프라인 솔루션은 Microsoft Mappoint를 사용하는 것입니다.

미국 전체에 대한 데이터를 얻을 수 있습니다. 열린 거리지도 그런 다음 도시 또는 주 위치와 같이 필요한 데이터를 응용 프로그램에 가장 적합한 형식으로 추출 할 수 있습니다. 참고 데이터 품질이 좋지만 완전히 정확하지는 않습니다. 완전한 정확도가 필요한 경우 다른 곳을 살펴 봐야 할 수도 있습니다.

이 모든 데이터와 액세스 도구가 포함 된 데이터베이스가 있습니다. 나는 인구 조사 호랑이 데이터로 내 것을 만들었습니다. 기본적으로 데이터베이스를 SQLITE로 내보내고 약간의 코드 변환이라고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top