다각형의 구멍을 자동으로 채우는 방법?


12

QGIS에 최대 면적, 경계선 사이의 거리와 같은 매개 변수를 설정하여 다각형의 구멍을 자동으로 채울 수있는 옵션이 있습니까? 매우 "얇고"작은 구멍을 삭제 / 채우고 싶습니다.


1
구멍 (폴론 내부의 고리)에 관심이 있습니까? 아니면 별도의 다각형 사이의 간격을 줄이는 데 관심이 있습니까?
Simbamangu

이것이 QGIS 기반 솔루션이어야합니까? PostGIS ( geospatial.commons.gc.cuny.edu/2013/11/04/… ) 에서 공간 SQL을 사용하여이를 수행하는 방법에 대해 이전에 블로그했습니다 . PostGIS를 실행하고 있지 않다면 아마도 SpatiaLite에 적용 할 수있을 것입니다. QGIS를 사용하는 경우 툴체인에 SpatiaLite가 이미있을 수 있습니다.
Lee Hachadoorian

답변:


11

Processing 버전 2.10.2에서 QGIS 2.10.1-Pisa를 사용하면 Processing Toolbox 에서 사용할 수있는 몇 가지 도구가 있습니다 .

  • 최대 면적을 지정할 수있는 구멍 채우기 도구 .
  • 전체 입력 레이어에 적용될 구멍 도구를 삭제하십시오 .

도움이 되었기를 바랍니다!


1
최대 면적 매개 변수, 즉 채울 구멍의 최대 크기를 확인하십시오. 따라서 미터 UTM 프로젝트에서 최대 값이 10,000 인 경우 채워질 가장 큰 구멍은 헥타르이고 그보다 더 큰 구멍이 남아 있다는 것을 의미합니까?
BillW

1
@BillW-그렇습니다, 그것이 정확히 무엇인지 믿습니다 :)
Joseph

11

이 shapefile과 동일한 문제에 직면하여 다각형 사이에 많은 간격이 있습니다.

공백이있는 원본 파일

문제를 해결하기 위해 tshiffle의 방법을 약간 수정하면됩니다.

  1. 먼저 파일과 다각형의 전체 범위를 다루는 차이를 수행하십시오.

Extent_polygon

차이 _ 도구

이 작업은 하나의 폴리곤으로 만 구성된 새 쉐이프 파일을 생성하므로 단일 파트로 분해해야합니다. 이를 위해 Vector / Geometry Tools / Multipart를 단일 파트 도구로 사용할 수 있습니다.

차이 _ 결과

다중 _ 단일

그런 다음 외부 엔티티를 삭제하십시오. 이제 새 모양 파일에 원래 적용 범위의 틈을 덮는 여러 다각형이 있습니다.

gaps_covered

  1. 초기 데이터와 단일 파트 사이에서 유니온을 수행하십시오. 기본 QGIS 옵션이 데이터베이스에 복제본을 작성하므로 SAGA 도구를 사용하십시오.

노동 조합

  1. 이제 모든 간격이 데이터베이스에서 빈 레코드로 표시됩니다 (예 : 72 개 행). 영역 필드를 사용하여 테이블을 정렬하고 원본 파일에서 가장 작은 다각형의 값을 가져옵니다. 이 경우 0.13645 헥타르입니다.

데이터 베이스

  1. 마지막으로 이미지에 표시된 설정과 함께 "은색 다각형 제거"도구를 사용하십시오.

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

  1. 최종 결과에는 차이가 없습니다.

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


매개 변수 선택에 관한 추가 정보를 추가 할 수 있습니까? "가치"는 무엇입니까? QGIS 문서 페이지는 세부 사항이 매우 짧습니다. 매우 우아한 답변, 동정 초기 사용자는 답변을 수락하지 않았습니다!
user3386170

1
'값'은 비교에 사용하는 크기입니다. 이 예에서 사용 된 필드 'area'는 헥타르로 설정되었으므로 0.1은 0.1 헥타르보다 작거나 같은 다각형을 제거합니다.
gtapko

gtapko, 3 단계에 대한 추가 정보를 제공해 주시겠습니까? 이해할 수 없어요, 고마워요
newGIS

4

더 우아한 솔루션이있을 수 있지만 이것은 항상 저에게 효과적이었습니다.

