[Qgis-developer] how to create a new geometry from an existing one with python

Martin Dobias wonder.sk at gmail.com
Sun May 13 01:24:24 PDT 2012


Hi Ricardo

On Sun, May 13, 2012 at 1:39 AM, Ricardo Filipe Soares Garcia da
<ricardo.garcia.silva at gmail.com> wrote:
> [...]
>
> # python code
>
> line_geometry =
> qgis.utils.iface.mapCanvas().currentLayer().selectedFeatures()[-1].geometry()
>
> # approach 1
> new_geometry = QgsGeometry(line_geometry)

This approach is correct (and other seems to be fine, too). The
problem is elsewhere: you are being bitten by this bug:
http://hub.qgis.org/issues/777

Basically the problem is that the feature containing the line_geometry
gets deleted when the first line is executed. So your line_geometry
contains an invalid pointer leading to these strange errors. To
overcome this, store the list of features and then access it without
problems...

Regards
Martin


More information about the Qgis-developer mailing list