Executing ArcGIS Tools from Geoprocessing Scripts (Part 5)
Other posts in this series:
Scripting Your ArcGIS Geoprocessing Tasks (Part 1)
Scripting Your ArcGIS Geoprocessing Tasks with Cursors (Part 2)
More ArcGIS Geoprocessing Concepts – Enumeration Objects (Part 3)
Obtaining Descriptive Information About GIS Datasets with ArcGIS Geoprocessing Objects (Part 4)
In this final post in our five part series on scripting your geoprocessing tasks in ArcGIS we will take a look at how you can take advantage of the built in geoprocessing tools in ArcGIS through your scripts. These are the tools available through ArcToolbox.
Each of these tools is accessible from your Python scripts through dynamic methods on the Geoprocessor object. We’ll take a look at the tools that are available, the syntax you need to use to access them, aliases for the toolboxes that you can use in referencing the tools, and some examples of how you can use these tools in your code.
The arcgisscripting/GpDispatch object on the Geoprocessor OMD contains a section called Dynamic Methods and Properties. The Tool method seen below is a generic method meant to imply the existence of multiple tools.
This generic “Tool” method can be a bit confusing until you understand some additional information. There is a single “Tool” method on the OMD for two reasons. First, there are simply too many geoprocessing tools to fit on the OMD. Remember, if you have the ArcInfo license this would mean you’d have access to approximately 200 tools. In addition, the tools available will depend upon the license level that you have. Not only does this include the basic license level (ArcView, ArcEditor, ArcInfo), but also the ArcGIS extensions that you are licensing (3D Analyst, Spatial Analyst, many others). So, as you can see it simply makes sense to group all these tools into a single generic “Tool” method.
Toolbox Names and Aliases
All system toolboxes have an alias property. This alias is important because it is possible to have multiple tools with the same name. For instance, a Buffer tool can be found in both the Analysis and Coverage toolboxes. Therefore, to distinguish the correct tool in your code you’ll need to add the suffix “_<alias>” when calling a tool. For example:
gp.buffer_analysis(“Roads.shp”,”Road_Buff.shp”, “150 feet”)
This specifically tells the geoprocessor to execute the buffer tool found in the analysis toolbox. This is a bit inefficient though and most people prefer to set the Toolbox parameter in their code before calling the tool. For example:
gp.toolbox = “analysis”
gp.buffer(“Roads.shp”,”Road_Buff.shp”, “150 feet”)
The alias for each toolbox can be found by right-clicking the toolbox in ArcToolbox and selecting Properties.
To run a tool from the geoprocessing library you need to know the correct syntax for doing so. For example, the Buffer tool requires several inputs including the input features to buffer, an output feature class, and a buffer distance. You must give Python the parameters it needs to run the tool correctly. There are a number of ways that you can access syntax information for a tool, but perhaps the easiest is to use the online ArcGIS Desktop help system. Here is the link to help information for the Buffer(Analysis) tool. The help system contains an illustration, usage tips, command line syntax and examples, scripting syntax, and script examples for each tool. For this post we’ll concentrate on the scripting syntax. Scroll down near the bottom of the help page until you get to the Scripting syntax section. In this case you should see the following:
Just below this you’ll see an explanation of each paramter including required or optional information, a descriptive explanation, and the data type. Required parameters must be included when you call the tool while optional parameters are just that. In some cases you may have a need to include these parameters and sometimes you won’t. So, a very simple buffer script could look something like the figure below.
We will be presenting a new Virtual GIS Classroom course, “GIS Programming 101: Mastering Python for Geoprocessing in ArcGIS” starting March 24th and ending April 18th. We still have 2 seats of available so hurry to reserve your seat now. We do offer a 15% discount for government, educational, and non-profit entities.
We also offer an e-learning course entitled “Introduction to Geoprocessing with Python” which contains even more detailed information on ArcGIS geoprocessing with approximately 200 slides of audio and video lectures, visual software demonstrations, exercises and data.