Download presentation
Presentation is loading. Please wait.
1
PYTHON: BUILDING GEOPROCESSING TOOLS
David Wynne, Geri Miller
3
Why we build geoprocessing tools
Your work becomes part of the geoprocessing framework Easy to access and run from within ArcGIS Familiar look and feel Make a mistake? Re-run from the previous result Run from Python, ModelBuilder, as a service Add to a tool bar No UI programming
4
Geoprocessing Tool Commandments
Thou shall … … have unique parameter names within the tool … keep the cost of validation to a minimum … always have an output, even if it must be derived … populate all output data elements within validation … not test the validity of any derived value within validation … have a coded value domain for every Boolean … test the function from a script, a model, a dialog, and the command line
5
Deconstructing a geoprocessing tool
A geoprocessing tool does three things Defines parameters Validates parameters Executes source code
6
Turning Python code into geoprocessing tools
Demo
7
Script tools vs Python toolboxes
Using Python, we can build tools in two ways: Which do I use? “A tool is a tool” Script tools Python toolboxes Source is Python Parameters through wizard Validation is Python (stored in toolbox) Entirely in Python
8
Parameters Parameters are how you interact with a tool
Data type Type Direction Default Dependency Filter Environment Symbology Multivalue Parameters are how you interact with a tool Simple rules to guide behaviors Does an input exist? What are valid fields for this data? Is this value an expected keyword?
9
Key parameter properties
Data type Direction Feature layers, raster layers, table views, … Input, output Parameter type String, Boolean, long, double, … Required, optional, derived
10
Parameter Dependencies (‘obtained from’)
Some data types are dependent on other parameters Field, SQL Expression, Field Info provide little value on their own Set a dependency to a different data type
11
Parameters - Symbology
Control the appearance of output by setting symbology Set using a layer file either as : Parameter property Or in your source code Important if you want to vary the symbology based on logical criteria
12
Filters Filters are used to limit choices to acceptable values
Relevant data types Value List String (keywords) or numeric values String, Long, Double, Boolean Range Between a minimum and maximum value Long, Double Feature Class Allowable feature class types Feature Layer, Feature Class File File extensions Field Supported field types Workspace Supported workspaces Filters are used to limit choices to acceptable values For example: A number between 1 and 10 A string parameter with keywords A file parameter that will only accept files with a .txt extension
13
Parameters - Defaults Set a parameter default by value or by environment Some data types match closely with geoprocessing environments Can configure a parameter to use an environment by default
14
Parameter-izing a tool
Demo
15
Parameters – Validation
As parameters are entered and modified, validation responds and interacts Tools validate parameters in two ways Basic (‘free’) validation, such as: Does the input (or output) exist? Is it the right data type? Does this value match its filter? Have all required parameters been supplied? Additional rules and behavior you add
16
Validation Provides more control Setting parameter errors and messages
Parameter interaction Calculate defaults Enable or disable parameters Setting parameter errors and messages Defining output characteristics Chain tools in ModelBuilder
17
Validation Responding to: value (or valueAsText) altered
hasBeenValidated
18
A quick note about Python toolboxes and script tools
19
Validation: ModelBuilder
Describe outputs for chaining in ModelBuilder Data variables in ModelBuilder include descriptions of data By updating the schema, subsequent tools can see pending changes prior to execution
20
Validation: Messages Control over parameter messages
Evaluate system messages, and relax or change Add more stringent errors based on your own criteria Parameter message properties/methods message setErrorMessage() clearMessage() setIDMessage() hasError() setWarningMessage() hasWarning()
21
Validation – Feature Layers
The type of a layer parameter changes depending if the input is a layer or feature class
22
Working with validation: Script tools and Python toolboxes
Demo
23
Making your Python code work as a tool
Receiving parameters Script tool – arcpy.GetParameter / GetParameterAsText Python toolbox – parameter.value / parameter.valueAsText Internal Messages – arcpy.AddMessage / AddWarning / AddError … Progressor (step or ‘cylon eye’) Control actions (or not) after a cancellation Derived values, if any, are pushed back to the tool
24
Cancelling tools Added at 10.4, Pro 1.1
When a tool is cancelled… ... by default, code will be cancelled after the current line Using new environments, can respond to the cancellation arcpy.env.autoCancelling arcpy.env.isCancelled
25
Distributing your tools http://esriurl.com/extendingGP
Can ‘share’ a toolbox Simply share the files or package a result However, to have your tools blend seamlessly, distribute as a Python package Are easily distributable Toolboxes appear as System Toolboxes Toolboxes become available through arcpy Supports dialog side-panel help and localized messages Requires specific structure
26
Please take our Survey Find your event in the Esri Events App
Your feedback allows us to help maintain high standards and to help presenters Find your event in the Esri Events App Find the session you want to review Scroll down to the bottom of the session Answer survey questions and submit
27
Python at User Conference
Tues Wed Thurs Python: An Introduction 8:30 Python: Beyond the Basics 10:15 Python: Building Geoprocessing tools 1:30 Python: Raster Analysis Python: ArcPy Tips and Tricks Harnessing the Power of Python in ArcGIS using the Conda Distribution 3:30 Python Map Automation: Introduction to arcpy.mapping / arcpy.mp Advanced Map Automation with Python in ArcGIS for Desktop 3:15
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.