Top Banner
Overview for the 2007 ESRI User Overview for the 2007 ESRI User Conference Conference 21-Jun-2007 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin and Pat Halpin Duke University Marine Geospatial Duke University Marine Geospatial Ecology Lab Ecology Lab
78

Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Jan 18, 2016

Download

Documents

Marylou Blake
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Overview for the 2007 ESRI User Overview for the 2007 ESRI User ConferenceConference

21-Jun-2007 21-Jun-2007

Jason Roberts, Ben Best, Daniel Dunn, and Pat Jason Roberts, Ben Best, Daniel Dunn, and Pat HalpinHalpin

Duke University Marine Geospatial Ecology Duke University Marine Geospatial Ecology LabLab

Page 2: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Marine Geospatial Ecology ToolsGeoprocessing toolbox for marine ecology

Oceanographic data management and analysisSophisticated sampling and statistical modelingEmphasis on batch processing and interoperability

Open source, implemented mostly in PythonTools are platform independent, when possibleSome tools do not even require ArcGIS

Minimum requirements: Python 2.4, ArcGIS 9.1

Page 3: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Talk OutlineHistory of MGETWalkthrough typical user scenario

Highlight interesting tools and features

Invitation to collaborateAdvanced topics: (time permitting)

Ben’s Connectivity ModelerHow to build an MGET tool

Page 4: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

History of MGETWe have produced many geoprocessing tools but have done a poor job sharing themStaff developed tools independentlyTools shared ad hoc with collaboratorsLittle effort to package and document tools for easy re-use by anonymous users

It is time to unify our efforts!

Page 5: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

ArcRStats by Ben BestToolbox for sampling raster layers and running statistical analyses to predict habitats

RandomPoints

pts_rand

rstr_aspect

rstr_dem

rstr_landcov

rstr_tci

StatisticalPlots dir_plots

Sample toTable tbl_env

pts_obs

MultivariateRegression,

GLM

rstr_glm

rstr_glmroc

<> Lakes

rstr_viable

Page 6: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Marine Ecology Tools by Jason RobertsUnreleased toolbox for batch processing of oceanography

Aviso Geostrophic

Current u Component

NetCDFs to Rasters

Raster

Folder (2)

NetCDFs

Raster

Folder

Aviso Geostrophic

Current v Component

NetCDFs to Rasters

Raster

Folder (3)

Vector Shapefiles

from XY Component

Rasters

Shapefile

Folder

Page 7: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Benthic Complexity Modeler by Daniel Dunn

Predicts hardbottom from coarse-grain (90 m) bathymetryGEODAS bathymetry

Substrate Type ~ depth difference + aspect variety + slope + error

Statistical model: GLM with logit link

Probability of hardbottom

Page 8: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Unifying Our Tools

ArcRStats, HabMod, ConnModMarine Ecology ToolsBenthic Complexity ModelerE. Treml’s Connectivity ToolsAnd others

MGET

Page 9: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Typical User ScenarioResearcher has spatially-explicit

observations of a species and wants to investigate why it is thereAre there spatial and temporal patterns?Correlations with environmental

conditions?Correlations with occurrence of other

species?Can we predict its occurrence and thereby

improve our management of it?

Page 10: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Typical Observation Data

IATTCOlive Ridley Encounters1990-2005

Fishery bycatch data

Surveys

Argos satellite

tracksScott Eckert

Page 11: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Typical Workflow

Import species observations into GIS

Download oceanographic datasets

Prepare oceanographic data for use

Create derived oceanographic datasetsSample

oceanographic data

Explore maps of oceano. and observations

MGET includes (or will include) tools that assist with all steps

Model species habitat or behavior

Page 12: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Typical Workflow

Import species observations into GIS

Download oceanographic datasets

Prepare oceanographic data for use

Create derived oceanographic datasetsSample

oceanographic data

Explore maps of oceano. and observations

Model species habitat or behavior

Page 13: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Import Argos Results Into Tables

37120 Date : 12.12.03 09:58:10 LC : 2 IQ : 50 Lat1 : 34.282N Lon1 : 77.010W Lat2 : 32.640N Lon2 : 69.121W Nb mes : 012 Nb mes>-120dB : 000 Best level : -121 dB Pass duration : 706s NOPC : 2 Calcul freq : 401 647695.6 Hz Altitude : 0 m 49 54 00 00 00 00 218 17 96 96 29 159 255 94 98