1) "구멍 채우기"다각형을 만듭니다. 이렇게하려면 원본보다 큰 다각형을 그리고 "차이"도구를 사용하십시오. 훨씬 더 큰 다각형을 그리면 모든 "구멍 채우기"다각형과 원래 모양을 둘러싼 하나의 큰 다각형이 생깁니다. "구멍 채우기"다각형을 유지하면서 큰 다각형을 삭제하십시오.

2) "hole-filling"다각형을 원본 shapefile과 병합하십시오. 특정 기준에 맞는 구멍 만 채우려면 (예 : X 제곱 킬로미터 미만) 여기에서 필터링 할 수 있습니다.

3) 새로 병합 된 다각형을 공통 필드에 녹입니다.


3 단계에 대해 명확하지 않은 경우 어떻게 공통 필드를 찾을 수 있습니까?
iRfAn

이 단계에서 공통 필드는 무엇이든 될 수 있으며, 목표는 단순히 다각형 사이의 경계를 녹이는 것입니다. 기존 필드를 사용하거나 추가 할 수 있습니다.
tshiffle

4

파이썬에서 / 매끈하게, 이것은 다각형을 채울 수 있습니다 :

import shapely
from shapely.geometry import Polygon
filled_shape = Polygon(shape_with_holes.exterior)

2

gtapko 및 tshiffle과 같은 경로를 따르는 몇 가지 설명을 보았지만 잘못된 형상으로 인해 차이 도구가 작동하지 않아 나에게 도움이되지 못했습니다. 그래서 100 % 자동화되지는 않지만 자체 관리 가능한 솔루션을 생각해 냈습니다. 아마 누군가가 이미 이것을 알았지 만, 나는 내 기회를 잡을 것입니다.

1) 손상된 원래 레이어에 ID를 만듭니다.

ID 속성을 만드는 것은 간단하지만 솔루션도 마찬가지입니다.

먼저 속성 테이블을 연 다음 필드 계산기 로 이동해야합니다. 필드 계산기 는 마치 주판과 거의 같은 버튼입니다. 새 필드를 만들거나 기존 필드를 업데이트 할 수있는 옵션이 제공됩니다. 위의 그림에서 "ID"라는 새로운 것을 만들고 있습니다. 공식은 그림의 끝에 있습니다. (QGIS를 다른 언어로 설정하게되어 유감입니다. 언어 버전 전체에서 디자인과 수식이 정확히 동일하기 때문에 여기에 나올 것이라고 생각하지 않습니다.)

2) 다각형을 선으로 변환

이 단계는 메뉴 의 벡터> 형상 섹션에 있습니다. 변환 된 모양은 다음과 같아야합니다.

다각형을 선으로 변환 한 직후에 정확히 반대의 작업을 수행해야합니다.

3) 선을 다각형으로 변환

옵션은 서로 바로 옆에 있습니다. 다시 한 번 언어 장벽을 염두에 두지 마십시오.

4) 기뻐 2 단계와 3 단계를 수행 한 이유는 이제 해당 선이 다각형으로 간주되므로 속성 표에 고유 한 선이있는 것입니다. 체크 아웃하면 다음과 같습니다.

첫 번째는 항상 전체 다각형입니다 (믿습니다, 오늘 수백 줄을 삭제했습니다 ...). 나머지는 중간에 느슨한 선입니다. 편집을 활성화하고 조치를 취할 수 있습니다. 이것을 시도하기로 결정했다면 명심해야 할 두 가지 사항은 테이블 ID를 현명하게 구성하는 것입니다 .이 방법으로 다른 것을 놓치지 않고 Shift를 사용하여 다른 프로그램과 마찬가지로 데이터 클러스터를 선택할 수 있습니다 .

나는 이것이 QGIS 문제 해결 의 크림 드 라 크렘 이 아니라는 것을 알고 있지만, 잘못된 지오메트리로 인해 도구가 작동하지 않는 상황에 직면하면 이 선이 생성됩니다 (ID로도 해산을 시도했지만 작동하지 않았다면)이 방법이 될 수 있습니다.


이미지를 업데이트 할 수 있습니까? 링크가 끊어졌습니다!
Simbamangu

야. 죄송합니다. Photobucket에서 이미지를 가로 채서 액세스 할 수 없었습니다. 이미 티켓을 열었고 다시 액세스하려고합니다. 가능할 때마다 다시 연락 드리겠습니다.
에릭 리노
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.