Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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/