DIAG record

11373 37120 9 31 J 2003-12-03 09:49:11 1 00 00 00 00 00 106 40 116 02 230 97 145 211 214 72 44 158 139 118 119 193 80 00 00 00 00 00 00 00 00 00

DS record

Page 14: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Import Argos Results Into Tables

DS Folder

DIAG Folder

ResultTable

Message Table

Page 15: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Table Points Lines

Input Table

Point Features

Line Features

XY Table to Point Feature Class Connect Points

Page 16: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Typical Workflow

Import species observations into GIS

Download oceanographic datasets

Prepare oceanographic data for use

Create derived oceanographic datasetsSample

oceanographic data

Explore maps of oceano. and observations

Model species habitat or behavior

Page 17: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Calculate URLs and Download

NODC AVHRR v5

URL for Dates

Listed in Table

Observations.

shp

Observations.

shp (2)

Download Files

Listed in Table

Observations.

shp (3)

Download

Folder (2)

Download

Folder

1. Given points’ dates, calculates URL to NOAA SST HDFs

2. Given URLs, download the files to a given directory

Page 18: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Calculate URLs and DownloadNODC AVHRR v5 URLs for Dates Download Files

Page 19: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Typical Workflow

Import species observations into GIS

Download oceanographic datasets

Prepare oceanographic data for use

Create derived oceanographic datasetsSample

oceanographic data

Explore maps of oceano. and observations

Model species habitat or behavior

Page 20: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Preparing Oceanography For UseMost oceanographic datasets are not immediately usable

Common preprocessing steps include:Converting to a supported formatProjecting to a desired projectionClipping to region of interestPerforming arbitrary map algebraBuilding pyramids

Page 21: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

MGET Tools for OceanographyImplemented in three layers:

1. Single-input, single output for general format HDF to ArcGIS Raster

2. Batch processing versions for general format HDFs Listed in Table to ArcGIS Rasters Find HDFs and Convert to ArcGIS Rasters

3. Specialized versions for particular products NODC AVHRR v5 HDF to ArcGIS Raster NODC AVHRR v5 HDFs Listed in Table to Rasters Find NODC AVHRR v5 HDFs and Convert to Rasters

Page 22: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Example: HDF to ArcGIS Raster

Page 23: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Batch Processing Design Pattern 1“Process inputs listed in table” pattern:

Table fields contain the paths to the inputs to process and the outputs to produce

User can populate these columns using any technique (e.g. Download Files tool)

The batch tool accepts a SQL where clause to select the rows to process, and an order by clause to specify the processing order

Page 24: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Example: SDSes in HDFs Listed in Table to ArcGIS Rasters

Same as single-file tool

Page 25: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Batch Processing Design Pattern 2“Find and process inputs” pattern:

User specifies:Input and output locations (e.g.

workspaces)Optional search parameters (e.g. wildcard)Python expression for naming outputs

(a sensible default is always provided)The batch tool searches the input location, processes all inputs that are found, and stores them in the output location

Page 26: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Example: SDSes in HDFs Listed in Table to ArcGIS Rasters

Same as single-file tool

Page 27: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Example: SDSes in HDFs Listed in Table to ArcGIS Rasters

Page 28: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Example Product-Specific ToolNOAA NODC 4km AVHRR Pathfinder v5 SST

Page 29: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Other SST ProductsPO.DAAC GOES 10/12

NOAA CoastWatch AVHRR

Also: PO.DAAC MODIS Aqua and Terra, GOES 9

Page 30: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Sea Surface ChlorophyllNASA OceanColor Group SeaWiFS

Also: MODIS Aqua and combined MODIS/SeaWiFS

Page 31: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

AVISO SSH and Geostrophic Currents

Page 32: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

PO.DAAC QuickSCAT Winds

Katrina28-Aug-2005 Also: BYU

QuickSCAT Sigma-0 (approximates sea surface rougness)

Page 33: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Global Bathymetries

ETOPO2GEBCOS2004

Map shows S2004 clipped to ETP

Page 34: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Typical Workflow

Import species observations into GIS

Download oceanographic datasets

