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

Ricardo Filipe Soares Garcia da ricardo.garcia.silva at gmail.com
Sat May 12 16:39:03 PDT 2012


Hi list

I'm trying to code some tools for working with lines layers using
python. One such tool is meant to create parallel lines.
I am trying to create my new line geometry by first copying the
geometry of a previously selected linestring and then translating it
according to a specified distance.
But I can't seem to find the correct way of copying the geometry.

I am on Ubuntu 11.10, using QGIS compiled from master #033d58d, built today.
For testing, I'm using layers created with the 'New Memory Layer'
plugin, which uses the memory provider.

I've tried the following approaches:

# python code

line_geometry =
qgis.utils.iface.mapCanvas().currentLayer().selectedFeatures()[-1].geometry()

# approach 1
new_geometry = QgsGeometry(line_geometry)

-> Exception: unknown

# approach 2
new_geometry = QgsGeometry.fromPolyline(line_geometry.asPolyline())

-> no error is thrown, but nothing happens

# approach 3

wkb = line_geometry.asWkb()
g.fromWkb(wkb, len(wkb))

-> RuntimeError: underlying C/C++ object has been deleted

Thanks for your input!

-- 
___________________________ ___ __
Ricardo Garcia Silva


More information about the Qgis-developer mailing list