Saya memiliki pengaturan sinyal untuk acara penghapusan fitur pada layer:
self.layer.featureDeleted.connect(self.feature_deleted)
Ketika saya mencoba dan mengambil atribut dari fitur yang dihapus pada slot, kesalahan StopIteration dilemparkan (yaitu tidak dapat mengambil fitur).
Saya pikir saya masih bisa mengambil atribut dari fitur yang dihapus sebelum perubahan pada layer dilakukan? Kalau tidak, saya tidak melihat apa yang menggunakan parameter 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]
Bagaimana saya bisa mengakses atribut fitur yang dihapus (sebelum perubahan pada layer dilakukan)?
Jawaban:
Akan ada dua momen di mana Anda masih bisa mendapatkan fitur yang akan dihapus:
Ketika Anda menghapusnya dalam sesi edit tetapi belum melakukan atau menyimpan perubahan (yaitu, Anda masih bisa mengembalikan).
Tepat sebelum fitur yang dihapus dilakukan (yaitu, Anda baru saja mengklik
Save Layer Edits
tombol atau Anda baru saja meneleponlayer.commitChanges()
).sumber