2009-07-09 2 views
5

위치 데이터는 기본적으로 트리 구조입니다. 그래서 당신이 거주하고있는 지역/교외,시/군,시 /도 및 국가를 알고 싶은 누군가의 주소를 물어 보면데이터베이스에 위치 정보를 저장하는 가장 좋은 방법은 무엇입니까?

이 데이터는 한 번만 설정되고 약간의 수정이 필요합니다. . 대부분의 전자 상거래 사이트와 많은 다른 사람들은 이러한 유형의 정보를 저장해야하지만 많은 정보를 찾기 위해 애 쓰고 있습니다. 어쩌면 내가 올바른 용어를 찾는 것이 아니기 때문에 이미 해결 된 공통된 문제라고 생각했습니다.

이것은 또 다른 질문으로 이어집니다. 어떤 도시가 어떤 도시에 속하고 어떤 도시가 어떤 주에 속하고 어떤 주는 어떤 국가에 속하는지 같은 유형의 정보를 손에 넣을 수 있습니까?

EDIT : 일을 좀 더 복잡하게 만들려면 예를 들어 일부 국가에서는 우편 번호를 사용하지 않고 우편 번호를 사용하기 때문에 일반적인 유형의 솔루션을 제공 할 수 있기를 원합니다. 아주. 내 큰 욕망은 Area/Suburb -> City/Town -> Region/Province/State -> Country입니다. 나는 불가능을 시도하고 있을지도 모른다.

EDIT2 : 죄송하지만 충분히 명확하지는 않지만 우편 번호는 필요하지 않습니다. 교외/지역 이름 -> 도시 ........

답변

1

미국 우편 번호 정보를 얻으려면 Tiger을보십시오. 그것은 미국 인구 조사의 정보이며 모든 데이터를 제공합니다. 그러나 정보는 추상화하기 쉽지 않으므로 시간이 걸릴 것입니다.

0

이것은 처음 나타나는 것보다 복잡합니다. 일부 도시에는 우편 번호가 여러 개 있습니다. 일부 우편 번호에는 여러 개의 도시가 있습니다. 많은 주소는 주요 도시 또는 가장 가까운 도시의 이름을 사용할 수 있습니다. 주소 확인은 사소하지 않습니다.

우편 번호 데이터를 저장하려는 경우 구입할 수있는 zip code databases이 있습니다. 하지만 their tool을 사용하면 USPS에 대한 유효성을 확인하는 것이 더 쉬울 것입니다.

0

우편 번호에 관심이 없다면 Wikipedia에서 필요한 것을 긁을 수 있습니다.

0

첫째, 지리 정보와 정치/조직 정보라는 두 가지 별개의 것들이 있습니다. 공유 우편 번호가있을 수 있지만 지리적으로 모든 개체는 다른 개체 안에 완전히 위치합니다.

문제를 해결해야 할 때 각 지리적 노드가 각 부모를 참조하는 일반적인 트리 구조를 만듭니다. 최상위 노드 (이 경우에는 국가)에는 부모 참조가 없습니다. 더구나, 다른 나라들에 우리는 다른 구조를 가지고있었습니다. 유일한 요구 사항은 계층 적이어야한다는 것입니다.

그 후 우리는 트리 트래버 설 정보를 미리 계산하여 지리적 쿼리를 빠르게 할 수있었습니다. 우리는 트리를 가로 지르고 계산 된 순회 명령을 저장하여 지리적 노드에 저장했습니다. 그 후 쿼리에서 간단한 int 비교는 하나의 geo가 다른 geo 내부에 있는지 등을 검사하는 것으로 충분했습니다.

동시에 우편 번호 정보와 같은 항목을 저장하면 지리 정보 구조의 지리적 노드에 대한 참조와 함께 다른 테이블에 저장되도록 병렬 데이터 구조처럼 보입니다.

관련 문제