2009-11-26 8 views
0

비 유니폼 위치가 큰 테이블에서 위치 엔티티 ('Madison Square Garden', 'San Diego Zoo'등)를 추출하는 중입니다. 새로운 테이블에서 여러 엔티티를 피하려고합니다. 나는 정확한 거리 주소를 가지고 있지 않지만 지역 범위 내에서 주소를 추출하려고합니다.지오 코드 범위 충돌 방지

나는 지리적 범위가 30km 이내 인 비슷한 이름으로 계산하고 매칭하여이를 수행합니다.

지오 코딩 된 도시 테이블을 통과하고 각 도시에서 위도/경도 범위를 생성 한 다음 해당 범위 내의 위치 이름을 추출합니다.

예를 들어 Madison Square Gardens을 사용하십시오. 장소는 도시 테이블의 여러 도시에서 여러 번 중첩됩니다. 예를 들어, Manhattan, Newark 등은 모두 NYC 범위와 겹치기 때문에 NYC의 일부 속성에 대해 여러 항목이 표시됩니다.

위치를 잃어 버릴 수있는 범위를 좁힐 수는 없으며, 더 좋지 않은 거리/도시/지오 코드가있는 위치를 자주 가지지 않으므로 여러 항목으로 끝납니다 (30km 지역 꽤 잘 작동하는 것).

geohashing을 사용하면 중첩을 찾을 수 있고 여러 항목을 피할 수있는 테두리 상자를 만들 수 있었으면 좋겠지 만 발견 한 내용을 기반으로하지는 않습니다.

이상적으로는, 해시 또는 셀에 넣을 수있는 다른 값을 찾고 고유 위치 이름/해시를 저장하므로 MySQL이 단일 위치에 대해 여러 항목으로 끝나지 않는다고 생각합니다.

각 항목에 적절한 거리 주소가 없습니다 (일부는 가지고 있지만) 거리 수준의 정확도를 얻지 못하고 범위를 사용하지 않는 것이 실제로 옵션이 아닌 것 같습니다. 나는 또한 일관된 도시 이름이 없기 때문에 NYC, New York, Manhattan 등으로 끝납니다. 그러나 NYC는 제외하고 뉴욕을 포함하여 도시 테이블이 더 좋습니다.

_-------------- 편집 됨 -------------------- Geohash.org를 다시 살펴본 후, 나는 올바른 방향으로 가고 있다고 생각합니다. 해시의 처음 두 문자를 가져 오는 경우 이는 너무 큰 범위 내에서 일관됩니다. 예를 들어, victoria, bc에서 portland까지의 모든 문자 또는 처음 두 문자의 경우 모두 'C2'입니다. 그러나 3 문자 솔루션으로가는 NYC는 'dr5'로 시작하고 Newark (좋음)도 있지만 Hackensack은 'dr7'입니다. 나빠, Vanouver, bc. 'C2b'이지만 Richmond bc의 교외 지역은 'C28'입니다.

+0

각 지역에 가장 잘 맞는 도시를 원한다고 들리는군요. 간단한 방법은 귀하의 위치에서 시내 중심까지 최단 거리의 도시를 선택하는 것입니다. 완벽하지는 않지만 더 잘하려면 각 도시마다 경계 폴리곤이 필요할 것입니다. –

+0

그래, 내가 그 키스를하고 싶다. 불행하게도 내가 파기하고있는 데이터가 너무 복잡하다고 생각한다. 몇 백만 행을 거치고 반 구조화 된 데이터에서 위치를 선택합니다.나는 그 위치와 관련된 정확한 도시 이름이 항상있는 것은 아니며 맨해튼과 뉴욕 사이를 어떻게 결정합니까? 그 정도의 물건은 나를 걸려 넘어 뜨리고 있다고 생각합니다. – pedalpete

답변

1

위도/경도 좌표를 사용하고 가장 가까운 도시를 반환하는 유사한 서비스를 구축했습니다. 나는 http://www.globixdata.com/에서 도시 이름과 위도/경도 좌표뿐만 아니라 인구와 같은 관련성이있는 다른 데이터를 포함하는 데이터베이스를 사용했습니다. 주소 나 지점이 도시 경계에있을 경우 100 % 정확한 결과를 얻을 수 없습니다.

나는 데이터베이스에 돈을 지불했으나, 온라인에서 무료로 비슷한 것을 찾을 수 있습니다.