ArcGIS Python Scripting
Download
Report
Transcript ArcGIS Python Scripting
2006 GIS Jam: ArcGIS Python Scripting
http://nrm.salrm.uaf.edu/~dverbyla/arcgis_python
Getting Started With Python Geoprocessing
•
•
•
•
•
Why use scripting with ArcGIS?
Python Basics
ArcGIS Geoprocessor Basics
Simple Applications
Sources of confusion
Why bother with scripting?
When NOT to bother with scripting?
Scripting Languages for Geoprocessing
•
•
•
•
VB script
Jscript
PERL
Python (comes with ArcGIS)
Python
•
•
•
•
Platform independent (linux, unix, windows)
Object-oriented, developer language
Good website (www.python.org)
Comes with ArcGIS, free from web
GeoProcessor Model
Export Model to Script
ArcGIS Geoprocessor Basics
• Import modules
• Create geoprocessor object
• Use geoprocessor
# polygon_to_poly_line.py
# Created on: Fri Dec 31 2004 12:34:54 PM
# (generated by ArcGIS/ModelBuilder)
# Import system modules
import sys, string, os, win32com.client
• Python system
• String module
• Operating System
• COM Dispatch
# Create the Geoprocessor object
gp =win32com.client.Dispatch("esriGeoprocessing.GpDispatch.1")
# Local variables...
poly_lines_shp = "C:/temp/poly_lines.shp"
selected_polygons_shp = "C:/temp/selected_polygons.shp"
# Process: Polygon To Line...
gp.toolbox = "C:/workshop_geoprocessing/ExampleToolbox.tbx"
gp.PolygonToLine(selected_polygons_shp, poly_lines_shp)
OR
OR
Script Arguments---input from user
# Script arguments or variables...
Input_Features = sys.argv[1]
Output_Feature_Class = sys.argv[2]
# Process: Polygon To Line...
gp.toolbox = "C:/temp/My Toolbox.tbx"
gp.PolygonToLine(Input_Features, Output_Feature_Class)
Running python scripts
•
•
•
•
Using PythonWin debugger
Using Python command window
As system process
As scheduled process
PythonWin
1) Check for syntax errors
2) Step Through Script Using Debugger
Thousands of Toolbars Bog Down System To A Crawl!
“Easy Fix”— comment out
self.SaveBarState(ToolbarDefault)
Python command window
Running script as system process
Scheduling Scripts
Messages From Executing Tools
Example Applications
For every polygon theme in workspace
• Convert polygon theme to polyline theme
• Compute area and perimeter in all themes
For every workspace in text file:
• Build raster pyramids for every raster in
each workspace
Convert all pond polygon to line themes
# Import system modules
import sys, string, os, win32com.client
# Create the Geoprocessor object
gp = win32com.client.Dispatch("esriGeoprocessing.GpDispatch.1")
#set workspace
gp.workspace = "C:/ponds"; print "workspace set to: ", str(gp.workspace)
#get list of feature classes
fcs = gp.ListFeatureClasses("*","polygon")
fcs.reset()
print "All pond polygon themes will be converted to pond shoreline themes..."
# Get the first theme and start the loop
Current_Theme = fcs.next()
while Current_Theme: # While the Current_Theme is not empty
print "Converting Theme:", str(Current_Theme)
gp.PolygonToLine(Current_Theme, "c:/shorelines/" + Current_Theme)
Current_Theme = fcs.next()
print "End of Script"
Problems With Python Scripting
•
•
•
•
•
•
Interpreted language
Case sensitive
Indentation source of structure
\ is a reserved character
# is a commenting character
Newline character at end of lines
Interpreted Line by Line = SLOW
Case Sensitive
Indentation Source of Structure
/ is a reserved character
# is a comment character
Determine shape type of
every theme listed in text file…..
More information
Python
•
http://wiki.python.org/moin/BeginnersGuide
•
http://www.python.org/
•
http://diveintopython.org/
ArcGIS Python Scripting
•
http://hobu.biz/software/python_guide_esri/
•
http://arcscripts.esri.com/