waigani's diary

QGISを中心にFOSS4Gをいじくる

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

図形の座標変更してみます。

layer,dataProviderの順に持ってきて、QgsVectorDataProvider::changeGeometryValuesを使ってみました。
対象図形のidをキーに、入れ替えるQgsGeometryを値に指定します。

l = qgis.utils.iface.activeLayer()
l.startEditing()
p = l.dataProvider()
p1 = QgsGeometry.fromPolygon([ [QgsPoint(-120000,-300000),QgsPoint(-100000,-300000),QgsPoint(-100000,-280000),QgsPoint(-120000,-280000)]])
p.changeGeometryValues({0 : p1})
l.commitChanges()

入れ替え前、

入れ替え後、

もう少しスマートな方法が有るような気もしますが、これでも出来ました。