Esri International User Conference | San Diego, CA Technical Workshops | Python – Getting Started Drew Flater, Ghislain Prince July 12 - July 14, 2011.

Slides:



Advertisements
Similar presentations
Publishing GIS Services to ArcGIS for Server
Advertisements

How to enter the world of Python Programming for ArcGIS Or, a funny thing happened on the way from an ESRI conference By Katherine Paybins WVAGP Membership.
Intro to Python Welcome to the Wonderful world of GIS programing!
Why python? Automate processes Batch programming Faster Open source Easy recognition of errors Good for data management What is python? Scripting programming.
Introduction to Python. Python is a high-level programming language Open source and community driven “Batteries Included” – a standard distribution includes.
Esri International User Conference | San Diego, CA Technical Workshops | ArcGIS API for Microsoft Silverlight – Advanced Topics Morten Nielsen
Python & ModelBuilder. Overview Python/ModelBuilder Concepts – The Geoprocessor – Checking some environment variables – Providing feedback from your model/script.
GIS Customization I. Binaural recording + reconstructing performances Holophonics - Virtual Barber Shop John Q. Walker: Re-creating great performances.
ModelBuilder In ArcGIS 9.x By Tim Weigel GEOG 407/607 April 3 rd, 2006.
Introduction to ESRI Add-Ins
Geography 465 GIS Database Programming Getting Started with GIS Database Programming.
arcpy.Describe and arcpy.List*
Advance Model Builder Features. Advance Features Using Lists (also Batching) Iteration Feedback Model Only Tools Inline Variable Substitution Preconditions.
Esri International User Conference | San Diego, CA Technical Workshops | Managing and Editing Annotation Natalie Vines Samantha Keehan July 14, 2011.
Esri UC2013. Technical Workshop. Technical Workshop 2013 Esri International User Conference July 8–12, 2013 | San Diego, California Editing in ArcMap:
ArcGIS Workflow Manager An Introduction
Esri International User Conference | San Diego, CA Technical Workshops | Loading CAD data into the Geodatabase Alex LeReaux Thursday, July 14, 2011 – 10:15.
Technical Workshops | Esri International User Conference San Diego, California ArcMap: Tips and Tricks Miriam Schmidts Jorge Ruiz-Valdepena July 23 – 27,
Python & ModelBuilder. Continuing Education Python and ModelBuilder Overview Python/ModelBuilder Concepts –The Geoprocessor –Checking some environment.
2006 GIS Jam: ArcGIS Python Scripting
Introduction to Python John Reiser May 5 th, 2010.
Network Analysis with Python
Introduction to ArcPy. Topics What is ArcPy? Accessing geoprocessing tools using ArcPy Writing scripts using ArcPy.
Python: An Introduction
Functions Reading/writing files Catching exceptions
ArcGIS Network Analyst: Automating Workflows with Geoprocessing
Esri UC2013. Technical Workshop. Technical Workshop 2013 Esri International User Conference July 8–12, 2013 | San Diego, California ModelBuilder – Getting.
Publishing to ArcGIS for Server
Leveraging ArcGIS Online Elevation and Hydrology Services
Advance Map Automation With Python
Technical Workshops | Esri International User Conference San Diego, California Creating Geoprocessing Services Kevin Hibma, Scott Murray July 25, 2012.
Module 6: Geoprocessing Scripts. Processing loops and decisions.
Esri UC2013. Technical Workshop. Technical Workshop 2013 Esri International User Conference July 8–12, 2013 | San Diego, California Geocoding – An Introduction.
ArcGIS Workflow Manager: Getting Started with Out-of-the-Box Templates Michael Broadbent.
Esri UC2013. Technical Workshop. Technical Workshop 2013 Esri International User Conference July 8–12, 2013 | San Diego, California Building Map Books.
Esri UC2013. Technical Workshop. Technical Workshop 2013 Esri International User Conference July 8–12, 2013 | San Diego, California Sharing Workflows with.
Introduction Presenter: James Zollweg, Ph.D. Associate Professor of Water Resources and GIS The College at Brockport NYS GIS Association – Python Training,
Esri UC 2014 | Technical Workshop | Creating Geoprocessing Services Kevin Hibma.
Developing Cross Platform Apps with the ArcGIS Runtime SDK for Qt
Esri UC2013. Technical Workshop. Technical Workshop 2013 Esri International User Conference July 8–12, 2013 | San Diego, California Python Map Automation.
Esri UC 2014 | Technical Workshop | Editing in ArcMap: An Introduction Lisa Stanners, Phil Sanchez.
Python: Building Geoprocessing Tools David Wynne, Ghislain Prince.
Lecture 10: Geoprocessing with Python (II) Dr. Taysir Hassan Abdel Hamid Associate Professor, Information Systems Dept., Faculty of Computers and Information.
Technical Workshops | Esri International User Conference San Diego, California Branching and Iteration in ModelBuilder Shitij Mehta July 24, :15.
Lecture 9: Geoprocessing with Python
Introduction to GIS PythonScript CGIS-NURIntroduction to ArcGIS II.
Introduction Presenter: James Zollweg, Ph.D.
Tech Support Tips and Tricks: ArcGIS for Desktop
ArcGIS Workflow Manager: Advanced Workflows and Concepts
Desktop Mapping: Building Map Books
PYTHON: AN INTRODUCTION
Shankar Chandrasekaran
Programming and Automation
Creating Geoprocessing Services
Lecture 9 Using Python for Geoprocessing
Geoprocessing with ArcGIS for Server
How to enter the world of Python Programming for ArcGIS
Python Map Automation – Beyond the Basics of arcpy.mapping
Building Map Books in ArcGIS
Geography 465 GIS Database Programming
Automating Geodatabase Administration with Python
ArcGIS Workflow Manager: Using Custom Properties to Automate Workflows
Network Analysis using Python
ModelBuilder – Getting Started
PYTHON: BUILDING GEOPROCESSING TOOLS
Building Map Books in ArcGIS
Network Analyst – Automating Workflows with Geoprocessing
Python – Beyond the Basics
ModelBuilder – Getting Started
Presentation transcript:

