[Qgis-developer] delete feature

Carson Farmer carson.farmer at gmail.com
Fri Dec 12 07:18:58 EST 2008


piko,
> hi devs
>
> I need to create a vectorial layer with only one point feature in it, from
> the x/y values of a click event
> I use the 'memory' as suggested in tutorial
>
> This is my code:
>
> sprayerProvider = self.sprayerLayer.dataProvider()
> sprayerProvider.addAttributes( { "name" : "string" } )
>
> if self.sprayerLayer.featureCount() ==1:
>    sprayerProvider.deleteFeatures([0])
>    self.canvas.refresh()
> 			
> add a feature
> fet = QgsFeature()
> fet.setGeometry(QgsGeometry.fromPoint(QgsPoint(p.x(),p.y())))
> fet.setAttributeMap( { 0 : QVariant("sprayer")} )
> sprayerProvider.addFeatures( [ fet ] )
>
> self.sprayerLayer.updateExtents()
> 		
> QgsMapLayerRegistry.instance().addMapLayer(self.sprayerLayer)
>
>
> So the feature is created and the layer added,
> but i want to delete and replace the feature each time the user click
> i guess my deleteFeatures doesn't work, because each click creates a new
> feature in the layer
>
> Any ideas anyone ?
>   
Instead of deleting the feature and creating a new one, why don't you 
just change the geometry of the current feature?

Or, failing that, use deleteFeature() from QgsVectorLayer instead of the 
provider...
> Thanks
>   



More information about the Qgis-developer mailing list