ArcMap에서는 래스터의 고유 값을 자동으로 계산 한 다음 각 고유 값에 다른 스타일을 적용 할 수 있습니다 (첫 번째 이미지 참조).
그러나 QGIS에서는 "단일 의사 색"스타일을 사용할 때 스타일 값을 수동으로 추가해야합니다 (두 번째 이미지 참조). ArcMap처럼 고유 한 값을 자동으로 채우는 방법이 있습니까?
ArcMap :
QGIS (값 목록을 고유 한 값으로 자동 채우는 방법) :
ArcMap에서는 래스터의 고유 값을 자동으로 계산 한 다음 각 고유 값에 다른 스타일을 적용 할 수 있습니다 (첫 번째 이미지 참조).
그러나 QGIS에서는 "단일 의사 색"스타일을 사용할 때 스타일 값을 수동으로 추가해야합니다 (두 번째 이미지 참조). ArcMap처럼 고유 한 값을 자동으로 채우는 방법이 있습니까?
ArcMap :
QGIS (값 목록을 고유 한 값으로 자동 채우는 방법) :
답변:
도움이 될 수있는 접근 방식은 다음과 같습니다. 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 데이터 세트의 결과).
또는 레이어 속성에서 :
나는 이것이 사용자 경험의 개선이 필요하다고 생각하지만 첫 번째 단계입니다.