使用マシン:Windows10
QGIS Ver :QGIS 3.24.1
Puthon Ver:Python 3.9.5
シングルバンドラスター(DEM)をPython(下部に添付)で
「疑似カラー」の設定を行ったのですが、
画面上は対象のラスターは正しく表示されるのですが、
プロパティのスタイルは、表示された内容ではないものが設定されています。
Pythonで設定した内容をスタイルへ反映するには、どの様にしたら宜しいでしょうか?
「疑似カラー」の設定 内容:
# アクティブレイヤ(DEM)のスタイル設定
rlayer = iface.activeLayer() # アクティブレイヤ取得
moto_path = rlayer.dataProvider().dataSourceUri() # 元レイヤのパス取得
band = 1 # バンド番号 設定
sec_per = 36.1779 / 100.0 # 着色2番目の全体に対する率
thd_per = 59.9760 / 100.0 # 着色3番目の全体に対する率
provider = rlayer.dataProvider() # データプロバイダー取得
renderer = QgsSingleBandGrayRenderer( rlayer.dataProvider(), band ) # レンダオブジェクト取得
renderer.setGradient( 1 ) # レンダ勾配設定
renderer.setOpacity( 1.0 ) # レンダ透過率設定
# データプロバイダーよりバンドステータス取得
stats = provider.bandStatistics( band, QgsRasterBandStats.All, rlayer.extent(), 0 )
mean, sd = stats.mean, stats.stdDev # 平均値・標準偏差の取得
min_val = mean - 3.0 * sd # 平均値 - 標準偏差×3.0 を最小値として算出
max_val = mean + 3.0 * sd # 平均値 + 標準偏差×3.0 を最大値として算出
sec_val = sec_per * (max_val - min_val) + min_val # 範囲の2番目の率にある値を算出
thd_val = thd_per * (max_val - min_val) + min_val # 範囲の3番目の率にある
# 新しいカラーランプシェーダーを作成
fcn = QgsColorRampShader()
fcn.setColorRampType(QgsColorRampShader.Interpolated)
fcn.setMinimumValue(min_val) # 最小値設定
fcn.setMaximumValue(max_val) # 最大値設定
lst = [ QgsColorRampShader.ColorRampItem(min_val, QColor('#0400ff')),
QgsColorRampShader.ColorRampItem(sec_val, QColor('#00ffff')),
QgsColorRampShader.ColorRampItem(thd_val, QColor('#ffff00')),
QgsColorRampShader.ColorRampItem(max_val, QColor('#ff0000')) ]
fcn.setColorRampItemList(lst) # カラーリスト設定
shader = QgsRasterShader() # カラーランプシェーダー取得
shader.setRasterShaderFunction(fcn) # カラーランプシェーダー設定
# レンダーへカラーランプシェーダーを反映
renderer = QgsSingleBandPseudoColorRenderer(rlayer.dataProvider(), band, shader)
rlayer.setRenderer(renderer)
# 現在の図面更新
rlayer.triggerRepaint()