3つ前の記事の最後に書いていたことを完全に忘れていました。
レイヤの地物操作によく使う関数を紹介します。
layer = QgsVectorLayer('Point?crs=epsg:2447', 'test_layer', 'memory') # とりあえず、Pointレイヤ作成 layer.addAttribute(QgsField('id', QVariant.Int)) layer.addAttribute(QgsField('text', QVariant.String)) # フィールドとして, idとtextを追加
地物の取得方法
provider = layer.dataProvider() # レイヤデータの管理クラス provider.getFeatures() # 全地物オブジェクトの取得 layer.selectedFeatures() # 選択している地物オブジェクトを取得する
地物の選択関係
layer.selectAll() # 全ての地物を選択 layer.selectedFeaturesIds() # 選択している地物IDを取得する layer.setSelectedFeatures([feature_ids]) # 指定した地物IDを選択状態にする
地物の作成
feature = QgsFeature() # 新規地物オブジェクトの作成 geometry = QgsGeometry.fromPoint(QgsPoint(x, y)) # ポイントから座標オブジェクトを作成 feature.setFeometry(geometry) # 地物に座標オブジェクトをセット feature.setAttributes([1, 'test']) # 地物に情報をセット provider.addFeatures([feature]) # レイヤに地物を追加
その他・使いそうなもの
layer.featureCount() # 地物数の取得 layer.allFeatureIds() # すべての地物IDを取得 # 地物の情報 feature.attributes() # 地物の情報取得 # [[1, 'test'],...]のイテレーターを取得する
以上が地物操作によく使うQgsVectorLayerの関数でした。