Title: Python
1Python Getting Started
- Drew Flater, Ghislain Prince
2Does this describe you?
- New to Python scripting
- Comfortable using ArcGIS but want to become more
efficient - Moving to Python from other scripting language
- Interested in whats new in ArcGIS 10
3Agenda
- Python scripting essentials
- What is Python? Why use Python scripting?
- Python 101
- What is ArcPy?
- Scripting geoprocessing tools
- Error handling
- ArcPy functions
- Batch processing
- Python script tools
4Python Scripting Essentials
5What is Python?
- Python is an easy to learn, powerful language
(with) high-level data structures and a simple
but effective approach to object-oriented
programming. Pythons elegant syntax and dynamic
typingmake it an ideal language for scriptingin
many areas and on most platforms. python.org - Scripting language of ArcGIS
- Free, cross-platform, easy to learn, great
community
6Why use Python scripting?
- There are many ways to run single tools
- Use scripting to develop, execute, and share
geoprocessing workflows - Improves productivity
7Python 101
- Where do I write Python code?
- IDE like PythonWin or PyScripter
- Python window in ArcGIS
- How do I run a Python script?
- Double-click or cmd prompt
- What are variables?
- A name that stores a value assigned using
input "C/Data/Roads.shp" distance 50 both
input, distance Variables act as substitutes
for raw values arcpy.Buffer_analysis(input,
"Roads_buffer.shp", distance)
8Python 101
- Python has logic for testing conditions
- if, else statement
- Colon at end of each condition
- Indentation determines what is executed
- tests equality other operators like gt, lt, !
var "a" if var "a" Execute indented
lines print("variable is a") else
print("variable is not a")
9Python 101
- Techniques for iterating or looping
- While loops, for loops
- Colon at end of statement
- Indentation determines what is executed
x 1 while x lt 5 print x x x 1 x 1,
2, 3, 4 for num in x print num
10Python 101
- Case sensitivity
- Variables, functions, etc. are case sensitive
- name X is not defined, function X does not
exist - Building blocks
- Function a defined piece of functionality that
performs a specific task requires arguments () - Module a Python file where functions live
imported - Package a collection of modules
- math.sqrt(100) 10.0
- Theres a module for that
11ArcPy
- The access point to geoprocessing tools
- A package of functions, classes and modules, all
related to scripting in ArcGIS - Helper functions that enable workflows
(ListFeatureClasses, Describe, SearchCursor, etc) - Classes that can be used to create complex
objects (SpatialReference, FieldMap objects) - Modules that provide extended functionality
(Mapping, SpatialAnalyst modules) - Enhancement of arcgisscripting module (pre-10.0)
- Your old scripts will work
12ArcGIS Python window
- Embedded, interactive Python window within ArcGIS
- Access to ArcPy, any Python functionality
- Great for experimenting with Python and learning
tool syntax - Help pane
13Scripting geoprocessing tools
14Executing a tool in Python
- ArcPy must be imported
- Follow syntax arcpy.toolname_toolboxalias()
- Enter input and output parameters
Import ArcPy import arcpy Set workspace
environment arcpy.env.workspace "C/Data"
Execute Geoprocessing tool arcpy.Buffer_analysis("
Roads.shp", "Roads_buffer.shp", "50 Meters")
15Getting tool syntax
- Tool help page
- Copy as Python Snippet
- Export Model to Python script
- Drag tool into Python window
- help(arcpy.Buffer_analysis)
16Setting environments in Python
- Accessed from arcpy.env
- Workspace, coordinate system, extent, etc.
- Global parameter
- See tool help for honored environments
- Provides finer control of tool execution
- Makes scripting easier
arcpy.env.workspace "C/Data" arcpy.env.extent
"0 0 100 100"
17Error handling
- Why do errors occur?
- Incorrect tool use
- Typos
- Syntax errors
- What can I do if my script doesn't work?
- View the geoprocessing messages
- Use Python error handling
- Debug the script in an IDE
18Geoprocessing messages
- Three types of messages
- Informative messages
- Warning messages
- Error messages
- Displayed in the Python window
- arcpy.GetMessages()
- () All messages
- (0) Only informative messages
- (1) Only warning messages
- (2) Only error messages
19arcpy.GetMessages
- Execute Geoprocessing tool
- arcpy.Buffer_analysis("Roads.shp",
"Roads_buffer.shp", "50 Meters") - Print the execution messages
- print(arcpy.GetMessages())
- gtgtgt
- Executing Buffer Roads.shp Roads_buffer.shp '50
Meters' - Start Time Tue July 12 085240 2011
- Executing (Buffer) successfully.
- End Time Tue July 12 035245 2011(Elapsed Time
5.00
20Python error handling
- TryExcept
- "Try to do something, and if an error occurs, do
something else!"
Start Try block try arcpy.Buffer_analysis("
Roads.shp", "Roads_buffer.shp", 50 Meters)
If an error occurs except Print that
Buffer failed and why print("Buffer failed")
print(arcpy.GetMessages(2))
21Error handling
22ArcPy Functions
23(No Transcript)
24ArcPy functions
- Helper functions
- Perform useful scripting tasks
- Print messages (GetMessages)
- List data to perform batch processing
(ListFeatureClasses, 12 total List functions) - Getting data properties (Describe)
- Etc.
- Supports automation of manual tasks
25Batch processing
- Run a geoprocessing operation multiple times with
some automation - Clip every feature class in a geodatabase to a
boundary - Calculate statistics for every raster in a folder
- List functions used in Python
to perform batch processing - One of the highest values in
scripting
26arcpy.ListFeatureClasses
- Set the workspace
- arcpy.env.workspace "C/Data/FileGDB.gdb/FDs"
- Get a list of all feature classes
- fcList arcpy.ListFeatureClasses()
- Print the list of feature classes one at a time
- for fc in fcList
- print(fc)
27ArcPy functions -- Describe
- Use the Describe function to read data properties
- Returns an object with properties
- Allows script to determine properties of data
- Data type (shapefile, coverage, network dataset,
etc.) - Shape type (point, polygon, line, etc.)
- Spatial reference
- Etc.
- Describe a feature class
- desc arcpy.Describe("C/Data/Roads.shp")
- print(desc.shapeType)
- gtgtgt "Polyline"
28Batch Processing
29Python script tools
- Connects Python to ArcGIS
- Best way to create and share custom workflows
- More accessible than stand-alone Python script
- Extends ArcGIS
- Integrated with geoprocessing framework
- Inherits geoprocessing properties and
environments from application - Can be used in ModelBuilder
- Works with map layers
30Receiving arguments
- Arguments are user-defined inputs to a script
- Values passed to script from user, instead of
hard-coded - Use GetParameter or GetParameterAsText to read
arguments
- Create variables from input arguments
- inputFC arcpy.GetParameterAsText(0)
- outputFC arcpy.GetParameterAsText(1)
- First and third parameters come from arguments
- arcpy.Clip_analysis(inputFC, "C/Data/boundary.shp
", outputFC)
31Connecting parameters
32Script tools
33Python scripting resources
- ArcGIS Resource Center
- resources.arcgis.com
- Online documentation
- Geoprocessing script gallery, blog, tutorials,
presentations - python.org
- Python References
- Learning Python by Lutz, et al.
- The Python Standard Library by Example by
Hellmann - diveintopython.org
34Esri Training for Python
- Instructor-Led Course
- Introduction to Geoprocessing Scripts Using
Python - Web Course (free)
- Using Python in ArcGIS Desktop 10
35Other Python sessions
- Python Intermediate
- - Following this session
- Python Raster Analysis
- - Wed 315pm Room 5 A/B
- Python - Scripting for Map Automation
- - Wed 315pm Room 9
- Building Tools with Python
- - Thu 1015am Room 9
- Spatial Analysis Island demo theater
36Thanks for your feedback!www.esri.com/sessioneval
s
37(No Transcript)