以前の記事で書いた
要素の作成方法をまとめました。
以下の例は指定した点の周りに、指定した半径の円をポリラインとして描画する例です。
dAlpha = 0.0 dPi = 3.14159265358979323846 pntList = [] # 書き込むレイヤーを取得 layer = self.layers[1].layer() # 編集開始 layer.startEditing() # 要素の作成 # dX、dYの周りに半径=radiusの円を描画 circleFeature = QgsFeature(0) while dAlpha > 2*dPi : pnt = QgsPoint(dX+cos(dAlpha)*radius, dY+sin(dAlpha)*radius) pntList += [pnt] dAlpha += dPi/nPoint # 図形作成 geom = QgsGeometry.fromPolyline(pntList) circleFeature.setGeometry(geom) # 属性を追加 # この例では、レイヤーに数値型の属性が1つあるものとする # 変数idに要素IDが入っているものとする circleFeature.addAttribute(0, QVariant(id)) # 要素をレイヤーに追加 layer.addFeature(circleFeature) # レイヤーに対する変更の確定 layer.setModified() layer.commitChanges() # 確認 print layer.featureCount()
この例ではポリラインを作成しましたが、点などの単純要素であればたぶん同じ要領です。
ポリゴンの場合は穴あきなんかを考慮する必要があるので、おそらくもう少し複雑になるでしょう。