1 / 37

Python – Getting Started

July 12 - July 14, 2011. Python – Getting Started. Drew Flater, Ghislain Prince. 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.

kira
Download Presentation

Python – Getting Started

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. July 12 - July 14, 2011 Python – Getting Started Drew Flater, Ghislain Prince

  2. 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

  3. Agenda • 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

  4. Python Scripting Essentials

  5. 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

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

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

  8. 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")

  9. Python 101 • Techniques for iterating or looping • While loops, forloops • 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

  10. 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) … 10.0 • “There’s a module for that”

  11. 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, FieldMapobjects) • Modules that provide extended functionality (Mapping, SpatialAnalyst modules) • Enhancement of arcgisscripting module (pre-10.0) • Your old scripts will work

  12. 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

  13. Scripting geoprocessing tools Demo

  14. 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")

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

  16. 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 = "0 0 100 100"

  17. 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

  18. 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

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

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

  21. Error handling Demo

  22. ArcPy Functions

  23. 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

  24. 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

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

  26. ArcPy 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) • >>> "Polyline"

  27. Batch Processing Demo

  28. 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

  29. Receiving arguments • Arguments are user-defined inputs to a script • Values passed to script from user, instead of hard-coded • Use GetParameter or GetParameterAsTextto 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)

  30. Connectingparameters

  31. Script tools Demo

  32. Python 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 Exampleby Hellmann • diveintopython.org

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

  34. 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

  35. Thanks for your feedback!www.esri.com/sessionevals

More Related