QGISのプラグイン作成 地物の色設定(連続値による定義)のサンプル
はじめに
このサンプルプラグインは、あるフィールドの値を基に、連続値による定義で色設定を行います。例えば...
点群のレイヤです。
拡大したところ。あるフィールドには標高値が入っています。
あるフィールドを対象に連続値による定義で地物の色を設定すると、上の真っ黒にしか見えなかった点群がこんな感じに見えるようになります
使い方
ここからzipファイルをダウンロードしてインストールします。
インストールできたら、値が入っているフィールドと色の設定をします。
graduatedsymbol_sample.pyの以下の部分を適当に編集して下さい。
self.field = '〇〇' # ルール self.rules = ( (0, 30, '#ffffff'), (30.1, 60, '#ffcccc'), (60.1, 90, '#ff9999'), (90.1, 120, '#ff6666'), (120.1, 150, '#ff3333'), (150.1, 9999, '#ff0000') )
設定が終わったら、プラグインを再読み込みして、色分けしたいレイヤをアクティブにした状態で実行します。
設定後のシンボロジは上の画像の様になります。
コード
class GraduatedSymbolSample(QgsMapTool): def start(self): ~略~ # 元の設定を保存 self.oldrenderer = self.layer.renderer().clone() # 設定 rangelist = [] for minv, maxv, color_name in self.rules: symbol = QgsSymbol.defaultSymbol(self.layer.geometryType()) symbol.symbolLayer(0).setStrokeColor(QColor('transparent')) symbol.setColor(QColor(color_name)) rangelist.append( QgsRendererRange(minv, maxv, symbol, str(minv) +' - '+ str(maxv)) ) self.renderer = QgsGraduatedSymbolRenderer(self.field, rangelist) self.renderer.setMode(QgsGraduatedSymbolRenderer.Custom) self.layer.setRenderer(self.renderer) self.layer.triggerRepaint() def finish(self): # 元の設定に戻す self.layer.setRenderer(self.oldrenderer) self.layer.triggerRepaint() ~略~ def __init__(self, iface): ~略~ self.field = '〇〇' # ルール self.rules = ( (0, 30, '#ffffff'), (30.1, 60, '#ffcccc'), (60.1, 90, '#ff9999'), (90.1, 120, '#ff6666'), (120.1, 150, '#ff3333'), (150.1, 9999, '#ff0000') ) ~略~
35行目~45行目 色設定のルールを作成します。
8行目 新しく色設定をする前に、現在の設定を退避します。
11行目~16行目 色設定のルールを基に、連続値による色設定を行います。
18行目~21行目 設定を適用して、マップに再描画します。
26行目 プラグインを終了したら、プラグイン実行前の色設定に戻します。
ソース全文
最後までご覧いただき、ありがとうございました。