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


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.