2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.
-
Upload
collin-mathews -
Category
Documents
-
view
251 -
download
1
Transcript of 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.
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?
• VB script
• Jscript
• PERL
• Python (comes with ArcGIS)
Scripting Languages for Geoprocessing
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 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
OROR
# 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 modulesimport sys, string, os, win32com.client
# Create the Geoprocessor objectgp = win32com.client.Dispatch("esriGeoprocessing.GpDispatch.1")
#set workspacegp.workspace = "C:/ponds"; print "workspace set to: ", str(gp.workspace)
#get list of feature classesfcs = gp.ListFeatureClasses("*","polygon")fcs.reset()
print "All pond polygon themes will be converted to pond shoreline themes..."# Get the first theme and start the loopCurrent_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/