다각형 사이에 작은 공간 (은색)을 제거 하시겠습니까? [닫은]


51

행정 구역을 나타내는 다각형 세트가 있습니다. 지구는 손으로 디지털화되었으며 다각형 사이에 다각형이 닿아 야하는 작은 공간 (은색)이 있습니다.

공백을 제거하여 다각형을 함께 스냅하려면 어떻게해야합니까?

QGIS가 선호되지만 ArcGIS 및 일반 프로그래밍도 옵션입니다.

답변:


27

제거 사용 (ArcInfo 라이센스 필요)

가장 큰 영역 또는 가장 긴 공유 테두리가있는 인접한 다각형과 다각형을 병합하여 다각형을 제거합니다. 제거는 종종 교차 또는 결합과 같은 오버레이 작업의 결과 인 작은 은색 다각형을 제거하는 데 사용됩니다.

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00170000005p000000.htm

여기에 이미지 설명을 입력하십시오

ArcGIS 10 사용자이 도구의 옵션에는 새로운 기능이 있습니다.

이제> ex_features 옵션 (옵션)을 사용 하여 원래 POLYGON 또는 POLYLINE을 유지하는 것이 가능합니다. (선택 사항) 제거하지 않아야 할 다각형 경계 또는 그 일부를 정의하는 입력 폴리선 또는 다각형 피처 클래스 또는 레이어입니다.


3
동물원의 경우에도 작동합니까? 데이터 세트에는 은색이없고 다각형 사이의 간격 만있는 것 같습니다.
underdark

3
이 도구를 성공적으로 사용하여 다각형 사이의 간격을 제거했습니다. 그래도이 도구를 사용하는 데 문제가 있습니다. 지오 프로세싱 중에 다각형을 크랙하면 새로 작성된 다각형을 일반화합니다. 따라서 곡선이 매끄럽지 않고 "날쭉 한"선이 생깁니다. mm
amasephy

3
@underdark 좋은 지적입니다. 그러나, 데이터를 모 놀리 식 주변 다각형 (예 : 데이터 세트의 경계 상자)과 결합하여 항상 은색을 도입 할 수 있습니다. 흥미로운 질문은 "제거"가 은색을 병합 할 다각형을 선택하는 방법입니다. 이것은 결과를 편향시킬 수 있습니다 (하지만 대부분의 응용 프로그램에서 편향이 중요하다는 것은 의심 스럽습니다). 이 특정 상황에서 이상적인 솔루션은 슬라이 버를 분리하거나 오류를 평균화하는 것입니다.
whuber

이 도구의 옵션 중 하나는 가장 긴 테두리 (기본 옵션) 또는 가장 큰 영역을 가진 은색을 이웃 다각형과 병합하는 것입니다.
kenbuja

4
ArcInfo 라이센스가없는 경우 arcscripts.esri.com/details.asp?dbid=14672에 Python을 통해이를 자동화 하는 스크립트가 있습니다. 나는 몇 년 전에 그것을 성공적으로 사용했습니다.
Stephen Lead

20

QGIS에서 수동으로이 작업을 수행하려면 맨 아래에 Settings|Project Properties...있는 General탭에서 Snapping options...스냅하려는 레이어 확인, 모드를 to vertex설정하고 공차를 두 점 사이의 최단 거리보다 작은 값으로 설정하십시오. 확실하지 않은 경우 단위 pixels와 공차를 5와 같이 설정하면 약간의 세부 사항이있는 경우 바로 확대하여 잘못된 정점에 스냅하지 않도록 할 수 있습니다.

그런 다음 벡터 레이어를 편집하고 노드 도구를 선택한 다음 잘못된 점을 해당 항목으로 이동하십시오.

자동으로하는 것은 조금 까다 롭습니다. AFAIK QGIS에는이를 자동화하는 플러그인이 없으며 PostGIS는 스냅 기능이있는 GEOS를 기반으로하지만 PostGIS에는 노출되지 않습니다. 스냅 거리 이내의 이웃에 대해 다각형의 각 점을 확인하는 쿼리를 작성할 수 있지만 현재 확장 할 수있는 것은 아닙니다.

GRASS에는 v.clean.snap이 있으며 QGIS를 통해 액세스 할 수 있지만 GRASS 데이터 세트를 생성하는 추가 단계가 있습니다.


QGIS 처리 툴박스를 항상 사용하고 v.clean.snap을 셰이프 파일에 직접 적용 할 수 있습니다.
SAnderka

v.clean.snap을 사용할 수 없습니다. v.clean을 사용한 다음 스냅 도구를 선택하면 빈 레이어가 생겼습니다. 문서에 따르면 스냅은 선을 정점에 연결하는 것입니다. 임계 값 내의 다른 정점에 정점을 결합하고 싶습니다.
neogeomat

17

QGIS에 익숙한 사용자 : QGIS 트렁크 1.9 (OSGEO 설치 프로그램을 통해 qgis.dev로 설치 가능, qgis 홈페이지 참조)는 "슬라이 버 폴리곤 제거"라는 벡터 메뉴의 새로운 기능입니다. 결핍, 필요. 문제가있는 다각형을 선택하고 공통 경계 또는 영역 비율에 따라 인접한 다각형에 병합 할 수 있습니다. 사용해보십시오!


3
이 답변을 업데이트하기 위해 QGIS 2.18.1에서 'Sliver Polygons 제거'는 안정적인 패키지로 제공되며 Vector-> Geoprocessing Tools에 있습니다.
Valerie Anderson