Esri International User Conference | San Diego, CA Technical Workshops | Python – Getting Started Drew Flater, Ghislain Prince July 12 - July 14, 2011

Does 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 what’s new in ArcGIS 10

Agenda Python scripting essentials - What is Python? Why use Python scripting? - Python What is ArcPy? - Scripting geoprocessing tools - Error handling ArcPy functions Batch processing Python script tools

Python Scripting Essentials

What 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. Python’s elegant syntax and dynamic typing…make it an ideal language for scripting…in many areas and on most platforms.” –python.org Scripting language of ArcGIS Free, cross-platform, easy to learn, great community

Why use Python scripting? There are many ways to run single tools Use scripting to develop, execute, and share geoprocessing workflows Improves productivity

Python 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)

Python 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 >, <, != var = "a" if var == "a": # Execute indented lines print("variable is a") else: print("variable is not a")

Python 101 Techniques for iterating or looping - While loops, for loops - Colon at end of statement - Indentation determines what is executed x = 1 while x < 5: print x x = x + 1 x = [1, 2, 3, 4] for num in x: print num

Python 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) … “There’s a module for that”

ArcPy 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

ArcGIS 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

Demo Scripting geoprocessing tools

Executing 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")

Getting tool syntax Tool help page Copy as Python Snippet Export Model to Python script Drag tool into Python window help(“arcpy.Buffer_analysis”)

Setting 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 = " "

Error 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

Geoprocessing 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

# Execute Geoprocessing tool arcpy.Buffer_analysis("Roads.shp", "Roads_buffer.shp", "50 Meters") # Print the execution messages print(arcpy.GetMessages()) >>> Executing: Buffer Roads.shp Roads_buffer.shp '50 Meters' Start Time: Tue July 12 08:52: Executing (Buffer) successfully. End Time: Tue July 12 03:52: (Elapsed Time: 5.00… arcpy.GetMessages

Python error handling Try…Except… - "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))

Demo Error handling

ArcPy Functions

ArcPy 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

Batch 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

arcpy.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)

ArcPy functions -- Describe Use the Describe function to read data properties - Returns an object with properties # Describe a feature class desc = arcpy.Describe("C:/Data/Roads.shp") print(desc.shapeType) >>> "Polyline" Allows script to determine properties of data - Data type (shapefile, coverage, network dataset, etc.) - Shape type (point, polygon, line, etc.) - Spatial reference - Etc.

Demo Batch Processing

Python 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

Receiving 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 )

Connecting parameters

Demo Script tools

Python scripting resources ArcGIS Resource Center - resources.arcgis.com 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 diveintopython.org

Esri Training for Python esri.com/training Instructor-Led Course - Introduction to Geoprocessing Scripts Using Python Introduction to Geoprocessing Scripts Using Python Web Course (free) - Using Python in ArcGIS Desktop 10 Using Python in ArcGIS Desktop 10

Other Python sessions Python – Intermediate - Following this session Python – Raster Analysis - Wed 3:15pm Room 5 A/B Python - Scripting for Map Automation - Wed 3:15pm Room 9 Building Tools with Python - Thu 10:15am Room 9 Spatial Analysis Island demo theater

Thanks for your feedback!