[Qgis-developer] Python - saving a layer into a geojson layer
Richard Duivenvoorde
rdmailings at duif.net
Thu Sep 1 06:33:27 EDT 2011
On 09/01/2011 10:45 AM, kimaidou wrote:
> Hi list
>
> I would like to know if there was a dedicated api method to create a new
> vector layer (and save it into a file) by copying a map canvas layer
> (which could be postgis, shapefile, etc.).
> I have read here
> http://www.qgis.org/pyqgis-cookbook/vector.html#writing-shapefiles
> how to write a new shapefile. But then I would need to "manually" copy
> each feature from the chosen layer to the new one.
>
> I was thinking of a equivalent to the right-click "Save as" which brings
> an ui to choose the targer layer format, srid, etc., but I am trying to
> do it programatically.
>
> Is there a proper way to do it ?
Don't know if it is 'proper', but I can write a vector layer with the
method writeAsVectorFormat from QgsVectorFileWriter, see
http://doc.qgis.org/head/classQgsVectorFileWriter.html#3a4405a59d8f8ac147878cae5bd9bade
To test:
on an active vector layer (selected in legend), do the following in the
qgis python console:
i = qgis.utils.iface
l = i.activeLayer()
qgis.core.QgsVectorFileWriter.writeAsVectorFormat(l,
'/tmp/myjson.json', 'utf-8', l.crs(), 'GeoJson')
and you should find your json in /tmp :-)
(for more possibilities (like only saving selected features etc) see docs.
Regards
Richard Duivenvoorde
More information about the Qgis-developer
mailing list