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.