Monday, 9 May 2016

QGIS Export Shapefile using PyQgis


I am trying to export selected feature using PyQgis.


Till now I have tried these codes. After using this I can select feature but don't know how to export selected feature to new shapefile.


canvas= iface.mapCanvas()
AllLayers=canvas.layers()
for i in AllLayers:
it = i.getFeatures( QgsFeatureRequest().setFilterExpression ( u'"Country" = \'India\'' ) )
i.setSelectedFeatures( [ f.id() for f in it ] )

print "Filter Applied"

Have tried this code:- but this is just creating a duplicate of source file (I need selected only)


_writer = QgsVectorFileWriter.writeAsVectorFormat(i,r"C:\Users\XYZ\Desktop\NewFile.shp","utf-8",None,"ESRI Shapefile")

If anybody knows please help.



Answer



As Luigi suggests, you can have a look at the API documentation, specifically to QgsVectorFileWriter::writeAsVectorFormat, and realize you're just missing one parameter (from the docs):


bool onlySelected = false, 


It says that the parameter onlySelected is of type boolean and is false by default. This parameter is right after the driver name. So, calling the function this way:


_writer = QgsVectorFileWriter.writeAsVectorFormat(i,r"C:\Users\XYZ\Desktop\NewFile.shp","utf-8",None,"ESRI Shapefile", True)

will export only the selected features from your layer.


No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...