QGISでベクトルデータを表示してみる その5
引き続き、図形の座標変更してみます。
layer,dataProviderと持ってきてましたが、layerだけからでも出来ます。
並行移動の場合は、QgsVectorLayer::translateFeatureを追加います。
x方向、y方向の移動量と、対象図形のIDを指定します。
l = qgis.utils.iface.activeLayer() l.startEditing() l.translateFeature(0,-10000,0) l.commitChanges()
続いて、各頂点の座標値を変更。
QgsVectorLayer::moveVertexを使用します。
変更後のX座標値、Y座標値、対象図形ID、対象頂点を指定します。
select()した後じゃないとダメな場合があったので入れています。どういうケースで指定が必須かは調べていません。
l.startEditing() l.select(0) l.moveVertex(-120000,-300000,0,0) l.moveVertex(-100000,-300000,0,1) l.moveVertex(-100000,-280000,0,2) l.moveVertex(-120000,-280000,0,3) l.commitChanges()
頂点を削除する場合は、QgsVectorLayer::deleteVertexを使用します。
対象図形ID、対象頂点を指定します。
l.startEditing() l.select(0) l.deleteVertex(0,0) l.commitChanges()
頂点を追加する場合は、QgsVectorLayer::insertVertexを使用します。
追加する頂点のX座標値、Y座標値、対象図形ID、対象頂点を指定します。
最後に追加してみました。
l.startEditing() l.select(0) l.insertVertex(-120000,-300000,0,3) l.commitChanges()