Prepare oceanographic data for use

Create derived oceanographic datasetsSample

oceanographic data

Explore maps of oceano. and observations

Model species habitat or behavior

Page 35: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

~120 km

AVHRR Daytime SST 03-Jan-2005

28.0 °C

25.8 °C

Cayula-Cornillion Edge Detection Algorithm (1992)

Identifying Surface Temperature Fronts

Fre

qu

en

cy

Temperature

Optimal break 27.0 °C

Strong cohesion front present

Step 1: Histogram analysis

Step 2: Spatial cohesion test

Weak cohesion no front

Bimodal

Example Output

Processed all daily AVHRR 4 km images from 1985-2005

Over 15,000 images, requiring 2 months of computer time

Also processed GOES 10 and 12 images

Mexico

Mexico

Front

Page 36: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Typical Workflow

Import species observations into GIS

Download oceanographic datasets

Prepare oceanographic data for use

Create derived oceanographic datasetsSample

oceanographic data

Model species habitat or behavior

Explore maps of oceano. and observations

Page 37: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Batch Sampling Tool

Sample rasters in 1 or more fields

Stores values directly in fields!Can apply Python expression

to sampled values

Page 38: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Typical Workflow

Import species observations into GIS

Download oceanographic datasets

Prepare oceanographic data for use

Create derived oceanographic datasetsSample

oceanographic data

Model species habitat or behavior

Explore maps of oceano. and observations

Page 39: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Invoking R from ArcGIS

Page 40: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Invoking R from ArcGIS

R messages logged to ArcGIS

Value of last statement returned

Page 41: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

MGET Project StatusVersion 0.2 just released“Framework” nearly complete, but only simple building-block tools are implementedHDF to raster converter might interest you

Oceanographic processing tools will be released in July

Ben and Jason will integrate ArcRStats functionality into MGET this summer

Page 42: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Installing MGETUser executes installation program

Registers ArcGIS toolbox

Installs Python package Configures Start menu

Registers COM objects

Page 43: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

ArcGIS documentationIn HTML files

In Arc toolbox

Page 44: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Python documentationIn HTML, formatted like Python library documentation

Page 45: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

MGET includes extensive validation and logging; log levels are configurable

Page 46: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Invitation to CollaborateDo you need a specific tool developed for your project?We would consider developing it for MGET, especially if it would be widely applicable

Do you develop tools yourself?Become a contributor/coauthor! We could help you integrate your tools into MGET.

Or you can download the source code

Page 47: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Thanks! Any questions?

Download site:http://code.env.duke.edu/projects/mget

Contact: Jason Roberts [email protected]

Page 48: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Advanced Modeling:Ben’s Connectivity Modeler

CreateNetwork

tin

pt_nodes

ln_edges

poly_patches_

pt_centroids

txt_network

poly_patches

rstr_cost

NetworkLeast Cost

Path

txt_networkl

ln_edgeslc

NetworkCentrality

Metrics

poly_patchsm

Best et al 2007 (In Review)

Page 49: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

The Connectivity ProblemSay you have a set of patches and a cost surface that describes migration cost

How to efficiently compute how “connected” patches are to each other?

Page 50: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Step 1: create a network from the cost surface

CreateNetwork

tin

pt_nodes

ln_edges

poly_patches_

pt_centroids

txt_network

poly_patches

rstr_cost

NetworkLeast Cost

Path

txt_networkl

ln_edgeslc

NetworkCentrality

Metrics

poly_patchsm

Page 51: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Cost surface is converted to a TIN to create the network

Page 52: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Step 2: calculate the least cost paths for the network

CreateNetwork

tin

pt_nodes

ln_edges

poly_patches_

pt_centroids

txt_network

poly_patches

rstr_cost

NetworkLeast Cost

Path

txt_networkl

ln_edgeslc

NetworkCentrality

Metrics

poly_patchsm

Page 53: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Network least cost pathsDjikstra algorithm highly efficient over ArcGIS CostPath function

Future: create corridors with CostDistance from paths

Page 54: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Step 3: compute network centrality metrics as indices of connectivity

CreateNetwork

tin

pt_nodes

ln_edges

poly_patches_

pt_centroids

txt_network

poly_patches

rstr_cost

NetworkLeast Cost

