2006 GIS Jam: ArcGIS Python Scripting dverbyla/arcgis_python.

Post on 26-Dec-2015

251 views 1 download

Tags:

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/