レイヤー上のフィーチャ削除イベントの信号セットアップがあります:
self.layer.featureDeleted.connect(self.feature_deleted)
スロット上の削除された機能から属性を取得しようとすると、StopIterationエラーがスローされます(つまり、機能を取得できません)。
レイヤーへの変更がコミットされる前に、削除されたフィーチャから属性を取得できるはずだと思っていただろうか?それ以外の場合、fidパラメーターの使用方法がわかりません。
def feature_deleted(self, fid):
feature = self.layer.getFeatures(QgsFeatureRequest().setFilterFid(int(fid))).next()
idx = self.layer.fieldNameIndex('my_attribute')
print feature.attributes()[idx]
(レイヤーへの変更がコミットされる前に)削除されたフィーチャの属性にアクセスするにはどうすればよいですか?
1
削除されたフィーチャは、レイヤーの元のバージョンを除いてどこにも保存されていないようです...ので、...それを2回開き、レイヤーの編集バッファーによって返されたdeletedFeatureIdsを使用していますか?属性値の変更またはジオメトリの変更が保存されることだけがわかりました...削除されたフィーチャではなく(featureIdのみが...)
—
snaileater
@snaileater私の場合、レイヤーのコピーは高価な操作になります。機能が選択されたときにそれらの属性を記録して記録し、変更がコミットされたらそれらを残された属性と比較します。
—
マット
@Mattメーリングリストへのこの投稿は役立つでしょう。lists.osgeo.org
—
pipermail