2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

46
2006 GIS Jam: ArcGIS Python Scripting http://nrm.salrm.uaf.edu/~dverbyla/ arcgis_python

Transcript of 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

Page 1: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

2006 GIS Jam: ArcGIS Python Scripting

http://nrm.salrm.uaf.edu/~dverbyla/arcgis_python

Page 2: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

Getting Started With Python Geoprocessing

• Why use scripting with ArcGIS?

• Python Basics

• ArcGIS Geoprocessor Basics

• Simple Applications

• Sources of confusion

Page 3: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

Why bother with scripting?

Page 4: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

When NOT to bother with scripting?

Page 5: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.
Page 6: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.
Page 7: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.
Page 8: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

• VB script

• Jscript

• PERL

• Python (comes with ArcGIS)

Scripting Languages for Geoprocessing

Page 9: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

Python

• Platform independent (linux, unix, windows)

• Object-oriented, developer language

• Good website (www.python.org)

• Comes with ArcGIS, free from web

Page 10: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

GeoProcessor Model

Page 11: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.
Page 12: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.
Page 13: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

Export Model to Script

Page 14: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

ArcGIS Geoprocessor Basics

• Import modules

• Create geoprocessor object

• Use geoprocessor

Page 15: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

# 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

Page 16: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

OROR

Page 17: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

# 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

Page 18: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

Running python scripts

• Using PythonWin debugger

• Using Python command window

• As system process

• As scheduled process

Page 19: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

PythonWin

Page 20: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

1) Check for syntax errors

2) Step Through Script Using Debugger

Page 21: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.
Page 22: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

Thousands of Toolbars Bog Down System To A Crawl!

Page 23: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

“Easy Fix”— comment out self.SaveBarState(ToolbarDefault)

Page 24: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

Python command window

Page 25: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

Running script as system process

Page 26: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

Scheduling Scripts

Page 27: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.
Page 28: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.
Page 29: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

Messages From Executing Tools

Page 30: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

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

Page 31: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

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"

Page 32: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.
Page 33: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.
Page 34: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.
Page 35: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.
Page 36: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.
Page 37: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.
Page 38: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

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

Page 39: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

Interpreted Line by Line = SLOW

Page 40: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

Case Sensitive

Page 41: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

Indentation Source of Structure

Page 42: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

/ is a reserved character# is a comment character

Page 43: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

Determine shape type of

every theme listed in text file…..

Page 44: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.
Page 45: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.
Page 46: 2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

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/