QGIS에서 래스터를 부드러운 다각형으로 변환


14

래스터 레이어에서 부드러운 윤곽 다각형을 만드는 데 성공하지 못했습니다.

등고선과 경계 폴리 라인을 만든 다음 QGIS Union을 사용했습니다. 그런 다음 QGIS Polygonize를 사용합니다. 그런 다음 영역 통계를 원래 래스터에 사용하여 다각형의 값을 가져옵니다.

내가 시도한 두 번째 방법은 래스터를 다각형으로 변환하는 것입니다. 그런 다음 원하는 윤곽으로 반올림 한 새 속성 열을 만듭니다. 그런 다음 동일한 값 사이에서 선을 녹입니다. 그런 다음 v.generalize를 사용하십시오. 이 방법은 조금 더 빠르지 만 일부 다각형은 들쭉날쭉하고 부드럽습니다.

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

실제로 항상 작동하는 더 쉬운 방법이 있습니까? 전체 프로세스를 수행하는 간단한 명령이 있어야합니다.


2
왜 Polygonize를 사용하고 있습니까? 부동 소수점 DEM과 같이 입력 래스터가 연속적입니까? QGIS에는 GDAL_Contour 바로 가기 인 등고선 도구 가 있습니다 . qgistutorials.com/en/docs/working_with_terrain.html 등고선 또는 수면 영역을 얻으려고하십니까?
Michael Stimson 22

입력 파일은 tif이고 필요한 출력 파일은 특정 증분으로 다각형 만있는 모양 파일입니다. 폴리 라인은 만들지 않지만 폴리 라인은 만들지 않는 수많은 도구를 찾았습니다.
Rx_

충분히, 당신은 수면 영역을 얻으려고 노력하고 있습니다. 래스터가 만든 다각형을 다각형으로 단순화하는 옵션이 있지만 (주로) Esri를 사용하지만 여기서는 도움이되지 않습니다. DEM에서 윤곽선을 만들고 경계 상자를 추가 한 다음 다각형 화하면 어떻게 보일까요? 그런 다음 레이블 포인트를 작성하고 값을 교차 / 샘플링하고 속성으로 다각형에 레이블을 지정할 수 있습니다. 아마도 몇 가지 동일한 값의 다각형이 생길 수 있지만 더 큰 문제는 간격 이상으로 뛰어납니다. 컨투어에서 hypso를 표시하는 코드가 있지만 ArcInfo 적용 범위에서 작동합니다.
Michael Stimson

당신이 설명하는 것은 제가 첫 번째 방법으로하고있는 것입니다. 번거 롭습니다. 각 파일에 id 속성이 있는지 확인한 다음 다각형 화되면 0보다 큰 영역을 포함하지 않는 다각형을 삭제해야합니다. 다각형으로 전송할 줄의 일관된 올바른 레이블을 얻지 못했습니다. 두 번째 방법은 내가 원하는 것에 너무 가깝지만 v.generalize는 100 % 작동하지 않는 것 같습니다. ESRI 단순화 다각형이 QGIS의 옵션이 되었기를 바랍니다.
Rx_

답변:


12

나는 당신이 두 번째 방법에서 겪는 것과 동일한 문제를 경험했습니다. Raster를 Vector로 내 보낸 후 v.generalise를 사용하고 사용하려고하는데 알고리즘에 영향을받지 않는 '단계적'경계가있는 부드러운 다각형을 주로 얻습니다.

내 작업에 적합한 프로세스를 찾았습니다. 최상의 방법인지 확실하지 않지만 도움이되는 경우 공유 할 것이라고 생각했습니다.

내가 시작한 것은 BoM 의 ASCII 그리드였습니다 . 여기에 이미지 설명을 입력하십시오

내가 BoM이 다음과 같이 생산하는 것과 비슷한 것을 원했습니다. 여기에 이미지 설명을 입력하십시오

다음 단계를 사용하여 결과에 만족할 수있었습니다.

  • 그리드 (제 경우 BoM의 ASCII 그리드)를 QGIS에로드하십시오.
  • 개별 클래스로 기록됩니다. (처리 도구 상자> 잔디> 래스터> r.recode)
  • 다수의 필터를 실행하여 '정리'(Processing Toolbox> SAGA> Raster Filter> Majority Filter)
  • 1 간격으로 필터링 된 그리드에서 등고선을 작성하고 속성 'class'에 저장했습니다 (내 클래스가 1,2,3,4 등이기 때문에). (래스터 '메뉴'> 추출> 컨투어)
  • 출력 윤곽은 다소 일반화되었지만 '스네이크'알고리즘으로 v.generalized를 사용하여 부드럽게 처리했습니다. (Processing Toolbox> Grass> Vector> v.generalize)
  • 그런 다음 선을 다각형으로 변환했습니다. (Processing Toolbox> QGIS geoalgorithms> Vector Geometry Tools> Lines to Polygons)
  • 마지막으로 단일 다각형을 여러 부분으로 변환해야 모든 다각형이 멋지게 그려졌습니다. (처리 도구 상자> QGIS 지리 알고리즘> 벡터 지오메트리 도구> 싱글 파트와 멀티 파트).

스타일링 후 내 출력은 다음과 같습니다. 여기에 이미지 설명을 입력하십시오

누군가가 더 간단한 방법을 알고 있다면 듣는 것에 관심이 있습니다. 원래 @Rx_와 비슷하다고 생각했는데 래스터를 벡터로 변환 한 다음 일반화하면 끝날 것입니다. 내가해야 할 일은 훨씬 더 길었다.


3

나는 여기의 답변을 좋아하지만 QGIS가 여전히 빠르고 쉬운 방법이 없다고 믿을 수 없습니다. MapInfo는 지정할 수있는 간격으로 다각형 또는 선으로 등고선을 생성 할 수 있습니다.

그것은 기본적인 작업처럼 보이고 범위를 얻는 데 중요합니다. 누구든지 업데이트하거나 더 빠른 방법을 사용하려면 공유하십시오!


1

보다 직접적인 방법은 gdal_countour"다각형 모드"(즉, -p옵션 사용)에서 직접 (명령 줄 프로그램으로) 사용하는 것입니다.

예:

gdal_contour -p -amin min_val -amax max_val -i 1 input_raster.tif output_shape.shp

설명서 : https://gdal.org/programs/gdal_contour.html

이 옵션은 버전> = 2.4에서만 사용할 수 있습니다 (이 옵션은으로 확인할 수 있음 gdalinfo --version). Ubuntu 18.4를 사용하는 경우 UbuntuGIS 에서 설치해야 할 수 있습니다


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