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.