PostGIS를 사용하여 인접 다각형을 단순화 하시겠습니까?


24

인접한 다각형 세트를 단순화하는 데 문제가 발생했습니다. Douglas-Peucker 알고리즘을 사용하여 각 다각형을 개별적으로 단순화하면 (많은 오픈 소스 도구에서 사용됨) 일반적으로 결과 다각형은 더 이상 인접하지 않습니다. 이 문제는 예를 들어 국가 / 지방의 경계를 단순화 할 때 존재합니다.

누구나 PostGIS를 사용하여 솔루션을 제공합니까?

답변:


19

토폴로지 벡터 모델은 필요한 것을 제공합니다. 형상 파일과 같은 비 토폴로지 스토리지에서 지오메트리 사이의 단일 모서리가 두 번 저장됩니다. 토폴로지 벡터에서 영역은 선과 별도로 저장되므로 토폴로지에 영향을주지 않고 조정할 수 있습니다. 좋은 다이어그램을 찾을 수 없으므로이 간단한 예제를 만들었습니다.이 영역을 구분하는 선 (1-4 연결)의 교차점에서 영역 A, B 및 C가 계산됩니다. 위상 벡터의 예

이 모델은 ArcInfo에서 GRASS의 기본 벡터 모델 로 적용 범위 로 사용되며 실험적인 PostGIS Topology 도구를 사용하여 PostGIS에서 사용할 수 있습니다 . 아마도 가장 간단한 해결책은 데이터를 라인 워크로 변환하고 중복 된 분리를 제거한 다음 단순화 후 다각형을 다시 만드는 것입니다.


15

다각형을 선으로 바꾸고 해당 선을 단순한 적용 범위 모서리로 만들고 해당 모서리를 단순화 한 다음 다시 다각형으로 다시 빌드하고 마지막으로 다각형을 사용하여 이전 다각형의 속성을 다시 결합하려고합니다. 새로운 것.

CREATE TABLE rings AS SELECT (ST_DumpRings(polys)).geom AS rings FROM polytable;
CREATE TABLE simplerings AS SELECT ST_Union(rings) AS simplerings FROM rings;
CREATE TABLE newpolycollection AS SELECT ST_Polygonize(ST_Simplify(simplerings, 10.0)) AS geom FROM simplerings;
CREATE TABLE newpolysnoattributes AS SELECT (ST_Dump(geom)).geom FROM newpolycollection;
CREATE TABLE newpolytable AS SELECT new.geom, old.attr FROM newpolysnoattributes new, polytable old WHERE ST_Contains(new.geom, ST_PointOnSurface(old.polys));

위의 오류가 있지만 핵심 개념이 있습니다. 원하는 경우 하나의 쿼리로 모든 작업을 수행 할 수 있습니다.



-1

테셀 레이트해야합니다. 형상 생성에 대한 기존 ARC / INFO 이론에서 하나의 폴리 라인으로 두 개의 인접한 형상이 작성되어이 폴리 라인을 공유합니다. 따라서 일반화 할 때 동일한 폴리 라인을 참조하므로 두 경계를 일반화했습니다.

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