QGISの一意の値を使用してラスターを自動的にスタイル設定しますか?


17

ArcMapでは、ラスターの一意の値を自動的に計算し、一意の値ごとに異なるスタイルを適用できます(最初の画像を参照)。

ただし、QGISでは、「Singleband pseudocolor」スタイルを使用するときにスタイル設定の値を手動で追加する必要があります(2番目の画像を参照)。ArcMapのように一意の値を自動入力する方法はありますか?

ArcMap:

ArcMapラスターシンボルの一意の値

QGIS(値リストに一意の値を自動入力する方法):

QGISラスタースティング


右側に分類があります。これらが必要なオプションであるため、スクリーンショットでこれをカットする理由がわかりません...クラスの数を最大-最小差+1に設定するだけです。同じ間隔でモードを使用します。問題は、データが連続していないときに、使用されていない値を削除する必要がある場合です。
マット

@Matte確かに、しかし、通常、大きなギャップのある不連続データがあります。したがって、実際にラスター内にない値を削除することは実用的ではありません(たとえば、値が1と1000000のみである場合、数値のLOTを手動で削除する必要があります)。プラス、これはいくつかの前提としてい先験的 ...ラスタ内の一意の値の知識を
ピートウィテカー

回答:


3

まだこれを探している人のために。一意のラスタ値がQGIS 3に追加されました。「約1年前にNyall Dawsonによって追加されました。

[機能]ラスターレイヤーの一意の値を使用してパレットレンダラーを分類できる

Palettedレンダラーを使用して土地利用クラスなどの個別のラスタをスタイルする簡単な方法を追加します。パレットレンダラーを選択してバンドを選択し、[一意の値を追加]ボタンを押すだけです。一意のピクセル値がレイヤーから取得され、現在選択されているカラーランプを使用してそれぞれに割り当てられた色が割り当てられます。


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の伝説的な処理機能のおかげで、これら2つをグラフィカルモデラーにまとめて、ロードされたラスターレイヤーを選択するためにラスターパラメーターを追加できます。

ここに画像の説明を入力してください

モデルを保存した後、処理ツールボックスでモデルをダブルクリックすると、通常のツールのように使用できます。

ここに画像の説明を入力してください

結果は次のようになります(ラスタライズされたnatura2000データセットの露頭):

ここに画像の説明を入力してください

または、レイヤーのプロパティで:

ここに画像の説明を入力してください

これにはユーザーエクスペリエンスの改善が必要だと思いますが、それは最初のステップです。


1
最高のユーザーエクスペリエンスではありませんが、共有してくれてありがとう
-RutgerH

UIとして作成されたツールのみが表示されるため、ユーザーエクスペリエンスに問題はありません。そして、誰が... ESRIジオプロセシングツールでのシーンの背後に何が起こっているか、知っている
ヨッヘンSCHWARZE
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.