waigani's diary

QGISを中心にFOSS4Gをいじくる

QGISでベクトルデータを表示してみる その7

QgsSingleSymbolRendererでレイヤー全体に描画設定を適用してみましたが、属性を指定して個別に描画設定を試します。
QgsUniqueValueRenderer を使用します。

最初の方はやること同じ。

from PyQt4 import QtGui, QtCore
l = qgis.utils.iface.activeLayer()
sym = QgsSymbol(QGis.Polygon)
col = QtGui.QColor(255,0,0)
sym.setFillColor(col)
sym.setFillStyle(QtCore.Qt.SolidPattern)

図形タイプを指定して、QgsUniqueValueRendererインスタンスを作成します。

sr = QgsUniqueValueRenderer(QGis.Polygon)

続いてどの属性項目をフィルターに使うか番号で指定します。

sr.setClassificationField(0)

属性と適用する描画設定を入れます。

sr.insertValue("01m0140m0090",sym)

何個か設定を入れてあげて、再描画すると指定した属性の図形に、指定した描画設定が反映されたことを確認出来ます。

sym2 = QgsSymbol(QGis.Polygon)
sym2.setFillColor(col)
sym2.setFillStyle(QtCore.Qt.Dense5Pattern)

sr.insertValue("01m0110m0110",sym2)
l.setRenderer(sr)

qgis.utils.iface.mapCanvas().refresh()

設定前、属性"MESH"を確認しておきます。

描画設定反映されたところ。