QGIS API: 要素の作成

以前の記事で書いた
要素の作成方法をまとめました。
以下の例は指定した点の周りに、指定した半径の円をポリラインとして描画する例です。

  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()

この例ではポリラインを作成しましたが、点などの単純要素であればたぶん同じ要領です。
ポリゴンの場合は穴あきなんかを考慮する必要があるので、おそらくもう少し複雑になるでしょう。

アーカイブ