QGIS에서 고유 한 값을 사용하여 래스터 스타일을 자동으로 지정 하시겠습니까?


17

ArcMap에서는 래스터의 고유 값을 자동으로 계산 한 다음 각 고유 값에 다른 스타일을 적용 할 수 있습니다 (첫 번째 이미지 참조).

그러나 QGIS에서는 "단일 의사 색"스타일을 사용할 때 스타일 값을 수동으로 추가해야합니다 (두 번째 이미지 참조). ArcMap처럼 고유 한 값을 자동으로 채우는 방법이 있습니까?

ArcMap :

ArcMap 래스터 심볼로지 고유 값

QGIS (값 목록을 고유 한 값으로 자동 채우는 방법) :

QGIS 래스터 stlying


오른쪽에 분류가 있습니다. 스크린 샷에서 왜이 옵션을 잘라야하는지 잘 모르겠습니다. 클래스 수를 최대-최소 차이 +1로 설정하십시오. 동일한 간격으로 모드를 사용하십시오. 데이터가 연속적이지 않은 경우 문제 일 수 있으며 사용하지 않은 값을 삭제해야합니다.
— Matt

@Matte 그러나 실제로는 일반적으로 간격이 큰 비 연속 데이터가 있습니다. 따라서 실제로 래스터 내에없는 값을 삭제하는 것은 실용적이지 않습니다 (예 : 유일한 값은 1과 1000000이며 많은 수의 숫자를 수동으로 삭제해야합니다). 또한 이것은 래스터 내의 고유 한 값에 대한 사전 지식 이 있다고 가정합니다 .
— Peet Whittaker

답변:


3

아직도 이것을 찾는 사람들을 위해. QGIS 3에 고유 한 래스터 값이 추가되었습니다. "Nyall Dawson 추가 약 1 년 전

[특징] 래스터 레이어에서 고유 한 값을 사용하여 팔레트 화 된 렌더러 분류 가능

팔레트 렌더러를 사용하여 토지 사용 클래스와 같은 개별 래스터를 스타일링하는 쉬운 방법을 추가합니다. 팔레트 렌더러를 선택하고 밴드를 선택한 다음 "고유 값 추가"버튼을 누르십시오. 레이어에서 고유 한 픽셀 값을 가져오고 현재 선택된 색상 램프를 사용하여 각 색상이 할당됩니다. "


7

도움이 될 수있는 접근 방식은 다음과 같습니다. GRASS 도구 r.report는 래스터 레이어의 각 고유 값에 대한 기본 통계를 계산할 수 있습니다.

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

출력은 다음과 같은 일반 txt 파일로 작성 될 수 있습니다 (왼쪽 : 고유 한 값, 오른쪽 : 각 값으로 덮인 영역).

+-----------------------------------------------------------------------------+
|                      Category Information                        |    square|
|   #|description                                                  |     miles|
|-----------------------------------------------------------------------------|
|1111| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  1.249845|
|1113| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  0.062666|
[...]
|3412| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  0.013926|
|4111| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  4.713902|
|4211| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  0.083555|
|4212| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . |  0.135777|
|-----------------------------------------------------------------------------|
|TOTAL                                                             | 17.048727|
+-----------------------------------------------------------------------------+

다음 지오 프로세싱 스크립트는이 텍스트 파일을 입력으로 사용하여 래스터 레이어 (LAWHEAD, J .: QGIS Python Programming Cookbook, 135 페이지)에 적합한 렌더러 (편의를 위해 임의의 색상으로)를 설정합니다.

##giswg=group
##thexml=file
##theraster=raster
from random import randint
from PyQt4.QtGui import QColor
from qgis.core import *
myraster = processing.getObject(theraster)
infile = open(thexml, 'r')
univalues = [l.split('|')[1] for l in [f for f in infile.readlines()][4:-4]]
s = QgsRasterShader()
c = QgsColorRampShader()
c.setColorRampType(QgsColorRampShader.EXACT)
i = []
for u in univalues:
    i.append(QgsColorRampShader.ColorRampItem(float(u), QColor('#%06x' % randint(0, 2**24)), u))
c.setColorRampItemList(i)
s.setRasterShaderFunction(c)
ps = QgsSingleBandPseudoColorRenderer(myraster.dataProvider(), 1, s)
myraster.setRenderer(ps)

QGIS의 전설적인 처리 기능 덕분에이 두 가지를 그래픽 모델러에 결합하고 래스터 매개 변수를 추가하여로드 된 래스터 레이어를 간단히 선택할 수 있습니다.

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

모델을 저장 한 후 처리 도구 상자에서 모델을 두 번 클릭하면 일반 도구처럼 사용할 수 있습니다.

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

다음과 같은 결과가 나타납니다 (래스터 화 된 natura2000 데이터 세트의 결과).

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

또는 레이어 속성에서 :

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

나는 이것이 사용자 경험의 개선이 필요하다고 생각하지만 첫 번째 단계입니다.


1
최고의 사용자 경험은 아니지만 공유해 주셔서 감사합니다
— RutgerH

UI로 작성된 도구 만 볼 때 사용자 경험에는 아무런 문제가 없다고 생각합니다. 그리고 ESRI 지오 프로세싱 툴에서 어떤 일이 벌어지고 있는지 알고 있습니다.
— Jochen Schwarze
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.