지도 데이터를 저장하기위한 이상적인 데이터 구조?


12

나는 인터뷰 테스트에서 이것을 물었다. 나는 시험에서 괜찮 았지만이 질문에 대답하기에 충분하지 못했습니다. 데이터를 빠르게 쿼리하는 데 사용할 수있는 데이터 구조를 알고 싶습니다.

기본적으로 아이디어는 어떤 종류의 데이터 구조에 저장된 도로 섹션 (선으로 구성된 점)이 있다는 것입니다. 어떤 도로 구간 (또는 지점)이 특정 지점 (반경)과 일정 거리 내에 있는지 신속하게 쿼리해야합니다.


: 정말 자세히 알아보기 위해, 나는에 읽어 것 cgal.org :이 프로젝트를 보면 다음, cgal.org/projects.html#gis , 유사 당신이 원하는 것을 하나를 찾은 다음 마지막으로 API와의 사용을 연구 API 구성.
Job

답변:


16

지리 데이터를 저장하는 일반적인 방법은 R- 트리 (또는 R + 트리, R * 트리 등과 같은 일부 변형)와 같은 공간 데이터 구조를 사용하는 것입니다. 이는 지리 데이터 유형이 일반적으로 GIS 가능 RDBMS. (Microsoft의 SQL Server 2008과 PostGIS는 지리적 유형에 대해 R- 트리를 사용한다는 것을 알고 있습니다.) 설명 된 모든 기본 요구 사항을 충족하며 교차, 위치, 거리 및 기타 쿼리 유형을 명확하게 지원합니다.

데이터 유형에 따라 kD- 트리, 쿼드-트리, 옥트리, 경계 볼륨 계층 구조 (축 정렬 경계 상자 트리 포함) 등과 같은 항목이 일반적으로 사용될 수도 있습니다. 객체의 크기와 모양이 교차 쿼리와 더 관련이 있기 때문에 이것은 실제로 3D 게임에서 훨씬 일반적입니다. R- 트리보다 GIS에 덜 자주 사용됩니다.


0

맵 데이터에 대한 다른 종류의 작업은 최적의 결과를 위해 다른 스토리지 형식이 필요합니다. 예를 들어 다음 세 가지 작업을 고려하십시오.

  1. 특정 지점이 주어지면 해당 지점과 가장 가까운 도로를 찾으십시오.
  2. 특정 크기의 지리적 영역이 주어진 경우 해당 영역 내에있는 모든 도로를 찾으십시오.
  3. 두 개의 도로가 있다면 가장 짧은 도로를 찾으십시오.

요구 사항의 차이는 맵에 대한 "실시간"변경 사항을 수용 할 필요가 없다면, 세 가지 별도의 데이터 사본 (위의 작업 중 하나에 각각 최적화 된)을 저장하는 것이 시도하는 것보다 더 나을 것입니다. 세 가지 작업을 모두 잘 처리 할 수있는 형식을 생각해 냈습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.