1 / 27

PYTHON: BUILDING GEOPROCESSING TOOLS

PYTHON: BUILDING GEOPROCESSING TOOLS. David Wynne, Geri Miller. 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

thaber
Download Presentation

PYTHON: BUILDING GEOPROCESSING TOOLS

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. PYTHON: BUILDING GEOPROCESSING TOOLS David Wynne, Geri Miller

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

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

  4. Deconstructing a geoprocessing tool • A geoprocessing tool does three things • Defines parameters • Validates parameters • Executes source code

  5. Turning Python code into geoprocessing tools Demo

  6. Script tools vs Python toolboxes • Using Python, we can build tools in two ways: • Which do I use? • “A tool is a tool”

  7. Parameters • 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?

  8. Key parameter properties • Data type • Feature layers, raster layers, table views, … • String, Boolean, long, double, … • Direction • Input, output • Parameter type • Required, optional, derived

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

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

  11. Filters • 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

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

  13. Parameter-izing a tool Demo

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

  15. Validation • Provides more control • Parameter interaction • Calculate defaults • Enable or disable parameters • Setting parameter errors and messages • Defining output characteristics • Chain tools in ModelBuilder

  16. Validation • Responding to: • value (or valueAsText) • altered • hasBeenValidated

  17. A quick note about Python toolboxes and script tools

  18. Validation: ModelBuilder • Describe outputs for chaining in ModelBuilder • Data variables in ModelBuilder includedescriptions of data • By updating the schema, subsequent tools can see pending changes prior to execution

  19. Validation: Messages • Control over parameter messages • Evaluate system messages, and relax or change • Add more stringent errors based on your own criteria

  20. Validation – Feature Layers • The type of a layer parameter changes depending if the input is a layer or feature class

  21. Working with validation:Script tools and Python toolboxes Demo

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

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

  24. Distributing your toolshttp://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

  25. Please take our Survey 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

  26. Python at User Conference http://esriurl.com/PythonUC16

More Related