점 집합 작업을위한 대체 색인 방법


17

많은 기능으로 작업 할 때 성능을 향상시키기 위해 바운딩 박스 공간 ​​인덱스를 사용하는 것이 일반적입니다. 다수의 정점이있는 개별 형상에 대해 작업이 수행되는 위치에 유사한 최적화 전략이 있습니까?

예를 들어 다각형 또는 통합 연산에서 속도를 높일 수있는 데이터 구조가 있습니까?


1
후드 아래에서 GIS는 계산 기하학 교과서에 설명 된 다양한 형태의 쿼드 트리, DCEL 등을 포함하여 많은 특수한 데이터 구조를 사용합니다. 이러한 구현 세부 사항에 대해 질문하거나 스크립팅 언어 내에서 사용자가 사용할 수있는 방법에 대해 문의하고 있습니까?
whuber

고마워요, 나는 교과서를 읽어야한다고 생각합니다. 내 질문의 요점은 이러한 데이터 구조를 미리 미리 계산하는 방법이었습니다. 사전 계산 된 구현이 있습니까?
Matthew Snape

매튜, 좋은 질문입니다. 진정한 성능 지향 GIS는 반복적 인 적용을 위해 데이터 구조를 사전 계산할 수있는 옵션을 사용자에게 제공합니다. "GIS"라는 소프트웨어 광고 자체는 일반적으로 "공간 인덱스"형식으로 만 사전 계산을 제공하는 반면 Mathematica (또는 어느 정도까지 R) 와 같이 GIS 분석을 수행 할 수있는보다 일반적인 소프트웨어 는 사용자에게 제공합니다. 그런 것들에 대해 훨씬 더 많은 통제권을 갖습니다.
whuber

문제는 2d 객체의 "프랙탈 특성"과 불확실하고 불균형 한 분포 정보 밀도에 기반을두고 있다고 생각합니다.
huckfinn

답변:


2

다각형의 포인트에만 해당 :

문제는 2 차원 물체의 "프랙탈 특성"과 공간 정보의 불확실하고 불균형 한 분포에 근거한다고 생각합니다. 규칙적인 격자가 있으면 셀의 위치 나 관계를 쉽게 계산할 수 있습니다. 그러나 지형 모델의 아이소 라인에는 측면에 복잡하지 않은 부분이 있고 다른쪽에는 수학적으로 복잡한 부분이있을 수 있습니다 (형태 학적 활성 부분은 산등성이, 계곡 등).

인덱싱은 두 가지를 처리하려고합니다.

  1. 공간적으로 구별 할 수있는 객체 (버킷!)를 수집 할 수있는 세트 버킷을 제공하는 빠른 루틴입니다. BBox는 계산 및 처리가 쉽습니다.

  2. 공간적인 것들 (객체들)을 구별하거나 관련시키기위한 관계 (오버랩, 터치)의 세트.

불행히도 BBoxes는 단서, 각 BBox에 몇 개의 점이 있는지, 물체의 모양 (구멍, 볼록한 등) 및 정보가 로컬로 분포되는 방법 (점의 왼쪽 상단 모서리의 90 %)을 제공하지 않습니다. BBox). 따라서 테스트의 관계 작성에서 오브젝트 레벨에서 빠른 조작 멤버를 찾을 수 있고 여러 번 느슨해 질 수 있습니다.

보다 불규칙적 인 접근 방식을 사용하기 위해 쿼드 트리와 함께 IMO 삼각 측량을 사용하여 버킷의 버킷과 관계 빌딩 부분을 더 가깝게 만들 수 있습니다 (버킷 == 관계 빌딩).

Point-in-Polygon-Test 예제의 경우 다음을 사용하여 불규칙 캐시를 작성할 수 있습니다.

  1. ! 외부 감지를위한 추가 경계 메쉬 포인트를 사용하여 폴리 표지의 제한된 들로네 삼각 분할
  2. 이것을 상자 당 N 개의 삼각형 (프랙탈 버킷) 이상으로 쿼드 트리 인덱싱 체계에 넣습니다.
  3. 점이 속한 삼각형 세트를 찾으십시오-quadtree의 잎
  4. 점이있는 삼각형을 찾습니다 (최대 N 삼각형을 넘는 테스트 부분)
  5. 삼각형 정점의 다각형 ID를 요청합니다
  6. ID가 고유 한 경우 점이 다각형에 속하고 그렇지 않은 경우

주석과 쿼드 트리를 구축하는 비용은 매우 높고 계산하기가 어렵고 쿼드 트리는 크고 작은 삼각형 (작은 하위 트리 상자에 맞지 않는 삼각형)의 균형을 유지해야합니다.

일부 도구 및 링크 :

삼각형-구속 조건 다각형 삼각 분할

쿼드 트리-소스 예제

스토니 브룩 리포지토리-데이터 구조 및 이산 지오메트리

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