460 likes | 592 Views
ArcGIS Python Scripting Workshop Dave Verbyla Department of Forest Sciences School of Natural Resources and Agricultural Sciences University of Alaska Fairbanks. http://nrm.salrm.uaf.edu/~dverbyla/arcgis_python. Getting Started With Python Geoprocessing. Why use scripting with ArcGIS?
E N D
ArcGIS Python Scripting WorkshopDave VerbylaDepartment of Forest SciencesSchool of Natural Resources and Agricultural SciencesUniversity of Alaska Fairbanks 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
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
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 modulesimport sys, string, os, win32com.client# Create the Geoprocessor objectgp =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 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
1) Check for syntax errors 2) Step Through Script Using Debugger
“Easy Fix”— comment out self.SaveBarState(ToolbarDefault)
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
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/