QGIS QgsVectorLayer: 地物操作

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の関数でした。

コメントを残す

メールアドレスが公開されることはありません。