이는 다각형 사이의 공백이 아닌 주 다각형 사이의 기존 스트레이 은색 다각형에 적용됩니다.
stragu

15

QGIS 사용자라면 완전한 토폴로지 GIS이므로 GRASS의 모든 기능을 사용할 수 있습니다. QGIS 내부에서 GRASS 플러그인을 활성화하고 데이터를 가져올 위치 / 맵셋을 만듭니다.

맵셋을 열고 v.in.ogr로 더티 레이어를 가져옵니다. 두 가지 고급 매개 변수 "경계에 대한 스냅 임계 값"및 "가져올 최소 영역 크기"로 재생합니다.

v.clean 모듈이 제공하는 옵션을 사용할 수도 있습니다.


10

ArcGIS에는 참조하는 것과 같은 데이터의 간격을 식별하고 수정하는 데 도움 이되는 토폴로지 규칙 이 있습니다. 토폴로지 규칙을 생성 하려면 ArcEditor 또는 ArcInfo 라이센스필요하며 피쳐 클래스를 개인 또는 파일 지오 데이터베이스의 피쳐 데이터 세트에 저장해야합니다.

" 갭이 없어야 함 "규칙 을 구현하고 싶을 것 입니다. 필요한 것으로 생각되는 모든 규칙을 사용하여 규칙베이스를 작성하면 데이터의 모든 오류를 식별하는 토폴로지의 유효성을 검증하려고합니다.

그런 다음 Error InspectorFix Topology Errors Tool 을 사용하여 수정할 오류 및 수정 방법을 개별적으로 또는 대량으로 선택할 수 있습니다 (예 : 빈 공간을 채우거나 근처에있는 큰 다각형과 병합 할 새 다각형 만들기) .


7

QGIS 2.12 (Lyon) Toolbox에는 "엘리 미버 슬라이 버 폴리곤 제거"기능이 있습니다. 이전 버전에도 있다고 확신합니다.


2

글쎄, 나는이 문제를 해결하기 위해 재귀 스냅을 실행하는 PostGIS 기능 (QGIS에서 직접 사용)을 사용하고 있습니다. 결과는 매우 좋으며 최상의 결과를 얻으려면 공차 값에 대한 좋은 즐거움이 필요합니다. 시도 할 의향이 있다면 확인하십시오 (제 경우에는 도형이 모두 멀티이므로 내 실행의 st_multi).

CREATE OR REPLACE FUNCTION dsgsnap(tabela text, snap float) RETURNS void AS 
        $BODY$
            DECLARE
            id int;
            BEGIN
                FOR id in execute('select id from '||tabela)
                LOOP
                    EXECUTE     
                'update '||tabela||' as classe set geom = st_multi(res.geom) 
                from 
                    (
                        select st_snap(a.geom, st_collect(b.geom), '||snap||') as geom, a.id as id 
                        from '||tabela||' a, '||tabela||' b 
                        where a.id != b.id and a.id = '||id||' 
                        group by a.id, a.geom
                    ) as res 
                where res.id = classe.id';
                END LOOP;
                RETURN;                        
            END
        $BODY$
        LANGUAGE plpgsql;

1

완벽한 솔루션은 아니지만이 두 가지 중 하나가 대부분의 경우 저에게 효과적입니다.

  1. QGIS에서 레이어를 GEOJSON 형식으로 저장하십시오. 그러나 저장하기 전에 "다른 이름으로 레이어 저장"대화 상자에서 좌표 정밀도를 3으로 설정하십시오 (기본값은 15). 이것은 서로 매우 가까운 정점을 통합하는 효과가 있습니다.

  2. Mapshaper로 이동 하여 파일을 업로드 한 후 "simplify"를 누르십시오. 왼쪽 상단 모서리에 몇 개의 선 교차점이 있는지 알려주고이를 수정할 수있는 옵션이 제공됩니다. 이 수정 프로그램은 약 반 시간 동안 작동합니다.


0

나는 그것을 사용하지 않은,하지만 ET Geowizards 는 ArcView 수준 라이센스 (일명는 ArcGIS 표준)에 많은 ArcEditor 및 ArcInfo에 만 처리 도구를 제공합니다,가있다 마법사를 제거 하는 이웃 다각형으로 병합하여 원치 않는 다각형 (슬리버)을 삭제한다 "또는 을 삭제 " . 마법사 툴킷은 $ 250 USD ( pricelist ) 를 다시 설정합니다 .


0

나는 같은 문제에 직면했다.이 도구를 탐색함으로써 논리를 알지 못하더라도 상당히 쉽게 정착했다. ! [도구에서 데이터 관리 도구 상자로 이동하여 피쳐 클래스로 이동 한 후 두 번 클릭하여 통합 스크립트 실행] [1]

스크립트 창에서 문제가있는 피쳐 클래스를 선택하고 XY 허용 오차에서 측정 도구를 사용하여 여러 지점에서 거리를 측정하여 값을 추가하고 평균값을 허용 오차 환경에서 해당 값을 넣고 문제를 해결하십시오. 지금은 아니지만 약 90 %의 정확도로 해결되었습니다. ! [여기에 이미지 설명 입력] [2]

위의 답변에 설명 된 다른 모든 방법을 시도했지만 인접한 다각형 사이의 간격을 자동으로 수정하는 것은 어렵고 번거로운 작업이었습니다.


1
언급 한 이미지에 대한 링크를 붙여 넣으면 추가 할 수 있습니다.
djq
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.