Path

txt_networkl

ln_edgeslc

NetworkCentrality

Metrics

poly_patchsm

Page 55: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Network centrality metrics

Brandes, 2000. “Faster Evaluation of Shortest-Path Based Centrality Indices.” CiteSeer.

Degree Closeness Betweenness

Page 56: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Developer walk-through:

How do you develop an MGET tool?

Page 57: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Goals for a common development framework for Duke’s toolsLet developers select the best technologies for the

jobRequire tools to formally declare their dependenciesEncourage devs to choose set of standard technologies

Automate tedious stuff, such as:Tool dependency and input parameter validationInteroperability plumbing (Arc toolboxes, COM objects)Generation of installation packagesGeneration of documentation

Provide a library of common utility functions:Invoking Arc/R/MATLAB, manipulating files and data,

error handling, logging, localization, etc.

Page 58: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Marine Geospatial Ecology ToolsCore framework implemented in Python and C++

Python was selected due to wide appeal to Duke developers and perceived strategic importance to ESRI

Core framework is platform independentIndividual tools determine their own dependencies

Tools may be implemented in any languageBut language interoperability is expensive to developCurrently planning for Python, R and MATLAB tools

Provides all features from previous slide, and more!

Page 59: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Creating a “Hello, World” tool in PythonYou implement a Python-based “tool” in MGET by creating a Python instance method or classmethod:

1. Create the module and class that will receive the new method (or locate an existing module and class)

2. Define the method’s name and input parameters

3. Fill in the method’s body (i.e., write the code)4. Specify some metadata about the method5. Run a script that rebuilds the MGET

installation package

Page 60: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

from GeoEco.DynamicDocString import DynamicDocStringfrom GeoEco.Internationalization import _from GeoEco.Logging import Logger

class Example(object): __doc__ = DynamicDocString()

Import needed modules provided by the core MGET framework

GeoEco is the name of the MGET Python package; I chose this name after Ben expressed a desire that the package name not imply that the tools are not only for marine problems

Class definition

Hack to allow metadata to be added to class

Page 61: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

from GeoEco.DynamicDocString import DynamicDocStringfrom GeoEco.Internationalization import _from GeoEco.Logging import Logger

class Example(object): __doc__ = DynamicDocString()

@classmethod def GreetPerson(cls, personName): pass

Method definition

Method body, to be filled in as next step

Input parameter

Page 62: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

from GeoEco.DynamicDocString import DynamicDocStringfrom GeoEco.Internationalization import _from GeoEco.Logging import Logger

class Example(object): __doc__ = DynamicDocString()

@classmethod def GreetPerson(cls, personName): cls.__doc__.obj.ValidateMethodInvocation() message = _(u’Hello, %s!’) % personName Logger.Info(message) return message

Call to function that validates the tool’s dependencies and input parameter values

The _ function and use of Unicode strings enable localization of MGET tools

Call to logging system

Output parameter

Page 63: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

from GeoEco.Metadata import *from GeoEco.Types import *

AddMethodMetadata(Example.GreetPerson, shortDescription=_(u’Greets a specified person’), isExposedToPythonCallers=True, isExposedByCOM=True, isExposedAsArcGISTool=True, arcGISDisplayName=_(u’Greet Person’), arcGISToolCategory=_(u’Example Tools’))

AddArgumentMetadata(Example.GreetPerson, u’personName’, typeMetadata=UnicodeStringTypeMetadata(canBeNone=False), description=_(u’The person to greet with a friendly message.’), arcGISDisplayName=_(u’Person to greet’))

Configure interoperability

Specify appearance of ArcGIS toolbox

Specify strong parameter type and validation options

Write documentation in reStructuredText

Page 64: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.
Page 65: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

The build scriptUsing the tool metadata as input, the script

generates:ArcGIS toolbox (Marine Geospatial Ecology Tools.tbx)Python wrapper scripts for invoking tools from

toolboxMicrosoft COM type library and registration

scripts, so tools can be invoked as COM objectsPython reference documentation (HTML)ArcGIS geoprocessing documentation (HTML)COM documentation (HTML, not implemented yet)Installation package (GeoEco-1.0.win32-py25.exe)

Page 66: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Invoking your tool from Python

Initialize logging (optional)

