I developed a complex python application for road generation from GPS Devices that uses a few Arcpy Tools.

I want to try and replicate this Applications functionality using a freeware like PyQGIS instead of Arcpy, but in order to do this I need to find tools & plugins from QGIS that mimic the following tools:

  • arcpy.da.SearchCursor

  • arcpy.TableToTable_conversion

  • arcpy.JoinField_management

    • arcpy.MakeQueryTable_management

    • arcpy.Delete_management

    • arcpy.AddField_management

    • arcpy.CalculateField_management

    • arcpy.MakeXYEventLayer_management

    • arcpy.CopyFeatures_management

    • arcpy.PointsToLine_management, QGIS Points to Path: http://spatialgalaxy.net/2011/12/30/qgis-plugin-of-the-week-points-to-paths/

    • arcpy.Intersect_analysis

    • arcpy.SpatialJoin_analysis

    • arcpy.MakeFeatureLayer_management

    • arcpy.SelectLayerByAttribute_management

    • arcpy.LayerToKML_conversion

    • arcpy.ApplySymbologyFromLayer_management

    I am also researching this and will post the matching tools in the question as I find them to help anyone who is having similar issues, once all Arcpy tools have a matching PyQGIS tool or plugin I will accept an answer with them all in it, If an answer has at least 1 matching tool I will upvote, but no answer will be accepted until each arcpy tool has a matching PyQGIS

  • As per the Tour there should be only one question asked per question and here you are effectively asking at least 16 (one per tool). – PolyGeo Feb 16 '17 at 4:51

I think some of the tools you are looking for can be found in a single plugin - the Processing plugin. Importing this plugin from PyQGIS would allow you to call various tools (I am not an ArcGIS user so I am judging the tools you mentioned by their name and a quick search):

ArcGIS                            QGIS

arcpy.AddField_management         processing.runalg("qgis:fieldcalculator",...) or processing.runalg("qgis:addfieldtoattributestable",...)
arcpy.CalculateField_management   processing.runalg("qgis:fieldcalculator",...)
arcpy.Intersect_analysis          processing.runalg("qgis:intersection",...)
arcpy.SpatialJoin_analysis        processing.runalg("qgis:joinattributesbylocation",...)

The arcpy.MakeFeatureLayer_management mentions that it creates a temporary layer which could be used as an input to another geoprocessing tool. When you use a processing tool in PyQGIS, you can use the term None as an output as this automatically creates the temporary file for that geoprocessing tool.


outputs_1=processing.runalg("qgis:fieldcalculator", input_Layer, ............, None)
outputs_2=processing.runalg("qgis:fieldcalculator", outputs_1, ..........., Result)
| improve this answer | |