Pythonで複数のラスター値に透明度を設定する方法


11

次のコードを使用すると、ラスター値0に100%の透明度を設定できます。

map=None

for lyr in QgsMapLayerRegistry.instance().mapLayers().values():
  if lyr.name() == "some_layer":
    map= lyr

tr=None

tr=QgsRasterTransparency()
tr.initializeTransparentPixelList(0)
map.renderer().setRasterTransparency(tr)
map.triggerRepaint()

2つの値(0と8)を100%透明に定義するにはどうすればよいですか?

ラスター値8で最後のブロックのコマンドを繰り返すと、レイヤーの透明度から最初の値(0)が削除されます。

回答:


10

Pythonを使用してQGIS 2.0でレイヤーの透明度を設定するにはどうすればよいですか?より短く、より効率的な方法があるはずのようですが、私はこれをテストし、動作します:

print 'Start'
active_layer = qgis.utils.iface.mapCanvas().currentLayer()
raster_transparency  = active_layer.renderer().rasterTransparency()
ltr = QgsRasterTransparency.TransparentSingleValuePixel()
ltr2 =  QgsRasterTransparency.TransparentSingleValuePixel()
tr_list = []
ltr.min = 0  # Or another value
ltr.max = 0  # Or another value
ltr.percentTransparent = 100  # Or another value
ltr2.min = 8  # Or another value
ltr2.max = 8  # Or another value
ltr2.percentTransparent = 100
tr_list.append(ltr)
tr_list.append(ltr2)

raster_transparency.setTransparentSingleValuePixelList(tr_list)

active_layer.triggerRepaint()  # Tried with iface.mapCanvas().refresh(), but it didn't work
print 'Finish'

2

Pythonは必須ですか?あなたが望むものを理解したら、QGIS UIのラスターレイヤープロパティでこれを行うことができます: ここに画像の説明を入力してください


はい、Pythonは必須です。地形図をシートラインシステムから選択したQGISプロジェクトにロードするプラグインを作成しました。
ステファン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.