Import the module, invoke method

Log message (format is configurable)Print returned value

Python callers can import your module and invoke your method directly:

The core framework is platform-independent; it is up to you to determine what platforms your method supports.

Page 67: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Invoking your tool from ArcGIS

Documentation appears in geoprocessing UI

Fancy formatting is supported (e.g. bullets, hyperlinks, indentation, code, images)

Log messages appear in progress window

Page 68: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Invoking your tool through COM Automation

Set logger = WScript.CreateObject("GeoEco.Logger")logger.InitializeSet example = WScript.CreateObject("GeoEco.Example")greeting = example.GreetPerson("Joe")WScript.StdOut.WriteLine(greeting)

Set logger = WScript.CreateObject("GeoEco.Logger")logger.InitializeSet example = WScript.CreateObject("GeoEco.Example")greeting = example.GreetPerson("Joe")WScript.StdOut.WriteLine(greeting)

VBScript example (many other languages supported)

Page 69: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Invoking your tool from .Net

Add a reference to the GeoEco Type Library

Invocation occurs through early-bound (“vtable”) COM, not COM Automation

C# Example

IntelliSenseis fully functional!

Page 70: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Logging with Debug messages disabled

Core framework only reports one message (the other is the “Hello, Joe!” greeting).

Page 71: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Logging with Debug messages enabled

Page 72: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Example: Declaring dependencies and calling ArcGIS geoprocessor functions

@classmethoddef CreateZeroRaster(cls, outputRaster): cls.__doc__.Obj.ValidateMethodInvocation() gp = GeoprocessorManager.GetWrappedGeoprocessor() gp.CreateConstantRaster_sa(outputRaster, 0.0, 'FLOAT', 1.0, '0.0 0.0 1.0 1.0')

AddMethodMetadata(Example.CreateZeroRaster, shortDescription=_(u'Creates a raster with all cells set to zero.'), isExposedToPythonCallers=True, isExposedByCOM=True, isExposedAsArcGISTool=True, arcGISDisplayName=_(u'Create Zero Raster'), arcGISToolCategory=_(u'Examples'), dependencies=[ArcGISDependency(9, 1), ArcGISExtensionDependency(u'spatial')])

ArcGIS dependencies

Wrapped geoprocessor object logs all calls

Dependencies checked and geoprocessor initialized here

Page 73: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Resulting output (debug logging enabled)

Otherdependency checks

LoggedArcGISinteractions

Initialize geoprocessor

Page 74: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Dependencies implemented so farWindowsDependency – minimum Windows versionPythonDependency – minimum Python versionPythonModuleDependency –module is installedArcGISDependency – minimum ArcGIS versionArcGISProductDependency – minimum product levelArcGISExtensionDependency – extension is availableRDependency – minimum R versionRPackageDependency – package is installed,

minimum version optional

Page 75: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Example of dependency failureThe Scenario:

The user invokes the Evaluate R Statements tool but the required rpy Python module is not installed

rpy is not installed and the framework raises a SoftwareNotInstalled error

Page 76: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

ArcGIS documentationHTML pages generated from XML metadata using XSL transforms

Documentation also added to Arc toolbox by build script

Page 77: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Python documentation

HTML pages generated from XML metadata using XSL transforms

Page 78: Overview for the 2007 ESRI User Conference 21-Jun-2007 Jason Roberts, Ben Best, Daniel Dunn, and Pat Halpin Duke University Marine Geospatial Ecology Lab.

Using metdata to generate batch-processing versions of your method

from GeoEco.BatchProcessing import BatchProcessingfrom GeoEco.DataManagement.Fields import Field

BatchProcessing.GenerateForMethod(HDF.ExtractHeader, inputParamNames=[u'inputFile'], inputParamFieldArcGISDisplayNames=[u'Input HDF file field'], inputParamDescriptions=[u'%s paths of the input HDF files.'], outputParamNames=[u'outputFile'], outputParamFieldArcGISDisplayNames=[u'Output text file field'], outputParamExpressionArcGISDisplayNames=[u'Output file Python expression'], outputParamDescriptions=[u'%s paths of the text files to write.'], … processListMethodName=u‘ExtractHeaderList', processTableMethodName=u‘ExtractHeaderTable', …)

Batch processing methods to generate