Getting Started With Python in
ArcGIS 10
Shannon Brown
Richard Crissup
Audience
New to Python scripts, beginner
Comfortable with ArcGIS GP tools but want to
become more efficient
Move to Python from other scripting language
Interested in whats new at 10
Agenda
The Basics
-
What is Python
Python and ArcGIS
ArcPy Site Package
Python Window
Scripting for Map Automation
-
MapScripting
Tour ArcPy Mapping
MapDocuments
Layouts, Dataframes,Elements
Map Output and Map Books
SA and GA Modules
Resources
Why Python?
Esri has embraced Python for ArcGIS 10
Python is the language that fulfills the needs of our
user community
-
Easy to learn
Excellent for beginners and experts
Suitable for large projects or small scripts
Cross-platform
Python 101
Clear, easy to read syntax
Easy to use, makes it simple to get started
Variety of basic data types
-
Including lists and dictionaries
Comes with a large standard library
Supports raising and catching exceptions
Code can be grouped into modules and packages
Supports object-oriented programming
http://www.python.org/about/
Python at 10.0
Esri has fully embraced Python as its language for automation
1. ArcPy
site-package
Includes mapping and Map Algebra support
Successor to the arcgisscripting module
2. Python
-
window
Python access and interaction from within ArcGIS
3. Python
script tool framework
A brief history of Python in ArcGIS
9
9.0 /
.1
9.2
10.0
9.3
dispatchbased Geoprocessor
Python 2.1
arcgisscripting module
Cross-platform
Python 2.4
arcgisscripting module, 9.3 version
Pythonic
Python 2.5
ArcPy site-package
Mapping & Map Algebra support
Python window
Python 2.6
What is ArcPy?
A cornerstone for automation in ArcGIS
- data analysis
- data conversion
- data management
- map automation
ArcPy is a native Python site-package
- Access to 800+ geoprocessing tools
- Provides embedded reference documentation for
each function, class and module
- Code completion for ArcGIS components in your
favorite Python editor
- Familiar to arcgisscripting users
ArcPy improvements
Improved coding experience, such as:
- Cursors
- Classes
- Multi-value parameters can be expressed as
Python lists
- Ability to convert rasters to and from NumPy
arrays
ArcPy is supported by modules, including:
- A mapping module (arcpy.mapping)
- A Spatial Analyst module (arcpy.sa) to support
map algebra
- A Geostatistical Analyst module (arcpy.ga)
What is the Python window?
An embedded Interactive Python window within
ArcGIS
- Can access ArcPy, including tools and
environments
- Can access any other Python functionality,
- Better code completion and intelligence
What is the Python window?
The Python window is for:
- Testing ideas
- Experimenting with and learning Python
- Simple execution of tools
- Building quick and easy workflows in Python
Tour ArcPy and Python Window
DEMO
Getting tool syntax
Results window, Copy as Python Snippet
Export Model to Python script
Drag tool into Python window
Tool documentation
arcpy.Usage(Buffer_analysis)
Results Window
Each result contains, in order
-
Output datasets and values
Input datasets and values
Environment settings used in tool execution
All messages
Using the Results window
-
View tool execute status
- Background
- On an ArcGIS Server
Copy and paste or drag and drop,a result into a model
Copy a code snippet into your Python script
Manage results and output datasets
Add a result's output to a map display, Python window or Model
Review a result's processing messages
Results Window
DEMO
Sample Script Tools
Agenda
The Basics
-
What is Python
Python and ArcGIS
ArcPy Site Package
Python Window
Scripting for Map Automation
-
MapScripting
Tour ArcPy Mapping
MapDocuments
Layouts, Dataframes,Elements
Map Output and Map Books
SA and GA Modules
Resources
What is map scripting (aka arcpy.mapping)?
A new mapping module that is part of the
geoprocessing ArcPy site-package
A python scripting API that allows our users to:
-
Manage map documents, layer files, and the data within
them
- Find a layer with data source X and replace with Y
- Update a layers symbology in many MXDs
- Generate reports that lists document information
- Data sources, broken layers, spatial reference
info, etc.
Automate the exporting and printing of map
documents
- Automate map production and create PDF map
books
-
Who is arcpy.mapping for? Why was it built?
An easy to use, productive scripting environment for the GIS Analyst
-
Courser grained object model
Not a complete replacement for ArcObjects
An environment to use for basic map/layer management and map
automation tasks
A simple way to publish mapping tasks to the server environment
-
arcpy.mapping scripts can be easily published as geoprocessing tools
Running arcpy.mapping scripts
arcpy.mapping is part of the
Geoprocessing (GP)
framework
Run in wide variety of
places
-
Script tool in ArcMap or
ArcCatalog
Python Window in ArcMap
Standalone python - from
IDE, from the command line,
or as a scheduled task
Run as a GP Service in
ArcGIS Server
Tour of arcpy.mapping
Overview
Tour of arcpy.mapping (cont.)
Managing Documents and Layers
CLASSES
MapDocument
Layer
TableView
LabelClass
DataFrame
DataFrameTime
GraphicElement
LegendElement
PictureElement
TextElement
MapSurroundElement
PictureElement
FUNCTIONS
MapDocument
Layer
ListBrokenDataSources
ListDataFrames
ListLayers
ListLayoutElements
ListPrinterNames
ListTableViews
AddLayer
AddLayerToGroup
InsertLayer
MoveLayer
RemoveLayer
UpdateLayer
Tour of arcpy.mapping (cont.)
Printing, Exporting, Server Publishing, Map Books
CLASSES
DataDrivenPages
PDFDocument
FUNCTIONS
ExportToAI
ExportToBMP
ExportToEMF
ExportToEPS
ExportToGIF
ExportToJPEG
ExportToPDF
ExportToPNG
ExportToSVG
ExportToTIFF
PDFDocumentCreate
PDFDocumentOpen
PrintMap
PublishMSDToServer
AnalyzeForMSD
ConvertToMSD
Referencing Map Documents (MXDs)
Opening Map Documents (MXD) with arcpy.mapping
Use the arcpy.mapping.MapDocument function
Takes a path to MXD file on disk or special keyword "CURRENT
Reference map on disk
mxd = arcpy.mapping.MapDocument(r"C:\some.mxd")
Get map from current ArcMap session
mxd = arcpy.mapping.MapDocument("CURRENT")
When using CURRENT
- Always run in the foreground
- Pay attention to open conflicts, file contention
Limitations and pre-authoring
- No New Map function, so keep an empty MXD available
Working with Map Documents DEMO
A standalone script that creates a new MXD for each data frame
Use the Python Window to update a data frame name
arcpy.mapping for Map Layers and Data Frames
The List functions
- ListLayers
- ListDataFrames
- Watch the list indexes (you may often forget to use [0])
df = arcpy.mapping.ListDataFrames(MXD)[0]
Layer properties
- Common properties are available (e.g., def query, visible)
- All properties can be updated via layer (.lyr) files
DataFrame properties and methods
- Map Navigation
- DataFrameTime
arcpy.mapping for Map Layers and Data Frames
Layer functions
Layer
ListLayers
ListTableViews
AddLayer
AddLayerToGroup
InsertLayer
MoveLayer
RemoveLayer
UpdateLayer
Data Frame Class
Methods
panToExtent(extent)
zoomToSelectedFeatures()
Properties:
credits
description
displayUnits
elementHeight
elementPosition
...
arcpy.mapping for Map Layers and Data Frames
When and what to pre-author for Map Document scenarios
-
Layer Symbology (aka Renderer) properties are not accessible
Pre-Author Layer files and use UpdateLayer or data source
methods to connect it to data
Scenarios for updating layers
-
changing layer symbology
changing layer type
- eg. batch replace a traditional featureclass "basemap" layer
with a basemap layer from a server
Updating Data Sources
-
use arcpy.mapping for migrating Map Documents and Layer files
to new data sources. Batch migration.
Fancier scripts can help mitigate migration pain: SQL syntax
changes, etc.
Working with Map Layers and Data Frames
DEMO
A script that finds a layer and turns it on
A script that updates layer data sources
A script that replaces a layer
arcpy.mapping for the Page Layout
When and what to pre-author for
layout manipulation scenarios
-
Name your layout elements
Cannot add new elements, so preauthor and hide off page if
necessary
Working with Layout Elements DEMO
A script tool to find a picture element and change its data source
arcpy.mapping for Printing and Exporting
FUNCTIONS
PDF & DDP classes
Export and print
functions
Map Server Publishing
Map Book generation
CLASSES
DataDrivenPages
PDFDocument
ExportToAI
ExportToBMP
ExportToEMF
ExportToEPS
ExportToGIF
ExportToJPEG
ExportToPDF
ExportToPNG
ExportToSVG
ExportToTIFF
PDFDocumentCreate
PDFDocumentOpen
PrintMap
PublishMSDToServer
AnalyzeForMSD
ConvertToMSD
Map Output and Map Books DEMO
A script tool to export data driven pages to multipage PDF
A script tool to create a temporal map book
A full custom application ported from VBA
Spatial Analyst module
Automate workflows and create new tools
Auto completion, expanded scriptability, deferred execution
Integrates Map Algebra into Python
-
Includes all Spatial Analyst tools
Supports operators in Map Algebra expressions
Support complex parameters
Map Algebra expressions syntax is similar to previous tools
from arcpy.sa import *
demm = Raster("DEM") / 3.28
slpdeg = Slope(demm, "DEGREE")
demfs = FocalStatistics("DEM", NbrRectangle(3,3), "MEAN")
Geostatistical Analyst Module
Automate workflows
Auto completion, expanded scriptability, deferred execution
Define varying and complex parameters
Access output properties
import arcpy
arcpy.env.workspace = C:/gapyexamples/data
Arcpy.GaussianGeostatisticalSimulations_ga(C;/gapyexamples
/data/kriging.lyr,10,C:/gapyexamples/output,ggs,,
,2000,,,,,,MEAN)
Getting more help
Resource Center
http://resourcesbeta.esri.com/content/geoprocessing
Desktop help
Agenda
The Basics
-
What is Python
Python and ArcGIS
ArcPy Site Package
Python Window
Scripting for Map Automation
-
MapScripting
Tour ArcPy Mapping
Map Documents
Layouts, Data Frames, Elements
Map Output and Map Books
SA and GA Modules
Resources
Questions?
Thank You