waigani's diary

QGISを中心にFOSS4Gをいじくる

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

追加と削除してみます。
QgsGeometry.fromPolygonに渡す引数のリストが2重になっていますが、最初のリストがポリゴンの外側、2番目以降のリストが内側のポリゴンになります。穴のあいたポリゴンを作る時は引数を複数渡します。

l = qgis.utils.iface.activeLayer()
l.startEditing()
p = l.dataProvider()
fet = QgsFeature()
fet.setGeometry(QgsGeometry.fromPolygon([ [QgsPoint(-120000,-300000), QgsPoint(-100000,-300000),QgsPoint(-100000,-280000),QgsPoint(-120000,-280000)] ]))
fet.setAttributeMap({0 : "add!"})
p.addFeatures([fet])
l.commitChanges()

追加前、

追加後、

属性テーブルを見ても1番最後に追加されていることが分かります。

削除するときはIDを指定します。

p.deleteFeatures([651])

後はfeatureのGeometryを編集出来れば、最低限一通りの操作が出来そうですね。