2006 GIS Jam: ArcGIS Python Scripting
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?
VB script Jscript PERL Python (comes with ArcGIS) Scripting Languages for Geoprocessing
Python Platform independent (linux, unix, windows) Object-oriented, developer language Good website ( 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 :34:54 PM # (generated by ArcGIS/ModelBuilder) # Import system modules import sys, string, os, win32com.client # 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) Python system String module Operating System COM Dispatch
OR
# 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) Script Arguments---input from user
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 ArcGIS Python Scripting