Full Code of giswqs/WhiteboxTools-ArcGIS for AI

master 47c8b8363d6e cached
90 files
3.8 MB
1.0M tokens
4495 symbols
1 requests
Download .txt
Showing preview only (4,023K chars total). Download the full file or copy to clipboard to get everything.
Repository: giswqs/WhiteboxTools-ArcGIS
Branch: master
Commit: 47c8b8363d6e
Files: 90
Total size: 3.8 MB

Directory structure:
gitextract_x6scu65z/

├── .gitignore
├── .pre-commit-config.yaml
├── LICENSE
├── README.md
├── WBT/
│   ├── LICENSE.txt
│   ├── PRE/
│   │   ├── WhiteboxTools.py
│   │   ├── automation.py
│   │   ├── file_about.py
│   │   ├── file_header.py
│   │   ├── file_tool.py
│   │   ├── file_toolbox.py
│   │   ├── testing.py
│   │   └── whitebox_tools.py
│   ├── UserManual.txt
│   ├── __init__.py
│   ├── plugins/
│   │   ├── conditional_evaluation.json
│   │   ├── conditioned_latin_hypercube.json
│   │   ├── edge_contamination.json
│   │   ├── exposure_towards_wind_flux.json
│   │   ├── gaussian_scale_space.json
│   │   ├── heat_map.json
│   │   ├── individual_tree_detection.json
│   │   ├── install_wb_extension.json
│   │   ├── launch_wb_runner.json
│   │   ├── lidar_shift.json
│   │   ├── local_quadratic_regression.json
│   │   ├── max_upslope_value.json
│   │   ├── normalize_lidar.json
│   │   ├── qin_flow_accumulation.json
│   │   ├── quinn_flow_accumulation.json
│   │   ├── raster_calculator.json
│   │   ├── repair_stream_vector_topology.json
│   │   ├── rho8_flow_accumulation.json
│   │   ├── split_vector_lines.json
│   │   ├── travelling_salesman_problem.json
│   │   └── vector_stream_network_analysis.json
│   ├── readme.txt
│   ├── wb_runner.py
│   ├── whitebox_example.py
│   └── whitebox_tools.py
├── WhiteboxTools.pyt
└── testdata/
    ├── DEM/
    │   ├── DEM.dep
    │   └── DEM.tif
    ├── Landsat/
    │   ├── LC80320272014265LGN00_B1.TIF
    │   ├── LC80320272014265LGN00_B2.TIF
    │   ├── LC80320272014265LGN00_B3.TIF
    │   ├── LC80320272014265LGN00_B4.TIF
    │   ├── LC80320272014265LGN00_B5.TIF
    │   ├── LC80320272014265LGN00_B6.TIF
    │   ├── LC80320272014265LGN00_B7.TIF
    │   ├── LC80320272014265LGN00_B8.TIF
    │   ├── LC80320272014265LGN00_Boundary.cpg
    │   ├── LC80320272014265LGN00_Boundary.dbf
    │   ├── LC80320272014265LGN00_Boundary.prj
    │   ├── LC80320272014265LGN00_Boundary.shp
    │   ├── LC80320272014265LGN00_Boundary.shx
    │   └── Readme.txt
    ├── Wetlands/
    │   ├── CLSA_Boundary.dbf
    │   ├── CLSA_Boundary.prj
    │   ├── CLSA_Boundary.shp
    │   ├── CLSA_Boundary.shx
    │   ├── CLSA_LiDAR_2m.tif
    │   ├── CLSA_NAIP_2m.tif
    │   ├── CLSA_NED_10m.tif
    │   ├── CLSA_Wetland_Points.dbf
    │   ├── CLSA_Wetland_Points.prj
    │   ├── CLSA_Wetland_Points.sbn
    │   ├── CLSA_Wetland_Points.sbx
    │   ├── CLSA_Wetland_Points.shp
    │   ├── CLSA_Wetland_Points.shx
    │   ├── CLSA_Wetland_Polygons.dbf
    │   ├── CLSA_Wetland_Polygons.prj
    │   ├── CLSA_Wetland_Polygons.sbn
    │   ├── CLSA_Wetland_Polygons.sbx
    │   ├── CLSA_Wetland_Polygons.shp
    │   ├── CLSA_Wetland_Polygons.shx
    │   ├── CLSA_Wetland_Polylines.cpg
    │   ├── CLSA_Wetland_Polylines.dbf
    │   ├── CLSA_Wetland_Polylines.prj
    │   ├── CLSA_Wetland_Polylines.sbn
    │   ├── CLSA_Wetland_Polylines.sbx
    │   ├── CLSA_Wetland_Polylines.shp
    │   ├── CLSA_Wetland_Polylines.shx
    │   └── Readme.txt
    ├── WorldMap/
    │   ├── Readme.txt
    │   ├── TM_WORLD_BORDERS_SIMPL-0.3.dbf
    │   ├── TM_WORLD_BORDERS_SIMPL-0.3.prj
    │   ├── TM_WORLD_BORDERS_SIMPL-0.3.shp
    │   └── TM_WORLD_BORDERS_SIMPL-0.3.shx
    └── examples.py

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
.idea/
whitebox/WBT/
**/*.tar.xz
**/*.xml
**/.access^
whitebox/testdata/breached.tif
whitebox/testdata/flow_accum.tif
whitebox/testdata/smoothed.tif
whitebox/whitebox_tools
dev/
.vscode/
_build/
temp/
WhiteboxTools_win_amd64.zip
**/*.db
**/*.db:encryptable
WhiteboxTools.pyt.zip
**/*.lock
**/*.aux.xml
**/*.tfw
**/*.tif.ovr
**/*.CPG
__MACOSX/
whitebox_tools-v*.exe
WBT/img/._*


# C extensions
*.so

# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints
examples/.ipynb_checkpoints

# pyenv
.python-version

# celery beat schedule file
celerybeat-schedule

# SageMath parsed files
*.sage.py

# dotenv
.env

# virtualenv
.venv
venv/
ENV/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
WBT/img/.DS_Store
WBT/whitebox_runner.exe
WBT/settings.json


================================================
FILE: .pre-commit-config.yaml
================================================
repos:
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v6.0.0
    hooks:
      - id: check-toml
      - id: check-yaml
      # - id: end-of-file-fixer
      #   types: [python]
      # - id: trailing-whitespace
      # - id: requirements-txt-fixer
      # - id: check-added-large-files
      #   args: ["--maxkb=500"]

  # - repo: https://github.com/psf/black
  #   rev: 24.10.0
  #   hooks:
  #     - id: black-jupyter

  # - repo: https://github.com/codespell-project/codespell
  #   rev: v2.3.0
  #   hooks:
  #     - id: codespell
  #       args:
  #         [
  #           "--ignore-words-list=aci,acount,acounts,fallow,ges,hart,hist,nd,ned,ois,wqs,watermask,tre",
  #           "--skip=*.csv,*.geojson,*.json,*.yml*.js,*.html,*cff,*.pdf",
  #         ]

  # - repo: https://github.com/kynan/nbstripout
  #   rev: 0.8.0
  #   hooks:
  #     - id: nbstripout


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2019 Qiusheng Wu

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.md
================================================
# WhiteboxTools-ArcGIS

[![docs](https://img.shields.io/badge/whitebox-docs-brightgreen.svg)](https://www.whiteboxgeo.com/manual/wbt_book/preface.html)
[![ArcGIS](https://img.shields.io/badge/whitebox-ArcGIS-brightgreen.svg)](https://github.com/opengeos/WhiteboxTools-ArcGIS)
[![python](https://img.shields.io/badge/whitebox-Python-blue.svg)](https://github.com/opengeos/whitebox-python)
[![R](https://img.shields.io/badge/whitebox-R-green.svg)](https://github.com/opengeos/whiteboxR)
[![QGIS](https://img.shields.io/badge/whitebox-QGIS-orange.svg)](https://www.whiteboxgeo.com/manual/wbt_book/qgis_plugin.html)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Donate](https://img.shields.io/badge/Donate-Buy%20me%20a%20coffee-yellowgreen.svg)](https://www.buymeacoffee.com/giswqs)

ArcGIS Python Toolbox for WhiteboxTools.

This repository is related to the **ArcGIS Python Toolbox for WhiteboxTools**, which is an ArcGIS frontend of a stand-alone executable command-line program called **[WhiteboxTools](https://github.com/jblindsay/whitebox-tools)**.

![Note](https://i.imgur.com/Ic8BA7C.png) **Important Note:** This toolbox only supports **ArcGIS Pro and ArcGIS 10.6 or newer**. Don't waste your time trying it on ArcGIS 10.5 or older versions. 

* Authors: John Lindsay (<https://jblindsay.github.io/ghrg/index.html>)
* Contributors: Qiusheng Wu (<https://wetlands.io>)
* WhiteboxTools: <https://github.com/jblindsay/whitebox-tools>
* User Manual: <https://www.whiteboxgeo.com/manual/wbt_book/preface.html>
* WhiteboxTools-ArcGIS: <https://github.com/opengeos/WhiteboxTools-ArcGIS>
* WhiteboxTools-Python: <https://github.com/opengeos/whitebox>
* WhiteboxTools-Jupyter: <https://github.com/opengeos/whiteboxgui>
* WhiteboxTools-R: <https://github.com/opengeos/whiteboxR>
* Free software: [MIT license](https://opensource.org/licenses/MIT)

**Contents**

- [WhiteboxTools-ArcGIS](#whiteboxtools-arcgis)
  - [Description](#description)
  - [Installation](#installation)
    - [Step 1: Download the toolbox](#step-1-download-the-toolbox)
    - [Step 2: Connect to the toolbox](#step-2-connect-to-the-toolbox)
  - [Usage](#usage)
  - [Tutorials](#tutorials)
  - [Available Tools](#available-tools)
  - [Supported Data Formats](#supported-data-formats)
  - [Contributing](#contributing)
  - [License](#license)
  - [Reporting Bugs](#reporting-bugs)
  - [Toolbox Screenshots](#toolbox-screenshots)

## Description

**WhiteboxTools-ArcGIS** is an ArcGIS Python Toolbox for **WhiteboxTools**, an advanced geospatial data analysis platform developed by Prof. John Lindsay ([webpage](https://jblindsay.github.io/ghrg/index.html); [jblindsay](https://github.com/jblindsay)) at the University of Guelph's [Geomorphometry and Hydrogeomatics Research Group](https://jblindsay.github.io/ghrg/index.html). *WhiteboxTools* can be used to perform common geographical information systems (GIS) analysis operations, such as cost-distance analysis, distance buffering, and raster reclassification. Remote sensing and image processing tasks include image enhancement (e.g. panchromatic sharpening, contrast adjustments), image mosaicing, numerous filtering operations, simple classification (k-means), and common image transformations. *WhiteboxTools* also contains advanced tooling for spatial hydrological analysis (e.g. flow-accumulation, watershed delineation, stream network analysis, sink removal), terrain analysis (e.g. common terrain indices such as slope, curvatures, wetness index, hillshading; hypsometric analysis; multi-scale topographic position analysis), and LiDAR data processing. LiDAR point clouds can be interrogated (LidarInfo, LidarHistogram), segmented, tiled and joined, analyized for outliers, interpolated to rasters (DEMs, intensity images), and ground-points can be classified or filtered. *WhiteboxTools* is not a cartographic or spatial data visualization package; instead it is meant to serve as an analytical backend for other data visualization software, mainly GIS. Suggested citation: Lindsay, J. B. (2016). Whitebox GAT: A case study in geomorphometric analysis. _Computers & Geosciences_, 95, 75-84. doi:[10.1016/j.cageo.2016.07.003](http://dx.doi.org/10.1016/j.cageo.2016.07.003).

## Installation

### Step 1: Download the toolbox

1. Click the green button (**[Clone or download](https://gishub.org/whitebox-arcgis-download)**) on the upper-right corner of this page to download the toolbox as a zip file.

    ![](https://i.imgur.com/2xQkxCY.png)

2. Depcompress the downloaded zip file.

### Step 2: Connect to the toolbox

1. Navigate to the **Folder Connections** node in the catalog window tree.

2. Right-click the node and choose **Connect To Folder**.

    ![](https://i.imgur.com/uKK1Yel.png)

3. Type the path or navigate to the **WhiteboxTools-ArcGIS** folder and click **OK**.

4. Browse into the toolbox and start using its tools.

    ![](https://i.imgur.com/JcdNBnt.png)

## Usage

Open any tool within the toolbox and start using it. Check out the [WhiteboxTools User Mannual](https://www.whiteboxgeo.com/manual/wbt_book/) for more detailed help documentation of each tool.

![](https://i.imgur.com/4c9RLZY.png)

## Tutorials

[Introducing WhiteboxTools frontends (Python, Jupyter, ArcGIS, R)](https://youtu.be/cv33vkpwta0)

[![](https://img.youtube.com/vi/cv33vkpwta0/0.jpg)](https://youtu.be/cv33vkpwta0)

## Available Tools

The **[WhiteboxTools](https://github.com/jblindsay/whitebox-tools)** library currently contains **468** tools, which are each grouped based on their main function into one of the following categories: Data Tools, GIS Analysis, Hydrological Analysis, Image Analysis, LiDAR Analysis, Mathematical and Statistical Analysis, Stream Network Analysis, and Terrain Analysis. For a listing of available tools, complete with documentation and usage details, please see the [WhiteboxTools User Manual](https://www.whiteboxgeo.com/manual/wbt_book/available_tools/index.html).

## Supported Data Formats

The **WhiteboxTools** library can currently support read/writing raster data in [*Whitebox GAT*](http://www.uoguelph.ca/~hydrogeo/Whitebox/), GeoTIFF, ESRI (ArcGIS) ASCII and binary (.flt & .hdr), GRASS GIS, Idrisi, SAGA GIS (binary and ASCII), and Surfer 7 data formats. The library is primarily tested using Whitebox raster data sets and if you encounter issues when reading/writing data in other formats, you should report the [issue](https://github.com/jblindsay/whitebox-tools/issues). Please note that there are no plans to incorporate third-party libraries, like [GDAL](http://www.gdal.org), in the project given the design goal of keeping a pure (or as close as possible) Rust codebase.

At present, there is limited ability in *WhiteboxTools* to read vector geospatial data. Support for Shapefile (and other common vector formats) will be enhanced within the library soon.

LiDAR data can be read/written in the common [LAS](https://www.asprs.org/committee-general/laser-las-file-format-exchange-activities.html) data format. *WhiteboxTools* can read and write LAS files that have been compressed (zipped with a .zip extension) using the common DEFLATE algorithm. Note that only LAS file should be contained within a zipped archive file. The compressed LiDAR format LAZ and ESRI LiDAR format are not currently supported by the library.

## Contributing

If you would like to contribute to the project as a developer, follow these instructions to get started:

1. Fork the WhiteboxTools-ArcGIS repository (<https://github.com/opengeos/WhiteboxTools-ArcGIS>)
2. Create your feature branch (git checkout -b my-new-feature)
3. Commit your changes (git commit -am 'Add some feature')
4. Push to the branch (git push origin my-new-feature)
5. Create a new Pull Request

Unless explicitly stated otherwise, any contribution intentionally submitted for inclusion in the work shall be licensed as the [MIT license](https://opensource.org/licenses/MIT) without any additional terms or conditions.

## License

The **ArcGIS Toolbox for WhiteboxTools** is distributed under the [MIT license](https://opensource.org/licenses/MIT), a permissive open-source (free software) license.

## Reporting Bugs

**ArcGIS Toolbox for WhiteboxTools** is distributed as is and without warranty of suitability for application. If you encounter flaws with the software (i.e. bugs) please report the issue. Providing a detailed description of the conditions under which the bug occurred will help to identify the bug. *Use the [Issues tracker](https://github.com/opengeos/WhiteboxTools-ArcGIS/issues) on GitHub to report issues with the software and to request feature enchancements.* Please do not email Dr. Qiusheng Wu or Dr. John Lindsay directly with bugs.

## Toolbox Screenshots

![Toolbox-1](screenshots/Toolbox-1.png)
![Toolbox-2](screenshots/Toolbox-2.png)
![Toolbox-3](screenshots/Toolbox-3.png)

================================================
FILE: WBT/LICENSE.txt
================================================
The MIT License (MIT)

Copyright (c) 2017-2021 John Lindsay

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: WBT/PRE/WhiteboxTools.py
================================================
import arcpy
import os
import webbrowser
from WBT.whitebox_tools import WhiteboxTools
if sys.version_info < (3, 0):
    from StringIO import StringIO
else:
    from io import StringIO

wbt = WhiteboxTools()
tool_labels = []

tool_labels.append("Absolute Value")
tool_labels.append("Accumulation Curvature")
tool_labels.append("Adaptive Filter")
tool_labels.append("Add")
tool_labels.append("Add Point Coordinates To Table")
tool_labels.append("Aggregate Raster")
tool_labels.append("And")
tool_labels.append("Anova")
tool_labels.append("Arc Cos")
tool_labels.append("Arc Sin")
tool_labels.append("Arc Tan")
tool_labels.append("Arcosh")
tool_labels.append("Arsinh")
tool_labels.append("Artanh")
tool_labels.append("Ascii To Las")
tool_labels.append("Aspect")
tool_labels.append("Assess Route")
tool_labels.append("Atan2")
tool_labels.append("Attribute Correlation")
tool_labels.append("Attribute Correlation Neighbourhood Analysis")
tool_labels.append("Attribute Histogram")
tool_labels.append("Attribute Scattergram")
tool_labels.append("Average Flowpath Slope")
tool_labels.append("Average Normal Vector Angular Deviation")
tool_labels.append("Average Overlay")
tool_labels.append("Average Upslope Flowpath Length")
tool_labels.append("Balance Contrast Enhancement")
tool_labels.append("Basins")
tool_labels.append("Bilateral Filter")
tool_labels.append("Block Maximum Gridding")
tool_labels.append("Block Minimum Gridding")
tool_labels.append("Boundary Shape Complexity")
tool_labels.append("Breach Depressions")
tool_labels.append("Breach Depressions Least Cost")
tool_labels.append("Breach Single Cell Pits")
tool_labels.append("Breakline Mapping")
tool_labels.append("Buffer Raster")
tool_labels.append("Burn Streams At Roads")
tool_labels.append("Canny Edge Detection")
tool_labels.append("Ceil")
tool_labels.append("Centroid")
tool_labels.append("Centroid Vector")
tool_labels.append("Change Vector Analysis")
tool_labels.append("Circular Variance Of Aspect")
tool_labels.append("Classify Buildings In Lidar")
tool_labels.append("Classify Lidar")
tool_labels.append("Classify Overlap Points")
tool_labels.append("Clean Vector")
tool_labels.append("Clip")
tool_labels.append("Clip Lidar To Polygon")
tool_labels.append("Clip Raster To Polygon")
tool_labels.append("Closing")
tool_labels.append("Clump")
tool_labels.append("Colourize Based On Class")
tool_labels.append("Colourize Based On Point Returns")
tool_labels.append("Compactness Ratio")
tool_labels.append("Conditional Evaluation")
tool_labels.append("Conditioned Latin Hypercube")
tool_labels.append("Conservative Smoothing Filter")
tool_labels.append("Construct Vector Tin")
tool_labels.append("Contours From Points")
tool_labels.append("Contours From Raster")
tool_labels.append("Convert Nodata To Zero")
tool_labels.append("Convert Raster Format")
tool_labels.append("Corner Detection")
tool_labels.append("Correct Vignetting")
tool_labels.append("Cos")
tool_labels.append("Cosh")
tool_labels.append("Cost Allocation")
tool_labels.append("Cost Distance")
tool_labels.append("Cost Pathway")
tool_labels.append("Count If")
tool_labels.append("Create Colour Composite")
tool_labels.append("Create Hexagonal Vector Grid")
tool_labels.append("Create Plane")
tool_labels.append("Create Rectangular Vector Grid")
tool_labels.append("Crispness Index")
tool_labels.append("Cross Tabulation")
tool_labels.append("Csv Points To Vector")
tool_labels.append("Cumulative Distribution")
tool_labels.append("Curvedness")
tool_labels.append("D Inf Flow Accumulation")
tool_labels.append("D Inf Mass Flux")
tool_labels.append("D Inf Pointer")
tool_labels.append("D8 Flow Accumulation")
tool_labels.append("D8 Mass Flux")
tool_labels.append("D8 Pointer")
tool_labels.append("Dbscan")
tool_labels.append("Decrement")
tool_labels.append("Dem Void Filling")
tool_labels.append("Depth In Sink")
tool_labels.append("Depth To Water")
tool_labels.append("Dev From Mean Elev")
tool_labels.append("Diff From Mean Elev")
tool_labels.append("Diff Of Gaussian Filter")
tool_labels.append("Difference")
tool_labels.append("Difference Curvature")
tool_labels.append("Direct Decorrelation Stretch")
tool_labels.append("Directional Relief")
tool_labels.append("Dissolve")
tool_labels.append("Distance To Outlet")
tool_labels.append("Diversity Filter")
tool_labels.append("Divide")
tool_labels.append("Downslope Distance To Stream")
tool_labels.append("Downslope Flowpath Length")
tool_labels.append("Downslope Index")
tool_labels.append("Edge Contamination")
tool_labels.append("Edge Density")
tool_labels.append("Edge Preserving Mean Filter")
tool_labels.append("Edge Proportion")
tool_labels.append("Elev Above Pit")
tool_labels.append("Elev Percentile")
tool_labels.append("Elev Relative To Min Max")
tool_labels.append("Elev Relative To Watershed Min Max")
tool_labels.append("Elevation Above Stream")
tool_labels.append("Elevation Above Stream Euclidean")
tool_labels.append("Eliminate Coincident Points")
tool_labels.append("Elongation Ratio")
tool_labels.append("Embankment Mapping")
tool_labels.append("Emboss Filter")
tool_labels.append("Equal To")
tool_labels.append("Erase")
tool_labels.append("Erase Polygon From Lidar")
tool_labels.append("Erase Polygon From Raster")
tool_labels.append("Euclidean Allocation")
tool_labels.append("Euclidean Distance")
tool_labels.append("Evaluate Training Sites")
tool_labels.append("Exp")
tool_labels.append("Exp2")
tool_labels.append("Export Table To Csv")
tool_labels.append("Exposure Towards Wind Flux")
tool_labels.append("Extend Vector Lines")
tool_labels.append("Extract Nodes")
tool_labels.append("Extract Raster Values At Points")
tool_labels.append("Extract Streams")
tool_labels.append("Extract Valleys")
tool_labels.append("Farthest Channel Head")
tool_labels.append("Fast Almost Gaussian Filter")
tool_labels.append("Fd8 Flow Accumulation")
tool_labels.append("Fd8 Pointer")
tool_labels.append("Feature Preserving Smoothing")
tool_labels.append("Fetch Analysis")
tool_labels.append("Fill Burn")
tool_labels.append("Fill Depressions")
tool_labels.append("Fill Depressions Planchon And Darboux")
tool_labels.append("Fill Depressions Wang And Liu")
tool_labels.append("Fill Missing Data")
tool_labels.append("Fill Single Cell Pits")
tool_labels.append("Filter Lidar")
tool_labels.append("Filter Lidar Classes")
tool_labels.append("Filter Lidar Scan Angles")
tool_labels.append("Filter Raster Features By Area")
tool_labels.append("Find Flightline Edge Points")
tool_labels.append("Find Lowest Or Highest Points")
tool_labels.append("Find Main Stem")
tool_labels.append("Find No Flow Cells")
tool_labels.append("Find Parallel Flow")
tool_labels.append("Find Patch Or Class Edge Cells")
tool_labels.append("Find Ridges")
tool_labels.append("Fix Dangling Arcs")
tool_labels.append("Flatten Lakes")
tool_labels.append("Flightline Overlap")
tool_labels.append("Flip Image")
tool_labels.append("Flood Order")
tool_labels.append("Floor")
tool_labels.append("Flow Accumulation Full Workflow")
tool_labels.append("Flow Length Diff")
tool_labels.append("Gamma Correction")
tool_labels.append("Gaussian Contrast Stretch")
tool_labels.append("Gaussian Curvature")
tool_labels.append("Gaussian Filter")
tool_labels.append("Gaussian Scale Space")
tool_labels.append("Generalize Classified Raster")
tool_labels.append("Generalize With Similarity")
tool_labels.append("Generating Function")
tool_labels.append("Geomorphons")
tool_labels.append("Greater Than")
tool_labels.append("Hack Stream Order")
tool_labels.append("Heat Map")
tool_labels.append("Height Above Ground")
tool_labels.append("High Pass Bilateral Filter")
tool_labels.append("High Pass Filter")
tool_labels.append("High Pass Median Filter")
tool_labels.append("Highest Position")
tool_labels.append("Hillshade")
tool_labels.append("Hillslopes")
tool_labels.append("Histogram Equalization")
tool_labels.append("Histogram Matching")
tool_labels.append("Histogram Matching Two Images")
tool_labels.append("Hole Proportion")
tool_labels.append("Horizon Angle")
tool_labels.append("Horizontal Excess Curvature")
tool_labels.append("Horton Stream Order")
tool_labels.append("Hydrologic Connectivity")
tool_labels.append("Hypsometric Analysis")
tool_labels.append("Hypsometrically Tinted Hillshade")
tool_labels.append("Idw Interpolation")
tool_labels.append("Ihs To Rgb")
tool_labels.append("Image Autocorrelation")
tool_labels.append("Image Correlation")
tool_labels.append("Image Correlation Neighbourhood Analysis")
tool_labels.append("Image Regression")
tool_labels.append("Image Segmentation")
tool_labels.append("Image Slider")
tool_labels.append("Image Stack Profile")
tool_labels.append("Impoundment Size Index")
tool_labels.append("In Place Add")
tool_labels.append("In Place Divide")
tool_labels.append("In Place Multiply")
tool_labels.append("In Place Subtract")
tool_labels.append("Increment")
tool_labels.append("Individual Tree Detection")
tool_labels.append("Insert Dams")
tool_labels.append("Install Wb Extension")
tool_labels.append("Integer Division")
tool_labels.append("Integral Image")
tool_labels.append("Intersect")
tool_labels.append("Inverse Pca")
tool_labels.append("Is No Data")
tool_labels.append("Isobasins")
tool_labels.append("Jenson Snap Pour Points")
tool_labels.append("Join Tables")
tool_labels.append("K Means Clustering")
tool_labels.append("K Nearest Mean Filter")
tool_labels.append("Kappa Index")
tool_labels.append("Knn Classification")
tool_labels.append("Knn Regression")
tool_labels.append("Ks Test For Normality")
tool_labels.append("Laplacian Filter")
tool_labels.append("Laplacian Of Gaussian Filter")
tool_labels.append("Las To Ascii")
tool_labels.append("Las To Laz")
tool_labels.append("Las To Multipoint Shapefile")
tool_labels.append("Las To Shapefile")
tool_labels.append("Las To Zlidar")
tool_labels.append("Launch Wb Runner")
tool_labels.append("Layer Footprint")
tool_labels.append("Laz To Las")
tool_labels.append("Lee Sigma Filter")
tool_labels.append("Length Of Upstream Channels")
tool_labels.append("Less Than")
tool_labels.append("Lidar Block Maximum")
tool_labels.append("Lidar Block Minimum")
tool_labels.append("Lidar Classify Subset")
tool_labels.append("Lidar Colourize")
tool_labels.append("Lidar Contour")
tool_labels.append("Lidar Digital Surface Model")
tool_labels.append("Lidar Eigenvalue Features")
tool_labels.append("Lidar Elevation Slice")
tool_labels.append("Lidar Ground Point Filter")
tool_labels.append("Lidar Hex Binning")
tool_labels.append("Lidar Hillshade")
tool_labels.append("Lidar Histogram")
tool_labels.append("Lidar Idw Interpolation")
tool_labels.append("Lidar Info")
tool_labels.append("Lidar Join")
tool_labels.append("Lidar Kappa Index")
tool_labels.append("Lidar Nearest Neighbour Gridding")
tool_labels.append("Lidar Point Density")
tool_labels.append("Lidar Point Return Analysis")
tool_labels.append("Lidar Point Stats")
tool_labels.append("Lidar Ransac Planes")
tool_labels.append("Lidar Rbf Interpolation")
tool_labels.append("Lidar Remove Duplicates")
tool_labels.append("Lidar Remove Outliers")
tool_labels.append("Lidar Rooftop Analysis")
tool_labels.append("Lidar Segmentation")
tool_labels.append("Lidar Segmentation Based Filter")
tool_labels.append("Lidar Shift")
tool_labels.append("Lidar Sibson Interpolation")
tool_labels.append("Lidar Thin")
tool_labels.append("Lidar Thin High Density")
tool_labels.append("Lidar Tile")
tool_labels.append("Lidar Tile Footprint")
tool_labels.append("Lidar Tin Gridding")
tool_labels.append("Lidar Tophat Transform")
tool_labels.append("Line Detection Filter")
tool_labels.append("Line Intersections")
tool_labels.append("Line Thinning")
tool_labels.append("Linearity Index")
tool_labels.append("Lines To Polygons")
tool_labels.append("List Unique Values")
tool_labels.append("List Unique Values Raster")
tool_labels.append("Ln")
tool_labels.append("Local Hypsometric Analysis")
tool_labels.append("Local Quadratic Regression")
tool_labels.append("Log10")
tool_labels.append("Log2")
tool_labels.append("Logistic Regression")
tool_labels.append("Long Profile")
tool_labels.append("Long Profile From Points")
tool_labels.append("Longest Flowpath")
tool_labels.append("Low Points On Headwater Divides")
tool_labels.append("Lowest Position")
tool_labels.append("Majority Filter")
tool_labels.append("Map Off Terrain Objects")
tool_labels.append("Max")
tool_labels.append("Max Absolute Overlay")
tool_labels.append("Max Anisotropy Dev")
tool_labels.append("Max Anisotropy Dev Signature")
tool_labels.append("Max Branch Length")
tool_labels.append("Max Difference From Mean")
tool_labels.append("Max Downslope Elev Change")
tool_labels.append("Max Elev Dev Signature")
tool_labels.append("Max Elevation Deviation")
tool_labels.append("Max Overlay")
tool_labels.append("Max Upslope Elev Change")
tool_labels.append("Max Upslope Flowpath Length")
tool_labels.append("Max Upslope Value")
tool_labels.append("Maximal Curvature")
tool_labels.append("Maximum Filter")
tool_labels.append("Md Inf Flow Accumulation")
tool_labels.append("Mean Curvature")
tool_labels.append("Mean Filter")
tool_labels.append("Median Filter")
tool_labels.append("Medoid")
tool_labels.append("Merge Line Segments")
tool_labels.append("Merge Table With Csv")
tool_labels.append("Merge Vectors")
tool_labels.append("Min")
tool_labels.append("Min Absolute Overlay")
tool_labels.append("Min Dist Classification")
tool_labels.append("Min Downslope Elev Change")
tool_labels.append("Min Max Contrast Stretch")
tool_labels.append("Min Overlay")
tool_labels.append("Minimal Curvature")
tool_labels.append("Minimum Bounding Box")
tool_labels.append("Minimum Bounding Circle")
tool_labels.append("Minimum Bounding Envelope")
tool_labels.append("Minimum Convex Hull")
tool_labels.append("Minimum Filter")
tool_labels.append("Modified K Means Clustering")
tool_labels.append("Modify Lidar")
tool_labels.append("Modify No Data Value")
tool_labels.append("Modulo")
tool_labels.append("Mosaic")
tool_labels.append("Mosaic With Feathering")
tool_labels.append("Multi Part To Single Part")
tool_labels.append("Multidirectional Hillshade")
tool_labels.append("Multiply")
tool_labels.append("Multiply Overlay")
tool_labels.append("Multiscale Curvatures")
tool_labels.append("Multiscale Elevation Percentile")
tool_labels.append("Multiscale Roughness")
tool_labels.append("Multiscale Roughness Signature")
tool_labels.append("Multiscale Std Dev Normals")
tool_labels.append("Multiscale Std Dev Normals Signature")
tool_labels.append("Multiscale Topographic Position Image")
tool_labels.append("Narrowness Index")
tool_labels.append("Natural Neighbour Interpolation")
tool_labels.append("Nearest Neighbour Gridding")
tool_labels.append("Negate")
tool_labels.append("New Raster From Base")
tool_labels.append("Normal Vectors")
tool_labels.append("Normalize Lidar")
tool_labels.append("Normalized Difference Index")
tool_labels.append("Not")
tool_labels.append("Not Equal To")
tool_labels.append("Num Downslope Neighbours")
tool_labels.append("Num Inflowing Neighbours")
tool_labels.append("Num Upslope Neighbours")
tool_labels.append("Olympic Filter")
tool_labels.append("Opening")
tool_labels.append("Openness")
tool_labels.append("Or")
tool_labels.append("Paired Sample T Test")
tool_labels.append("Panchromatic Sharpening")
tool_labels.append("Parallelepiped Classification")
tool_labels.append("Patch Orientation")
tool_labels.append("Pennock Landform Class")
tool_labels.append("Percent Elev Range")
tool_labels.append("Percent Equal To")
tool_labels.append("Percent Greater Than")
tool_labels.append("Percent Less Than")
tool_labels.append("Percentage Contrast Stretch")
tool_labels.append("Percentile Filter")
tool_labels.append("Perimeter Area Ratio")
tool_labels.append("Phi Coefficient")
tool_labels.append("Pick From List")
tool_labels.append("Piecewise Contrast Stretch")
tool_labels.append("Plan Curvature")
tool_labels.append("Polygon Area")
tool_labels.append("Polygon Long Axis")
tool_labels.append("Polygon Perimeter")
tool_labels.append("Polygon Short Axis")
tool_labels.append("Polygonize")
tool_labels.append("Polygons To Lines")
tool_labels.append("Power")
tool_labels.append("Prewitt Filter")
tool_labels.append("Principal Component Analysis")
tool_labels.append("Print Geo Tiff Tags")
tool_labels.append("Profile")
tool_labels.append("Profile Curvature")
tool_labels.append("Qin Flow Accumulation")
tool_labels.append("Quantiles")
tool_labels.append("Quinn Flow Accumulation")
tool_labels.append("Radial Basis Function Interpolation")
tool_labels.append("Radius Of Gyration")
tool_labels.append("Raise Walls")
tool_labels.append("Random Field")
tool_labels.append("Random Forest Classification")
tool_labels.append("Random Forest Regression")
tool_labels.append("Random Sample")
tool_labels.append("Range Filter")
tool_labels.append("Raster Area")
tool_labels.append("Raster Calculator")
tool_labels.append("Raster Cell Assignment")
tool_labels.append("Raster Histogram")
tool_labels.append("Raster Perimeter")
tool_labels.append("Raster Streams To Vector")
tool_labels.append("Raster Summary Stats")
tool_labels.append("Raster To Vector Lines")
tool_labels.append("Raster To Vector Points")
tool_labels.append("Raster To Vector Polygons")
tool_labels.append("Rasterize Streams")
tool_labels.append("Reciprocal")
tool_labels.append("Reclass")
tool_labels.append("Reclass Equal Interval")
tool_labels.append("Reclass From File")
tool_labels.append("Reconcile Multiple Headers")
tool_labels.append("Recover Flightline Info")
tool_labels.append("Recreate Pass Lines")
tool_labels.append("Reinitialize Attribute Table")
tool_labels.append("Related Circumscribing Circle")
tool_labels.append("Relative Aspect")
tool_labels.append("Relative Topographic Position")
tool_labels.append("Remove Field Edge Points")
tool_labels.append("Remove Off Terrain Objects")
tool_labels.append("Remove Polygon Holes")
tool_labels.append("Remove Raster Polygon Holes")
tool_labels.append("Remove Short Streams")
tool_labels.append("Remove Spurs")
tool_labels.append("Repair Stream Vector Topology")
tool_labels.append("Resample")
tool_labels.append("Rescale Value Range")
tool_labels.append("Rgb To Ihs")
tool_labels.append("Rho8 Flow Accumulation")
tool_labels.append("Rho8 Pointer")
tool_labels.append("Ring Curvature")
tool_labels.append("River Centerlines")
tool_labels.append("Roberts Cross Filter")
tool_labels.append("Root Mean Square Error")
tool_labels.append("Rotor")
tool_labels.append("Round")
tool_labels.append("Ruggedness Index")
tool_labels.append("Scharr Filter")
tool_labels.append("Sediment Transport Index")
tool_labels.append("Select Tiles By Polygon")
tool_labels.append("Set Nodata Value")
tool_labels.append("Shadow Animation")
tool_labels.append("Shadow Image")
tool_labels.append("Shape Complexity Index")
tool_labels.append("Shape Complexity Index Raster")
tool_labels.append("Shape Index")
tool_labels.append("Shreve Stream Magnitude")
tool_labels.append("Sigmoidal Contrast Stretch")
tool_labels.append("Sin")
tool_labels.append("Single Part To Multi Part")
tool_labels.append("Sinh")
tool_labels.append("Sink")
tool_labels.append("Slope")
tool_labels.append("Slope Vs Aspect Plot")
tool_labels.append("Slope Vs Elevation Plot")
tool_labels.append("Smooth Vectors")
tool_labels.append("Smooth Vegetation Residual")
tool_labels.append("Snap Pour Points")
tool_labels.append("Sobel Filter")
tool_labels.append("Sort Lidar")
tool_labels.append("Spherical Std Dev Of Normals")
tool_labels.append("Split Colour Composite")
tool_labels.append("Split Lidar")
tool_labels.append("Split Vector Lines")
tool_labels.append("Split With Lines")
tool_labels.append("Square")
tool_labels.append("Square Root")
tool_labels.append("Standard Deviation Contrast Stretch")
tool_labels.append("Standard Deviation Filter")
tool_labels.append("Standard Deviation Of Slope")
tool_labels.append("Stochastic Depression Analysis")
tool_labels.append("Strahler Order Basins")
tool_labels.append("Strahler Stream Order")
tool_labels.append("Stream Link Class")
tool_labels.append("Stream Link Identifier")
tool_labels.append("Stream Link Length")
tool_labels.append("Stream Link Slope")
tool_labels.append("Stream Power Index")
tool_labels.append("Stream Slope Continuous")
tool_labels.append("Subbasins")
tool_labels.append("Subtract")
tool_labels.append("Sum Overlay")
tool_labels.append("Surface Area Ratio")
tool_labels.append("Svm Classification")
tool_labels.append("Svm Regression")
tool_labels.append("Symmetrical Difference")
tool_labels.append("Tan")
tool_labels.append("Tangential Curvature")
tool_labels.append("Tanh")
tool_labels.append("Thicken Raster Line")
tool_labels.append("Time In Daylight")
tool_labels.append("Tin Gridding")
tool_labels.append("To Degrees")
tool_labels.append("To Radians")
tool_labels.append("Tophat Transform")
tool_labels.append("Topo Render")
tool_labels.append("Topographic Position Animation")
tool_labels.append("Topological Stream Order")
tool_labels.append("Total Curvature")
tool_labels.append("Total Filter")
tool_labels.append("Trace Downslope Flowpaths")
tool_labels.append("Travelling Salesman Problem")
tool_labels.append("Trend Surface")
tool_labels.append("Trend Surface Vector Points")
tool_labels.append("Tributary Identifier")
tool_labels.append("Truncate")
tool_labels.append("Turning Bands Simulation")
tool_labels.append("Two Sample Ks Test")
tool_labels.append("Union")
tool_labels.append("Unnest Basins")
tool_labels.append("Unsharp Masking")
tool_labels.append("Unsphericity")
tool_labels.append("Update Nodata Cells")
tool_labels.append("Upslope Depression Storage")
tool_labels.append("User Defined Weights Filter")
tool_labels.append("Vector Hex Binning")
tool_labels.append("Vector Lines To Raster")
tool_labels.append("Vector Points To Raster")
tool_labels.append("Vector Polygons To Raster")
tool_labels.append("Vector Stream Network Analysis")
tool_labels.append("Vertical Excess Curvature")
tool_labels.append("Viewshed")
tool_labels.append("Visibility Index")
tool_labels.append("Voronoi Diagram")
tool_labels.append("Watershed")
tool_labels.append("Weighted Overlay")
tool_labels.append("Weighted Sum")
tool_labels.append("Wetness Index")
tool_labels.append("Wilcoxon Signed Rank Test")
tool_labels.append("Write Function Memory Insertion")
tool_labels.append("Xor")
tool_labels.append("Yield Filter")
tool_labels.append("Yield Map")
tool_labels.append("Yield Normalization")
tool_labels.append("Z Scores")
tool_labels.append("Zlidar To Las")
tool_labels.append("Zonal Statistics")


class Toolbox(object):
    def __init__(self):
        """Define the toolbox (the name of the toolbox is the name of the .pyt file)."""
        self.label = "WhiteboxTools Toolbox"
        self.alias = "WBT"

        # List of tool classes associated with this toolbox
        tools = []        
        tools.append(Help)
        tools.append(License)
        tools.append(Version)
        tools.append(ListTools)
        tools.append(ToolHelp)
        tools.append(ToolParameters)
        tools.append(ViewCode)
        tools.append(RunTool)

        tools.append(AbsoluteValue)
        tools.append(AccumulationCurvature)
        tools.append(AdaptiveFilter)
        tools.append(Add)
        tools.append(AddPointCoordinatesToTable)
        tools.append(AggregateRaster)
        tools.append(And)
        tools.append(Anova)
        tools.append(ArcCos)
        tools.append(ArcSin)
        tools.append(ArcTan)
        tools.append(Arcosh)
        tools.append(Arsinh)
        tools.append(Artanh)
        tools.append(AsciiToLas)
        tools.append(Aspect)
        tools.append(AssessRoute)
        tools.append(Atan2)
        tools.append(AttributeCorrelation)
        tools.append(AttributeCorrelationNeighbourhoodAnalysis)
        tools.append(AttributeHistogram)
        tools.append(AttributeScattergram)
        tools.append(AverageFlowpathSlope)
        tools.append(AverageNormalVectorAngularDeviation)
        tools.append(AverageOverlay)
        tools.append(AverageUpslopeFlowpathLength)
        tools.append(BalanceContrastEnhancement)
        tools.append(Basins)
        tools.append(BilateralFilter)
        tools.append(BlockMaximumGridding)
        tools.append(BlockMinimumGridding)
        tools.append(BoundaryShapeComplexity)
        tools.append(BreachDepressions)
        tools.append(BreachDepressionsLeastCost)
        tools.append(BreachSingleCellPits)
        tools.append(BreaklineMapping)
        tools.append(BufferRaster)
        tools.append(BurnStreamsAtRoads)
        tools.append(CannyEdgeDetection)
        tools.append(Ceil)
        tools.append(Centroid)
        tools.append(CentroidVector)
        tools.append(ChangeVectorAnalysis)
        tools.append(CircularVarianceOfAspect)
        tools.append(ClassifyBuildingsInLidar)
        tools.append(ClassifyLidar)
        tools.append(ClassifyOverlapPoints)
        tools.append(CleanVector)
        tools.append(Clip)
        tools.append(ClipLidarToPolygon)
        tools.append(ClipRasterToPolygon)
        tools.append(Closing)
        tools.append(Clump)
        tools.append(ColourizeBasedOnClass)
        tools.append(ColourizeBasedOnPointReturns)
        tools.append(CompactnessRatio)
        tools.append(ConditionalEvaluation)
        tools.append(ConditionedLatinHypercube)
        tools.append(ConservativeSmoothingFilter)
        tools.append(ConstructVectorTin)
        tools.append(ContoursFromPoints)
        tools.append(ContoursFromRaster)
        tools.append(ConvertNodataToZero)
        tools.append(ConvertRasterFormat)
        tools.append(CornerDetection)
        tools.append(CorrectVignetting)
        tools.append(Cos)
        tools.append(Cosh)
        tools.append(CostAllocation)
        tools.append(CostDistance)
        tools.append(CostPathway)
        tools.append(CountIf)
        tools.append(CreateColourComposite)
        tools.append(CreateHexagonalVectorGrid)
        tools.append(CreatePlane)
        tools.append(CreateRectangularVectorGrid)
        tools.append(CrispnessIndex)
        tools.append(CrossTabulation)
        tools.append(CsvPointsToVector)
        tools.append(CumulativeDistribution)
        tools.append(Curvedness)
        tools.append(D8FlowAccumulation)
        tools.append(D8MassFlux)
        tools.append(D8Pointer)
        tools.append(DInfFlowAccumulation)
        tools.append(DInfMassFlux)
        tools.append(DInfPointer)
        tools.append(Dbscan)
        tools.append(Decrement)
        tools.append(DemVoidFilling)
        tools.append(DepthInSink)
        tools.append(DepthToWater)
        tools.append(DevFromMeanElev)
        tools.append(DiffFromMeanElev)
        tools.append(DiffOfGaussianFilter)
        tools.append(Difference)
        tools.append(DifferenceCurvature)
        tools.append(DirectDecorrelationStretch)
        tools.append(DirectionalRelief)
        tools.append(Dissolve)
        tools.append(DistanceToOutlet)
        tools.append(DiversityFilter)
        tools.append(Divide)
        tools.append(DownslopeDistanceToStream)
        tools.append(DownslopeFlowpathLength)
        tools.append(DownslopeIndex)
        tools.append(EdgeContamination)
        tools.append(EdgeDensity)
        tools.append(EdgePreservingMeanFilter)
        tools.append(EdgeProportion)
        tools.append(ElevAbovePit)
        tools.append(ElevPercentile)
        tools.append(ElevRelativeToMinMax)
        tools.append(ElevRelativeToWatershedMinMax)
        tools.append(ElevationAboveStream)
        tools.append(ElevationAboveStreamEuclidean)
        tools.append(EliminateCoincidentPoints)
        tools.append(ElongationRatio)
        tools.append(EmbankmentMapping)
        tools.append(EmbossFilter)
        tools.append(EqualTo)
        tools.append(Erase)
        tools.append(ErasePolygonFromLidar)
        tools.append(ErasePolygonFromRaster)
        tools.append(EuclideanAllocation)
        tools.append(EuclideanDistance)
        tools.append(EvaluateTrainingSites)
        tools.append(Exp)
        tools.append(Exp2)
        tools.append(ExportTableToCsv)
        tools.append(ExposureTowardsWindFlux)
        tools.append(ExtendVectorLines)
        tools.append(ExtractNodes)
        tools.append(ExtractRasterValuesAtPoints)
        tools.append(ExtractStreams)
        tools.append(ExtractValleys)
        tools.append(Fd8FlowAccumulation)
        tools.append(Fd8Pointer)
        tools.append(FarthestChannelHead)
        tools.append(FastAlmostGaussianFilter)
        tools.append(FeaturePreservingSmoothing)
        tools.append(FetchAnalysis)
        tools.append(FillBurn)
        tools.append(FillDepressions)
        tools.append(FillDepressionsPlanchonAndDarboux)
        tools.append(FillDepressionsWangAndLiu)
        tools.append(FillMissingData)
        tools.append(FillSingleCellPits)
        tools.append(FilterLidar)
        tools.append(FilterLidarClasses)
        tools.append(FilterLidarScanAngles)
        tools.append(FilterRasterFeaturesByArea)
        tools.append(FindFlightlineEdgePoints)
        tools.append(FindLowestOrHighestPoints)
        tools.append(FindMainStem)
        tools.append(FindNoFlowCells)
        tools.append(FindParallelFlow)
        tools.append(FindPatchOrClassEdgeCells)
        tools.append(FindRidges)
        tools.append(FixDanglingArcs)
        tools.append(FlattenLakes)
        tools.append(FlightlineOverlap)
        tools.append(FlipImage)
        tools.append(FloodOrder)
        tools.append(Floor)
        tools.append(FlowAccumulationFullWorkflow)
        tools.append(FlowLengthDiff)
        tools.append(GammaCorrection)
        tools.append(GaussianContrastStretch)
        tools.append(GaussianCurvature)
        tools.append(GaussianFilter)
        tools.append(GaussianScaleSpace)
        tools.append(GeneralizeClassifiedRaster)
        tools.append(GeneralizeWithSimilarity)
        tools.append(GeneratingFunction)
        tools.append(Geomorphons)
        tools.append(GreaterThan)
        tools.append(HackStreamOrder)
        tools.append(HeatMap)
        tools.append(HeightAboveGround)
        tools.append(HighPassBilateralFilter)
        tools.append(HighPassFilter)
        tools.append(HighPassMedianFilter)
        tools.append(HighestPosition)
        tools.append(Hillshade)
        tools.append(Hillslopes)
        tools.append(HistogramEqualization)
        tools.append(HistogramMatching)
        tools.append(HistogramMatchingTwoImages)
        tools.append(HoleProportion)
        tools.append(HorizonAngle)
        tools.append(HorizontalExcessCurvature)
        tools.append(HortonStreamOrder)
        tools.append(HydrologicConnectivity)
        tools.append(HypsometricAnalysis)
        tools.append(HypsometricallyTintedHillshade)
        tools.append(IdwInterpolation)
        tools.append(IhsToRgb)
        tools.append(ImageAutocorrelation)
        tools.append(ImageCorrelation)
        tools.append(ImageCorrelationNeighbourhoodAnalysis)
        tools.append(ImageRegression)
        tools.append(ImageSegmentation)
        tools.append(ImageSlider)
        tools.append(ImageStackProfile)
        tools.append(ImpoundmentSizeIndex)
        tools.append(InPlaceAdd)
        tools.append(InPlaceDivide)
        tools.append(InPlaceMultiply)
        tools.append(InPlaceSubtract)
        tools.append(Increment)
        tools.append(IndividualTreeDetection)
        tools.append(InsertDams)
        tools.append(InstallWbExtension)
        tools.append(IntegerDivision)
        tools.append(IntegralImage)
        tools.append(Intersect)
        tools.append(InversePrincipalComponentAnalysis)
        tools.append(IsNoData)
        tools.append(Isobasins)
        tools.append(JensonSnapPourPoints)
        tools.append(JoinTables)
        tools.append(KMeansClustering)
        tools.append(KNearestMeanFilter)
        tools.append(KappaIndex)
        tools.append(KnnClassification)
        tools.append(KnnRegression)
        tools.append(KsTestForNormality)
        tools.append(LaplacianFilter)
        tools.append(LaplacianOfGaussianFilter)
        tools.append(LasToAscii)
        tools.append(LasToLaz)
        tools.append(LasToMultipointShapefile)
        tools.append(LasToShapefile)
        tools.append(LasToZlidar)
        tools.append(LaunchWbRunner)
        tools.append(LayerFootprint)
        tools.append(LazToLas)
        tools.append(LeeSigmaFilter)
        tools.append(LengthOfUpstreamChannels)
        tools.append(LessThan)
        tools.append(LidarBlockMaximum)
        tools.append(LidarBlockMinimum)
        tools.append(LidarClassifySubset)
        tools.append(LidarColourize)
        tools.append(LidarContour)
        tools.append(LidarDigitalSurfaceModel)
        tools.append(LidarEigenvalueFeatures)
        tools.append(LidarElevationSlice)
        tools.append(LidarGroundPointFilter)
        tools.append(LidarHexBinning)
        tools.append(LidarHillshade)
        tools.append(LidarHistogram)
        tools.append(LidarIdwInterpolation)
        tools.append(LidarInfo)
        tools.append(LidarJoin)
        tools.append(LidarKappaIndex)
        tools.append(LidarNearestNeighbourGridding)
        tools.append(LidarPointDensity)
        tools.append(LidarPointReturnAnalysis)
        tools.append(LidarPointStats)
        tools.append(LidarRansacPlanes)
        tools.append(LidarRbfInterpolation)
        tools.append(LidarRemoveDuplicates)
        tools.append(LidarRemoveOutliers)
        tools.append(LidarRooftopAnalysis)
        tools.append(LidarSegmentation)
        tools.append(LidarSegmentationBasedFilter)
        tools.append(LidarShift)
        tools.append(LidarSibsonInterpolation)
        tools.append(LidarTinGridding)
        tools.append(LidarThin)
        tools.append(LidarThinHighDensity)
        tools.append(LidarTile)
        tools.append(LidarTileFootprint)
        tools.append(LidarTophatTransform)
        tools.append(LineDetectionFilter)
        tools.append(LineIntersections)
        tools.append(LineThinning)
        tools.append(LinearityIndex)
        tools.append(LinesToPolygons)
        tools.append(ListUniqueValues)
        tools.append(ListUniqueValuesRaster)
        tools.append(Ln)
        tools.append(LocalHypsometricAnalysis)
        tools.append(LocalQuadraticRegression)
        tools.append(Log10)
        tools.append(Log2)
        tools.append(LogisticRegression)
        tools.append(LongProfile)
        tools.append(LongProfileFromPoints)
        tools.append(LongestFlowpath)
        tools.append(LowPointsOnHeadwaterDivides)
        tools.append(LowestPosition)
        tools.append(MdInfFlowAccumulation)
        tools.append(MajorityFilter)
        tools.append(MapOffTerrainObjects)
        tools.append(Max)
        tools.append(MaxAbsoluteOverlay)
        tools.append(MaxAnisotropyDev)
        tools.append(MaxAnisotropyDevSignature)
        tools.append(MaxBranchLength)
        tools.append(MaxDifferenceFromMean)
        tools.append(MaxDownslopeElevChange)
        tools.append(MaxElevDevSignature)
        tools.append(MaxElevationDeviation)
        tools.append(MaxOverlay)
        tools.append(MaxUpslopeElevChange)
        tools.append(MaxUpslopeFlowpathLength)
        tools.append(MaxUpslopeValue)
        tools.append(MaximalCurvature)
        tools.append(MaximumFilter)
        tools.append(MeanCurvature)
        tools.append(MeanFilter)
        tools.append(MedianFilter)
        tools.append(Medoid)
        tools.append(MergeLineSegments)
        tools.append(MergeTableWithCsv)
        tools.append(MergeVectors)
        tools.append(Min)
        tools.append(MinAbsoluteOverlay)
        tools.append(MinDistClassification)
        tools.append(MinDownslopeElevChange)
        tools.append(MinMaxContrastStretch)
        tools.append(MinOverlay)
        tools.append(MinimalCurvature)
        tools.append(MinimumBoundingBox)
        tools.append(MinimumBoundingCircle)
        tools.append(MinimumBoundingEnvelope)
        tools.append(MinimumConvexHull)
        tools.append(MinimumFilter)
        tools.append(ModifiedKMeansClustering)
        tools.append(ModifyLidar)
        tools.append(ModifyNoDataValue)
        tools.append(Modulo)
        tools.append(Mosaic)
        tools.append(MosaicWithFeathering)
        tools.append(MultiPartToSinglePart)
        tools.append(MultidirectionalHillshade)
        tools.append(Multiply)
        tools.append(MultiplyOverlay)
        tools.append(MultiscaleCurvatures)
        tools.append(MultiscaleElevationPercentile)
        tools.append(MultiscaleRoughness)
        tools.append(MultiscaleRoughnessSignature)
        tools.append(MultiscaleStdDevNormals)
        tools.append(MultiscaleStdDevNormalsSignature)
        tools.append(MultiscaleTopographicPositionImage)
        tools.append(NarrownessIndex)
        tools.append(NaturalNeighbourInterpolation)
        tools.append(NearestNeighbourGridding)
        tools.append(Negate)
        tools.append(NewRasterFromBase)
        tools.append(NormalVectors)
        tools.append(NormalizeLidar)
        tools.append(NormalizedDifferenceIndex)
        tools.append(Not)
        tools.append(NotEqualTo)
        tools.append(NumDownslopeNeighbours)
        tools.append(NumInflowingNeighbours)
        tools.append(NumUpslopeNeighbours)
        tools.append(OlympicFilter)
        tools.append(Opening)
        tools.append(Openness)
        tools.append(Or)
        tools.append(PairedSampleTTest)
        tools.append(PanchromaticSharpening)
        tools.append(ParallelepipedClassification)
        tools.append(PatchOrientation)
        tools.append(PennockLandformClass)
        tools.append(PercentElevRange)
        tools.append(PercentEqualTo)
        tools.append(PercentGreaterThan)
        tools.append(PercentLessThan)
        tools.append(PercentageContrastStretch)
        tools.append(PercentileFilter)
        tools.append(PerimeterAreaRatio)
        tools.append(PhiCoefficient)
        tools.append(PickFromList)
        tools.append(PiecewiseContrastStretch)
        tools.append(PlanCurvature)
        tools.append(PolygonArea)
        tools.append(PolygonLongAxis)
        tools.append(PolygonPerimeter)
        tools.append(PolygonShortAxis)
        tools.append(Polygonize)
        tools.append(PolygonsToLines)
        tools.append(Power)
        tools.append(PrewittFilter)
        tools.append(PrincipalComponentAnalysis)
        tools.append(PrintGeoTiffTags)
        tools.append(Profile)
        tools.append(ProfileCurvature)
        tools.append(QinFlowAccumulation)
        tools.append(Quantiles)
        tools.append(QuinnFlowAccumulation)
        tools.append(RadialBasisFunctionInterpolation)
        tools.append(RadiusOfGyration)
        tools.append(RaiseWalls)
        tools.append(RandomField)
        tools.append(RandomForestClassification)
        tools.append(RandomForestRegression)
        tools.append(RandomSample)
        tools.append(RangeFilter)
        tools.append(RasterArea)
        tools.append(RasterCalculator)
        tools.append(RasterCellAssignment)
        tools.append(RasterHistogram)
        tools.append(RasterPerimeter)
        tools.append(RasterStreamsToVector)
        tools.append(RasterSummaryStats)
        tools.append(RasterToVectorLines)
        tools.append(RasterToVectorPoints)
        tools.append(RasterToVectorPolygons)
        tools.append(RasterizeStreams)
        tools.append(Reciprocal)
        tools.append(Reclass)
        tools.append(ReclassEqualInterval)
        tools.append(ReclassFromFile)
        tools.append(ReconcileMultipleHeaders)
        tools.append(RecoverFlightlineInfo)
        tools.append(RecreatePassLines)
        tools.append(ReinitializeAttributeTable)
        tools.append(RelatedCircumscribingCircle)
        tools.append(RelativeAspect)
        tools.append(RelativeTopographicPosition)
        tools.append(RemoveFieldEdgePoints)
        tools.append(RemoveOffTerrainObjects)
        tools.append(RemovePolygonHoles)
        tools.append(RemoveRasterPolygonHoles)
        tools.append(RemoveShortStreams)
        tools.append(RemoveSpurs)
        tools.append(RepairStreamVectorTopology)
        tools.append(Resample)
        tools.append(RescaleValueRange)
        tools.append(RgbToIhs)
        tools.append(Rho8FlowAccumulation)
        tools.append(Rho8Pointer)
        tools.append(RingCurvature)
        tools.append(RiverCenterlines)
        tools.append(RobertsCrossFilter)
        tools.append(RootMeanSquareError)
        tools.append(Rotor)
        tools.append(Round)
        tools.append(RuggednessIndex)
        tools.append(ScharrFilter)
        tools.append(SedimentTransportIndex)
        tools.append(SelectTilesByPolygon)
        tools.append(SetNodataValue)
        tools.append(ShadowAnimation)
        tools.append(ShadowImage)
        tools.append(ShapeComplexityIndex)
        tools.append(ShapeComplexityIndexRaster)
        tools.append(ShapeIndex)
        tools.append(ShreveStreamMagnitude)
        tools.append(SigmoidalContrastStretch)
        tools.append(Sin)
        tools.append(SinglePartToMultiPart)
        tools.append(Sinh)
        tools.append(Sink)
        tools.append(Slope)
        tools.append(SlopeVsAspectPlot)
        tools.append(SlopeVsElevationPlot)
        tools.append(SmoothVectors)
        tools.append(SmoothVegetationResidual)
        tools.append(SnapPourPoints)
        tools.append(SobelFilter)
        tools.append(SortLidar)
        tools.append(SphericalStdDevOfNormals)
        tools.append(SplitColourComposite)
        tools.append(SplitLidar)
        tools.append(SplitVectorLines)
        tools.append(SplitWithLines)
        tools.append(Square)
        tools.append(SquareRoot)
        tools.append(StandardDeviationContrastStretch)
        tools.append(StandardDeviationFilter)
        tools.append(StandardDeviationOfSlope)
        tools.append(StochasticDepressionAnalysis)
        tools.append(StrahlerOrderBasins)
        tools.append(StrahlerStreamOrder)
        tools.append(StreamLinkClass)
        tools.append(StreamLinkIdentifier)
        tools.append(StreamLinkLength)
        tools.append(StreamLinkSlope)
        tools.append(StreamPowerIndex)
        tools.append(StreamSlopeContinuous)
        tools.append(Subbasins)
        tools.append(Subtract)
        tools.append(SumOverlay)
        tools.append(SurfaceAreaRatio)
        tools.append(SvmClassification)
        tools.append(SvmRegression)
        tools.append(SymmetricalDifference)
        tools.append(TinGridding)
        tools.append(Tan)
        tools.append(TangentialCurvature)
        tools.append(Tanh)
        tools.append(ThickenRasterLine)
        tools.append(TimeInDaylight)
        tools.append(ToDegrees)
        tools.append(ToRadians)
        tools.append(TophatTransform)
        tools.append(TopoRender)
        tools.append(TopographicPositionAnimation)
        tools.append(TopologicalStreamOrder)
        tools.append(TotalCurvature)
        tools.append(TotalFilter)
        tools.append(TraceDownslopeFlowpaths)
        tools.append(TravellingSalesmanProblem)
        tools.append(TrendSurface)
        tools.append(TrendSurfaceVectorPoints)
        tools.append(TributaryIdentifier)
        tools.append(Truncate)
        tools.append(TurningBandsSimulation)
        tools.append(TwoSampleKsTest)
        tools.append(Union)
        tools.append(UnnestBasins)
        tools.append(UnsharpMasking)
        tools.append(Unsphericity)
        tools.append(UpdateNodataCells)
        tools.append(UpslopeDepressionStorage)
        tools.append(UserDefinedWeightsFilter)
        tools.append(VectorHexBinning)
        tools.append(VectorLinesToRaster)
        tools.append(VectorPointsToRaster)
        tools.append(VectorPolygonsToRaster)
        tools.append(VectorStreamNetworkAnalysis)
        tools.append(VerticalExcessCurvature)
        tools.append(Viewshed)
        tools.append(VisibilityIndex)
        tools.append(VoronoiDiagram)
        tools.append(Watershed)
        tools.append(WeightedOverlay)
        tools.append(WeightedSum)
        tools.append(WetnessIndex)
        tools.append(WilcoxonSignedRankTest)
        tools.append(WriteFunctionMemoryInsertion)
        tools.append(Xor)
        tools.append(YieldFilter)
        tools.append(YieldMap)
        tools.append(YieldNormalization)
        tools.append(ZScores)
        tools.append(ZlidarToLas)
        tools.append(ZonalStatistics)

        self.tools = tools


class Help(object):
    def __init__(self):
        """Define the tool (tool name is the name of the class)."""
        self.label = "Help"
        self.description = "Help description for WhiteboxTools"
        self.category = "About WhiteboxTools"
        self.canRunInBackground = False

    def getParameterInfo(self):
        """Define parameter definitions"""
        params = None
        return params

    def isLicensed(self):
        """Set whether tool is licensed to execute."""
        return True

    def updateParameters(self, parameters):
        """Modify the values and properties of parameters before internal
        validation is performed.  This method is called whenever a parameter
        has been changed."""
        return

    def updateMessages(self, parameters):
        """Modify the messages created by internal validation for each tool
        parameter.  This method is called after internal validation."""
        return

    def execute(self, parameters, messages):
        """The source code of the tool."""
        messages.addMessage(wbt.help())
        return


class License(object):
    def __init__(self):
        """Define the tool (tool name is the name of the class)."""
        self.label = "License"
        self.description = "License information for WhiteboxTools."
        self.category = "About WhiteboxTools"
        self.canRunInBackground = False

    def getParameterInfo(self):
        """Define parameter definitions"""
        params = None
        return params

    def isLicensed(self):
        """Set whether tool is licensed to execute."""
        return True

    def updateParameters(self, parameters):
        """Modify the values and properties of parameters before internal
        validation is performed.  This method is called whenever a parameter
        has been changed."""
        return

    def updateMessages(self, parameters):
        """Modify the messages created by internal validation for each tool
        parameter.  This method is called after internal validation."""
        return

    def execute(self, parameters, messages):
        """The source code of the tool."""
        messages.addMessage(wbt.license())
        return


class Version(object):
    def __init__(self):
        """Define the tool (tool name is the name of the class)."""
        self.label = "Version"
        self.description = "Version information for WhiteboxTools."
        self.category = "About WhiteboxTools"
        self.canRunInBackground = False

    def getParameterInfo(self):
        """Define parameter definitions"""
        params = None
        return params

    def isLicensed(self):
        """Set whether tool is licensed to execute."""
        return True

    def updateParameters(self, parameters):
        """Modify the values and properties of parameters before internal
        validation is performed.  This method is called whenever a parameter
        has been changed."""
        return

    def updateMessages(self, parameters):
        """Modify the messages created by internal validation for each tool
        parameter.  This method is called after internal validation."""
        return

    def execute(self, parameters, messages):
        """The source code of the tool."""
        messages.addMessage(wbt.version())
        return


class ListTools(object):
    def __init__(self):
        """Define the tool (tool name is the name of the class)."""
        self.label = "List Tools"
        self.description = "All available tools in WhiteboxTools."
        self.category = "About WhiteboxTools"
        self.canRunInBackground = False

    def getParameterInfo(self):
        """Define parameter definitions"""

        # First parameter
        param0 = arcpy.Parameter(
            displayName="Keywords",
            name="keywords",
            datatype="GPString",
            parameterType="Optional",
            direction="Input")
        # param0.multiValue = True
        param0.value = "lidar"
        params = [param0]
        return params

    def isLicensed(self):
        """Set whether tool is licensed to execute."""
        return True

    def updateParameters(self, parameters):
        """Modify the values and properties of parameters before internal
        validation is performed.  This method is called whenever a parameter
        has been changed."""
        return

    def updateMessages(self, parameters):
        """Modify the messages created by internal validation for each tool
        parameter.  This method is called after internal validation."""
        return

    def execute(self, parameters, messages):
        """The source code of the tool."""
        param0 = parameters[0].valueAsText

        if param0 is None:
            tools = wbt.list_tools()
        else:
            tools = wbt.list_tools([param0])
            
        for index, tool in enumerate(sorted(tools)):
            messages.addMessage("{}. {}: {}".format(index + 1, tool, tools[tool]))
        return


class ToolHelp(object):
    def __init__(self):
        """Define the tool (tool name is the name of the class)."""
        self.label = "Tool Help"
        self.description = "Help description for a specific tool."
        self.category = "About WhiteboxTools"
        self.canRunInBackground = False

    def getParameterInfo(self):
        """Define parameter definitions"""
        tool_name = arcpy.Parameter(
            displayName="Select a tool",
            name="tool_name",
            datatype="GPString",
            parameterType="Required",
            direction="Input")

        tool_name.value = "Lidar Info"
        tool_name.filter.type = "ValueList"
        tool_name.filter.list = tool_labels

        params = [tool_name]
        return params

    def isLicensed(self):
        """Set whether tool is licensed to execute."""
        return True

    def updateParameters(self, parameters):
        """Modify the values and properties of parameters before internal
        validation is performed.  This method is called whenever a parameter
        has been changed."""
        return

    def updateMessages(self, parameters):
        """Modify the messages created by internal validation for each tool
        parameter.  This method is called after internal validation."""
        return

    def execute(self, parameters, messages):
        """The source code of the tool."""
        param0 = parameters[0].valueAsText
        tool_name = param0.replace(" ", "").strip()
        messages.addMessage(wbt.tool_help(tool_name))
        return


class ToolParameters(object):
    def __init__(self):
        """Define the tool (tool name is the name of the class)."""
        self.label = "Tool Parameters"
        self.description = "Tool parameter descriptions for a specific tool."
        self.category = "About WhiteboxTools"
        self.canRunInBackground = False

    def getParameterInfo(self):
        """Define parameter definitions"""
        tool_name = arcpy.Parameter(
            displayName="Select a tool",
            name="tool_name",
            datatype="GPString",
            parameterType="Required",
            direction="Input")

        tool_name.value = "Lidar Info"
        tool_name.filter.type = "ValueList"
        tool_name.filter.list = tool_labels

        params = [tool_name]
        return params

    def isLicensed(self):
        """Set whether tool is licensed to execute."""
        return True

    def updateParameters(self, parameters):
        """Modify the values and properties of parameters before internal
        validation is performed.  This method is called whenever a parameter
        has been changed."""
        return

    def updateMessages(self, parameters):
        """Modify the messages created by internal validation for each tool
        parameter.  This method is called after internal validation."""
        return

    def execute(self, parameters, messages):
        """The source code of the tool."""
        param0 = parameters[0].valueAsText
        tool_name = param0.replace(" ", "").strip()
        messages.addMessage(wbt.tool_parameters(tool_name))
        return


class ViewCode(object):
    def __init__(self):
        """Define the tool (tool name is the name of the class)."""
        self.label = "View Code"
        self.description = "Source code for a specific tool."
        self.category = "About WhiteboxTools"
        self.canRunInBackground = False

    def getParameterInfo(self):
        """Define parameter definitions"""
        tool_name = arcpy.Parameter(
            displayName="Select a tool",
            name="tool_name",
            datatype="GPString",
            parameterType="Required",
            direction="Input")

        tool_name.value = "Lidar Info"
        tool_name.filter.type = "ValueList"
        tool_name.filter.list = tool_labels

        params = [tool_name]
        return params

    def isLicensed(self):
        """Set whether tool is licensed to execute."""
        return True

    def updateParameters(self, parameters):
        """Modify the values and properties of parameters before internal
        validation is performed.  This method is called whenever a parameter
        has been changed."""
        return

    def updateMessages(self, parameters):
        """Modify the messages created by internal validation for each tool
        parameter.  This method is called after internal validation."""
        return

    def execute(self, parameters, messages):
        """The source code of the tool."""
        param0 = parameters[0].valueAsText
        tool_name = param0.replace(" ", "").strip()        
        messages.addMessage("Opening default browser...")
        webbrowser.get('windows-default').open(wbt.view_code(tool_name))
        messages.addMessage(wbt.view_code(tool_name))
        return


class RunTool(object):
    def __init__(self):
        """Define the tool (tool name is the name of the class)."""
        self.label = "Run Tool"
        self.description = "Runs a tool and specifies tool arguments."
        self.category = "About WhiteboxTools"
        self.canRunInBackground = False

    def getParameterInfo(self):
        """Define parameter definitions"""
        tool_name = arcpy.Parameter(
            displayName="Select a tool",
            name="tool_name",
            datatype="GPString",
            parameterType="Required",
            direction="Input")

        tool_name.value = "Breach Depressions"
        tool_name.filter.type = "ValueList"
        tool_name.filter.list = tool_labels

        args = arcpy.Parameter(
            displayName="Arguments",
            name="agrs",
            datatype="GPString",
            parameterType="Required",
            direction="Input")
        args.value = '--dem="/path/to/DEM.tif"  --output="/path/to/output.tif"'

        params = [tool_name, args]
        return params

    def isLicensed(self):
        """Set whether tool is licensed to execute."""
        return True

    def updateParameters(self, parameters):
        """Modify the values and properties of parameters before internal
        validation is performed.  This method is called whenever a parameter
        has been changed."""
        return

    def updateMessages(self, parameters):
        """Modify the messages created by internal validation for each tool
        parameter.  This method is called after internal validation."""
        return

    def execute(self, parameters, messages):
        param0 = parameters[0].valueAsText
        args = parameters[1].valueAsText
        tool_name = param0.replace(" ", "").strip()
        dir_path = os.path.dirname(os.path.realpath(__file__))    
        exe_path = os.path.join(dir_path, "WBT/whitebox_tools.exe")
        cmd = '{} --run={} {}'.format(exe_path, tool_name, args)
        if "-v" not in cmd:
            cmd = cmd + ' -v'  
        messages.addMessage(cmd)  
        messages.addMessage(os.popen(cmd).read().rstrip())
        return


class AbsoluteValue(object):
    def __init__(self):
        self.label = "Absolute Value"
        self.description = "Calculates the absolute value of every cell in a raster."
        self.category = "Math and Stats Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input File",
            name="i",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        params = [i, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        output = parameters[1].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.absolute_value(i=i, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class AccumulationCurvature(object):
    def __init__(self):
        self.label = "Accumulation Curvature"
        self.description = "This tool calculates accumulation curvature from an input DEM."
        self.category = "Geomorphometric Analysis"

    def getParameterInfo(self):
        dem = arcpy.Parameter(
            displayName="Input Raster DEM",
            name="dem",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output Raster Image",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        log = arcpy.Parameter(
            displayName="Log-transform the output?",
            name="log",
            datatype="GPBoolean",
            parameterType="Optional",
            direction="Input")
        log.value = 'False'

        zfactor = arcpy.Parameter(
            displayName="Z-factor",
            name="zfactor",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")
        zfactor.value = '1.0'

        params = [dem, output, log, zfactor]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        dem = parameters[0].valueAsText
        if dem is not None:
            desc = arcpy.Describe(dem)
            dem = desc.catalogPath
        output = parameters[1].valueAsText
        log = parameters[2].valueAsText
        zfactor = parameters[3].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.accumulation_curvature(dem=dem, output=output, log=log, zfactor=zfactor)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class AdaptiveFilter(object):
    def __init__(self):
        self.label = "Adaptive Filter"
        self.description = "Performs an adaptive filter on an image."
        self.category = "Image Processing Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input File",
            name="i",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        filterx = arcpy.Parameter(
            displayName="Filter X-Dimension",
            name="filterx",
            datatype="GPLong",
            parameterType="Optional",
            direction="Input")
        filterx.value = '11'

        filtery = arcpy.Parameter(
            displayName="Filter Y-Dimension",
            name="filtery",
            datatype="GPLong",
            parameterType="Optional",
            direction="Input")
        filtery.value = '11'

        threshold = arcpy.Parameter(
            displayName="Difference From Mean Threshold (# Std. Dev.)",
            name="threshold",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")
        threshold.value = '2.0'

        params = [i, output, filterx, filtery, threshold]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        output = parameters[1].valueAsText
        filterx = parameters[2].valueAsText
        filtery = parameters[3].valueAsText
        threshold = parameters[4].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.adaptive_filter(i=i, output=output, filterx=filterx, filtery=filtery, threshold=threshold)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class Add(object):
    def __init__(self):
        self.label = "Add"
        self.description = "Performs an addition operation on two rasters or a raster and a constant value."
        self.category = "Math and Stats Tools"

    def getParameterInfo(self):
        input1 = arcpy.Parameter(
            displayName="Input File Or Constant Value",
            name="input1",
            datatype=["GPRasterLayer", "GPDouble"],
            parameterType="Required",
            direction="Input")

        input2 = arcpy.Parameter(
            displayName="Input File Or Constant Value",
            name="input2",
            datatype=["GPRasterLayer", "GPDouble"],
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        params = [input1, input2, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        input1 = parameters[0].valueAsText
        if input1 is not None:
            try:
                input1 = str(float(input1))
            except:
                desc = arcpy.Describe(input1)
                input1 = desc.catalogPath
        input2 = parameters[1].valueAsText
        if input2 is not None:
            try:
                input2 = str(float(input2))
            except:
                desc = arcpy.Describe(input2)
                input2 = desc.catalogPath
        output = parameters[2].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.add(input1=input1, input2=input2, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class AddPointCoordinatesToTable(object):
    def __init__(self):
        self.label = "Add Point Coordinates To Table"
        self.description = "Modifies the attribute table of a point vector by adding fields containing each point's X and Y coordinates."
        self.category = "Data Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input Vector Points File",
            name="i",
            datatype="GPFeatureLayer",
            parameterType="Required",
            direction="Input")
        i.filter.list = ["Point"]

        params = [i]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.add_point_coordinates_to_table(i=i)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class AggregateRaster(object):
    def __init__(self):
        self.label = "Aggregate Raster"
        self.description = "Aggregates a raster to a lower resolution."
        self.category = "GIS Analysis"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input File",
            name="i",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        agg_factor = arcpy.Parameter(
            displayName="Aggregation Factor (pixels)",
            name="agg_factor",
            datatype="GPLong",
            parameterType="Optional",
            direction="Input")
        agg_factor.value = '2'

        type = arcpy.Parameter(
            displayName="Aggregation Type",
            name="type",
            datatype="GPString",
            parameterType="Optional",
            direction="Input")
        type.filter.type = "ValueList"
        type.filter.list = ['mean', 'sum', 'maximum', 'minimum', 'range']
        type.value = 'mean'

        params = [i, output, agg_factor, type]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        output = parameters[1].valueAsText
        agg_factor = parameters[2].valueAsText
        type = parameters[3].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.aggregate_raster(i=i, output=output, agg_factor=agg_factor, type=type)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class And(object):
    def __init__(self):
        self.label = "And"
        self.description = "Performs a logical AND operator on two Boolean raster images."
        self.category = "Math and Stats Tools"

    def getParameterInfo(self):
        input1 = arcpy.Parameter(
            displayName="Input File",
            name="input1",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        input2 = arcpy.Parameter(
            displayName="Input File",
            name="input2",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        params = [input1, input2, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        input1 = parameters[0].valueAsText
        if input1 is not None:
            desc = arcpy.Describe(input1)
            input1 = desc.catalogPath
        input2 = parameters[1].valueAsText
        if input2 is not None:
            desc = arcpy.Describe(input2)
            input2 = desc.catalogPath
        output = parameters[2].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.And(input1=input1, input2=input2, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class Anova(object):
    def __init__(self):
        self.label = "Anova"
        self.description = "Performs an analysis of variance (ANOVA) test on a raster dataset."
        self.category = "Math and Stats Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input File",
            name="i",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        features = arcpy.Parameter(
            displayName="Feature Definition (Class) File",
            name="features",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output HTML File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["html"]

        params = [i, features, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        features = parameters[1].valueAsText
        if features is not None:
            desc = arcpy.Describe(features)
            features = desc.catalogPath
        output = parameters[2].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.anova(i=i, features=features, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class ArcCos(object):
    def __init__(self):
        self.label = "Arc Cos"
        self.description = "Returns the inverse cosine (arccos) of each values in a raster."
        self.category = "Math and Stats Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input File",
            name="i",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        params = [i, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        output = parameters[1].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.arc_cos(i=i, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class ArcSin(object):
    def __init__(self):
        self.label = "Arc Sin"
        self.description = "Returns the inverse sine (arcsin) of each values in a raster."
        self.category = "Math and Stats Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input File",
            name="i",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        params = [i, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        output = parameters[1].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.arc_sin(i=i, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class ArcTan(object):
    def __init__(self):
        self.label = "Arc Tan"
        self.description = "Returns the inverse tangent (arctan) of each values in a raster."
        self.category = "Math and Stats Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input File",
            name="i",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        params = [i, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        output = parameters[1].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.arc_tan(i=i, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class Arcosh(object):
    def __init__(self):
        self.label = "Arcosh"
        self.description = "Returns the inverse hyperbolic cosine (arcosh) of each values in a raster."
        self.category = "Math and Stats Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input File",
            name="i",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        params = [i, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        output = parameters[1].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.arcosh(i=i, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class Arsinh(object):
    def __init__(self):
        self.label = "Arsinh"
        self.description = "Returns the inverse hyperbolic sine (arsinh) of each values in a raster."
        self.category = "Math and Stats Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input File",
            name="i",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        params = [i, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        output = parameters[1].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.arsinh(i=i, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class Artanh(object):
    def __init__(self):
        self.label = "Artanh"
        self.description = "Returns the inverse hyperbolic tangent (arctanh) of each values in a raster."
        self.category = "Math and Stats Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input File",
            name="i",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        params = [i, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        output = parameters[1].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.artanh(i=i, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class AsciiToLas(object):
    def __init__(self):
        self.label = "Ascii To Las"
        self.description = "Converts one or more ASCII files containing LiDAR points into LAS files."
        self.category = "LiDAR Tools"

    def getParameterInfo(self):
        inputs = arcpy.Parameter(
            displayName="Input LiDAR point ASCII Files (.csv)",
            name="inputs",
            datatype="DEFile",
            parameterType="Required",
            direction="Input")
        inputs.multiValue = True
        inputs.filter.list = ["csv"]

        pattern = arcpy.Parameter(
            displayName="Pattern",
            name="pattern",
            datatype="GPString",
            parameterType="Required",
            direction="Input")

        proj = arcpy.Parameter(
            displayName="Well-known-text (WKT) string or EPSG code",
            name="proj",
            datatype="GPString",
            parameterType="Optional",
            direction="Input")

        params = [inputs, pattern, proj]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        inputs = parameters[0].valueAsText
        if inputs is not None:
            items = inputs.split(";")
            items_path = []
            for item in items:
                items_path.append(arcpy.Describe(item).catalogPath)
            inputs = ";".join(items_path)
        pattern = parameters[1].valueAsText
        proj = parameters[2].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.ascii_to_las(inputs=inputs, pattern=pattern, proj=proj)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class Aspect(object):
    def __init__(self):
        self.label = "Aspect"
        self.description = "Calculates an aspect raster from an input DEM."
        self.category = "Geomorphometric Analysis"

    def getParameterInfo(self):
        dem = arcpy.Parameter(
            displayName="Input DEM File",
            name="dem",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        zfactor = arcpy.Parameter(
            displayName="Z Conversion Factor",
            name="zfactor",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")

        params = [dem, output, zfactor]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        dem = parameters[0].valueAsText
        if dem is not None:
            desc = arcpy.Describe(dem)
            dem = desc.catalogPath
        output = parameters[1].valueAsText
        zfactor = parameters[2].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.aspect(dem=dem, output=output, zfactor=zfactor)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class AssessRoute(object):
    def __init__(self):
        self.label = "Assess Route"
        self.description = "This tool assesses a route for slope, elevation, and visibility variation."
        self.category = "Geomorphometric Analysis"

    def getParameterInfo(self):
        routes = arcpy.Parameter(
            displayName="Input Routes Vector",
            name="routes",
            datatype="GPFeatureLayer",
            parameterType="Required",
            direction="Input")
        routes.filter.list = ["Polyline"]

        dem = arcpy.Parameter(
            displayName="Input DEM Raster",
            name="dem",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output Lines",
            name="output",
            datatype="DEShapefile",
            parameterType="Required",
            direction="Output")

        length = arcpy.Parameter(
            displayName="Max Segment Length",
            name="length",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")
        dist = arcpy.Parameter(
            displayName="Search Distance (grid cells)",
            name="dist",
            datatype="GPLong",
            parameterType="Optional",
            direction="Input")
        dist.value = '20'

        params = [routes, dem, output, length, dist]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        routes = parameters[0].valueAsText
        if routes is not None:
            desc = arcpy.Describe(routes)
            routes = desc.catalogPath
        dem = parameters[1].valueAsText
        if dem is not None:
            desc = arcpy.Describe(dem)
            dem = desc.catalogPath
        output = parameters[2].valueAsText
        length = parameters[3].valueAsText
        dist = parameters[4].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.assess_route(routes=routes, dem=dem, output=output, length=length, dist=dist)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class Atan2(object):
    def __init__(self):
        self.label = "Atan2"
        self.description = "Returns the 2-argument inverse tangent (atan2)."
        self.category = "Math and Stats Tools"

    def getParameterInfo(self):
        input_y = arcpy.Parameter(
            displayName="Input Y File Or Constant Value",
            name="input_y",
            datatype=["GPRasterLayer", "GPDouble"],
            parameterType="Required",
            direction="Input")

        input_x = arcpy.Parameter(
            displayName="Input X File Or Constant Value",
            name="input_x",
            datatype=["GPRasterLayer", "GPDouble"],
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        params = [input_y, input_x, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        input_y = parameters[0].valueAsText
        if input_y is not None:
            try:
                input_y = str(float(input_y))
            except:
                desc = arcpy.Describe(input_y)
                input_y = desc.catalogPath
        input_x = parameters[1].valueAsText
        if input_x is not None:
            try:
                input_x = str(float(input_x))
            except:
                desc = arcpy.Describe(input_x)
                input_x = desc.catalogPath
        output = parameters[2].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.atan2(input_y=input_y, input_x=input_x, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class AttributeCorrelation(object):
    def __init__(self):
        self.label = "Attribute Correlation"
        self.description = "Performs a correlation analysis on attribute fields from a vector database."
        self.category = "Math and Stats Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input File",
            name="i",
            datatype="GPFeatureLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output HTML File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["html"]

        params = [i, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        output = parameters[1].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.attribute_correlation(i=i, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class AttributeCorrelationNeighbourhoodAnalysis(object):
    def __init__(self):
        self.label = "Attribute Correlation Neighbourhood Analysis"
        self.description = "Performs a correlation on two input vector attributes within a neighbourhood search windows."
        self.category = "Math and Stats Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input Vector File",
            name="i",
            datatype="GPFeatureLayer",
            parameterType="Required",
            direction="Input")

        field1 = arcpy.Parameter(
            displayName="Field Name 1",
            name="field1",
            datatype="Field",
            parameterType="Required",
            direction="Input")
        field1.parameterDependencies = [i.name]

        field2 = arcpy.Parameter(
            displayName="Field Name 2",
            name="field2",
            datatype="Field",
            parameterType="Required",
            direction="Input")
        field2.parameterDependencies = [i.name]

        radius = arcpy.Parameter(
            displayName="Search Radius (map units)",
            name="radius",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")

        min_points = arcpy.Parameter(
            displayName="Min. Number of Points",
            name="min_points",
            datatype="GPLong",
            parameterType="Optional",
            direction="Input")

        stat = arcpy.Parameter(
            displayName="Correlation Statistic Type",
            name="stat",
            datatype="GPString",
            parameterType="Optional",
            direction="Input")
        stat.filter.type = "ValueList"
        stat.filter.list = ['pearson', 'kendall', 'spearman']
        stat.value = 'pearson'

        params = [i, field1, field2, radius, min_points, stat]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        field1 = parameters[1].valueAsText
        field2 = parameters[2].valueAsText
        radius = parameters[3].valueAsText
        min_points = parameters[4].valueAsText
        stat = parameters[5].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.attribute_correlation_neighbourhood_analysis(i=i, field1=field1, field2=field2, radius=radius, min_points=min_points, stat=stat)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class AttributeHistogram(object):
    def __init__(self):
        self.label = "Attribute Histogram"
        self.description = "Creates a histogram for the field values of a vector's attribute table."
        self.category = "Math and Stats Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input File",
            name="i",
            datatype="GPFeatureLayer",
            parameterType="Required",
            direction="Input")

        field = arcpy.Parameter(
            displayName="Field Name",
            name="field",
            datatype="Field",
            parameterType="Required",
            direction="Input")
        field.parameterDependencies = [i.name]

        output = arcpy.Parameter(
            displayName="Output HTML File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["html"]

        params = [i, field, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        field = parameters[1].valueAsText
        output = parameters[2].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.attribute_histogram(i=i, field=field, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class AttributeScattergram(object):
    def __init__(self):
        self.label = "Attribute Scattergram"
        self.description = "Creates a scattergram for two field values of a vector's attribute table."
        self.category = "Math and Stats Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input File",
            name="i",
            datatype="GPFeatureLayer",
            parameterType="Required",
            direction="Input")

        fieldx = arcpy.Parameter(
            displayName="Field Name X",
            name="fieldx",
            datatype="Field",
            parameterType="Required",
            direction="Input")
        fieldx.parameterDependencies = [i.name]

        fieldy = arcpy.Parameter(
            displayName="Field Name Y",
            name="fieldy",
            datatype="Field",
            parameterType="Required",
            direction="Input")
        fieldy.parameterDependencies = [i.name]

        output = arcpy.Parameter(
            displayName="Output HTML File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["html"]

        trendline = arcpy.Parameter(
            displayName="Draw the trendline?",
            name="trendline",
            datatype="GPBoolean",
            parameterType="Optional",
            direction="Input")
        trendline.value = 'False'

        params = [i, fieldx, fieldy, output, trendline]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        fieldx = parameters[1].valueAsText
        fieldy = parameters[2].valueAsText
        output = parameters[3].valueAsText
        trendline = parameters[4].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.attribute_scattergram(i=i, fieldx=fieldx, fieldy=fieldy, output=output, trendline=trendline)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class AverageFlowpathSlope(object):
    def __init__(self):
        self.label = "Average Flowpath Slope"
        self.description = "Measures the average slope gradient from each grid cell to all upslope divide cells."
        self.category = "Hydrological Analysis"

    def getParameterInfo(self):
        dem = arcpy.Parameter(
            displayName="Input DEM File",
            name="dem",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        params = [dem, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        dem = parameters[0].valueAsText
        if dem is not None:
            desc = arcpy.Describe(dem)
            dem = desc.catalogPath
        output = parameters[1].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.average_flowpath_slope(dem=dem, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class AverageNormalVectorAngularDeviation(object):
    def __init__(self):
        self.label = "Average Normal Vector Angular Deviation"
        self.description = "Calculates the circular variance of aspect at a scale for a DEM."
        self.category = "Geomorphometric Analysis"

    def getParameterInfo(self):
        dem = arcpy.Parameter(
            displayName="Input DEM File",
            name="dem",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output Raster File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        filter = arcpy.Parameter(
            displayName="Filter Dimension",
            name="filter",
            datatype="GPLong",
            parameterType="Optional",
            direction="Input")
        filter.value = '11'

        params = [dem, output, filter]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        dem = parameters[0].valueAsText
        if dem is not None:
            desc = arcpy.Describe(dem)
            dem = desc.catalogPath
        output = parameters[1].valueAsText
        filter = parameters[2].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.average_normal_vector_angular_deviation(dem=dem, output=output, filter=filter)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class AverageOverlay(object):
    def __init__(self):
        self.label = "Average Overlay"
        self.description = "Calculates the average for each grid cell from a group of raster images."
        self.category = "GIS Analysis"

    def getParameterInfo(self):
        inputs = arcpy.Parameter(
            displayName="Input Files",
            name="inputs",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")
        inputs.multiValue = True

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        params = [inputs, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        inputs = parameters[0].valueAsText
        if inputs is not None:
            items = inputs.split(";")
            items_path = []
            for item in items:
                items_path.append(arcpy.Describe(item).catalogPath)
            inputs = ";".join(items_path)
        output = parameters[1].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.average_overlay(inputs=inputs, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class AverageUpslopeFlowpathLength(object):
    def __init__(self):
        self.label = "Average Upslope Flowpath Length"
        self.description = "Measures the average length of all upslope flowpaths draining each grid cell."
        self.category = "Hydrological Analysis"

    def getParameterInfo(self):
        dem = arcpy.Parameter(
            displayName="Input File",
            name="dem",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        params = [dem, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        dem = parameters[0].valueAsText
        if dem is not None:
            desc = arcpy.Describe(dem)
            dem = desc.catalogPath
        output = parameters[1].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.average_upslope_flowpath_length(dem=dem, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class BalanceContrastEnhancement(object):
    def __init__(self):
        self.label = "Balance Contrast Enhancement"
        self.description = "Performs a balance contrast enhancement on a colour-composite image of multispectral data."
        self.category = "Image Processing Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input Colour Composite Image File",
            name="i",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        band_mean = arcpy.Parameter(
            displayName="Band Mean Value",
            name="band_mean",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")
        band_mean.value = '100.0'

        params = [i, output, band_mean]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        output = parameters[1].valueAsText
        band_mean = parameters[2].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.balance_contrast_enhancement(i=i, output=output, band_mean=band_mean)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class Basins(object):
    def __init__(self):
        self.label = "Basins"
        self.description = "Identifies drainage basins that drain to the DEM edge."
        self.category = "Hydrological Analysis"

    def getParameterInfo(self):
        d8_pntr = arcpy.Parameter(
            displayName="Input D8 Pointer File",
            name="d8_pntr",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        esri_pntr = arcpy.Parameter(
            displayName="Does the pointer file use the ESRI pointer scheme?",
            name="esri_pntr",
            datatype="GPBoolean",
            parameterType="Optional",
            direction="Input")
        esri_pntr.value = 'False'

        params = [d8_pntr, output, esri_pntr]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        d8_pntr = parameters[0].valueAsText
        if d8_pntr is not None:
            desc = arcpy.Describe(d8_pntr)
            d8_pntr = desc.catalogPath
        output = parameters[1].valueAsText
        esri_pntr = parameters[2].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.basins(d8_pntr=d8_pntr, output=output, esri_pntr=esri_pntr)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class BilateralFilter(object):
    def __init__(self):
        self.label = "Bilateral Filter"
        self.description = "A bilateral filter is an edge-preserving smoothing filter introduced by Tomasi and Manduchi (1998)."
        self.category = "Image Processing Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input File",
            name="i",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        sigma_dist = arcpy.Parameter(
            displayName="Distance Standard Deviation (pixels)",
            name="sigma_dist",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")
        sigma_dist.value = '0.75'

        sigma_int = arcpy.Parameter(
            displayName="Intensity Standard Deviation (intensity units)",
            name="sigma_int",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")
        sigma_int.value = '1.0'

        params = [i, output, sigma_dist, sigma_int]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        output = parameters[1].valueAsText
        sigma_dist = parameters[2].valueAsText
        sigma_int = parameters[3].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.bilateral_filter(i=i, output=output, sigma_dist=sigma_dist, sigma_int=sigma_int)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class BlockMaximumGridding(object):
    def __init__(self):
        self.label = "Block Maximum Gridding"
        self.description = "Creates a raster grid based on a set of vector points and assigns grid values using a block maximum scheme."
        self.category = "GIS Analysis"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input Vector Points File",
            name="i",
            datatype="GPFeatureLayer",
            parameterType="Required",
            direction="Input")
        i.filter.list = ["Point"]

        field = arcpy.Parameter(
            displayName="Field Name",
            name="field",
            datatype="Field",
            parameterType="Required",
            direction="Input")
        field.parameterDependencies = [i.name]

        use_z = arcpy.Parameter(
            displayName="Use z-coordinate instead of field?",
            name="use_z",
            datatype="GPBoolean",
            parameterType="Optional",
            direction="Input")
        use_z.value = 'False'

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        cell_size = arcpy.Parameter(
            displayName="Cell Size (optional)",
            name="cell_size",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")

        base = arcpy.Parameter(
            displayName="Base Raster File (optional)",
            name="base",
            datatype="GPRasterLayer",
            parameterType="Optional",
            direction="Input")

        params = [i, field, use_z, output, cell_size, base]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        field = parameters[1].valueAsText
        use_z = parameters[2].valueAsText
        output = parameters[3].valueAsText
        cell_size = parameters[4].valueAsText
        base = parameters[5].valueAsText
        if base is not None:
            desc = arcpy.Describe(base)
            base = desc.catalogPath
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.block_maximum_gridding(i=i, field=field, use_z=use_z, output=output, cell_size=cell_size, base=base)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class BlockMinimumGridding(object):
    def __init__(self):
        self.label = "Block Minimum Gridding"
        self.description = "Creates a raster grid based on a set of vector points and assigns grid values using a block minimum scheme."
        self.category = "GIS Analysis"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input Vector Points File",
            name="i",
            datatype="GPFeatureLayer",
            parameterType="Required",
            direction="Input")
        i.filter.list = ["Point"]

        field = arcpy.Parameter(
            displayName="Field Name",
            name="field",
            datatype="Field",
            parameterType="Required",
            direction="Input")
        field.parameterDependencies = [i.name]

        use_z = arcpy.Parameter(
            displayName="Use z-coordinate instead of field?",
            name="use_z",
            datatype="GPBoolean",
            parameterType="Optional",
            direction="Input")
        use_z.value = 'False'

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        cell_size = arcpy.Parameter(
            displayName="Cell Size (optional)",
            name="cell_size",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")

        base = arcpy.Parameter(
            displayName="Base Raster File (optional)",
            name="base",
            datatype="GPRasterLayer",
            parameterType="Optional",
            direction="Input")

        params = [i, field, use_z, output, cell_size, base]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        field = parameters[1].valueAsText
        use_z = parameters[2].valueAsText
        output = parameters[3].valueAsText
        cell_size = parameters[4].valueAsText
        base = parameters[5].valueAsText
        if base is not None:
            desc = arcpy.Describe(base)
            base = desc.catalogPath
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.block_minimum_gridding(i=i, field=field, use_z=use_z, output=output, cell_size=cell_size, base=base)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class BoundaryShapeComplexity(object):
    def __init__(self):
        self.label = "Boundary Shape Complexity"
        self.description = "Calculates the complexity of the boundaries of raster polygons."
        self.category = "GIS Analysis"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input File",
            name="i",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        params = [i, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        output = parameters[1].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.boundary_shape_complexity(i=i, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class BreachDepressions(object):
    def __init__(self):
        self.label = "Breach Depressions"
        self.description = "Breaches all of the depressions in a DEM using Lindsay's (2016) algorithm. This should be preferred over depression filling in most cases."
        self.category = "Hydrological Analysis"

    def getParameterInfo(self):
        dem = arcpy.Parameter(
            displayName="Input DEM File",
            name="dem",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        max_depth = arcpy.Parameter(
            displayName="Maximum Breach Depth (z units)",
            name="max_depth",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")

        max_length = arcpy.Parameter(
            displayName="Maximum Breach Channel Length (grid cells)",
            name="max_length",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")

        flat_increment = arcpy.Parameter(
            displayName="Flat increment value (z units)",
            name="flat_increment",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")

        fill_pits = arcpy.Parameter(
            displayName="Fill single-cell pits?",
            name="fill_pits",
            datatype="GPBoolean",
            parameterType="Optional",
            direction="Input")
        fill_pits.value = 'False'

        params = [dem, output, max_depth, max_length, flat_increment, fill_pits]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        dem = parameters[0].valueAsText
        if dem is not None:
            desc = arcpy.Describe(dem)
            dem = desc.catalogPath
        output = parameters[1].valueAsText
        max_depth = parameters[2].valueAsText
        max_length = parameters[3].valueAsText
        flat_increment = parameters[4].valueAsText
        fill_pits = parameters[5].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.breach_depressions(dem=dem, output=output, max_depth=max_depth, max_length=max_length, flat_increment=flat_increment, fill_pits=fill_pits)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class BreachDepressionsLeastCost(object):
    def __init__(self):
        self.label = "Breach Depressions Least Cost"
        self.description = "Breaches the depressions in a DEM using a least-cost pathway method."
        self.category = "Hydrological Analysis"

    def getParameterInfo(self):
        dem = arcpy.Parameter(
            displayName="Input DEM File",
            name="dem",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        dist = arcpy.Parameter(
            displayName="Maximum Search Distance (cells)",
            name="dist",
            datatype="GPLong",
            parameterType="Required",
            direction="Input")

        max_cost = arcpy.Parameter(
            displayName="Maximum Breach Cost (z units)",
            name="max_cost",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")

        min_dist = arcpy.Parameter(
            displayName="Minimize breach distances?",
            name="min_dist",
            datatype="GPBoolean",
            parameterType="Optional",
            direction="Input")
        min_dist.value = 'True'

        flat_increment = arcpy.Parameter(
            displayName="Flat increment value (z units)",
            name="flat_increment",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")

        fill = arcpy.Parameter(
            displayName="Fill unbreached depressions?",
            name="fill",
            datatype="GPBoolean",
            parameterType="Optional",
            direction="Input")
        fill.value = 'True'

        params = [dem, output, dist, max_cost, min_dist, flat_increment, fill]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        dem = parameters[0].valueAsText
        if dem is not None:
            desc = arcpy.Describe(dem)
            dem = desc.catalogPath
        output = parameters[1].valueAsText
        dist = parameters[2].valueAsText
        max_cost = parameters[3].valueAsText
        min_dist = parameters[4].valueAsText
        flat_increment = parameters[5].valueAsText
        fill = parameters[6].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.breach_depressions_least_cost(dem=dem, output=output, dist=dist, max_cost=max_cost, min_dist=min_dist, flat_increment=flat_increment, fill=fill)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class BreachSingleCellPits(object):
    def __init__(self):
        self.label = "Breach Single Cell Pits"
        self.description = "Removes single-cell pits from an input DEM by breaching."
        self.category = "Hydrological Analysis"

    def getParameterInfo(self):
        dem = arcpy.Parameter(
            displayName="Input File",
            name="dem",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        params = [dem, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        dem = parameters[0].valueAsText
        if dem is not None:
            desc = arcpy.Describe(dem)
            dem = desc.catalogPath
        output = parameters[1].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.breach_single_cell_pits(dem=dem, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class BreaklineMapping(object):
    def __init__(self):
        self.label = "Breakline Mapping"
        self.description = "This tool maps breaklines from an input DEM."
        self.category = "Geomorphometric Analysis"

    def getParameterInfo(self):
        dem = arcpy.Parameter(
            displayName="Input Raster DEM",
            name="dem",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output Vector Lines File",
            name="output",
            datatype="DEShapefile",
            parameterType="Required",
            direction="Output")

        threshold = arcpy.Parameter(
            displayName="Threshold Value",
            name="threshold",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")
        threshold.value = '2.0'

        min_length = arcpy.Parameter(
            displayName="Min. Line Length (In Grid Cells)",
            name="min_length",
            datatype="GPLong",
            parameterType="Optional",
            direction="Input")
        min_length.value = '3'

        params = [dem, output, threshold, min_length]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        dem = parameters[0].valueAsText
        if dem is not None:
            desc = arcpy.Describe(dem)
            dem = desc.catalogPath
        output = parameters[1].valueAsText
        threshold = parameters[2].valueAsText
        min_length = parameters[3].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.breakline_mapping(dem=dem, output=output, threshold=threshold, min_length=min_length)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class BufferRaster(object):
    def __init__(self):
        self.label = "Buffer Raster"
        self.description = "Maps a distance-based buffer around each non-background (non-zero/non-nodata) grid cell in an input image."
        self.category = "GIS Analysis"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input File",
            name="i",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        size = arcpy.Parameter(
            displayName="Buffer Size",
            name="size",
            datatype="GPDouble",
            parameterType="Required",
            direction="Input")

        gridcells = arcpy.Parameter(
            displayName="Buffer size measured in grid cells?",
            name="gridcells",
            datatype="GPBoolean",
            parameterType="Optional",
            direction="Input")

        params = [i, output, size, gridcells]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        output = parameters[1].valueAsText
        size = parameters[2].valueAsText
        gridcells = parameters[3].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.buffer_raster(i=i, output=output, size=size, gridcells=gridcells)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class BurnStreamsAtRoads(object):
    def __init__(self):
        self.label = "Burn Streams At Roads"
        self.description = "Burns-in streams at the sites of road embankments."
        self.category = "Hydrological Analysis"

    def getParameterInfo(self):
        dem = arcpy.Parameter(
            displayName="Input DEM File",
            name="dem",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        streams = arcpy.Parameter(
            displayName="Input Vector Streams File",
            name="streams",
            datatype="GPFeatureLayer",
            parameterType="Required",
            direction="Input")
        streams.filter.list = ["Polyline"]

        roads = arcpy.Parameter(
            displayName="Input Vector Roads File",
            name="roads",
            datatype="GPFeatureLayer",
            parameterType="Required",
            direction="Input")
        roads.filter.list = ["Polyline"]

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        width = arcpy.Parameter(
            displayName="Road Embankment Width",
            name="width",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")

        params = [dem, streams, roads, output, width]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        dem = parameters[0].valueAsText
        if dem is not None:
            desc = arcpy.Describe(dem)
            dem = desc.catalogPath
        streams = parameters[1].valueAsText
        if streams is not None:
            desc = arcpy.Describe(streams)
            streams = desc.catalogPath
        roads = parameters[2].valueAsText
        if roads is not None:
            desc = arcpy.Describe(roads)
            roads = desc.catalogPath
        output = parameters[3].valueAsText
        width = parameters[4].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.burn_streams_at_roads(dem=dem, streams=streams, roads=roads, output=output, width=width)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class CannyEdgeDetection(object):
    def __init__(self):
        self.label = "Canny Edge Detection"
        self.description = "This tool performs a Canny edge-detection filter on an input image."
        self.category = "Image Processing Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input Raster Image",
            name="i",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output Raster Image",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        sigma = arcpy.Parameter(
            displayName="Sigma Value",
            name="sigma",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")
        sigma.value = '0.5'

        low = arcpy.Parameter(
            displayName="Low Threshold",
            name="low",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")
        low.value = '0.05'

        high = arcpy.Parameter(
            displayName="High Threshold",
            name="high",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")
        high.value = '0.15'

        add_back = arcpy.Parameter(
            displayName="Add edge back to the image?",
            name="add_back",
            datatype="GPBoolean",
            parameterType="Optional",
            direction="Input")
        add_back.value = 'False'

        params = [i, output, sigma, low, high, add_back]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        output = parameters[1].valueAsText
        sigma = parameters[2].valueAsText
        low = parameters[3].valueAsText
        high = parameters[4].valueAsText
        add_back = parameters[5].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.canny_edge_detection(i=i, output=output, sigma=sigma, low=low, high=high, add_back=add_back)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class Ceil(object):
    def __init__(self):
        self.label = "Ceil"
        self.description = "Returns the smallest (closest to negative infinity) value that is greater than or equal to the values in a raster."
        self.category = "Math and Stats Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input File",
            name="i",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        params = [i, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        output = parameters[1].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.ceil(i=i, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class Centroid(object):
    def __init__(self):
        self.label = "Centroid"
        self.description = "Calculates the centroid, or average location, of raster polygon objects."
        self.category = "GIS Analysis"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input File",
            name="i",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        text_output = arcpy.Parameter(
            displayName="Output text?",
            name="text_output",
            datatype="GPBoolean",
            parameterType="Required",
            direction="Input")

        params = [i, output, text_output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        output = parameters[1].valueAsText
        text_output = parameters[2].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.centroid(i=i, output=output, text_output=text_output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class CentroidVector(object):
    def __init__(self):
        self.label = "Centroid Vector"
        self.description = "Identifies the centroid point of a vector polyline or polygon feature or a group of vector points."
        self.category = "GIS Analysis"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input Vector File",
            name="i",
            datatype="GPFeatureLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output Vector File",
            name="output",
            datatype="DEShapefile",
            parameterType="Required",
            direction="Output")

        params = [i, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        output = parameters[1].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.centroid_vector(i=i, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class ChangeVectorAnalysis(object):
    def __init__(self):
        self.label = "Change Vector Analysis"
        self.description = "Performs a change vector analysis on a two-date multi-spectral dataset."
        self.category = "Image Processing Tools"

    def getParameterInfo(self):
        date1 = arcpy.Parameter(
            displayName="Earlier Date Input Files",
            name="date1",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")
        date1.multiValue = True

        date2 = arcpy.Parameter(
            displayName="Later Date Input Files",
            name="date2",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")
        date2.multiValue = True

        magnitude = arcpy.Parameter(
            displayName="Output Vector Magnitude File",
            name="magnitude",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        magnitude.filter.list = ["tif"]

        direction = arcpy.Parameter(
            displayName="Output Vector Direction File",
            name="direction",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        direction.filter.list = ["tif"]

        params = [date1, date2, magnitude, direction]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        date1 = parameters[0].valueAsText
        if date1 is not None:
            items = date1.split(";")
            items_path = []
            for item in items:
                items_path.append(arcpy.Describe(item).catalogPath)
            date1 = ";".join(items_path)
        date2 = parameters[1].valueAsText
        if date2 is not None:
            items = date2.split(";")
            items_path = []
            for item in items:
                items_path.append(arcpy.Describe(item).catalogPath)
            date2 = ";".join(items_path)
        magnitude = parameters[2].valueAsText
        direction = parameters[3].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.change_vector_analysis(date1=date1, date2=date2, magnitude=magnitude, direction=direction)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class CircularVarianceOfAspect(object):
    def __init__(self):
        self.label = "Circular Variance Of Aspect"
        self.description = "Calculates the circular variance of aspect at a scale for a DEM."
        self.category = "Geomorphometric Analysis"

    def getParameterInfo(self):
        dem = arcpy.Parameter(
            displayName="Input DEM File",
            name="dem",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output Raster File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        filter = arcpy.Parameter(
            displayName="Filter Dimension",
            name="filter",
            datatype="GPLong",
            parameterType="Optional",
            direction="Input")
        filter.value = '11'

        params = [dem, output, filter]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        dem = parameters[0].valueAsText
        if dem is not None:
            desc = arcpy.Describe(dem)
            dem = desc.catalogPath
        output = parameters[1].valueAsText
        filter = parameters[2].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.circular_variance_of_aspect(dem=dem, output=output, filter=filter)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class ClassifyBuildingsInLidar(object):
    def __init__(self):
        self.label = "Classify Buildings In Lidar"
        self.description = "Reclassifies a LiDAR points that lie within vector building footprints."
        self.category = "LiDAR Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input File",
            name="i",
            datatype="DEFile",
            parameterType="Required",
            direction="Input")
        i.filter.list = ["las", "zip"]

        buildings = arcpy.Parameter(
            displayName="Input Building Polygon File",
            name="buildings",
            datatype="GPFeatureLayer",
            parameterType="Required",
            direction="Input")
        buildings.filter.list = ["Polygon"]

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")

        params = [i, buildings, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        buildings = parameters[1].valueAsText
        if buildings is not None:
            desc = arcpy.Describe(buildings)
            buildings = desc.catalogPath
        output = parameters[2].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.classify_buildings_in_lidar(i=i, buildings=buildings, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class ClassifyLidar(object):
    def __init__(self):
        self.label = "Classify Lidar"
        self.description = "Classify points within a LiDAR point cloud based on point properties."
        self.category = "LiDAR Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input LiDAR Points",
            name="i",
            datatype="DEFile",
            parameterType="Optional",
            direction="Input")
        i.filter.list = ["las", "zip"]

        output = arcpy.Parameter(
            displayName="Output LiDAR Points",
            name="output",
            datatype="DEFile",
            parameterType="Optional",
            direction="Output")

        radius = arcpy.Parameter(
            displayName="Search Distance:",
            name="radius",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")
        radius.value = '1.5'

        grd_threshold = arcpy.Parameter(
            displayName="Ground Threshold:",
            name="grd_threshold",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")
        grd_threshold.value = '0.1'

        oto_threshold = arcpy.Parameter(
            displayName="Off-Terrain Object Threshold:",
            name="oto_threshold",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")
        oto_threshold.value = '2.0'

        planarity_threshold = arcpy.Parameter(
            displayName="Planarity Threshold:",
            name="planarity_threshold",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")
        planarity_threshold.value = '0.85'

        linearity_threshold = arcpy.Parameter(
            displayName="Linearity Threshold:",
            name="linearity_threshold",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")
        linearity_threshold.value = '0.70'

        iterations = arcpy.Parameter(
            displayName="Number of Iterations:",
            name="iterations",
            datatype="GPLong",
            parameterType="Optional",
            direction="Input")
        iterations.value = '30'

        facade_threshold = arcpy.Parameter(
            displayName="Facade Threshold:",
            name="facade_threshold",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")
        facade_threshold.value = '0.5'

        params = [i, output, radius, grd_threshold, oto_threshold, planarity_threshold, linearity_threshold, iterations, facade_threshold]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        output = parameters[1].valueAsText
        radius = parameters[2].valueAsText
        grd_threshold = parameters[3].valueAsText
        oto_threshold = parameters[4].valueAsText
        planarity_threshold = parameters[5].valueAsText
        linearity_threshold = parameters[6].valueAsText
        iterations = parameters[7].valueAsText
        facade_threshold = parameters[8].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.classify_lidar(i=i, output=output, radius=radius, grd_threshold=grd_threshold, oto_threshold=oto_threshold, planarity_threshold=planarity_threshold, linearity_threshold=linearity_threshold, iterations=iterations, facade_threshold=facade_threshold)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class ClassifyOverlapPoints(object):
    def __init__(self):
        self.label = "Classify Overlap Points"
        self.description = "Classifies or filters LAS points in regions of overlapping flight lines."
        self.category = "LiDAR Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input LiDAR File",
            name="i",
            datatype="DEFile",
            parameterType="Required",
            direction="Input")
        i.filter.list = ["las", "zip"]

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")

        resolution = arcpy.Parameter(
            displayName="Sample Resolution",
            name="resolution",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")
        resolution.value = '2.0'

        criterion = arcpy.Parameter(
            displayName="Overlap Criterion",
            name="criterion",
            datatype="GPString",
            parameterType="Optional",
            direction="Input")
        criterion.filter.type = "ValueList"
        criterion.filter.list = ['max scan angle', 'not min point source ID', 'not min time', 'multiple point source IDs']
        criterion.value = 'max scan angle'

        filter = arcpy.Parameter(
            displayName="Filter out points from overlapping flightlines?",
            name="filter",
            datatype="GPBoolean",
            parameterType="Optional",
            direction="Input")
        filter.value = 'False'

        params = [i, output, resolution, criterion, filter]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        output = parameters[1].valueAsText
        resolution = parameters[2].valueAsText
        criterion = parameters[3].valueAsText
        filter = parameters[4].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.classify_overlap_points(i=i, output=output, resolution=resolution, criterion=criterion, filter=filter)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class CleanVector(object):
    def __init__(self):
        self.label = "Clean Vector"
        self.description = "Removes null features and lines/polygons with fewer than the required number of vertices."
        self.category = "Data Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input Vector File",
            name="i",
            datatype="GPFeatureLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output Vector File",
            name="output",
            datatype="DEShapefile",
            parameterType="Required",
            direction="Output")

        params = [i, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        output = parameters[1].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.clean_vector(i=i, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class Clip(object):
    def __init__(self):
        self.label = "Clip"
        self.description = "Extract all the features, or parts of features, that overlap with the features of the clip vector."
        self.category = "GIS Analysis"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input Vector File",
            name="i",
            datatype="GPFeatureLayer",
            parameterType="Required",
            direction="Input")

        clip = arcpy.Parameter(
            displayName="Input Clip Polygon Vector File",
            name="clip",
            datatype="GPFeatureLayer",
            parameterType="Required",
            direction="Input")
        clip.filter.list = ["Polygon"]

        output = arcpy.Parameter(
            displayName="Output Vector File",
            name="output",
            datatype="DEShapefile",
            parameterType="Required",
            direction="Output")

        params = [i, clip, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        clip = parameters[1].valueAsText
        if clip is not None:
            desc = arcpy.Describe(clip)
            clip = desc.catalogPath
        output = parameters[2].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.clip(i=i, clip=clip, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class ClipLidarToPolygon(object):
    def __init__(self):
        self.label = "Clip Lidar To Polygon"
        self.description = "Clips a LiDAR point cloud to a vector polygon or polygons."
        self.category = "LiDAR Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input File",
            name="i",
            datatype="DEFile",
            parameterType="Required",
            direction="Input")
        i.filter.list = ["las", "zip"]

        polygons = arcpy.Parameter(
            displayName="Input Vector Polygon File",
            name="polygons",
            datatype="GPFeatureLayer",
            parameterType="Required",
            direction="Input")
        polygons.filter.list = ["Polygon"]

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")

        params = [i, polygons, output]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        polygons = parameters[1].valueAsText
        if polygons is not None:
            desc = arcpy.Describe(polygons)
            polygons = desc.catalogPath
        output = parameters[2].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.clip_lidar_to_polygon(i=i, polygons=polygons, output=output)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class ClipRasterToPolygon(object):
    def __init__(self):
        self.label = "Clip Raster To Polygon"
        self.description = "Clips a raster to a vector polygon."
        self.category = "GIS Analysis"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input File",
            name="i",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        polygons = arcpy.Parameter(
            displayName="Input Vector Polygon File",
            name="polygons",
            datatype="GPFeatureLayer",
            parameterType="Required",
            direction="Input")
        polygons.filter.list = ["Polygon"]

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        maintain_dimensions = arcpy.Parameter(
            displayName="Maintain input raster dimensions?",
            name="maintain_dimensions",
            datatype="GPBoolean",
            parameterType="Optional",
            direction="Input")
        maintain_dimensions.value = 'False'

        params = [i, polygons, output, maintain_dimensions]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        polygons = parameters[1].valueAsText
        if polygons is not None:
            desc = arcpy.Describe(polygons)
            polygons = desc.catalogPath
        output = parameters[2].valueAsText
        maintain_dimensions = parameters[3].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.clip_raster_to_polygon(i=i, polygons=polygons, output=output, maintain_dimensions=maintain_dimensions)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class Closing(object):
    def __init__(self):
        self.label = "Closing"
        self.description = "A closing is a mathematical morphology operation involving an erosion (min filter) of a dilation (max filter) set."
        self.category = "Image Processing Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input File",
            name="i",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        filterx = arcpy.Parameter(
            displayName="Filter X-Dimension",
            name="filterx",
            datatype="GPLong",
            parameterType="Optional",
            direction="Input")
        filterx.value = '11'

        filtery = arcpy.Parameter(
            displayName="Filter Y-Dimension",
            name="filtery",
            datatype="GPLong",
            parameterType="Optional",
            direction="Input")
        filtery.value = '11'

        params = [i, output, filterx, filtery]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        output = parameters[1].valueAsText
        filterx = parameters[2].valueAsText
        filtery = parameters[3].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.closing(i=i, output=output, filterx=filterx, filtery=filtery)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class Clump(object):
    def __init__(self):
        self.label = "Clump"
        self.description = "Groups cells that form discrete areas, assigning them unique identifiers."
        self.category = "GIS Analysis"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input File",
            name="i",
            datatype="GPRasterLayer",
            parameterType="Required",
            direction="Input")

        output = arcpy.Parameter(
            displayName="Output File",
            name="output",
            datatype="DEFile",
            parameterType="Required",
            direction="Output")
        output.filter.list = ["tif"]

        diag = arcpy.Parameter(
            displayName="Include diagonal connections?",
            name="diag",
            datatype="GPBoolean",
            parameterType="Required",
            direction="Input")
        diag.value = 'True'

        zero_back = arcpy.Parameter(
            displayName="Treat zero values as background?",
            name="zero_back",
            datatype="GPBoolean",
            parameterType="Required",
            direction="Input")

        params = [i, output, diag, zero_back]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        if i is not None:
            desc = arcpy.Describe(i)
            i = desc.catalogPath
        output = parameters[1].valueAsText
        diag = parameters[2].valueAsText
        zero_back = parameters[3].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.clump(i=i, output=output, diag=diag, zero_back=zero_back)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class ColourizeBasedOnClass(object):
    def __init__(self):
        self.label = "Colourize Based On Class"
        self.description = "Sets the RGB values of a LiDAR point cloud based on the point classification values."
        self.category = "LiDAR Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input LiDAR Points",
            name="i",
            datatype="DEFile",
            parameterType="Optional",
            direction="Input")
        i.filter.list = ["las", "zip"]

        output = arcpy.Parameter(
            displayName="Output LiDAR Points",
            name="output",
            datatype="DEFile",
            parameterType="Optional",
            direction="Output")

        intensity_blending = arcpy.Parameter(
            displayName="Intensity Blending Amount (0-100%):",
            name="intensity_blending",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")
        intensity_blending.value = '50.0'

        clr_str = arcpy.Parameter(
            displayName="Colour values:",
            name="clr_str",
            datatype="GPString",
            parameterType="Optional",
            direction="Input")
        use_unique_clrs_for_buildings = arcpy.Parameter(
            displayName="Use unique colours for each building?",
            name="use_unique_clrs_for_buildings",
            datatype="GPBoolean",
            parameterType="Optional",
            direction="Input")
        use_unique_clrs_for_buildings.value = 'False'

        radius = arcpy.Parameter(
            displayName="Search Distance:",
            name="radius",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")
        params = [i, output, intensity_blending, clr_str, use_unique_clrs_for_buildings, radius]

        return params

    def updateParameters(self, parameters):
        return

    def updateMessages(self, parameters):
        for param in parameters:
            param_str = param.valueAsText
            if param_str is not None:
                try:
                    desc = arcpy.Describe(param_str)
                    if (".gdb\\" in desc.catalogPath) or (".mdb\\" in desc.catalogPath):
                        param.setErrorMessage("Datasets stored in a Geodatabase are not supported.")
                except:
                    param.clearMessage()
        return

    def execute(self, parameters, messages):
        i = parameters[0].valueAsText
        output = parameters[1].valueAsText
        intensity_blending = parameters[2].valueAsText
        clr_str = parameters[3].valueAsText
        use_unique_clrs_for_buildings = parameters[4].valueAsText
        radius = parameters[5].valueAsText
        old_stdout = sys.stdout
        result = StringIO()
        sys.stdout = result
        wbt.colourize_based_on_class(i=i, output=output, intensity_blending=intensity_blending, clr_str=clr_str, use_unique_clrs_for_buildings=use_unique_clrs_for_buildings, radius=radius)
        sys.stdout = old_stdout
        result_string = result.getvalue()
        messages.addMessage(result_string)
        return


class ColourizeBasedOnPointReturns(object):
    def __init__(self):
        self.label = "Colourize Based On Point Returns"
        self.description = "Sets the RGB values of a LiDAR point cloud based on the point returns."
        self.category = "LiDAR Tools"

    def getParameterInfo(self):
        i = arcpy.Parameter(
            displayName="Input LiDAR Points",
            name="i",
            datatype="DEFile",
            parameterType="Optional",
            direction="Input")
        i.filter.list = ["las", "zip"]

        output = arcpy.Parameter(
            displayName="Output LiDAR Points",
            name="output",
            datatype="DEFile",
            parameterType="Optional",
            direction="Output")

        intensity_blending = arcpy.Parameter(
            displayName="Intensity Blending Amount (0-100%):",
            name="intensity_blending",
            datatype="GPDouble",
            parameterType="Optional",
            direction="Input")
        intensity_blending.value 
Download .txt
gitextract_x6scu65z/

├── .gitignore
├── .pre-commit-config.yaml
├── LICENSE
├── README.md
├── WBT/
│   ├── LICENSE.txt
│   ├── PRE/
│   │   ├── WhiteboxTools.py
│   │   ├── automation.py
│   │   ├── file_about.py
│   │   ├── file_header.py
│   │   ├── file_tool.py
│   │   ├── file_toolbox.py
│   │   ├── testing.py
│   │   └── whitebox_tools.py
│   ├── UserManual.txt
│   ├── __init__.py
│   ├── plugins/
│   │   ├── conditional_evaluation.json
│   │   ├── conditioned_latin_hypercube.json
│   │   ├── edge_contamination.json
│   │   ├── exposure_towards_wind_flux.json
│   │   ├── gaussian_scale_space.json
│   │   ├── heat_map.json
│   │   ├── individual_tree_detection.json
│   │   ├── install_wb_extension.json
│   │   ├── launch_wb_runner.json
│   │   ├── lidar_shift.json
│   │   ├── local_quadratic_regression.json
│   │   ├── max_upslope_value.json
│   │   ├── normalize_lidar.json
│   │   ├── qin_flow_accumulation.json
│   │   ├── quinn_flow_accumulation.json
│   │   ├── raster_calculator.json
│   │   ├── repair_stream_vector_topology.json
│   │   ├── rho8_flow_accumulation.json
│   │   ├── split_vector_lines.json
│   │   ├── travelling_salesman_problem.json
│   │   └── vector_stream_network_analysis.json
│   ├── readme.txt
│   ├── wb_runner.py
│   ├── whitebox_example.py
│   └── whitebox_tools.py
├── WhiteboxTools.pyt
└── testdata/
    ├── DEM/
    │   ├── DEM.dep
    │   └── DEM.tif
    ├── Landsat/
    │   ├── LC80320272014265LGN00_B1.TIF
    │   ├── LC80320272014265LGN00_B2.TIF
    │   ├── LC80320272014265LGN00_B3.TIF
    │   ├── LC80320272014265LGN00_B4.TIF
    │   ├── LC80320272014265LGN00_B5.TIF
    │   ├── LC80320272014265LGN00_B6.TIF
    │   ├── LC80320272014265LGN00_B7.TIF
    │   ├── LC80320272014265LGN00_B8.TIF
    │   ├── LC80320272014265LGN00_Boundary.cpg
    │   ├── LC80320272014265LGN00_Boundary.dbf
    │   ├── LC80320272014265LGN00_Boundary.prj
    │   ├── LC80320272014265LGN00_Boundary.shp
    │   ├── LC80320272014265LGN00_Boundary.shx
    │   └── Readme.txt
    ├── Wetlands/
    │   ├── CLSA_Boundary.dbf
    │   ├── CLSA_Boundary.prj
    │   ├── CLSA_Boundary.shp
    │   ├── CLSA_Boundary.shx
    │   ├── CLSA_LiDAR_2m.tif
    │   ├── CLSA_NAIP_2m.tif
    │   ├── CLSA_NED_10m.tif
    │   ├── CLSA_Wetland_Points.dbf
    │   ├── CLSA_Wetland_Points.prj
    │   ├── CLSA_Wetland_Points.sbn
    │   ├── CLSA_Wetland_Points.sbx
    │   ├── CLSA_Wetland_Points.shp
    │   ├── CLSA_Wetland_Points.shx
    │   ├── CLSA_Wetland_Polygons.dbf
    │   ├── CLSA_Wetland_Polygons.prj
    │   ├── CLSA_Wetland_Polygons.sbn
    │   ├── CLSA_Wetland_Polygons.sbx
    │   ├── CLSA_Wetland_Polygons.shp
    │   ├── CLSA_Wetland_Polygons.shx
    │   ├── CLSA_Wetland_Polylines.cpg
    │   ├── CLSA_Wetland_Polylines.dbf
    │   ├── CLSA_Wetland_Polylines.prj
    │   ├── CLSA_Wetland_Polylines.sbn
    │   ├── CLSA_Wetland_Polylines.sbx
    │   ├── CLSA_Wetland_Polylines.shp
    │   ├── CLSA_Wetland_Polylines.shx
    │   └── Readme.txt
    ├── WorldMap/
    │   ├── Readme.txt
    │   ├── TM_WORLD_BORDERS_SIMPL-0.3.dbf
    │   ├── TM_WORLD_BORDERS_SIMPL-0.3.prj
    │   ├── TM_WORLD_BORDERS_SIMPL-0.3.shp
    │   └── TM_WORLD_BORDERS_SIMPL-0.3.shx
    └── examples.py
Download .txt
Showing preview only (362K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4495 symbols across 9 files)

FILE: WBT/PRE/WhiteboxTools.py
  class Toolbox (line 560) | class Toolbox(object):
    method __init__ (line 561) | def __init__(self):
  class Help (line 1126) | class Help(object):
    method __init__ (line 1127) | def __init__(self):
    method getParameterInfo (line 1134) | def getParameterInfo(self):
    method isLicensed (line 1139) | def isLicensed(self):
    method updateParameters (line 1143) | def updateParameters(self, parameters):
    method updateMessages (line 1149) | def updateMessages(self, parameters):
    method execute (line 1154) | def execute(self, parameters, messages):
  class License (line 1160) | class License(object):
    method __init__ (line 1161) | def __init__(self):
    method getParameterInfo (line 1168) | def getParameterInfo(self):
    method isLicensed (line 1173) | def isLicensed(self):
    method updateParameters (line 1177) | def updateParameters(self, parameters):
    method updateMessages (line 1183) | def updateMessages(self, parameters):
    method execute (line 1188) | def execute(self, parameters, messages):
  class Version (line 1194) | class Version(object):
    method __init__ (line 1195) | def __init__(self):
    method getParameterInfo (line 1202) | def getParameterInfo(self):
    method isLicensed (line 1207) | def isLicensed(self):
    method updateParameters (line 1211) | def updateParameters(self, parameters):
    method updateMessages (line 1217) | def updateMessages(self, parameters):
    method execute (line 1222) | def execute(self, parameters, messages):
  class ListTools (line 1228) | class ListTools(object):
    method __init__ (line 1229) | def __init__(self):
    method getParameterInfo (line 1236) | def getParameterInfo(self):
    method isLicensed (line 1251) | def isLicensed(self):
    method updateParameters (line 1255) | def updateParameters(self, parameters):
    method updateMessages (line 1261) | def updateMessages(self, parameters):
    method execute (line 1266) | def execute(self, parameters, messages):
  class ToolHelp (line 1280) | class ToolHelp(object):
    method __init__ (line 1281) | def __init__(self):
    method getParameterInfo (line 1288) | def getParameterInfo(self):
    method isLicensed (line 1304) | def isLicensed(self):
    method updateParameters (line 1308) | def updateParameters(self, parameters):
    method updateMessages (line 1314) | def updateMessages(self, parameters):
    method execute (line 1319) | def execute(self, parameters, messages):
  class ToolParameters (line 1327) | class ToolParameters(object):
    method __init__ (line 1328) | def __init__(self):
    method getParameterInfo (line 1335) | def getParameterInfo(self):
    method isLicensed (line 1351) | def isLicensed(self):
    method updateParameters (line 1355) | def updateParameters(self, parameters):
    method updateMessages (line 1361) | def updateMessages(self, parameters):
    method execute (line 1366) | def execute(self, parameters, messages):
  class ViewCode (line 1374) | class ViewCode(object):
    method __init__ (line 1375) | def __init__(self):
    method getParameterInfo (line 1382) | def getParameterInfo(self):
    method isLicensed (line 1398) | def isLicensed(self):
    method updateParameters (line 1402) | def updateParameters(self, parameters):
    method updateMessages (line 1408) | def updateMessages(self, parameters):
    method execute (line 1413) | def execute(self, parameters, messages):
  class RunTool (line 1423) | class RunTool(object):
    method __init__ (line 1424) | def __init__(self):
    method getParameterInfo (line 1431) | def getParameterInfo(self):
    method isLicensed (line 1455) | def isLicensed(self):
    method updateParameters (line 1459) | def updateParameters(self, parameters):
    method updateMessages (line 1465) | def updateMessages(self, parameters):
    method execute (line 1470) | def execute(self, parameters, messages):
  class AbsoluteValue (line 1484) | class AbsoluteValue(object):
    method __init__ (line 1485) | def __init__(self):
    method getParameterInfo (line 1490) | def getParameterInfo(self):
    method updateParameters (line 1510) | def updateParameters(self, parameters):
    method updateMessages (line 1513) | def updateMessages(self, parameters):
    method execute (line 1525) | def execute(self, parameters, messages):
  class AccumulationCurvature (line 1541) | class AccumulationCurvature(object):
    method __init__ (line 1542) | def __init__(self):
    method getParameterInfo (line 1547) | def getParameterInfo(self):
    method updateParameters (line 1583) | def updateParameters(self, parameters):
    method updateMessages (line 1586) | def updateMessages(self, parameters):
    method execute (line 1598) | def execute(self, parameters, messages):
  class AdaptiveFilter (line 1616) | class AdaptiveFilter(object):
    method __init__ (line 1617) | def __init__(self):
    method getParameterInfo (line 1622) | def getParameterInfo(self):
    method updateParameters (line 1666) | def updateParameters(self, parameters):
    method updateMessages (line 1669) | def updateMessages(self, parameters):
    method execute (line 1681) | def execute(self, parameters, messages):
  class Add (line 1700) | class Add(object):
    method __init__ (line 1701) | def __init__(self):
    method getParameterInfo (line 1706) | def getParameterInfo(self):
    method updateParameters (line 1733) | def updateParameters(self, parameters):
    method updateMessages (line 1736) | def updateMessages(self, parameters):
    method execute (line 1748) | def execute(self, parameters, messages):
  class AddPointCoordinatesToTable (line 1774) | class AddPointCoordinatesToTable(object):
    method __init__ (line 1775) | def __init__(self):
    method getParameterInfo (line 1780) | def getParameterInfo(self):
    method updateParameters (line 1793) | def updateParameters(self, parameters):
    method updateMessages (line 1796) | def updateMessages(self, parameters):
    method execute (line 1808) | def execute(self, parameters, messages):
  class AggregateRaster (line 1823) | class AggregateRaster(object):
    method __init__ (line 1824) | def __init__(self):
    method getParameterInfo (line 1829) | def getParameterInfo(self):
    method updateParameters (line 1867) | def updateParameters(self, parameters):
    method updateMessages (line 1870) | def updateMessages(self, parameters):
    method execute (line 1882) | def execute(self, parameters, messages):
  class And (line 1900) | class And(object):
    method __init__ (line 1901) | def __init__(self):
    method getParameterInfo (line 1906) | def getParameterInfo(self):
    method updateParameters (line 1933) | def updateParameters(self, parameters):
    method updateMessages (line 1936) | def updateMessages(self, parameters):
    method execute (line 1948) | def execute(self, parameters, messages):
  class Anova (line 1968) | class Anova(object):
    method __init__ (line 1969) | def __init__(self):
    method getParameterInfo (line 1974) | def getParameterInfo(self):
    method updateParameters (line 2001) | def updateParameters(self, parameters):
    method updateMessages (line 2004) | def updateMessages(self, parameters):
    method execute (line 2016) | def execute(self, parameters, messages):
  class ArcCos (line 2036) | class ArcCos(object):
    method __init__ (line 2037) | def __init__(self):
    method getParameterInfo (line 2042) | def getParameterInfo(self):
    method updateParameters (line 2062) | def updateParameters(self, parameters):
    method updateMessages (line 2065) | def updateMessages(self, parameters):
    method execute (line 2077) | def execute(self, parameters, messages):
  class ArcSin (line 2093) | class ArcSin(object):
    method __init__ (line 2094) | def __init__(self):
    method getParameterInfo (line 2099) | def getParameterInfo(self):
    method updateParameters (line 2119) | def updateParameters(self, parameters):
    method updateMessages (line 2122) | def updateMessages(self, parameters):
    method execute (line 2134) | def execute(self, parameters, messages):
  class ArcTan (line 2150) | class ArcTan(object):
    method __init__ (line 2151) | def __init__(self):
    method getParameterInfo (line 2156) | def getParameterInfo(self):
    method updateParameters (line 2176) | def updateParameters(self, parameters):
    method updateMessages (line 2179) | def updateMessages(self, parameters):
    method execute (line 2191) | def execute(self, parameters, messages):
  class Arcosh (line 2207) | class Arcosh(object):
    method __init__ (line 2208) | def __init__(self):
    method getParameterInfo (line 2213) | def getParameterInfo(self):
    method updateParameters (line 2233) | def updateParameters(self, parameters):
    method updateMessages (line 2236) | def updateMessages(self, parameters):
    method execute (line 2248) | def execute(self, parameters, messages):
  class Arsinh (line 2264) | class Arsinh(object):
    method __init__ (line 2265) | def __init__(self):
    method getParameterInfo (line 2270) | def getParameterInfo(self):
    method updateParameters (line 2290) | def updateParameters(self, parameters):
    method updateMessages (line 2293) | def updateMessages(self, parameters):
    method execute (line 2305) | def execute(self, parameters, messages):
  class Artanh (line 2321) | class Artanh(object):
    method __init__ (line 2322) | def __init__(self):
    method getParameterInfo (line 2327) | def getParameterInfo(self):
    method updateParameters (line 2347) | def updateParameters(self, parameters):
    method updateMessages (line 2350) | def updateMessages(self, parameters):
    method execute (line 2362) | def execute(self, parameters, messages):
  class AsciiToLas (line 2378) | class AsciiToLas(object):
    method __init__ (line 2379) | def __init__(self):
    method getParameterInfo (line 2384) | def getParameterInfo(self):
    method updateParameters (line 2412) | def updateParameters(self, parameters):
    method updateMessages (line 2415) | def updateMessages(self, parameters):
    method execute (line 2427) | def execute(self, parameters, messages):
  class Aspect (line 2447) | class Aspect(object):
    method __init__ (line 2448) | def __init__(self):
    method getParameterInfo (line 2453) | def getParameterInfo(self):
    method updateParameters (line 2480) | def updateParameters(self, parameters):
    method updateMessages (line 2483) | def updateMessages(self, parameters):
    method execute (line 2495) | def execute(self, parameters, messages):
  class AssessRoute (line 2512) | class AssessRoute(object):
    method __init__ (line 2513) | def __init__(self):
    method getParameterInfo (line 2518) | def getParameterInfo(self):
    method updateParameters (line 2559) | def updateParameters(self, parameters):
    method updateMessages (line 2562) | def updateMessages(self, parameters):
    method execute (line 2574) | def execute(self, parameters, messages):
  class Atan2 (line 2596) | class Atan2(object):
    method __init__ (line 2597) | def __init__(self):
    method getParameterInfo (line 2602) | def getParameterInfo(self):
    method updateParameters (line 2629) | def updateParameters(self, parameters):
    method updateMessages (line 2632) | def updateMessages(self, parameters):
    method execute (line 2644) | def execute(self, parameters, messages):
  class AttributeCorrelation (line 2670) | class AttributeCorrelation(object):
    method __init__ (line 2671) | def __init__(self):
    method getParameterInfo (line 2676) | def getParameterInfo(self):
    method updateParameters (line 2696) | def updateParameters(self, parameters):
    method updateMessages (line 2699) | def updateMessages(self, parameters):
    method execute (line 2711) | def execute(self, parameters, messages):
  class AttributeCorrelationNeighbourhoodAnalysis (line 2727) | class AttributeCorrelationNeighbourhoodAnalysis(object):
    method __init__ (line 2728) | def __init__(self):
    method getParameterInfo (line 2733) | def getParameterInfo(self):
    method updateParameters (line 2785) | def updateParameters(self, parameters):
    method updateMessages (line 2788) | def updateMessages(self, parameters):
    method execute (line 2800) | def execute(self, parameters, messages):
  class AttributeHistogram (line 2820) | class AttributeHistogram(object):
    method __init__ (line 2821) | def __init__(self):
    method getParameterInfo (line 2826) | def getParameterInfo(self):
    method updateParameters (line 2854) | def updateParameters(self, parameters):
    method updateMessages (line 2857) | def updateMessages(self, parameters):
    method execute (line 2869) | def execute(self, parameters, messages):
  class AttributeScattergram (line 2886) | class AttributeScattergram(object):
    method __init__ (line 2887) | def __init__(self):
    method getParameterInfo (line 2892) | def getParameterInfo(self):
    method updateParameters (line 2936) | def updateParameters(self, parameters):
    method updateMessages (line 2939) | def updateMessages(self, parameters):
    method execute (line 2951) | def execute(self, parameters, messages):
  class AverageFlowpathSlope (line 2970) | class AverageFlowpathSlope(object):
    method __init__ (line 2971) | def __init__(self):
    method getParameterInfo (line 2976) | def getParameterInfo(self):
    method updateParameters (line 2996) | def updateParameters(self, parameters):
    method updateMessages (line 2999) | def updateMessages(self, parameters):
    method execute (line 3011) | def execute(self, parameters, messages):
  class AverageNormalVectorAngularDeviation (line 3027) | class AverageNormalVectorAngularDeviation(object):
    method __init__ (line 3028) | def __init__(self):
    method getParameterInfo (line 3033) | def getParameterInfo(self):
    method updateParameters (line 3061) | def updateParameters(self, parameters):
    method updateMessages (line 3064) | def updateMessages(self, parameters):
    method execute (line 3076) | def execute(self, parameters, messages):
  class AverageOverlay (line 3093) | class AverageOverlay(object):
    method __init__ (line 3094) | def __init__(self):
    method getParameterInfo (line 3099) | def getParameterInfo(self):
    method updateParameters (line 3120) | def updateParameters(self, parameters):
    method updateMessages (line 3123) | def updateMessages(self, parameters):
    method execute (line 3135) | def execute(self, parameters, messages):
  class AverageUpslopeFlowpathLength (line 3154) | class AverageUpslopeFlowpathLength(object):
    method __init__ (line 3155) | def __init__(self):
    method getParameterInfo (line 3160) | def getParameterInfo(self):
    method updateParameters (line 3180) | def updateParameters(self, parameters):
    method updateMessages (line 3183) | def updateMessages(self, parameters):
    method execute (line 3195) | def execute(self, parameters, messages):
  class BalanceContrastEnhancement (line 3211) | class BalanceContrastEnhancement(object):
    method __init__ (line 3212) | def __init__(self):
    method getParameterInfo (line 3217) | def getParameterInfo(self):
    method updateParameters (line 3245) | def updateParameters(self, parameters):
    method updateMessages (line 3248) | def updateMessages(self, parameters):
    method execute (line 3260) | def execute(self, parameters, messages):
  class Basins (line 3277) | class Basins(object):
    method __init__ (line 3278) | def __init__(self):
    method getParameterInfo (line 3283) | def getParameterInfo(self):
    method updateParameters (line 3311) | def updateParameters(self, parameters):
    method updateMessages (line 3314) | def updateMessages(self, parameters):
    method execute (line 3326) | def execute(self, parameters, messages):
  class BilateralFilter (line 3343) | class BilateralFilter(object):
    method __init__ (line 3344) | def __init__(self):
    method getParameterInfo (line 3349) | def getParameterInfo(self):
    method updateParameters (line 3385) | def updateParameters(self, parameters):
    method updateMessages (line 3388) | def updateMessages(self, parameters):
    method execute (line 3400) | def execute(self, parameters, messages):
  class BlockMaximumGridding (line 3418) | class BlockMaximumGridding(object):
    method __init__ (line 3419) | def __init__(self):
    method getParameterInfo (line 3424) | def getParameterInfo(self):
    method updateParameters (line 3475) | def updateParameters(self, parameters):
    method updateMessages (line 3478) | def updateMessages(self, parameters):
    method execute (line 3490) | def execute(self, parameters, messages):
  class BlockMinimumGridding (line 3513) | class BlockMinimumGridding(object):
    method __init__ (line 3514) | def __init__(self):
    method getParameterInfo (line 3519) | def getParameterInfo(self):
    method updateParameters (line 3570) | def updateParameters(self, parameters):
    method updateMessages (line 3573) | def updateMessages(self, parameters):
    method execute (line 3585) | def execute(self, parameters, messages):
  class BoundaryShapeComplexity (line 3608) | class BoundaryShapeComplexity(object):
    method __init__ (line 3609) | def __init__(self):
    method getParameterInfo (line 3614) | def getParameterInfo(self):
    method updateParameters (line 3634) | def updateParameters(self, parameters):
    method updateMessages (line 3637) | def updateMessages(self, parameters):
    method execute (line 3649) | def execute(self, parameters, messages):
  class BreachDepressions (line 3665) | class BreachDepressions(object):
    method __init__ (line 3666) | def __init__(self):
    method getParameterInfo (line 3671) | def getParameterInfo(self):
    method updateParameters (line 3720) | def updateParameters(self, parameters):
    method updateMessages (line 3723) | def updateMessages(self, parameters):
    method execute (line 3735) | def execute(self, parameters, messages):
  class BreachDepressionsLeastCost (line 3755) | class BreachDepressionsLeastCost(object):
    method __init__ (line 3756) | def __init__(self):
    method getParameterInfo (line 3761) | def getParameterInfo(self):
    method updateParameters (line 3818) | def updateParameters(self, parameters):
    method updateMessages (line 3821) | def updateMessages(self, parameters):
    method execute (line 3833) | def execute(self, parameters, messages):
  class BreachSingleCellPits (line 3854) | class BreachSingleCellPits(object):
    method __init__ (line 3855) | def __init__(self):
    method getParameterInfo (line 3860) | def getParameterInfo(self):
    method updateParameters (line 3880) | def updateParameters(self, parameters):
    method updateMessages (line 3883) | def updateMessages(self, parameters):
    method execute (line 3895) | def execute(self, parameters, messages):
  class BreaklineMapping (line 3911) | class BreaklineMapping(object):
    method __init__ (line 3912) | def __init__(self):
    method getParameterInfo (line 3917) | def getParameterInfo(self):
    method updateParameters (line 3952) | def updateParameters(self, parameters):
    method updateMessages (line 3955) | def updateMessages(self, parameters):
    method execute (line 3967) | def execute(self, parameters, messages):
  class BufferRaster (line 3985) | class BufferRaster(object):
    method __init__ (line 3986) | def __init__(self):
    method getParameterInfo (line 3991) | def getParameterInfo(self):
    method updateParameters (line 4025) | def updateParameters(self, parameters):
    method updateMessages (line 4028) | def updateMessages(self, parameters):
    method execute (line 4040) | def execute(self, parameters, messages):
  class BurnStreamsAtRoads (line 4058) | class BurnStreamsAtRoads(object):
    method __init__ (line 4059) | def __init__(self):
    method getParameterInfo (line 4064) | def getParameterInfo(self):
    method updateParameters (line 4107) | def updateParameters(self, parameters):
    method updateMessages (line 4110) | def updateMessages(self, parameters):
    method execute (line 4122) | def execute(self, parameters, messages):
  class CannyEdgeDetection (line 4147) | class CannyEdgeDetection(object):
    method __init__ (line 4148) | def __init__(self):
    method getParameterInfo (line 4153) | def getParameterInfo(self):
    method updateParameters (line 4205) | def updateParameters(self, parameters):
    method updateMessages (line 4208) | def updateMessages(self, parameters):
    method execute (line 4220) | def execute(self, parameters, messages):
  class Ceil (line 4240) | class Ceil(object):
    method __init__ (line 4241) | def __init__(self):
    method getParameterInfo (line 4246) | def getParameterInfo(self):
    method updateParameters (line 4266) | def updateParameters(self, parameters):
    method updateMessages (line 4269) | def updateMessages(self, parameters):
    method execute (line 4281) | def execute(self, parameters, messages):
  class Centroid (line 4297) | class Centroid(object):
    method __init__ (line 4298) | def __init__(self):
    method getParameterInfo (line 4303) | def getParameterInfo(self):
    method updateParameters (line 4330) | def updateParameters(self, parameters):
    method updateMessages (line 4333) | def updateMessages(self, parameters):
    method execute (line 4345) | def execute(self, parameters, messages):
  class CentroidVector (line 4362) | class CentroidVector(object):
    method __init__ (line 4363) | def __init__(self):
    method getParameterInfo (line 4368) | def getParameterInfo(self):
    method updateParameters (line 4387) | def updateParameters(self, parameters):
    method updateMessages (line 4390) | def updateMessages(self, parameters):
    method execute (line 4402) | def execute(self, parameters, messages):
  class ChangeVectorAnalysis (line 4418) | class ChangeVectorAnalysis(object):
    method __init__ (line 4419) | def __init__(self):
    method getParameterInfo (line 4424) | def getParameterInfo(self):
    method updateParameters (line 4461) | def updateParameters(self, parameters):
    method updateMessages (line 4464) | def updateMessages(self, parameters):
    method execute (line 4476) | def execute(self, parameters, messages):
  class CircularVarianceOfAspect (line 4503) | class CircularVarianceOfAspect(object):
    method __init__ (line 4504) | def __init__(self):
    method getParameterInfo (line 4509) | def getParameterInfo(self):
    method updateParameters (line 4537) | def updateParameters(self, parameters):
    method updateMessages (line 4540) | def updateMessages(self, parameters):
    method execute (line 4552) | def execute(self, parameters, messages):
  class ClassifyBuildingsInLidar (line 4569) | class ClassifyBuildingsInLidar(object):
    method __init__ (line 4570) | def __init__(self):
    method getParameterInfo (line 4575) | def getParameterInfo(self):
    method updateParameters (line 4603) | def updateParameters(self, parameters):
    method updateMessages (line 4606) | def updateMessages(self, parameters):
    method execute (line 4618) | def execute(self, parameters, messages):
  class ClassifyLidar (line 4635) | class ClassifyLidar(object):
    method __init__ (line 4636) | def __init__(self):
    method getParameterInfo (line 4641) | def getParameterInfo(self):
    method updateParameters (line 4717) | def updateParameters(self, parameters):
    method updateMessages (line 4720) | def updateMessages(self, parameters):
    method execute (line 4732) | def execute(self, parameters, messages):
  class ClassifyOverlapPoints (line 4752) | class ClassifyOverlapPoints(object):
    method __init__ (line 4753) | def __init__(self):
    method getParameterInfo (line 4758) | def getParameterInfo(self):
    method updateParameters (line 4804) | def updateParameters(self, parameters):
    method updateMessages (line 4807) | def updateMessages(self, parameters):
    method execute (line 4819) | def execute(self, parameters, messages):
  class CleanVector (line 4835) | class CleanVector(object):
    method __init__ (line 4836) | def __init__(self):
    method getParameterInfo (line 4841) | def getParameterInfo(self):
    method updateParameters (line 4860) | def updateParameters(self, parameters):
    method updateMessages (line 4863) | def updateMessages(self, parameters):
    method execute (line 4875) | def execute(self, parameters, messages):
  class Clip (line 4891) | class Clip(object):
    method __init__ (line 4892) | def __init__(self):
    method getParameterInfo (line 4897) | def getParameterInfo(self):
    method updateParameters (line 4924) | def updateParameters(self, parameters):
    method updateMessages (line 4927) | def updateMessages(self, parameters):
    method execute (line 4939) | def execute(self, parameters, messages):
  class ClipLidarToPolygon (line 4959) | class ClipLidarToPolygon(object):
    method __init__ (line 4960) | def __init__(self):
    method getParameterInfo (line 4965) | def getParameterInfo(self):
    method updateParameters (line 4993) | def updateParameters(self, parameters):
    method updateMessages (line 4996) | def updateMessages(self, parameters):
    method execute (line 5008) | def execute(self, parameters, messages):
  class ClipRasterToPolygon (line 5025) | class ClipRasterToPolygon(object):
    method __init__ (line 5026) | def __init__(self):
    method getParameterInfo (line 5031) | def getParameterInfo(self):
    method updateParameters (line 5067) | def updateParameters(self, parameters):
    method updateMessages (line 5070) | def updateMessages(self, parameters):
    method execute (line 5082) | def execute(self, parameters, messages):
  class Closing (line 5103) | class Closing(object):
    method __init__ (line 5104) | def __init__(self):
    method getParameterInfo (line 5109) | def getParameterInfo(self):
    method updateParameters (line 5145) | def updateParameters(self, parameters):
    method updateMessages (line 5148) | def updateMessages(self, parameters):
    method execute (line 5160) | def execute(self, parameters, messages):
  class Clump (line 5178) | class Clump(object):
    method __init__ (line 5179) | def __init__(self):
    method getParameterInfo (line 5184) | def getParameterInfo(self):
    method updateParameters (line 5219) | def updateParameters(self, parameters):
    method updateMessages (line 5222) | def updateMessages(self, parameters):
    method execute (line 5234) | def execute(self, parameters, messages):
  class ColourizeBasedOnClass (line 5252) | class ColourizeBasedOnClass(object):
    method __init__ (line 5253) | def __init__(self):
    method getParameterInfo (line 5258) | def getParameterInfo(self):
    method updateParameters (line 5306) | def updateParameters(self, parameters):
    method updateMessages (line 5309) | def updateMessages(self, parameters):
    method execute (line 5321) | def execute(self, parameters, messages):
  class ColourizeBasedOnPointReturns (line 5338) | class ColourizeBasedOnPointReturns(object):
    method __init__ (line 5339) | def __init__(self):
    method getParameterInfo (line 5344) | def getParameterInfo(self):
    method updateParameters (line 5404) | def updateParameters(self, parameters):
    method updateMessages (line 5407) | def updateMessages(self, parameters):
    method execute (line 5419) | def execute(self, parameters, messages):
  class CompactnessRatio (line 5437) | class CompactnessRatio(object):
    method __init__ (line 5438) | def __init__(self):
    method getParameterInfo (line 5443) | def getParameterInfo(self):
    method updateParameters (line 5456) | def updateParameters(self, parameters):
    method updateMessages (line 5459) | def updateMessages(self, parameters):
    method execute (line 5471) | def execute(self, parameters, messages):
  class ConditionalEvaluation (line 5486) | class ConditionalEvaluation(object):
    method __init__ (line 5487) | def __init__(self):
    method getParameterInfo (line 5492) | def getParameterInfo(self):
    method updateParameters (line 5532) | def updateParameters(self, parameters):
    method updateMessages (line 5535) | def updateMessages(self, parameters):
    method execute (line 5547) | def execute(self, parameters, messages):
  class ConditionedLatinHypercube (line 5578) | class ConditionedLatinHypercube(object):
    method __init__ (line 5579) | def __init__(self):
    method getParameterInfo (line 5584) | def getParameterInfo(self):
    method updateParameters (line 5674) | def updateParameters(self, parameters):
    method updateMessages (line 5677) | def updateMessages(self, parameters):
    method execute (line 5689) | def execute(self, parameters, messages):
  class ConservativeSmoothingFilter (line 5717) | class ConservativeSmoothingFilter(object):
    method __init__ (line 5718) | def __init__(self):
    method getParameterInfo (line 5723) | def getParameterInfo(self):
    method updateParameters (line 5759) | def updateParameters(self, parameters):
    method updateMessages (line 5762) | def updateMessages(self, parameters):
    method execute (line 5774) | def execute(self, parameters, messages):
  class ConstructVectorTin (line 5792) | class ConstructVectorTin(object):
    method __init__ (line 5793) | def __init__(self):
    method getParameterInfo (line 5798) | def getParameterInfo(self):
    method updateParameters (line 5841) | def updateParameters(self, parameters):
    method updateMessages (line 5844) | def updateMessages(self, parameters):
    method execute (line 5856) | def execute(self, parameters, messages):
  class ContoursFromPoints (line 5875) | class ContoursFromPoints(object):
    method __init__ (line 5876) | def __init__(self):
    method getParameterInfo (line 5881) | def getParameterInfo(self):
    method updateParameters (line 5948) | def updateParameters(self, parameters):
    method updateMessages (line 5951) | def updateMessages(self, parameters):
    method execute (line 5963) | def execute(self, parameters, messages):
  class ContoursFromRaster (line 5985) | class ContoursFromRaster(object):
    method __init__ (line 5986) | def __init__(self):
    method getParameterInfo (line 5991) | def getParameterInfo(self):
    method updateParameters (line 6042) | def updateParameters(self, parameters):
    method updateMessages (line 6045) | def updateMessages(self, parameters):
    method execute (line 6057) | def execute(self, parameters, messages):
  class ConvertNodataToZero (line 6077) | class ConvertNodataToZero(object):
    method __init__ (line 6078) | def __init__(self):
    method getParameterInfo (line 6083) | def getParameterInfo(self):
    method updateParameters (line 6103) | def updateParameters(self, parameters):
    method updateMessages (line 6106) | def updateMessages(self, parameters):
    method execute (line 6118) | def execute(self, parameters, messages):
  class ConvertRasterFormat (line 6134) | class ConvertRasterFormat(object):
    method __init__ (line 6135) | def __init__(self):
    method getParameterInfo (line 6140) | def getParameterInfo(self):
    method updateParameters (line 6160) | def updateParameters(self, parameters):
    method updateMessages (line 6163) | def updateMessages(self, parameters):
    method execute (line 6175) | def execute(self, parameters, messages):
  class CornerDetection (line 6191) | class CornerDetection(object):
    method __init__ (line 6192) | def __init__(self):
    method getParameterInfo (line 6197) | def getParameterInfo(self):
    method updateParameters (line 6217) | def updateParameters(self, parameters):
    method updateMessages (line 6220) | def updateMessages(self, parameters):
    method execute (line 6232) | def execute(self, parameters, messages):
  class CorrectVignetting (line 6248) | class CorrectVignetting(object):
    method __init__ (line 6249) | def __init__(self):
    method getParameterInfo (line 6254) | def getParameterInfo(self):
    method updateParameters (line 6306) | def updateParameters(self, parameters):
    method updateMessages (line 6309) | def updateMessages(self, parameters):
    method execute (line 6321) | def execute(self, parameters, messages):
  class Cos (line 6344) | class Cos(object):
    method __init__ (line 6345) | def __init__(self):
    method getParameterInfo (line 6350) | def getParameterInfo(self):
    method updateParameters (line 6370) | def updateParameters(self, parameters):
    method updateMessages (line 6373) | def updateMessages(self, parameters):
    method execute (line 6385) | def execute(self, parameters, messages):
  class Cosh (line 6401) | class Cosh(object):
    method __init__ (line 6402) | def __init__(self):
    method getParameterInfo (line 6407) | def getParameterInfo(self):
    method updateParameters (line 6427) | def updateParameters(self, parameters):
    method updateMessages (line 6430) | def updateMessages(self, parameters):
    method execute (line 6442) | def execute(self, parameters, messages):
  class CostAllocation (line 6458) | class CostAllocation(object):
    method __init__ (line 6459) | def __init__(self):
    method getParameterInfo (line 6464) | def getParameterInfo(self):
    method updateParameters (line 6491) | def updateParameters(self, parameters):
    method updateMessages (line 6494) | def updateMessages(self, parameters):
    method execute (line 6506) | def execute(self, parameters, messages):
  class CostDistance (line 6526) | class CostDistance(object):
    method __init__ (line 6527) | def __init__(self):
    method getParameterInfo (line 6532) | def getParameterInfo(self):
    method updateParameters (line 6567) | def updateParameters(self, parameters):
    method updateMessages (line 6570) | def updateMessages(self, parameters):
    method execute (line 6582) | def execute(self, parameters, messages):
  class CostPathway (line 6603) | class CostPathway(object):
    method __init__ (line 6604) | def __init__(self):
    method getParameterInfo (line 6609) | def getParameterInfo(self):
    method updateParameters (line 6643) | def updateParameters(self, parameters):
    method updateMessages (line 6646) | def updateMessages(self, parameters):
    method execute (line 6658) | def execute(self, parameters, messages):
  class CountIf (line 6679) | class CountIf(object):
    method __init__ (line 6680) | def __init__(self):
    method getParameterInfo (line 6685) | def getParameterInfo(self):
    method updateParameters (line 6713) | def updateParameters(self, parameters):
    method updateMessages (line 6716) | def updateMessages(self, parameters):
    method execute (line 6728) | def execute(self, parameters, messages):
  class CreateColourComposite (line 6748) | class CreateColourComposite(object):
    method __init__ (line 6749) | def __init__(self):
    method getParameterInfo (line 6754) | def getParameterInfo(self):
    method updateParameters (line 6811) | def updateParameters(self, parameters):
    method updateMessages (line 6814) | def updateMessages(self, parameters):
    method execute (line 6826) | def execute(self, parameters, messages):
  class CreateHexagonalVectorGrid (line 6856) | class CreateHexagonalVectorGrid(object):
    method __init__ (line 6857) | def __init__(self):
    method getParameterInfo (line 6862) | def getParameterInfo(self):
    method updateParameters (line 6898) | def updateParameters(self, parameters):
    method updateMessages (line 6901) | def updateMessages(self, parameters):
    method execute (line 6913) | def execute(self, parameters, messages):
  class CreatePlane (line 6928) | class CreatePlane(object):
    method __init__ (line 6929) | def __init__(self):
    method getParameterInfo (line 6934) | def getParameterInfo(self):
    method updateParameters (line 6978) | def updateParameters(self, parameters):
    method updateMessages (line 6981) | def updateMessages(self, parameters):
    method execute (line 6993) | def execute(self, parameters, messages):
  class CreateRectangularVectorGrid (line 7012) | class CreateRectangularVectorGrid(object):
    method __init__ (line 7013) | def __init__(self):
    method getParameterInfo (line 7018) | def getParameterInfo(self):
    method updateParameters (line 7067) | def updateParameters(self, parameters):
    method updateMessages (line 7070) | def updateMessages(self, parameters):
    method execute (line 7082) | def execute(self, parameters, messages):
  class CrispnessIndex (line 7099) | class CrispnessIndex(object):
    method __init__ (line 7100) | def __init__(self):
    method getParameterInfo (line 7105) | def getParameterInfo(self):
    method updateParameters (line 7125) | def updateParameters(self, parameters):
    method updateMessages (line 7128) | def updateMessages(self, parameters):
    method execute (line 7140) | def execute(self, parameters, messages):
  class CrossTabulation (line 7156) | class CrossTabulation(object):
    method __init__ (line 7157) | def __init__(self):
    method getParameterInfo (line 7162) | def getParameterInfo(self):
    method updateParameters (line 7189) | def updateParameters(self, parameters):
    method updateMessages (line 7192) | def updateMessages(self, parameters):
    method execute (line 7204) | def execute(self, parameters, messages):
  class CsvPointsToVector (line 7224) | class CsvPointsToVector(object):
    method __init__ (line 7225) | def __init__(self):
    method getParameterInfo (line 7230) | def getParameterInfo(self):
    method updateParameters (line 7273) | def updateParameters(self, parameters):
    method updateMessages (line 7276) | def updateMessages(self, parameters):
    method execute (line 7288) | def execute(self, parameters, messages):
  class CumulativeDistribution (line 7304) | class CumulativeDistribution(object):
    method __init__ (line 7305) | def __init__(self):
    method getParameterInfo (line 7310) | def getParameterInfo(self):
    method updateParameters (line 7330) | def updateParameters(self, parameters):
    method updateMessages (line 7333) | def updateMessages(self, parameters):
    method execute (line 7345) | def execute(self, parameters, messages):
  class Curvedness (line 7361) | class Curvedness(object):
    method __init__ (line 7362) | def __init__(self):
    method getParameterInfo (line 7367) | def getParameterInfo(self):
    method updateParameters (line 7403) | def updateParameters(self, parameters):
    method updateMessages (line 7406) | def updateMessages(self, parameters):
    method execute (line 7418) | def execute(self, parameters, messages):
  class D8FlowAccumulation (line 7436) | class D8FlowAccumulation(object):
    method __init__ (line 7437) | def __init__(self):
    method getParameterInfo (line 7442) | def getParameterInfo(self):
    method updateParameters (line 7501) | def updateParameters(self, parameters):
    method updateMessages (line 7504) | def updateMessages(self, parameters):
    method execute (line 7516) | def execute(self, parameters, messages):
  class D8MassFlux (line 7537) | class D8MassFlux(object):
    method __init__ (line 7538) | def __init__(self):
    method getParameterInfo (line 7543) | def getParameterInfo(self):
    method updateParameters (line 7584) | def updateParameters(self, parameters):
    method updateMessages (line 7587) | def updateMessages(self, parameters):
    method execute (line 7599) | def execute(self, parameters, messages):
  class D8Pointer (line 7627) | class D8Pointer(object):
    method __init__ (line 7628) | def __init__(self):
    method getParameterInfo (line 7633) | def getParameterInfo(self):
    method updateParameters (line 7661) | def updateParameters(self, parameters):
    method updateMessages (line 7664) | def updateMessages(self, parameters):
    method execute (line 7676) | def execute(self, parameters, messages):
  class DInfFlowAccumulation (line 7693) | class DInfFlowAccumulation(object):
    method __init__ (line 7694) | def __init__(self):
    method getParameterInfo (line 7699) | def getParameterInfo(self):
    method updateParameters (line 7757) | def updateParameters(self, parameters):
    method updateMessages (line 7760) | def updateMessages(self, parameters):
    method execute (line 7772) | def execute(self, parameters, messages):
  class DInfMassFlux (line 7793) | class DInfMassFlux(object):
    method __init__ (line 7794) | def __init__(self):
    method getParameterInfo (line 7799) | def getParameterInfo(self):
    method updateParameters (line 7840) | def updateParameters(self, parameters):
    method updateMessages (line 7843) | def updateMessages(self, parameters):
    method execute (line 7855) | def execute(self, parameters, messages):
  class DInfPointer (line 7883) | class DInfPointer(object):
    method __init__ (line 7884) | def __init__(self):
    method getParameterInfo (line 7889) | def getParameterInfo(self):
    method updateParameters (line 7909) | def updateParameters(self, parameters):
    method updateMessages (line 7912) | def updateMessages(self, parameters):
    method execute (line 7924) | def execute(self, parameters, messages):
  class Dbscan (line 7940) | class Dbscan(object):
    method __init__ (line 7941) | def __init__(self):
    method getParameterInfo (line 7946) | def getParameterInfo(self):
    method updateParameters (line 7993) | def updateParameters(self, parameters):
    method updateMessages (line 7996) | def updateMessages(self, parameters):
    method execute (line 8008) | def execute(self, parameters, messages):
  class Decrement (line 8030) | class Decrement(object):
    method __init__ (line 8031) | def __init__(self):
    method getParameterInfo (line 8036) | def getParameterInfo(self):
    method updateParameters (line 8056) | def updateParameters(self, parameters):
    method updateMessages (line 8059) | def updateMessages(self, parameters):
    method execute (line 8071) | def execute(self, parameters, messages):
  class DemVoidFilling (line 8087) | class DemVoidFilling(object):
    method __init__ (line 8088) | def __init__(self):
    method getParameterInfo (line 8093) | def getParameterInfo(self):
    method updateParameters (line 8146) | def updateParameters(self, parameters):
    method updateMessages (line 8149) | def updateMessages(self, parameters):
    method execute (line 8161) | def execute(self, parameters, messages):
  class DepthInSink (line 8184) | class DepthInSink(object):
    method __init__ (line 8185) | def __init__(self):
    method getParameterInfo (line 8190) | def getParameterInfo(self):
    method updateParameters (line 8217) | def updateParameters(self, parameters):
    method updateMessages (line 8220) | def updateMessages(self, parameters):
    method execute (line 8232) | def execute(self, parameters, messages):
  class DepthToWater (line 8249) | class DepthToWater(object):
    method __init__ (line 8250) | def __init__(self):
    method getParameterInfo (line 8255) | def getParameterInfo(self):
    method updateParameters (line 8291) | def updateParameters(self, parameters):
    method updateMessages (line 8294) | def updateMessages(self, parameters):
    method execute (line 8306) | def execute(self, parameters, messages):
  class DevFromMeanElev (line 8330) | class DevFromMeanElev(object):
    method __init__ (line 8331) | def __init__(self):
    method getParameterInfo (line 8336) | def getParameterInfo(self):
    method updateParameters (line 8372) | def updateParameters(self, parameters):
    method updateMessages (line 8375) | def updateMessages(self, parameters):
    method execute (line 8387) | def execute(self, parameters, messages):
  class DiffFromMeanElev (line 8405) | class DiffFromMeanElev(object):
    method __init__ (line 8406) | def __init__(self):
    method getParameterInfo (line 8411) | def getParameterInfo(self):
    method updateParameters (line 8447) | def updateParameters(self, parameters):
    method updateMessages (line 8450) | def updateMessages(self, parameters):
    method execute (line 8462) | def execute(self, parameters, messages):
  class DiffOfGaussianFilter (line 8480) | class DiffOfGaussianFilter(object):
    method __init__ (line 8481) | def __init__(self):
    method getParameterInfo (line 8486) | def getParameterInfo(self):
    method updateParameters (line 8522) | def updateParameters(self, parameters):
    method updateMessages (line 8525) | def updateMessages(self, parameters):
    method execute (line 8537) | def execute(self, parameters, messages):
  class Difference (line 8555) | class Difference(object):
    method __init__ (line 8556) | def __init__(self):
    method getParameterInfo (line 8561) | def getParameterInfo(self):
    method updateParameters (line 8587) | def updateParameters(self, parameters):
    method updateMessages (line 8590) | def updateMessages(self, parameters):
    method execute (line 8602) | def execute(self, parameters, messages):
  class DifferenceCurvature (line 8622) | class DifferenceCurvature(object):
    method __init__ (line 8623) | def __init__(self):
    method getParameterInfo (line 8628) | def getParameterInfo(self):
    method updateParameters (line 8664) | def updateParameters(self, parameters):
    method updateMessages (line 8667) | def updateMessages(self, parameters):
    method execute (line 8679) | def execute(self, parameters, messages):
  class DirectDecorrelationStretch (line 8697) | class DirectDecorrelationStretch(object):
    method __init__ (line 8698) | def __init__(self):
    method getParameterInfo (line 8703) | def getParameterInfo(self):
    method updateParameters (line 8739) | def updateParameters(self, parameters):
    method updateMessages (line 8742) | def updateMessages(self, parameters):
    method execute (line 8754) | def execute(self, parameters, messages):
  class DirectionalRelief (line 8772) | class DirectionalRelief(object):
    method __init__ (line 8773) | def __init__(self):
    method getParameterInfo (line 8778) | def getParameterInfo(self):
    method updateParameters (line 8813) | def updateParameters(self, parameters):
    method updateMessages (line 8816) | def updateMessages(self, parameters):
    method execute (line 8828) | def execute(self, parameters, messages):
  class Dissolve (line 8846) | class Dissolve(object):
    method __init__ (line 8847) | def __init__(self):
    method getParameterInfo (line 8852) | def getParameterInfo(self):
    method updateParameters (line 8888) | def updateParameters(self, parameters):
    method updateMessages (line 8891) | def updateMessages(self, parameters):
    method execute (line 8903) | def execute(self, parameters, messages):
  class DistanceToOutlet (line 8921) | class DistanceToOutlet(object):
    method __init__ (line 8922) | def __init__(self):
    method getParameterInfo (line 8927) | def getParameterInfo(self):
    method updateParameters (line 8969) | def updateParameters(self, parameters):
    method updateMessages (line 8972) | def updateMessages(self, parameters):
    method execute (line 8984) | def execute(self, parameters, messages):
  class DiversityFilter (line 9006) | class DiversityFilter(object):
    method __init__ (line 9007) | def __init__(self):
    method getParameterInfo (line 9012) | def getParameterInfo(self):
    method updateParameters (line 9048) | def updateParameters(self, parameters):
    method updateMessages (line 9051) | def updateMessages(self, parameters):
    method execute (line 9063) | def execute(self, parameters, messages):
  class Divide (line 9081) | class Divide(object):
    method __init__ (line 9082) | def __init__(self):
    method getParameterInfo (line 9087) | def getParameterInfo(self):
    method updateParameters (line 9114) | def updateParameters(self, parameters):
    method updateMessages (line 9117) | def updateMessages(self, parameters):
    method execute (line 9129) | def execute(self, parameters, messages):
  class DownslopeDistanceToStream (line 9155) | class DownslopeDistanceToStream(object):
    method __init__ (line 9156) | def __init__(self):
    method getParameterInfo (line 9161) | def getParameterInfo(self):
    method updateParameters (line 9196) | def updateParameters(self, parameters):
    method updateMessages (line 9199) | def updateMessages(self, parameters):
    method execute (line 9211) | def execute(self, parameters, messages):
  class DownslopeFlowpathLength (line 9232) | class DownslopeFlowpathLength(object):
    method __init__ (line 9233) | def __init__(self):
    method getParameterInfo (line 9238) | def getParameterInfo(self):
    method updateParameters (line 9280) | def updateParameters(self, parameters):
    method updateMessages (line 9283) | def updateMessages(self, parameters):
    method execute (line 9295) | def execute(self, parameters, messages):
  class DownslopeIndex (line 9320) | class DownslopeIndex(object):
    method __init__ (line 9321) | def __init__(self):
    method getParameterInfo (line 9326) | def getParameterInfo(self):
    method updateParameters (line 9364) | def updateParameters(self, parameters):
    method updateMessages (line 9367) | def updateMessages(self, parameters):
    method execute (line 9379) | def execute(self, parameters, messages):
  class EdgeContamination (line 9397) | class EdgeContamination(object):
    method __init__ (line 9398) | def __init__(self):
    method getParameterInfo (line 9403) | def getParameterInfo(self):
    method updateParameters (line 9439) | def updateParameters(self, parameters):
    method updateMessages (line 9442) | def updateMessages(self, parameters):
    method execute (line 9454) | def execute(self, parameters, messages):
  class EdgeDensity (line 9472) | class EdgeDensity(object):
    method __init__ (line 9473) | def __init__(self):
    method getParameterInfo (line 9478) | def getParameterInfo(self):
    method updateParameters (line 9521) | def updateParameters(self, parameters):
    method updateMessages (line 9524) | def updateMessages(self, parameters):
    method execute (line 9536) | def execute(self, parameters, messages):
  class EdgePreservingMeanFilter (line 9555) | class EdgePreservingMeanFilter(object):
    method __init__ (line 9556) | def __init__(self):
    method getParameterInfo (line 9561) | def getParameterInfo(self):
    method updateParameters (line 9596) | def updateParameters(self, parameters):
    method updateMessages (line 9599) | def updateMessages(self, parameters):
    method execute (line 9611) | def execute(self, parameters, messages):
  class EdgeProportion (line 9629) | class EdgeProportion(object):
    method __init__ (line 9630) | def __init__(self):
    method getParameterInfo (line 9635) | def getParameterInfo(self):
    method updateParameters (line 9662) | def updateParameters(self, parameters):
    method updateMessages (line 9665) | def updateMessages(self, parameters):
    method execute (line 9677) | def execute(self, parameters, messages):
  class ElevAbovePit (line 9694) | class ElevAbovePit(object):
    method __init__ (line 9695) | def __init__(self):
    method getParameterInfo (line 9700) | def getParameterInfo(self):
    method updateParameters (line 9720) | def updateParameters(self, parameters):
    method updateMessages (line 9723) | def updateMessages(self, parameters):
    method execute (line 9735) | def execute(self, parameters, messages):
  class ElevPercentile (line 9751) | class ElevPercentile(object):
    method __init__ (line 9752) | def __init__(self):
    method getParameterInfo (line 9757) | def getParameterInfo(self):
    method updateParameters (line 9801) | def updateParameters(self, parameters):
    method updateMessages (line 9804) | def updateMessages(self, parameters):
    method execute (line 9816) | def execute(self, parameters, messages):
  class ElevRelativeToMinMax (line 9835) | class ElevRelativeToMinMax(object):
    method __init__ (line 9836) | def __init__(self):
    method getParameterInfo (line 9841) | def getParameterInfo(self):
    method updateParameters (line 9861) | def updateParameters(self, parameters):
    method updateMessages (line 9864) | def updateMessages(self, parameters):
    method execute (line 9876) | def execute(self, parameters, messages):
  class ElevRelativeToWatershedMinMax (line 9892) | class ElevRelativeToWatershedMinMax(object):
    method __init__ (line 9893) | def __init__(self):
    method getParameterInfo (line 9898) | def getParameterInfo(self):
    method updateParameters (line 9925) | def updateParameters(self, parameters):
    method updateMessages (line 9928) | def updateMessages(self, parameters):
    method execute (line 9940) | def execute(self, parameters, messages):
  class ElevationAboveStream (line 9960) | class ElevationAboveStream(object):
    method __init__ (line 9961) | def __init__(self):
    method getParameterInfo (line 9966) | def getParameterInfo(self):
    method updateParameters (line 9993) | def updateParameters(self, parameters):
    method updateMessages (line 9996) | def updateMessages(self, parameters):
    method execute (line 10008) | def execute(self, parameters, messages):
  class ElevationAboveStreamEuclidean (line 10028) | class ElevationAboveStreamEuclidean(object):
    method __init__ (line 10029) | def __init__(self):
    method getParameterInfo (line 10034) | def getParameterInfo(self):
    method updateParameters (line 10061) | def updateParameters(self, parameters):
    method updateMessages (line 10064) | def updateMessages(self, parameters):
    method execute (line 10076) | def execute(self, parameters, messages):
  class EliminateCoincidentPoints (line 10096) | class EliminateCoincidentPoints(object):
    method __init__ (line 10097) | def __init__(self):
    method getParameterInfo (line 10102) | def getParameterInfo(self):
    method updateParameters (line 10129) | def updateParameters(self, parameters):
    method updateMessages (line 10132) | def updateMessages(self, parameters):
    method execute (line 10144) | def execute(self, parameters, messages):
  class ElongationRatio (line 10161) | class ElongationRatio(object):
    method __init__ (line 10162) | def __init__(self):
    method getParameterInfo (line 10167) | def getParameterInfo(self):
    method updateParameters (line 10180) | def updateParameters(self, parameters):
    method updateMessages (line 10183) | def updateMessages(self, parameters):
    method execute (line 10195) | def execute(self, parameters, messages):
  class EmbankmentMapping (line 10210) | class EmbankmentMapping(object):
    method __init__ (line 10211) | def __init__(self):
    method getParameterInfo (line 10216) | def getParameterInfo(self):
    method updateParameters (line 10308) | def updateParameters(self, parameters):
    method updateMessages (line 10311) | def updateMessages(self, parameters):
    method execute (line 10323) | def execute(self, parameters, messages):
  class EmbossFilter (line 10351) | class EmbossFilter(object):
    method __init__ (line 10352) | def __init__(self):
    method getParameterInfo (line 10357) | def getParameterInfo(self):
    method updateParameters (line 10395) | def updateParameters(self, parameters):
    method updateMessages (line 10398) | def updateMessages(self, parameters):
    method execute (line 10410) | def execute(self, parameters, messages):
  class EqualTo (line 10428) | class EqualTo(object):
    method __init__ (line 10429) | def __init__(self):
    method getParameterInfo (line 10434) | def getParameterInfo(self):
    method updateParameters (line 10461) | def updateParameters(self, parameters):
    method updateMessages (line 10464) | def updateMessages(self, parameters):
    method execute (line 10476) | def execute(self, parameters, messages):
  class Erase (line 10502) | class Erase(object):
    method __init__ (line 10503) | def __init__(self):
    method getParameterInfo (line 10508) | def getParameterInfo(self):
    method updateParameters (line 10535) | def updateParameters(self, parameters):
    method updateMessages (line 10538) | def updateMessages(self, parameters):
    method execute (line 10550) | def execute(self, parameters, messages):
  class ErasePolygonFromLidar (line 10570) | class ErasePolygonFromLidar(object):
    method __init__ (line 10571) | def __init__(self):
    method getParameterInfo (line 10576) | def getParameterInfo(self):
    method updateParameters (line 10604) | def updateParameters(self, parameters):
    method updateMessages (line 10607) | def updateMessages(self, parameters):
    method execute (line 10619) | def execute(self, parameters, messages):
  class ErasePolygonFromRaster (line 10636) | class ErasePolygonFromRaster(object):
    method __init__ (line 10637) | def __init__(self):
    method getParameterInfo (line 10642) | def getParameterInfo(self):
    method updateParameters (line 10670) | def updateParameters(self, parameters):
    method updateMessages (line 10673) | def updateMessages(self, parameters):
    method execute (line 10685) | def execute(self, parameters, messages):
  class EuclideanAllocation (line 10705) | class EuclideanAllocation(object):
    method __init__ (line 10706) | def __init__(self):
    method getParameterInfo (line 10711) | def getParameterInfo(self):
    method updateParameters (line 10731) | def updateParameters(self, parameters):
    method updateMessages (line 10734) | def updateMessages(self, parameters):
    method execute (line 10746) | def execute(self, parameters, messages):
  class EuclideanDistance (line 10762) | class EuclideanDistance(object):
    method __init__ (line 10763) | def __init__(self):
    method getParameterInfo (line 10768) | def getParameterInfo(self):
    method updateParameters (line 10788) | def updateParameters(self, parameters):
    method updateMessages (line 10791) | def updateMessages(self, parameters):
    method execute (line 10803) | def execute(self, parameters, messages):
  class EvaluateTrainingSites (line 10819) | class EvaluateTrainingSites(object):
    method __init__ (line 10820) | def __init__(self):
    method getParameterInfo (line 10825) | def getParameterInfo(self):
    method updateParameters (line 10862) | def updateParameters(self, parameters):
    method updateMessages (line 10865) | def updateMessages(self, parameters):
    method execute (line 10877) | def execute(self, parameters, messages):
  class Exp (line 10901) | class Exp(object):
    method __init__ (line 10902) | def __init__(self):
    method getParameterInfo (line 10907) | def getParameterInfo(self):
    method updateParameters (line 10927) | def updateParameters(self, parameters):
    method updateMessages (line 10930) | def updateMessages(self, parameters):
    method execute (line 10942) | def execute(self, parameters, messages):
  class Exp2 (line 10958) | class Exp2(object):
    method __init__ (line 10959) | def __init__(self):
    method getParameterInfo (line 10964) | def getParameterInfo(self):
    method updateParameters (line 10984) | def updateParameters(self, parameters):
    method updateMessages (line 10987) | def updateMessages(self, parameters):
    method execute (line 10999) | def execute(self, parameters, messages):
  class ExportTableToCsv (line 11015) | class ExportTableToCsv(object):
    method __init__ (line 11016) | def __init__(self):
    method getParameterInfo (line 11021) | def getParameterInfo(self):
    method updateParameters (line 11049) | def updateParameters(self, parameters):
    method updateMessages (line 11052) | def updateMessages(self, parameters):
    method execute (line 11064) | def execute(self, parameters, messages):
  class ExposureTowardsWindFlux (line 11081) | class ExposureTowardsWindFlux(object):
    method __init__ (line 11082) | def __init__(self):
    method getParameterInfo (line 11087) | def getParameterInfo(self):
    method updateParameters (line 11125) | def updateParameters(self, parameters):
    method updateMessages (line 11128) | def updateMessages(self, parameters):
    method execute (line 11140) | def execute(self, parameters, messages):
  class ExtendVectorLines (line 11159) | class ExtendVectorLines(object):
    method __init__ (line 11160) | def __init__(self):
    method getParameterInfo (line 11165) | def getParameterInfo(self):
    method updateParameters (line 11202) | def updateParameters(self, parameters):
    method updateMessages (line 11205) | def updateMessages(self, parameters):
    method execute (line 11217) | def execute(self, parameters, messages):
  class ExtractNodes (line 11235) | class ExtractNodes(object):
    method __init__ (line 11236) | def __init__(self):
    method getParameterInfo (line 11241) | def getParameterInfo(self):
    method updateParameters (line 11260) | def updateParameters(self, parameters):
    method updateMessages (line 11263) | def updateMessages(self, parameters):
    method execute (line 11275) | def execute(self, parameters, messages):
  class ExtractRasterValuesAtPoints (line 11291) | class ExtractRasterValuesAtPoints(object):
    method __init__ (line 11292) | def __init__(self):
    method getParameterInfo (line 11297) | def getParameterInfo(self):
    method updateParameters (line 11326) | def updateParameters(self, parameters):
    method updateMessages (line 11329) | def updateMessages(self, parameters):
    method execute (line 11341) | def execute(self, parameters, messages):
  class ExtractStreams (line 11364) | class ExtractStreams(object):
    method __init__ (line 11365) | def __init__(self):
    method getParameterInfo (line 11370) | def getParameterInfo(self):
    method updateParameters (line 11404) | def updateParameters(self, parameters):
    method updateMessages (line 11407) | def updateMessages(self, parameters):
    method execute (line 11419) | def execute(self, parameters, messages):
  class ExtractValleys (line 11437) | class ExtractValleys(object):
    method __init__ (line 11438) | def __init__(self):
    method getParameterInfo (line 11443) | def getParameterInfo(self):
    method updateParameters (line 11489) | def updateParameters(self, parameters):
    method updateMessages (line 11492) | def updateMessages(self, parameters):
    method execute (line 11504) | def execute(self, parameters, messages):
  class Fd8FlowAccumulation (line 11523) | class Fd8FlowAccumulation(object):
    method __init__ (line 11524) | def __init__(self):
    method getParameterInfo (line 11529) | def getParameterInfo(self):
    method updateParameters (line 11588) | def updateParameters(self, parameters):
    method updateMessages (line 11591) | def updateMessages(self, parameters):
    method execute (line 11603) | def execute(self, parameters, messages):
  class Fd8Pointer (line 11624) | class Fd8Pointer(object):
    method __init__ (line 11625) | def __init__(self):
    method getParameterInfo (line 11630) | def getParameterInfo(self):
    method updateParameters (line 11650) | def updateParameters(self, parameters):
    method updateMessages (line 11653) | def updateMessages(self, parameters):
    method execute (line 11665) | def execute(self, parameters, messages):
  class FarthestChannelHead (line 11681) | class FarthestChannelHead(object):
    method __init__ (line 11682) | def __init__(self):
    method getParameterInfo (line 11687) | def getParameterInfo(self):
    method updateParameters (line 11729) | def updateParameters(self, parameters):
    method updateMessages (line 11732) | def updateMessages(self, parameters):
    method execute (line 11744) | def execute(self, parameters, messages):
  class FastAlmostGaussianFilter (line 11766) | class FastAlmostGaussianFilter(object):
    method __init__ (line 11767) | def __init__(self):
    method getParameterInfo (line 11772) | def getParameterInfo(self):
    method updateParameters (line 11800) | def updateParameters(self, parameters):
    method updateMessages (line 11803) | def updateMessages(self, parameters):
    method execute (line 11815) | def execute(self, parameters, messages):
  class FeaturePreservingSmoothing (line 11832) | class FeaturePreservingSmoothing(object):
    method __init__ (line 11833) | def __init__(self):
    method getParameterInfo (line 11838) | def getParameterInfo(self):
    method updateParameters (line 11897) | def updateParameters(self, parameters):
    method updateMessages (line 11900) | def updateMessages(self, parameters):
    method execute (line 11912) | def execute(self, parameters, messages):
  class FetchAnalysis (line 11933) | class FetchAnalysis(object):
    method __init__ (line 11934) | def __init__(self):
    method getParameterInfo (line 11939) | def getParameterInfo(self):
    method updateParameters (line 11975) | def updateParameters(self, parameters):
    method updateMessages (line 11978) | def updateMessages(self, parameters):
    method execute (line 11990) | def execute(self, parameters, messages):
  class FillBurn (line 12008) | class FillBurn(object):
    method __init__ (line 12009) | def __init__(self):
    method getParameterInfo (line 12014) | def getParameterInfo(self):
    method updateParameters (line 12042) | def updateParameters(self, parameters):
    method updateMessages (line 12045) | def updateMessages(self, parameters):
    method execute (line 12057) | def execute(self, parameters, messages):
  class FillDepressions (line 12077) | class FillDepressions(object):
    method __init__ (line 12078) | def __init__(self):
    method getParameterInfo (line 12083) | def getParameterInfo(self):
    method updateParameters (line 12125) | def updateParameters(self, parameters):
    method updateMessages (line 12128) | def updateMessages(self, parameters):
    method execute (line 12140) | def execute(self, parameters, messages):
  class FillDepressionsPlanchonAndDarboux (line 12159) | class FillDepressionsPlanchonAndDarboux(object):
    method __init__ (line 12160) | def __init__(self):
    method getParameterInfo (line 12165) | def getParameterInfo(self):
    method updateParameters (line 12200) | def updateParameters(self, parameters):
    method updateMessages (line 12203) | def updateMessages(self, parameters):
    method execute (line 12215) | def execute(self, parameters, messages):
  class FillDepressionsWangAndLiu (line 12233) | class FillDepressionsWangAndLiu(object):
    method __init__ (line 12234) | def __init__(self):
    method getParameterInfo (line 12239) | def getParameterInfo(self):
    method updateParameters (line 12274) | def updateParameters(self, parameters):
    method updateMessages (line 12277) | def updateMessages(self, parameters):
    method execute (line 12289) | def execute(self, parameters, messages):
  class FillMissingData (line 12307) | class FillMissingData(object):
    method __init__ (line 12308) | def __init__(self):
    method getParameterInfo (line 12313) | def getParameterInfo(self):
    method updateParameters (line 12357) | def updateParameters(self, parameters):
    method updateMessages (line 12360) | def updateMessages(self, parameters):
    method execute (line 12372) | def execute(self, parameters, messages):
  class FillSingleCellPits (line 12391) | class FillSingleCellPits(object):
    method __init__ (line 12392) | def __init__(self):
    method getParameterInfo (line 12397) | def getParameterInfo(self):
    method updateParameters (line 12417) | def updateParameters(self, parameters):
    method updateMessages (line 12420) | def updateMessages(self, parameters):
    method execute (line 12432) | def execute(self, parameters, messages):
  class FilterLidar (line 12448) | class FilterLidar(object):
    method __init__ (line 12449) | def __init__(self):
    method getParameterInfo (line 12454) | def getParameterInfo(self):
    method updateParameters (line 12480) | def updateParameters(self, parameters):
    method updateMessages (line 12483) | def updateMessages(self, parameters):
    method execute (line 12495) | def execute(self, parameters, messages):
  class FilterLidarClasses (line 12509) | class FilterLidarClasses(object):
    method __init__ (line 12510) | def __init__(self):
    method getParameterInfo (line 12515) | def getParameterInfo(self):
    method updateParameters (line 12542) | def updateParameters(self, parameters):
    method updateMessages (line 12545) | def updateMessages(self, parameters):
    method execute (line 12557) | def execute(self, parameters, messages):
  class FilterLidarScanAngles (line 12571) | class FilterLidarScanAngles(object):
    method __init__ (line 12572) | def __init__(self):
    method getParameterInfo (line 12577) | def getParameterInfo(self):
    method updateParameters (line 12604) | def updateParameters(self, parameters):
    method updateMessages (line 12607) | def updateMessages(self, parameters):
    method execute (line 12619) | def execute(self, parameters, messages):
  class FilterRasterFeaturesByArea (line 12633) | class FilterRasterFeaturesByArea(object):
    method __init__ (line 12634) | def __init__(self):
    method getParameterInfo (line 12639) | def getParameterInfo(self):
    method updateParameters (line 12676) | def updateParameters(self, parameters):
    method updateMessages (line 12679) | def updateMessages(self, parameters):
    method execute (line 12691) | def execute(self, parameters, messages):
  class FindFlightlineEdgePoints (line 12709) | class FindFlightlineEdgePoints(object):
    method __init__ (line 12710) | def __init__(self):
    method getParameterInfo (line 12715) | def getParameterInfo(self):
    method updateParameters (line 12735) | def updateParameters(self, parameters):
    method updateMessages (line 12738) | def updateMessages(self, parameters):
    method execute (line 12750) | def execute(self, parameters, messages):
  class FindLowestOrHighestPoints (line 12763) | class FindLowestOrHighestPoints(object):
    method __init__ (line 12764) | def __init__(self):
    method getParameterInfo (line 12769) | def getParameterInfo(self):
    method updateParameters (line 12798) | def updateParameters(self, parameters):
    method updateMessages (line 12801) | def updateMessages(self, parameters):
    method execute (line 12813) | def execute(self, parameters, messages):
  class FindMainStem (line 12830) | class FindMainStem(object):
    method __init__ (line 12831) | def __init__(self):
    method getParameterInfo (line 12836) | def getParameterInfo(self):
    method updateParameters (line 12878) | def updateParameters(self, parameters):
    method updateMessages (line 12881) | def updateMessages(self, parameters):
    method execute (line 12893) | def execute(self, parameters, messages):
  class FindNoFlowCells (line 12915) | class FindNoFlowCells(object):
    method __init__ (line 12916) | def __init__(self):
    method getParameterInfo (line 12921) | def getParameterInfo(self):
    method updateParameters (line 12941) | def updateParameters(self, parameters):
    method updateMessages (line 12944) | def updateMessages(self, parameters):
    method execute (line 12956) | def execute(self, parameters, messages):
  class FindParallelFlow (line 12972) | class FindParallelFlow(object):
    method __init__ (line 12973) | def __init__(self):
    method getParameterInfo (line 12978) | def getParameterInfo(self):
    method updateParameters (line 13005) | def updateParameters(self, parameters):
    method updateMessages (line 13008) | def updateMessages(self, parameters):
    method execute (line 13020) | def execute(self, parameters, messages):
  class FindPatchOrClassEdgeCells (line 13040) | class FindPatchOrClassEdgeCells(object):
    method __init__ (line 13041) | def __init__(self):
    method getParameterInfo (line 13046) | def getParameterInfo(self):
    method updateParameters (line 13066) | def updateParameters(self, parameters):
    method updateMessages (line 13069) | def updateMessages(self, parameters):
    method execute (line 13081) | def execute(self, parameters, messages):
  class FindRidges (line 13097) | class FindRidges(object):
    method __init__ (line 13098) | def __init__(self):
    method getParameterInfo (line 13103) | def getParameterInfo(self):
    method updateParameters (line 13131) | def updateParameters(self, parameters):
    method updateMessages (line 13134) | def updateMessages(self, parameters):
    method execute (line 13146) | def execute(self, parameters, messages):
  class FixDanglingArcs (line 13163) | class FixDanglingArcs(object):
    method __init__ (line 13164) | def __init__(self):
    method getParameterInfo (line 13169) | def getParameterInfo(self):
    method updateParameters (line 13195) | def updateParameters(self, parameters):
    method updateMessages (line 13198) | def updateMessages(self, parameters):
    method execute (line 13210) | def execute(self, parameters, messages):
  class FlattenLakes (line 13227) | class FlattenLakes(object):
    method __init__ (line 13228) | def __init__(self):
    method getParameterInfo (line 13233) | def getParameterInfo(self):
    method updateParameters (line 13261) | def updateParameters(self, parameters):
    method updateMessages (line 13264) | def updateMessages(self, parameters):
    method execute (line 13276) | def execute(self, parameters, messages):
  class FlightlineOverlap (line 13296) | class FlightlineOverlap(object):
    method __init__ (line 13297) | def __init__(self):
    method getParameterInfo (line 13302) | def getParameterInfo(self):
    method updateParameters (line 13331) | def updateParameters(self, parameters):
    method updateMessages (line 13334) | def updateMessages(self, parameters):
    method execute (line 13346) | def execute(self, parameters, messages):
  class FlipImage (line 13360) | class FlipImage(object):
    method __init__ (line 13361) | def __init__(self):
    method getParameterInfo (line 13366) | def getParameterInfo(self):
    method updateParameters (line 13396) | def updateParameters(self, parameters):
    method updateMessages (line 13399) | def updateMessages(self, parameters):
    method execute (line 13411) | def execute(self, parameters, messages):
  class FloodOrder (line 13428) | class FloodOrder(object):
    method __init__ (line 13429) | def __init__(self):
    method getParameterInfo (line 13434) | def getParameterInfo(self):
    method updateParameters (line 13454) | def updateParameters(self, parameters):
    method updateMessages (line 13457) | def updateMessages(self, parameters):
    method execute (line 13469) | def execute(self, parameters, messages):
  class Floor (line 13485) | class Floor(object):
    method __init__ (line 13486) | def __init__(self):
    method getParameterInfo (line 13491) | def getParameterInfo(self):
    method updateParameters (line 13511) | def updateParameters(self, parameters):
    method updateMessages (line 13514) | def updateMessages(self, parameters):
    method execute (line 13526) | def execute(self, parameters, messages):
  class FlowAccumulationFullWorkflow (line 13542) | class FlowAccumulationFullWorkflow(object):
    method __init__ (line 13543) | def __init__(self):
    method getParameterInfo (line 13548) | def getParameterInfo(self):
    method updateParameters (line 13616) | def updateParameters(self, parameters):
    method updateMessages (line 13619) | def updateMessages(self, parameters):
    method execute (line 13631) | def execute(self, parameters, messages):
  class FlowLengthDiff (line 13653) | class FlowLengthDiff(object):
    method __init__ (line 13654) | def __init__(self):
    method getParameterInfo (line 13659) | def getParameterInfo(self):
    method updateParameters (line 13687) | def updateParameters(self, parameters):
    method updateMessages (line 13690) | def updateMessages(self, parameters):
    method execute (line 13702) | def execute(self, parameters, messages):
  class GammaCorrection (line 13719) | class GammaCorrection(object):
    method __init__ (line 13720) | def __init__(self):
    method getParameterInfo (line 13725) | def getParameterInfo(self):
    method updateParameters (line 13753) | def updateParameters(self, parameters):
    method updateMessages (line 13756) | def updateMessages(self, parameters):
    method execute (line 13768) | def execute(self, parameters, messages):
  class GaussianContrastStretch (line 13785) | class GaussianContrastStretch(object):
    method __init__ (line 13786) | def __init__(self):
    method getParameterInfo (line 13791) | def getParameterInfo(self):
    method updateParameters (line 13819) | def updateParameters(self, parameters):
    method updateMessages (line 13822) | def updateMessages(self, parameters):
    method execute (line 13834) | def execute(self, parameters, messages):
  class GaussianCurvature (line 13851) | class GaussianCurvature(object):
    method __init__ (line 13852) | def __init__(self):
    method getParameterInfo (line 13857) | def getParameterInfo(self):
    method updateParameters (line 13892) | def updateParameters(self, parameters):
    method updateMessages (line 13895) | def updateMessages(self, parameters):
    method execute (line 13907) | def execute(self, parameters, messages):
  class GaussianFilter (line 13925) | class GaussianFilter(object):
    method __init__ (line 13926) | def __init__(self):
    method getParameterInfo (line 13931) | def getParameterInfo(self):
    method updateParameters (line 13959) | def updateParameters(self, parameters):
    method updateMessages (line 13962) | def updateMessages(self, parameters):
    method execute (line 13974) | def execute(self, parameters, messages):
  class GaussianScaleSpace (line 13991) | class GaussianScaleSpace(object):
    method __init__ (line 13992) | def __init__(self):
    method getParameterInfo (line 13997) | def getParameterInfo(self):
    method updateParameters (line 14082) | def updateParameters(self, parameters):
    method updateMessages (line 14085) | def updateMessages(self, parameters):
    method execute (line 14097) | def execute(self, parameters, messages):
  class GeneralizeClassifiedRaster (line 14124) | class GeneralizeClassifiedRaster(object):
    method __init__ (line 14125) | def __init__(self):
    method getParameterInfo (line 14130) | def getParameterInfo(self):
    method updateParameters (line 14168) | def updateParameters(self, parameters):
    method updateMessages (line 14171) | def updateMessages(self, parameters):
    method execute (line 14183) | def execute(self, parameters, messages):
  class GeneralizeWithSimilarity (line 14201) | class GeneralizeWithSimilarity(object):
    method __init__ (line 14202) | def __init__(self):
    method getParameterInfo (line 14207) | def getParameterInfo(self):
    method updateParameters (line 14243) | def updateParameters(self, parameters):
    method updateMessages (line 14246) | def updateMessages(self, parameters):
    method execute (line 14258) | def execute(self, parameters, messages):
  class GeneratingFunction (line 14282) | class GeneratingFunction(object):
    method __init__ (line 14283) | def __init__(self):
    method getParameterInfo (line 14288) | def getParameterInfo(self):
    method updateParameters (line 14324) | def updateParameters(self, parameters):
    method updateMessages (line 14327) | def updateMessages(self, parameters):
    method execute (line 14339) | def execute(self, parameters, messages):
  class Geomorphons (line 14357) | class Geomorphons(object):
    method __init__ (line 14358) | def __init__(self):
    method getParameterInfo (line 14363) | def getParameterInfo(self):
    method updateParameters (line 14431) | def updateParameters(self, parameters):
    method updateMessages (line 14434) | def updateMessages(self, parameters):
    method execute (line 14446) | def execute(self, parameters, messages):
  class GreaterThan (line 14468) | class GreaterThan(object):
    method __init__ (line 14469) | def __init__(self):
    method getParameterInfo (line 14474) | def getParameterInfo(self):
    method updateParameters (line 14508) | def updateParameters(self, parameters):
    method updateMessages (line 14511) | def updateMessages(self, parameters):
    method execute (line 14523) | def execute(self, parameters, messages):
  class HackStreamOrder (line 14550) | class HackStreamOrder(object):
    method __init__ (line 14551) | def __init__(self):
    method getParameterInfo (line 14556) | def getParameterInfo(self):
    method updateParameters (line 14598) | def updateParameters(self, parameters):
    method updateMessages (line 14601) | def updateMessages(self, parameters):
    method execute (line 14613) | def execute(self, parameters, messages):
  class HeatMap (line 14635) | class HeatMap(object):
    method __init__ (line 14636) | def __init__(self):
    method getParameterInfo (line 14641) | def getParameterInfo(self):
    method updateParameters (line 14698) | def updateParameters(self, parameters):
    method updateMessages (line 14701) | def updateMessages(self, parameters):
    method execute (line 14713) | def execute(self, parameters, messages):
  class HeightAboveGround (line 14737) | class HeightAboveGround(object):
    method __init__ (line 14738) | def __init__(self):
    method getParameterInfo (line 14743) | def getParameterInfo(self):
    method updateParameters (line 14763) | def updateParameters(self, parameters):
    method updateMessages (line 14766) | def updateMessages(self, parameters):
    method execute (line 14778) | def execute(self, parameters, messages):
  class HighPassBilateralFilter (line 14791) | class HighPassBilateralFilter(object):
    method __init__ (line 14792) | def __init__(self):
    method getParameterInfo (line 14797) | def getParameterInfo(self):
    method updateParameters (line 14833) | def updateParameters(self, parameters):
    method updateMessages (line 14836) | def updateMessages(self, parameters):
    method execute (line 14848) | def execute(self, parameters, messages):
  class HighPassFilter (line 14866) | class HighPassFilter(object):
    method __init__ (line 14867) | def __init__(self):
    method getParameterInfo (line 14872) | def getParameterInfo(self):
    method updateParameters (line 14908) | def updateParameters(self, parameters):
    method updateMessages (line 14911) | def updateMessages(self, parameters):
    method execute (line 14923) | def execute(self, parameters, messages):
  class HighPassMedianFilter (line 14941) | class HighPassMedianFilter(object):
    method __init__ (line 14942) | def __init__(self):
    method getParameterInfo (line 14947) | def getParameterInfo(self):
    method updateParameters (line 14991) | def updateParameters(self, parameters):
    method updateMessages (line 14994) | def updateMessages(self, parameters):
    method execute (line 15006) | def execute(self, parameters, messages):
  class HighestPosition (line 15025) | class HighestPosition(object):
    method __init__ (line 15026) | def __init__(self):
    method getParameterInfo (line 15031) | def getParameterInfo(self):
    method updateParameters (line 15052) | def updateParameters(self, parameters):
    method updateMessages (line 15055) | def updateMessages(self, parameters):
    method execute (line 15067) | def execute(self, parameters, messages):
  class Hillshade (line 15086) | class Hillshade(object):
    method __init__ (line 15087) | def __init__(self):
    method getParameterInfo (line 15092) | def getParameterInfo(self):
    method updateParameters (line 15135) | def updateParameters(self, parameters):
    method updateMessages (line 15138) | def updateMessages(self, parameters):
    method execute (line 15150) | def execute(self, parameters, messages):
  class Hillslopes (line 15169) | class Hillslopes(object):
    method __init__ (line 15170) | def __init__(self):
    method getParameterInfo (line 15175) | def getParameterInfo(self):
    method updateParameters (line 15210) | def updateParameters(self, parameters):
    method updateMessages (line 15213) | def updateMessages(self, parameters):
    method execute (line 15225) | def execute(self, parameters, messages):
  class HistogramEqualization (line 15246) | class HistogramEqualization(object):
    method __init__ (line 15247) | def __init__(self):
    method getParameterInfo (line 15252) | def getParameterInfo(self):
    method updateParameters (line 15280) | def updateParameters(self, parameters):
    method updateMessages (line 15283) | def updateMessages(self, parameters):
    method execute (line 15295) | def execute(self, parameters, messages):
  class HistogramMatching (line 15312) | class HistogramMatching(object):
    method __init__ (line 15313) | def __init__(self):
    method getParameterInfo (line 15318) | def getParameterInfo(self):
    method updateParameters (line 15345) | def updateParameters(self, parameters):
    method updateMessages (line 15348) | def updateMessages(self, parameters):
    method execute (line 15360) | def execute(self, parameters, messages):
  class HistogramMatchingTwoImages (line 15377) | class HistogramMatchingTwoImages(object):
    method __init__ (line 15378) | def __init__(self):
    method getParameterInfo (line 15383) | def getParameterInfo(self):
    method updateParameters (line 15410) | def updateParameters(self, parameters):
    method updateMessages (line 15413) | def updateMessages(self, parameters):
    method execute (line 15425) | def execute(self, parameters, messages):
  class HoleProportion (line 15445) | class HoleProportion(object):
    method __init__ (line 15446) | def __init__(self):
    method getParameterInfo (line 15451) | def getParameterInfo(self):
    method updateParameters (line 15464) | def updateParameters(self, parameters):
    method updateMessages (line 15467) | def updateMessages(self, parameters):
    method execute (line 15479) | def execute(self, parameters, messages):
  class HorizonAngle (line 15494) | class HorizonAngle(object):
    method __init__ (line 15495) | def __init__(self):
    method getParameterInfo (line 15500) | def getParameterInfo(self):
    method updateParameters (line 15536) | def updateParameters(self, parameters):
    method updateMessages (line 15539) | def updateMessages(self, parameters):
    method execute (line 15551) | def execute(self, parameters, messages):
  class HorizontalExcessCurvature (line 15569) | class HorizontalExcessCurvature(object):
    method __init__ (line 15570) | def __init__(self):
    method getParameterInfo (line 15575) | def getParameterInfo(self):
    method updateParameters (line 15611) | def updateParameters(self, parameters):
    method updateMessages (line 15614) | def updateMessages(self, parameters):
    method execute (line 15626) | def execute(self, parameters, messages):
  class HortonStreamOrder (line 15644) | class HortonStreamOrder(object):
    method __init__ (line 15645) | def __init__(self):
    method getParameterInfo (line 15650) | def getParameterInfo(self):
    method updateParameters (line 15692) | def updateParameters(self, parameters):
    method updateMessages (line 15695) | def updateMessages(self, parameters):
    method execute (line 15707) | def execute(self, parameters, messages):
  class HydrologicConnectivity (line 15729) | class HydrologicConnectivity(object):
    method __init__ (line 15730) | def __init__(self):
    method getParameterInfo (line 15735) | def getParameterInfo(self):
    method updateParameters (line 15778) | def updateParameters(self, parameters):
    method updateMessages (line 15781) | def updateMessages(self, parameters):
    method execute (line 15793) | def execute(self, parameters, messages):
  class HypsometricAnalysis (line 15812) | class HypsometricAnalysis(object):
    method __init__ (line 15813) | def __init__(self):
    method getParameterInfo (line 15818) | def getParameterInfo(self):
    method updateParameters (line 15847) | def updateParameters(self, parameters):
    method updateMessages (line 15850) | def updateMessages(self, parameters):
    method execute (line 15862) | def execute(self, parameters, messages):
  class HypsometricallyTintedHillshade (line 15888) | class HypsometricallyTintedHillshade(object):
    method __init__ (line 15889) | def __init__(self):
    method getParameterInfo (line 15894) | def getParameterInfo(self):
    method updateParameters (line 15979) | def updateParameters(self, parameters):
    method updateMessages (line 15982) | def updateMessages(self, parameters):
    method execute (line 15994) | def execute(self, parameters, messages):
  class IdwInterpolation (line 16018) | class IdwInterpolation(object):
    method __init__ (line 16019) | def __init__(self):
    method getParameterInfo (line 16024) | def getParameterInfo(self):
    method updateParameters (line 16097) | def updateParameters(self, parameters):
    method updateMessages (line 16100) | def updateMessages(self, parameters):
    method execute (line 16112) | def execute(self, parameters, messages):
  class IhsToRgb (line 16138) | class IhsToRgb(object):
    method __init__ (line 16139) | def __init__(self):
    method getParameterInfo (line 16144) | def getParameterInfo(self):
    method updateParameters (line 16202) | def updateParameters(self, parameters):
    method updateMessages (line 16205) | def updateMessages(self, parameters):
    method execute (line 16217) | def execute(self, parameters, messages):
  class ImageAutocorrelation (line 16244) | class ImageAutocorrelation(object):
    method __init__ (line 16245) | def __init__(self):
    method getParameterInfo (line 16250) | def getParameterInfo(self):
    method updateParameters (line 16281) | def updateParameters(self, parameters):
    method updateMessages (line 16284) | def updateMessages(self, parameters):
    method execute (line 16296) | def execute(self, parameters, messages):
  class ImageCorrelation (line 16316) | class ImageCorrelation(object):
    method __init__ (line 16317) | def __init__(self):
    method getParameterInfo (line 16322) | def getParameterInfo(self):
    method updateParameters (line 16343) | def updateParameters(self, parameters):
    method updateMessages (line 16346) | def updateMessages(self, parameters):
    method execute (line 16358) | def execute(self, parameters, messages):
  class ImageCorrelationNeighbourhoodAnalysis (line 16377) | class ImageCorrelationNeighbourhoodAnalysis(object):
    method __init__ (line 16378) | def __init__(self):
    method getParameterInfo (line 16383) | def getParameterInfo(self):
    method updateParameters (line 16436) | def updateParameters(self, parameters):
    method updateMessages (line 16439) | def updateMessages(self, parameters):
    method execute (line 16451) | def execute(self, parameters, messages):
  class ImageRegression (line 16474) | class ImageRegression(object):
    method __init__ (line 16475) | def __init__(self):
    method getParameterInfo (line 16480) | def getParameterInfo(self):
    method updateParameters (line 16537) | def updateParameters(self, parameters):
    method updateMessages (line 16540) | def updateMessages(self, parameters):
    method execute (line 16552) | def execute(self, parameters, messages):
  class ImageSegmentation (line 16576) | class ImageSegmentation(object):
    method __init__ (line 16577) | def __init__(self):
    method getParameterInfo (line 16582) | def getParameterInfo(self):
    method updateParameters (line 16627) | def updateParameters(self, parameters):
    method updateMessages (line 16630) | def updateMessages(self, parameters):
    method execute (line 16642) | def execute(self, parameters, messages):
  class ImageSlider (line 16664) | class ImageSlider(object):
    method __init__ (line 16665) | def __init__(self):
    method getParameterInfo (line 16670) | def getParameterInfo(self):
    method updateParameters (line 16753) | def updateParameters(self, parameters):
    method updateMessages (line 16756) | def updateMessages(self, parameters):
    method execute (line 16768) | def execute(self, parameters, messages):
  class ImageStackProfile (line 16795) | class ImageStackProfile(object):
    method __init__ (line 16796) | def __init__(self):
    method getParameterInfo (line 16801) | def getParameterInfo(self):
    method updateParameters (line 16830) | def updateParameters(self, parameters):
    method updateMessages (line 16833) | def updateMessages(self, parameters):
    method execute (line 16845) | def execute(self, parameters, messages):
  class ImpoundmentSizeIndex (line 16868) | class ImpoundmentSizeIndex(object):
    method __init__ (line 16869) | def __init__(self):
    method getParameterInfo (line 16874) | def getParameterInfo(self):
    method updateParameters (line 16933) | def updateParameters(self, parameters):
    method updateMessages (line 16936) | def updateMessages(self, parameters):
    method execute (line 16948) | def execute(self, parameters, messages):
  class InPlaceAdd (line 16969) | class InPlaceAdd(object):
    method __init__ (line 16970) | def __init__(self):
    method getParameterInfo (line 16975) | def getParameterInfo(self):
    method updateParameters (line 16994) | def updateParameters(self, parameters):
    method updateMessages (line 16997) | def updateMessages(self, parameters):
    method execute (line 17009) | def execute(self, parameters, messages):
  class InPlaceDivide (line 17031) | class InPlaceDivide(object):
    method __init__ (line 17032) | def __init__(self):
    method getParameterInfo (line 17037) | def getParameterInfo(self):
    method updateParameters (line 17056) | def updateParameters(self, parameters):
    method updateMessages (line 17059) | def updateMessages(self, parameters):
    method execute (line 17071) | def execute(self, parameters, messages):
  class InPlaceMultiply (line 17093) | class InPlaceMultiply(object):
    method __init__ (line 17094) | def __init__(self):
    method getParameterInfo (line 17099) | def getParameterInfo(self):
    method updateParameters (line 17118) | def updateParameters(self, parameters):
    method updateMessages (line 17121) | def updateMessages(self, parameters):
    method execute (line 17133) | def execute(self, parameters, messages):
  class InPlaceSubtract (line 17155) | class InPlaceSubtract(object):
    method __init__ (line 17156) | def __init__(self):
    method getParameterInfo (line 17161) | def getParameterInfo(self):
    method updateParameters (line 17180) | def updateParameters(self, parameters):
    method updateMessages (line 17183) | def updateMessages(self, parameters):
    method execute (line 17195) | def execute(self, parameters, messages):
  class Increment (line 17217) | class Increment(object):
    method __init__ (line 17218) | def __init__(self):
    method getParameterInfo (line 17223) | def getParameterInfo(self):
    method updateParameters (line 17243) | def updateParameters(self, parameters):
    method updateMessages (line 17246) | def updateMessages(self, parameters):
    method execute (line 17258) | def execute(self, parameters, messages):
  class IndividualTreeDetection (line 17274) | class IndividualTreeDetection(object):
    method __init__ (line 17275) | def __init__(self):
    method getParameterInfo (line 17280) | def getParameterInfo(self):
    method updateParameters (line 17336) | def updateParameters(self, parameters):
    method updateMessages (line 17339) | def updateMessages(self, parameters):
    method execute (line 17351) | def execute(self, parameters, messages):
  class InsertDams (line 17369) | class InsertDams(object):
    method __init__ (line 17370) | def __init__(self):
    method getParameterInfo (line 17375) | def getParameterInfo(self):
    method updateParameters (line 17410) | def updateParameters(self, parameters):
    method updateMessages (line 17413) | def updateMessages(self, parameters):
    method execute (line 17425) | def execute(self, parameters, messages):
  class InstallWbExtension (line 17446) | class InstallWbExtension(object):
    method __init__ (line 17447) | def __init__(self):
    method getParameterInfo (line 17452) | def getParameterInfo(self):
    method updateParameters (line 17467) | def updateParameters(self, parameters):
    method updateMessages (line 17470) | def updateMessages(self, parameters):
    method execute (line 17482) | def execute(self, parameters, messages):
  class IntegerDivision (line 17494) | class IntegerDivision(object):
    method __init__ (line 17495) | def __init__(self):
    method getParameterInfo (line 17500) | def getParameterInfo(self):
    method updateParameters (line 17527) | def updateParameters(self, parameters):
    method updateMessages (line 17530) | def updateMessages(self, parameters):
    method execute (line 17542) | def execute(self, parameters, messages):
  class IntegralImage (line 17568) | class IntegralImage(object):
    method __init__ (line 17569) | def __init__(self):
    method getParameterInfo (line 17574) | def getParameterInfo(self):
    method updateParameters (line 17594) | def updateParameters(self, parameters):
    method updateMessages (line 17597) | def updateMessages(self, parameters):
    method execute (line 17609) | def execute(self, parameters, messages):
  class Intersect (line 17625) | class Intersect(object):
    method __init__ (line 17626) | def __init__(self):
    method getParameterInfo (line 17631) | def getParameterInfo(self):
    method updateParameters (line 17665) | def updateParameters(self, parameters):
    method updateMessages (line 17668) | def updateMessages(self, parameters):
    method execute (line 17680) | def execute(self, parameters, messages):
  class InversePrincipalComponentAnalysis (line 17701) | class InversePrincipalComponentAnalysis(object):
    method __init__ (line 17702) | def __init__(self):
    method getParameterInfo (line 17707) | def getParameterInfo(self):
    method updateParameters (line 17728) | def updateParameters(self, parameters):
    method updateMessages (line 17731) | def updateMessages(self, parameters):
    method execute (line 17743) | def execute(self, parameters, messages):
  class IsNoData (line 17762) | class IsNoData(object):
    method __init__ (line 17763) | def __init__(self):
    method getParameterInfo (line 17768) | def getParameterInfo(self):
    method updateParameters (line 17788) | def updateParameters(self, parameters):
    method updateMessages (line 17791) | def updateMessages(self, parameters):
    method execute (line 17803) | def execute(self, parameters, messages):
  class Isobasins (line 17819) | class Isobasins(object):
    method __init__ (line 17820) | def __init__(self):
    method getParameterInfo (line 17825) | def getParameterInfo(self):
    method updateParameters (line 17860) | def updateParameters(self, parameters):
    method updateMessages (line 17863) | def updateMessages(self, parameters):
    method execute (line 17875) | def execute(self, parameters, messages):
  class JensonSnapPourPoints (line 17893) | class JensonSnapPourPoints(object):
    method __init__ (line 17894) | def __init__(self):
    method getParameterInfo (line 17899) | def getParameterInfo(self):
    method updateParameters (line 17933) | def updateParameters(self, parameters):
    method updateMessages (line 17936) | def updateMessages(self, parameters):
    method execute (line 17948) | def execute(self, parameters, messages):
  class JoinTables (line 17969) | class JoinTables(object):
    method __init__ (line 17970) | def __init__(self):
    method getParameterInfo (line 17975) | def getParameterInfo(self):
    method updateParameters (line 18018) | def updateParameters(self, parameters):
    method updateMessages (line 18021) | def updateMessages(self, parameters):
    method execute (line 18033) | def execute(self, parameters, messages):
  class KMeansClustering (line 18055) | class KMeansClustering(object):
    method __init__ (line 18056) | def __init__(self):
    method getParameterInfo (line 18061) | def getParameterInfo(self):
    method updateParameters (line 18131) | def updateParameters(self, parameters):
    method updateMessages (line 18134) | def updateMessages(self, parameters):
    method execute (line 18146) | def execute(self, parameters, messages):
  class KNearestMeanFilter (line 18171) | class KNearestMeanFilter(object):
    method __init__ (line 18172) | def __init__(self):
    method getParameterInfo (line 18177) | def getParameterInfo(self):
    method updateParameters (line 18221) | def updateParameters(self, parameters):
    method updateMessages (line 18224) | def updateMessages(self, parameters):
    method execute (line 18236) | def execute(self, parameters, messages):
  class KappaIndex (line 18255) | class KappaIndex(object):
    method __init__ (line 18256) | def __init__(self):
    method getParameterInfo (line 18261) | def getParameterInfo(self):
    method updateParameters (line 18288) | def updateParameters(self, parameters):
    method updateMessages (line 18291) | def updateMessages(self, parameters):
    method execute (line 18303) | def execute(self, parameters, messages):
  class KnnClassification (line 18323) | class KnnClassification(object):
    method __init__ (line 18324) | def __init__(self):
    method getParameterInfo (line 18329) | def getParameterInfo(self):
    method updateParameters (line 18399) | def updateParameters(self, parameters):
    method updateMessages (line 18402) | def updateMessages(self, parameters):
    method execute (line 18414) | def execute(self, parameters, messages):
  class KnnRegression (line 18442) | class KnnRegression(object):
    method __init__ (line 18443) | def __init__(self):
    method getParameterInfo (line 18448) | def getParameterInfo(self):
    method updateParameters (line 18519) | def updateParameters(self, parameters):
    method updateMessages (line 18522) | def updateMessages(self, parameters):
    method execute (line 18534) | def execute(self, parameters, messages):
  class KsTestForNormality (line 18562) | class KsTestForNormality(object):
    method __init__ (line 18563) | def __init__(self):
    method getParameterInfo (line 18568) | def getParameterInfo(self):
    method updateParameters (line 18595) | def updateParameters(self, parameters):
    method updateMessages (line 18598) | def updateMessages(self, parameters):
    method execute (line 18610) | def execute(self, parameters, messages):
  class LaplacianFilter (line 18627) | class LaplacianFilter(object):
    method __init__ (line 18628) | def __init__(self):
    method getParameterInfo (line 18633) | def getParameterInfo(self):
    method updateParameters (line 18671) | def updateParameters(self, parameters):
    method updateMessages (line 18674) | def updateMessages(self, parameters):
    method execute (line 18686) | def execute(self, parameters, messages):
  class LaplacianOfGaussianFilter (line 18704) | class LaplacianOfGaussianFilter(object):
    method __init__ (line 18705) | def __init__(self):
    method getParameterInfo (line 18710) | def getParameterInfo(self):
    method updateParameters (line 18738) | def updateParameters(self, parameters):
    method updateMessages (line 18741) | def updateMessages(self, parameters):
    method execute (line 18753) | def execute(self, parameters, messages):
  class LasToAscii (line 18770) | class LasToAscii(object):
    method __init__ (line 18771) | def __init__(self):
    method getParameterInfo (line 18776) | def getParameterInfo(self):
    method updateParameters (line 18790) | def updateParameters(self, parameters):
    method updateMessages (line 18793) | def updateMessages(self, parameters):
    method execute (line 18805) | def execute(self, parameters, messages):
  class LasToLaz (line 18823) | class LasToLaz(object):
    method __init__ (line 18824) | def __init__(self):
    method getParameterInfo (line 18829) | def getParameterInfo(self):
    method updateParameters (line 18850) | def updateParameters(self, parameters):
    method updateMessages (line 18853) | def updateMessages(self, parameters):
    method execute (line 18865) | def execute(self, parameters, messages):
  class LasToMultipointShapefile (line 18878) | class LasToMultipointShapefile(object):
    method __init__ (line 18879) | def __init__(self):
    method getParameterInfo (line 18884) | def getParameterInfo(self):
    method updateParameters (line 18897) | def updateParameters(self, parameters):
    method updateMessages (line 18900) | def updateMessages(self, parameters):
    method execute (line 18912) | def execute(self, parameters, messages):
  class LasToShapefile (line 18924) | class LasToShapefile(object):
    method __init__ (line 18925) | def __init__(self):
    method getParameterInfo (line 18930) | def getParameterInfo(self):
    method updateParameters (line 18943) | def updateParameters(self, parameters):
    method updateMessages (line 18946) | def updateMessages(self, parameters):
    method execute (line 18958) | def execute(self, parameters, messages):
  class LasToZlidar (line 18970) | class LasToZlidar(object):
    method __init__ (line 18971) | def __init__(self):
    method getParameterInfo (line 18976) | def getParameterInfo(self):
    method updateParameters (line 19015) | def updateParameters(self, parameters):
    method updateMessages (line 19018) | def updateMessages(self, parameters):
    method execute (line 19030) | def execute(self, parameters, messages):
  class LaunchWbRunner (line 19051) | class LaunchWbRunner(object):
    method __init__ (line 19052) | def __init__(self):
    method getParameterInfo (line 19057) | def getParameterInfo(self):
    method updateParameters (line 19070) | def updateParameters(self, parameters):
    method updateMessages (line 19073) | def updateMessages(self, parameters):
    method execute (line 19085) | def execute(self, parameters, messages):
  class LayerFootprint (line 19097) | class LayerFootprint(object):
    method __init__ (line 19098) | def __init__(self):
    method getParameterInfo (line 19103) | def getParameterInfo(self):
    method updateParameters (line 19122) | def updateParameters(self, parameters):
    method updateMessages (line 19125) | def updateMessages(self, parameters):
    method execute (line 19137) | def execute(self, parameters, messages):
  class LazToLas (line 19150) | class LazToLas(object):
    method __init__ (line 19151) | def __init__(self):
    method getParameterInfo (line 19156) | def getParameterInfo(self):
    method updateParameters (line 19177) | def updateParameters(self, parameters):
    method updateMessages (line 19180) | def updateMessages(self, parameters):
    method execute (line 19192) | def execute(self, parameters, messages):
  class LeeSigmaFilter (line 19205) | class LeeSigmaFilter(object):
    method __init__ (line 19206) | def __init__(self):
    method getParameterInfo (line 19211) | def getParameterInfo(self):
    method updateParameters (line 19263) | def updateParameters(self, parameters):
    method updateMessages (line 19266) | def updateMessages(self, parameters):
    method execute (line 19278) | def execute(self, parameters, messages):
  class LengthOfUpstreamChannels (line 19298) | class LengthOfUpstreamChannels(object):
    method __init__ (line 19299) | def __init__(self):
    method getParameterInfo (line 19304) | def getParameterInfo(self):
    method updateParameters (line 19346) | def updateParameters(self, parameters):
    method updateMessages (line 19349) | def updateMessages(self, parameters):
    method execute (line 19361) | def execute(self, parameters, messages):
  class LessThan (line 19383) | class LessThan(object):
    method __init__ (line 19384) | def __init__(self):
    method getParameterInfo (line 19389) | def getParameterInfo(self):
    method updateParameters (line 19423) | def updateParameters(self, parameters):
    method updateMessages (line 19426) | def updateMessages(self, parameters):
    method execute (line 19438) | def execute(self, parameters, messages):
  class LidarBlockMaximum (line 19465) | class LidarBlockMaximum(object):
    method __init__ (line 19466) | def __init__(self):
    method getParameterInfo (line 19471) | def getParameterInfo(self):
    method updateParameters (line 19500) | def updateParameters(self, parameters):
    method updateMessages (line 19503) | def updateMessages(self, parameters):
    method execute (line 19515) | def execute(self, parameters, messages):
  class LidarBlockMinimum (line 19529) | class LidarBlockMinimum(object):
    method __init__ (line 19530) | def __init__(self):
    method getParameterInfo (line 19535) | def getParameterInfo(self):
    method updateParameters (line 19564) | def updateParameters(self, parameters):
    method updateMessages (line 19567) | def updateMessages(self, parameters):
    method execute (line 19579) | def execute(self, parameters, messages):
  class LidarClassifySubset (line 19593) | class LidarClassifySubset(object):
    method __init__ (line 19594) | def __init__(self):
    method getParameterInfo (line 19599) | def getParameterInfo(self):
    method updateParameters (line 19641) | def updateParameters(self, parameters):
    method updateMessages (line 19644) | def updateMessages(self, parameters):
    method execute (line 19656) | def execute(self, parameters, messages):
  class LidarColourize (line 19672) | class LidarColourize(object):
    method __init__ (line 19673) | def __init__(self):
    method getParameterInfo (line 19678) | def getParameterInfo(self):
    method updateParameters (line 19705) | def updateParameters(self, parameters):
    method updateMessages (line 19708) | def updateMessages(self, parameters):
    method execute (line 19720) | def execute(self, parameters, messages):
  class LidarContour (line 19737) | class LidarContour(object):
    method __init__ (line 19738) | def __init__(self):
    method getParameterInfo (line 19743) | def getParameterInfo(self):
    method updateParameters (line 19835) | def updateParameters(self, parameters):
    method updateMessages (line 19838) | def updateMessages(self, parameters):
    method execute (line 19850) | def execute(self, parameters, messages):
  class LidarDigitalSurfaceModel (line 19872) | class LidarDigitalSurfaceModel(object):
    method __init__ (line 19873) | def __init__(self):
    method getParameterInfo (line 19878) | def getParameterInfo(self):
    method updateParameters (line 19936) | def updateParameters(self, parameters):
    method updateMessages (line 19939) | def updateMessages(self, parameters):
    method execute (line 19951) | def execute(self, parameters, messages):
  class LidarEigenvalueFeatures (line 19969) | class LidarEigenvalueFeatures(object):
    method __init__ (line 19970) | def __init__(self):
    method getParameterInfo (line 19975) | def getParameterInfo(self):
    method updateParameters (line 20002) | def updateParameters(self, parameters):
    method updateMessages (line 20005) | def updateMessages(self, parameters):
    method execute (line 20017) | def execute(self, parameters, messages):
  class LidarElevationSlice (line 20031) | class LidarElevationSlice(object):
    method __init__ (line 20032) | def __init__(self):
    method getParameterInfo (line 20037) | def getParameterInfo(self):
    method updateParameters (line 20094) | def updateParameters(self, parameters):
    method updateMessages (line 20097) | def updateMessages(self, parameters):
    method execute (line 20109) | def execute(self, parameters, messages):
  class LidarGroundPointFilter (line 20127) | class LidarGroundPointFilter(object):
    method __init__ (line 20128) | def __init__(self):
    method getParameterInfo (line 20133) | def getParameterInfo(self):
    method updateParameters (line 20209) | def updateParameters(self, parameters):
    method updateMessages (line 20212) | def updateMessages(self, parameters):
    method execute (line 20224) | def execute(self, parameters, messages):
  class LidarHexBinning (line 20244) | class LidarHexBinning(object):
    method __init__ (line 20245) | def __init__(self):
    method getParameterInfo (line 20250) | def getParameterInfo(self):
    method updateParameters (line 20287) | def updateParameters(self, parameters):
    method updateMessages (line 20290) | def updateMessages(self, parameters):
    method execute (line 20302) | def execute(self, parameters, messages):
  class LidarHillshade (line 20317) | class LidarHillshade(object):
    method __init__ (line 20318) | def __init__(self):
    method getParameterInfo (line 20323) | def getParameterInfo(self):
    method updateParameters (line 20367) | def updateParameters(self, parameters):
    method updateMessages (line 20370) | def updateMessages(self, parameters):
    method execute (line 20382) | def execute(self, parameters, messages):
  class LidarHistogram (line 20398) | class LidarHistogram(object):
    method __init__ (line 20399) | def __init__(self):
    method getParameterInfo (line 20404) | def getParameterInfo(self):
    method updateParameters (line 20443) | def updateParameters(self, parameters):
    method updateMessages (line 20446) | def updateMessages(self, parameters):
    method execute (line 20458) | def execute(self, parameters, messages):
  class LidarIdwInterpolation (line 20473) | class LidarIdwInterpolation(object):
    method __init__ (line 20474) | def __init__(self):
    method getParameterInfo (line 20479) | def getParameterInfo(self):
    method updateParameters (line 20565) | def updateParameters(self, parameters):
    method updateMessages (line 20568) | def updateMessages(self, parameters):
    method execute (line 20580) | def execute(self, parameters, messages):
  class LidarInfo (line 20601) | class LidarInfo(object):
    method __init__ (line 20602) | def __init__(self):
    method getParameterInfo (line 20607) | def getParameterInfo(self):
    method updateParameters (line 20652) | def updateParameters(self, parameters):
    method updateMessages (line 20655) | def updateMessages(self, parameters):
    method execute (line 20667) | def execute(self, parameters, messages):
  class LidarJoin (line 20683) | class LidarJoin(object):
    method __init__ (line 20684) | def __init__(self):
    method getParameterInfo (line 20689) | def getParameterInfo(self):
    method updateParameters (line 20710) | def updateParameters(self, parameters):
    method updateMessages (line 20713) | def updateMessages(self, parameters):
    method execute (line 20725) | def execute(self, parameters, messages):
  class LidarKappaIndex (line 20744) | class LidarKappaIndex(object):
    method __init__ (line 20745) | def __init__(self):
    method getParameterInfo (line 20750) | def getParameterInfo(self):
    method updateParameters (line 20795) | def updateParameters(self, parameters):
    method updateMessages (line 20798) | def updateMessages(self, parameters):
    method execute (line 20810) | def execute(self, parameters, messages):
  class LidarNearestNeighbourGridding (line 20826) | class LidarNearestNeighbourGridding(object):
    method __init__ (line 20827) | def __init__(self):
    method getParameterInfo (line 20832) | def getParameterInfo(self):
    method updateParameters (line 20910) | def updateParameters(self, parameters):
    method updateMessages (line 20913) | def updateMessages(self, parameters):
    method execute (line 20925) | def execute(self, parameters, messages):
  class LidarPointDensity (line 20945) | class LidarPointDensity(object):
    method __init__ (line 20946) | def __init__(self):
    method getParameterInfo (line 20951) | def getParameterInfo(self):
    method updateParameters (line 21019) | def updateParameters(self, parameters):
    method updateMessages (line 21022) | def updateMessages(self, parameters):
    method execute (line 21034) | def execute(self, parameters, messages):
  class LidarPointReturnAnalysis (line 21053) | class LidarPointReturnAnalysis(object):
    method __init__ (line 21054) | def __init__(self):
    method getParameterInfo (line 21059) | def getParameterInfo(self):
    method updateParameters (line 21079) | def updateParameters(self, parameters):
    method updateMessages (line 21082) | def updateMessages(self, parameters):
    method execute (line 21094) | def execute(self, parameters, messages):
  class LidarPointStats (line 21107) | class LidarPointStats(object):
    method __init__ (line 21108) | def __init__(self):
    method getParameterInfo (line 21113) | def getParameterInfo(self):
    method updateParameters (line 21178) | def updateParameters(self, parameters):
    method updateMessages (line 21181) | def updateMessages(self, parameters):
    method execute (line 21193) | def execute(self, parameters, messages):
  class LidarRansacPlanes (line 21212) | class LidarRansacPlanes(object):
    method __init__ (line 21213) | def __init__(self):
    method getParameterInfo (line 21218) | def getParameterInfo(self):
    method updateParameters (line 21302) | def updateParameters(self, parameters):
    method updateMessages (line 21305) | def updateMessages(self, parameters):
    method execute (line 21317) | def execute(self, parameters, messages):
  class LidarRbfInterpolation (line 21338) | class LidarRbfInterpolation(object):
    method __init__ (line 21339) | def __init__(self):
    method getParameterInfo (line 21344) | def getParameterInfo(self):
    method updateParameters (line 21450) | def updateParameters(self, parameters):
    method updateMessages (line 21453) | def updateMessages(self, parameters):
    method execute (line 21465) | def execute(self, parameters, messages):
  class LidarRemoveDuplicates (line 21488) | class LidarRemoveDuplicates(object):
    method __init__ (line 21489) | def __init__(self):
    method getParameterInfo (line 21494) | def getParameterInfo(self):
    method updateParameters (line 21522) | def updateParameters(self, parameters):
    method updateMessages (line 21525) | def updateMessages(self, parameters):
    method execute (line 21537) | def execute(self, parameters, messages):
  class LidarRemoveOutliers (line 21551) | class LidarRemoveOutliers(object):
    method __init__ (line 21552) | def __init__(self):
    method getParameterInfo (line 21557) | def getParameterInfo(self):
    method updateParameters (line 21608) | def updateParameters(self, parameters):
    method updateMessages (line 21611) | def updateMessages(self, parameters):
    method execute (line 21623) | def execute(self, parameters, messages):
  class LidarRooftopAnalysis (line 21640) | class LidarRooftopAnalysis(object):
    method __init__ (line 21641) | def __init__(self):
    method getParameterInfo (line 21646) | def getParameterInfo(self):
    method updateParameters (line 21746) | def updateParameters(self, parameters):
    method updateMessages (line 21749) | def updateMessages(self, parameters):
    method execute (line 21761) | def execute(self, parameters, messages):
  class LidarSegmentation (line 21787) | class LidarSegmentation(object):
    method __init__ (line 21788) | def __init__(self):
    method getParameterInfo (line 21793) | def getParameterInfo(self):
    method updateParameters (line 21893) | def updateParameters(self, parameters):
    method updateMessages (line 21896) | def updateMessages(self, parameters):
    method execute (line 21908) | def execute(self, parameters, messages):
  class LidarSegmentationBasedFilter (line 21931) | class LidarSegmentationBasedFilter(object):
    method __init__ (line 21932) | def __init__(self):
    method getParameterInfo (line 21937) | def getParameterInfo(self):
    method updateParameters (line 21988) | def updateParameters(self, parameters):
    method updateMessages (line 21991) | def updateMessages(self, parameters):
    method execute (line 22003) | def execute(self, parameters, messages):
  class LidarShift (line 22020) | class LidarShift(object):
    method __init__ (line 22021) | def __init__(self):
    method getParameterInfo (line 22026) | def getParameterInfo(self):
    method updateParameters (line 22064) | def updateParameters(self, parameters):
    method updateMessages (line 22067) | def updateMessages(self, parameters):
    method execute (line 22079) | def execute(self, parameters, messages):
  class LidarSibsonInterpolation (line 22095) | class LidarSibsonInterpolation(object):
    method __init__ (line 22096) | def __init__(self):
    method getParameterInfo (line 22101) | def getParameterInfo(self):
    method updateParameters (line 22171) | def updateParameters(self, parameters):
    method updateMessages (line 22174) | def updateMessages(self, parameters):
    method execute (line 22186) | def execute(self, parameters, messages):
  class LidarTinGridding (line 22205) | class LidarTinGridding(object):
    method __init__ (line 22206) | def __init__(self):
    method getParameterInfo (line 22211) | def getParameterInfo(self):
    method updateParameters (line 22289) | def updateParameters(self, parameters):
    method updateMessages (line 22292) | def updateMessages(self, parameters):
    method execute (line 22304) | def execute(self, parameters, messages):
  class LidarThin (line 22324) | class LidarThin(object):
    method __init__ (line 22325) | def __init__(self):
    method getParameterInfo (line 22330) | def getParameterInfo(self):
    method updateParameters (line 22376) | def updateParameters(self, parameters):
    method updateMessages (line 22379) | def updateMessages(self, parameters):
    method execute (line 22391) | def execute(self, parameters, messages):
  class LidarThinHighDensity (line 22407) | class LidarThinHighDensity(object):
    method __init__ (line 22408) | def __init__(self):
    method getParameterInfo (line 22413) | def getParameterInfo(self):
    method updateParameters (line 22456) | def updateParameters(self, parameters):
    method updateMessages (line 22459) | def updateMessages(self, parameters):
    method execute (line 22471) | def execute(self, parameters, messages):
  class LidarTile (line 22487) | class LidarTile(object):
    method __init__ (line 22488) | def __init__(self):
    method getParameterInfo (line 22493) | def getParameterInfo(self):
    method updateParameters (line 22546) | def updateParameters(self, parameters):
    method updateMessages (line 22549) | def updateMessages(self, parameters):
    method execute (line 22561) | def execute(self, parameters, messages):
  class LidarTileFootprint (line 22578) | class LidarTileFootprint(object):
    method __init__ (line 22579) | def __init__(self):
    method getParameterInfo (line 22584) | def getParameterInfo(self):
    method updateParameters (line 22612) | def updateParameters(self, parameters):
    method updateMessages (line 22615) | def updateMessages(self, parameters):
    method execute (line 22627) | def execute(self, parameters, messages):
  class LidarTophatTransform (line 22641) | class LidarTophatTransform(object):
    method __init__ (line 22642) | def __init__(self):
    method getParameterInfo (line 22647) | def getParameterInfo(self):
    method updateParameters (line 22675) | def updateParameters(self, parameters):
    method updateMessages (line 22678) | def updateMessages(self, parameters):
    method execute (line 22690) | def execute(self, parameters, messages):
  class LineDetectionFilter (line 22704) | class LineDetectionFilter(object):
    method __init__ (line 22705) | def __init__(self):
    method getParameterInfo (line 22710) | def getParameterInfo(self):
    method updateParameters (line 22755) | def updateParameters(self, parameters):
    method updateMessages (line 22758) | def updateMessages(self, parameters):
    method execute (line 22770) | def execute(self, parameters, messages):
  class LineIntersections (line 22789) | class LineIntersections(object):
    method __init__ (line 22790) | def __init__(self):
    method getParameterInfo (line 22795) | def getParameterInfo(self):
    method updateParameters (line 22823) | def updateParameters(self, parameters):
    method updateMessages (line 22826) | def updateMessages(self, parameters):
    method execute (line 22838) | def execute(self, parameters, messages):
  class LineThinning (line 22858) | class LineThinning(object):
    method __init__ (line 22859) | def __init__(self):
    method getParameterInfo (line 22864) | def getParameterInfo(self):
    method updateParameters (line 22884) | def updateParameters(self, parameters):
    method updateMessages (line 22887) | def updateMessages(self, parameters):
    method execute (line 22899) | def execute(self, parameters, messages):
  class LinearityIndex (line 22915) | class LinearityIndex(object):
    method __init__ (line 22916) | def __init__(self):
    method getParameterInfo (line 22921) | def getParameterInfo(self):
    method updateParameters (line 22934) | def updateParameters(self, parameters):
    method updateMessages (line 22937) | def updateMessages(self, parameters):
    method execute (line 22949) | def execute(self, parameters, messages):
  class LinesToPolygons (line 22964) | class LinesToPolygons(object):
    method __init__ (line 22965) | def __init__(self):
    method getParameterInfo (line 22970) | def getParameterInfo(self):
    method updateParameters (line 22990) | def updateParameters(self, parameters):
    method updateMessages (line 22993) | def updateMessages(self, parameters):
    method execute (line 23005) | def execute(self, parameters, messages):
  class ListUniqueValues (line 23021) | class ListUniqueValues(object):
    method __init__ (line 23022) | def __init__(self):
    method getParameterInfo (line 23027) | def getParameterInfo(self):
    method updateParameters (line 23055) | def updateParameters(self, parameters):
    method updateMessages (line 23058) | def updateMessages(self, parameters):
    method execute (line 23070) | def execute(self, parameters, messages):
  class ListUniqueValuesRaster (line 23087) | class ListUniqueValuesRaster(object):
    method __init__ (line 23088) | def __init__(self):
    method getParameterInfo (line 23093) | def getParameterInfo(self):
    method updateParameters (line 23105) | def updateParameters(self, parameters):
    method updateMessages (line 23108) | def updateMessages(self, parameters):
    method execute (line 23120) | def execute(self, parameters, messages):
  class Ln (line 23135) | class Ln(object):
    method __init__ (line 23136) | def __init__(self):
    method getParameterInfo (line 23141) | def getParameterInfo(self):
    method updateParameters (line 23161) | def updateParameters(self, parameters):
    method updateMessages (line 23164) | def updateMessages(self, parameters):
    method execute (line 23176) | def execute(self, parameters, messages):
  class LocalHypsometricAnalysis (line 23192) | class LocalHypsometricAnalysis(object):
    method __init__ (line 23193) | def __init__(self):
    method getParameterInfo (line 23198) | def getParameterInfo(self):
    method updateParameters (line 23258) | def updateParameters(self, parameters):
    method updateMessages (line 23261) | def updateMessages(self, parameters):
    method execute (line 23273) | def execute(self, parameters, messages):
  class LocalQuadraticRegression (line 23294) | class LocalQuadraticRegression(object):
    method __init__ (line 23295) | def __init__(self):
    method getParameterInfo (line 23300) | def getParameterInfo(self):
    method updateParameters (line 23328) | def updateParameters(self, parameters):
    method updateMessages (line 23331) | def updateMessages(self, parameters):
    method execute (line 23343) | def execute(self, parameters, messages):
  class Log10 (line 23360) | class Log10(object):
    method __init__ (line 23361) | def __init__(self):
    method getParameterInfo (line 23366) | def getParameterInfo(self):
    method updateParameters (line 23386) | def updateParameters(self, parameters):
    method updateMessages (line 23389) | def updateMessages(self, parameters):
    method execute (line 23401) | def execute(self, parameters, messages):
  class Log2 (line 23417) | class Log2(object):
    method __init__ (line 23418) | def __init__(self):
    method getParameterInfo (line 23423) | def getParameterInfo(self):
    method updateParameters (line 23443) | def updateParameters(self, parameters):
    method updateMessages (line 23446) | def updateMessages(self, parameters):
    method execute (line 23458) | def execute(self, parameters, messages):
  class LogisticRegression (line 23474) | class LogisticRegression(object):
    method __init__ (line 23475) | def __init__(self):
    method getParameterInfo (line 23480) | def getParameterInfo(self):
    method updateParameters (line 23534) | def updateParameters(self, parameters):
    method updateMessages (line 23537) | def updateMessages(self, parameters):
    method execute (line 23549) | def execute(self, parameters, messages):
  class LongProfile (line 23575) | class LongProfile(object):
    method __init__ (line 23576) | def __init__(self):
    method getParameterInfo (line 23581) | def getParameterInfo(self):
    method updateParameters (line 23623) | def updateParameters(self, parameters):
    method updateMessages (line 23626) | def updateMessages(self, parameters):
    method execute (line 23638) | def execute(self, parameters, messages):
  class LongProfileFromPoints (line 23663) | class LongProfileFromPoints(object):
    method __init__ (line 23664) | def __init__(self):
    method getParameterInfo (line 23669) | def getParameterInfo(self):
    method updateParameters (line 23712) | def updateParameters(self, parameters):
    method updateMessages (line 23715) | def updateMessages(self, parameters):
    method execute (line 23727) | def execute(self, parameters, messages):
  class LongestFlowpath (line 23752) | class LongestFlowpath(object):
    method __init__ (line 23753) | def __init__(self):
    method getParameterInfo (line 23758) | def getParameterInfo(self):
    method updateParameters (line 23784) | def updateParameters(self, parameters):
    method updateMessages (line 23787) | def updateMessages(self, parameters):
    method execute (line 23799) | def execute(self, parameters, messages):
  class LowPointsOnHeadwaterDivides (line 23819) | class LowPointsOnHeadwaterDivides(object):
    method __init__ (line 23820) | def __init__(self):
    method getParameterInfo (line 23825) | def getParameterInfo(self):
    method updateParameters (line 23851) | def updateParameters(self, parameters):
    method updateMessages (line 23854) | def updateMessages(self, parameters):
    method execute (line 23866) | def execute(self, parameters, messages):
  class LowestPosition (line 23886) | class LowestPosition(object):
    method __init__ (line 23887) | def __init__(self):
    method getParameterInfo (line 23892) | def getParameterInfo(self):
    method updateParameters (line 23913) | def updateParameters(self, parameters):
    method updateMessages (line 23916) | def updateMessages(self, parameters):
    method execute (line 23928) | def execute(self, parameters, messages):
  class MdInfFlowAccumulation (line 23947) | class MdInfFlowAccumulation(object):
    method __init__ (line 23948) | def __init__(self):
    method getParameterInfo (line 23953) | def getParameterInfo(self):
    method updateParameters (line 24012) | def updateParameters(self, parameters):
    method updateMessages (line 24015) | def updateMessages(self, parameters):
    method execute (line 24027) | def execute(self, parameters, messages):
  class MajorityFilter (line 24048) | class MajorityFilter(object):
    method __init__ (line 24049) | def __init__(self):
    method getParameterInfo (line 24054) | def getParameterInfo(self):
    method updateParameters (line 24090) | def updateParameters(self, parameters):
    method updateMessages (line 24093) | def updateMessages(self, parameters):
    method execute (line 24105) | def execute(self, parameters, messages):
  class MapOffTerrainObjects (line 24123) | class MapOffTerrainObjects(object):
    method __init__ (line 24124) | def __init__(self):
    method getParameterInfo (line 24129) | def getParameterInfo(self):
    method updateParameters (line 24165) | def updateParameters(self, parameters):
    method updateMessages (line 24168) | def updateMessages(self, parameters):
    method execute (line 24180) | def execute(self, parameters, messages):
  class Max (line 24198) | class Max(object):
    method __init__ (line 24199) | def __init__(self):
    method getParameterInfo (line 24204) | def getParameterInfo(self):
    method updateParameters (line 24231) | def updateParameters(self, parameters):
    method updateMessages (line 24234) | def updateMessages(self, parameters):
    method execute (line 24246) | def execute(self, parameters, messages):
  class MaxAbsoluteOverlay (line 24272) | class MaxAbsoluteOverlay(object):
    method __init__ (line 24273) | def __init__(self):
    method getParameterInfo (line 24278) | def getParameterInfo(self):
    method updateParameters (line 24299) | def updateParameters(self, parameters):
    method updateMessages (line 24302) | def updateMessages(self, parameters):
    method execute (line 24314) | def execute(self, parameters, messages):
  class MaxAnisotropyDev (line 24333) | class MaxAnisotropyDev(object):
    method __init__ (line 24334) | def __init__(self):
    method getParameterInfo (line 24339) | def getParameterInfo(self):
    method updateParameters (line 24390) | def updateParameters(self, parameters):
    method updateMessages (line 24393) | def updateMessages(self, parameters):
    method execute (line 24405) | def execute(self, parameters, messages):
  class MaxAnisotropyDevSignature (line 24425) | class MaxAnisotropyDevSignature(object):
    method __init__ (line 24426) | def __init__(self):
    method getParameterInfo (line 24431) | def getParameterInfo(self):
    method updateParameters (line 24482) | def updateParameters(self, parameters):
    method updateMessages (line 24485) | def updateMessages(self, parameters):
    method execute (line 24497) | def execute(self, parameters, messages):
  class MaxBranchLength (line 24520) | class MaxBranchLength(object):
    method __init__ (line 24521) | def __init__(self):
    method getParameterInfo (line 24526) | def getParameterInfo(self):
    method updateParameters (line 24553) | def updateParameters(self, parameters):
    method updateMessages (line 24556) | def updateMessages(self, parameters):
    method execute (line 24568) | def execute(self, parameters, messages):
  class MaxDifferenceFromMean (line 24585) | class MaxDifferenceFromMean(object):
    method __init__ (line 24586) | def __init__(self):
    method getParameterInfo (line 24591) | def getParameterInfo(self):
    method updateParameters (line 24641) | def updateParameters(self, parameters):
    method updateMessages (line 24644) | def updateMessages(self, parameters):
    method execute (line 24656) | def execute(self, parameters, messages):
  class MaxDownslopeElevChange (line 24676) | class MaxDownslopeElevChange(object):
    method __init__ (line 24677) | def __init__(self):
    method getParameterInfo (line 24682) | def getParameterInfo(self):
    method updateParameters (line 24702) | def updateParameters(self, parameters):
    method updateMessages (line 24705) | def updateMessages(self, parameters):
    method execute (line 24717) | def execute(self, parameters, messages):
  class MaxElevDevSignature (line 24733) | class MaxElevDevSignature(object):
    method __init__ (line 24734) | def __init__(self):
    method getParameterInfo (line 24739) | def getParameterInfo(self):
    method updateParameters (line 24789) | def updateParameters(self, parameters):
    method updateMessages (line 24792) | def updateMessages(self, parameters):
    method execute (line 24804) | def execute(self, parameters, messages):
  class MaxElevationDeviation (line 24827) | class MaxElevationDeviation(object):
    method __init__ (line 24828) | def __init__(self):
    method getParameterInfo (line 24833) | def getParameterInfo(self):
    method updateParameters (line 24883) | def updateParameters(self, parameters):
    method updateMessages (line 24886) | def updateMessages(self, parameters):
    method execute (line 24898) | def execute(self, parameters, messages):
  class MaxOverlay (line 24918) | class MaxOverlay(object):
    method __init__ (line 24919) | def __init__(self):
    method getParameterInfo (line 24924) | def getParameterInfo(self):
    method updateParameters (line 24945) | def updateParameters(self, parameters):
    method updateMessages (line 24948) | def updateMessages(self, parameters):
    method execute (line 24960) | def execute(self, parameters, messages):
  class MaxUpslopeElevChange (line 24979) | class MaxUpslopeElevChange(object):
    method __init__ (line 24980) | def __init__(self):
    method getParameterInfo (line 24985) | def getParameterInfo(self):
    method updateParameters (line 25005) | def updateParameters(self, parameters):
    method updateMessages (line 25008) | def updateMessages(self, parameters):
    method execute (line 25020) | def execute(self, parameters, messages):
  class MaxUpslopeFlowpathLength (line 25036) | class MaxUpslopeFlowpathLength(object):
    method __init__ (line 25037) | def __init__(self):
    method getParameterInfo (line 25042) | def getParameterInfo(self):
    method updateParameters (line 25062) | def updateParameters(self, parameters):
    method updateMessages (line 25065) | def updateMessages(self, parameters):
    method execute (line 25077) | def execute(self, parameters, messages):
  class MaxUpslopeValue (line 25093) | class MaxUpslopeValue(object):
    method __init__ (line 25094) | def __init__(self):
    method getParameterInfo (line 25099) | def getParameterInfo(self):
    method updateParameters (line 25126) | def updateParameters(self, parameters):
    method updateMessages (line 25129) | def updateMessages(self, parameters):
    method execute (line 25141) | def execute(self, parameters, messages):
  class MaximalCurvature (line 25161) | class MaximalCurvature(object):
    method __init__ (line 25162) | def __init__(self):
    method getParameterInfo (line 25167) | def getParameterInfo(self):
    method updateParameters (line 25202) | def updateParameters(self, parameters):
    method updateMessages (line 25205) | def updateMessages(self, parameters):
    method execute (line 25217) | def execute(self, parameters, messages):
  class MaximumFilter (line 25235) | class MaximumFilter(object):
    method __init__ (line 25236) | def __init__(self):
    method getParameterInfo (line 25241) | def getParameterInfo(self):
    method updateParameters (line 25277) | def updateParameters(self, parameters):
    method updateMessages (line 25280) | def updateMessages(self, parameters):
    method execute (line 25292) | def execute(self, parameters, messages):
  class MeanCurvature (line 25310) | class MeanCurvature(object):
    method __init__ (line 25311) | def __init__(self):
    method getParameterInfo (line 25316) | def getParameterInfo(self):
    method updateParameters (line 25351) | def updateParameters(self, parameters):
    method updateMessages (line 25354) | def updateMessages(self, parameters):
    method execute (line 25366) | def execute(self, parameters, messages):
  class MeanFilter (line 25384) | class MeanFilter(object):
    method __init__ (line 25385) | def __init__(self):
    method getParameterInfo (line 25390) | def getParameterInfo(self):
    method updateParameters (line 25426) | def updateParameters(self, parameters):
    method updateMessages (line 25429) | def updateMessages(self, parameters):
    method execute (line 25441) | def execute(self, parameters, messages):
  class MedianFilter (line 25459) | class MedianFilter(object):
    method __init__ (line 25460) | def __init__(self):
    method getParameterInfo (line 25465) | def getParameterInfo(self):
    method updateParameters (line 25509) | def updateParameters(self, parameters):
    method updateMessages (line 25512) | def updateMessages(self, parameters):
    method execute (line 25524) | def execute(self, parameters, messages):
  class Medoid (line 25543) | class Medoid(object):
    method __init__ (line 25544) | def __init__(self):
    method getParameterInfo (line 25549) | def getParameterInfo(self):
    method updateParameters (line 25568) | def updateParameters(self, parameters):
    method updateMessages (line 25571) | def updateMessages(self, parameters):
    method execute (line 25583) | def execute(self, parameters, messages):
  class MergeLineSegments (line 25599) | class MergeLineSegments(object):
    method __init__ (line 25600) | def __init__(self):
    method getParameterInfo (line 25605) | def getParameterInfo(self):
    method updateParameters (line 25633) | def updateParameters(self, parameters):
    method updateMessages (line 25636) | def updateMessages(self, parameters):
    method execute (line 25648) | def execute(self, parameters, messages):
  class MergeTableWithCsv (line 25665) | class MergeTableWithCsv(object):
    method __init__ (line 25666) | def __init__(self):
    method getParameterInfo (line 25671) | def getParameterInfo(self):
    method updateParameters (line 25715) | def updateParameters(self, parameters):
    method updateMessages (line 25718) | def updateMessages(self, parameters):
    method execute (line 25730) | def execute(self, parameters, messages):
  class MergeVectors (line 25749) | class MergeVectors(object):
    method __init__ (line 25750) | def __init__(self):
    method getParameterInfo (line 25755) | def getParameterInfo(self):
    method updateParameters (line 25775) | def updateParameters(self, parameters):
    method updateMessages (line 25778) | def updateMessages(self, parameters):
    method execute (line 25790) | def execute(self, parameters, messages):
  class Min (line 25809) | class Min(object):
    method __init__ (line 25810) | def __init__(self):
    method getParameterInfo (line 25815) | def getParameterInfo(self):
    method updateParameters (line 25842) | def updateParameters(self, parameters):
    method updateMessages (line 25845) | def updateMessages(self, parameters):
    method execute (line 25857) | def execute(self, parameters, messages):
  class MinAbsoluteOverlay (line 25883) | class MinAbsoluteOverlay(object):
    method __init__ (line 25884) | def __init__(self):
    method getParameterInfo (line 25889) | def getParameterInfo(self):
    method updateParameters (line 25910) | def updateParameters(self, parameters):
    method updateMessages (line 25913) | def updateMessages(self, parameters):
    method execute (line 25925) | def execute(self, parameters, messages):
  class MinDistClassification (line 25944) | class MinDistClassification(object):
    method __init__ (line 25945) | def __init__(self):
    method getParameterInfo (line 25950) | def getParameterInfo(self):
    method updateParameters (line 25994) | def updateParameters(self, parameters):
    method updateMessages (line 25997) | def updateMessages(self, parameters):
    method execute (line 26009) | def execute(self, parameters, messages):
  class MinDownslopeElevChange (line 26034) | class MinDownslopeElevChange(object):
    method __init__ (line 26035) | def __init__(self):
    method getParameterInfo (line 26040) | def getParameterInfo(self):
    method updateParameters (line 26060) | def updateParameters(self, parameters):
    method updateMessages (line 26063) | def updateMessages(self, parameters):
    method execute (line 26075) | def execute(self, parameters, messages):
  class MinMaxContrastStretch (line 26091) | class MinMaxContrastStretch(object):
    method __init__ (line 26092) | def __init__(self):
    method getParameterInfo (line 26097) | def getParameterInfo(self):
    method updateParameters (line 26139) | def updateParameters(self, parameters):
    method updateMessages (line 26142) | def updateMessages(self, parameters):
    method execute (line 26154) | def execute(self, parameters, messages):
  class MinOverlay (line 26173) | class MinOverlay(object):
    method __init__ (line 26174) | def __init__(self):
    method getParameterInfo (line 26179) | def getParameterInfo(self):
    method updateParameters (line 26200) | def updateParameters(self, parameters):
    method updateMessages (line 26203) | def updateMessages(self, parameters):
    method execute (line 26215) | def execute(self, parameters, messages):
  class MinimalCurvature (line 26234) | class MinimalCurvature(object):
    method __init__ (line 26235) | def __init__(self):
    method getParameterInfo (line 26240) | def getParameterInfo(self):
    method updateParameters (line 26275) | def updateParameters(self, parameters):
    method updateMessages (line 26278) | def updateMessages(self, parameters):
    method execute (line 26290) | def execute(self, parameters, messages):
  class MinimumBoundingBox (line 26308) | class MinimumBoundingBox(object):
    method __init__ (line 26309) | def __init__(self):
    method getParameterInfo (line 26314) | def getParameterInfo(self):
    method updateParameters (line 26351) | def updateParameters(self, parameters):
    method updateMessages (line 26354) | def updateMessages(self, parameters):
    method execute (line 26366) | def execute(self, parameters, messages):
  class MinimumBoundingCircle (line 26384) | class MinimumBoundingCircle(object):
    method __init__ (line 26385) | def __init__(self):
    method getParameterInfo (line 26390) | def getParameterInfo(self):
    method updateParameters (line 26417) | def updateParameters(self, parameters):
    method updateMessages (line 26420) | def updateMessages(self, parameters):
    method execute (line 26432) | def execute(self, parameters, messages):
  class MinimumBoundingEnvelope (line 26449) | class MinimumBoundingEnvelope(object):
    method __init__ (line 26450) | def __init__(self):
    method getParameterInfo (line 26455) | def getParameterInfo(self):
    method updateParameters (line 26482) | def updateParameters(self, parameters):
    method updateMessages (line 26485) | def updateMessages(self, parameters):
    method execute (line 26497) | def execute(self, parameters, messages):
  class MinimumConvexHull (line 26514) | class MinimumConvexHull(object):
    method __init__ (line 26515) | def __init__(self):
    method getParameterInfo (line 26520) | def getParameterInfo(self):
    method updateParameters (line 26547) | def updateParameters(self, parameters):
    method updateMessages (line 26550) | def updateMessages(self, parameters):
    method execute (line 26562) | def execute(self, parameters, messages):
  class MinimumFilter (line 26579) | class MinimumFilter(object):
    method __init__ (line 26580) | def __init__(self):
    method getParameterInfo (line 26585) | def getParameterInfo(self):
    method updateParameters (line 26621) | def updateParameters(self, parameters):
    method updateMessages (line 26624) | def updateMessages(self, parameters):
    method execute (line 26636) | def execute(self, parameters, messages):
  class ModifiedKMeansClustering (line 26654) | class ModifiedKMeansClustering(object):
    method __init__ (line 26655) | def __init__(self):
    method getParameterInfo (line 26660) | def getParameterInfo(self):
    method updateParameters (line 26720) | def updateParameters(self, parameters):
    method updateMessages (line 26723) | def updateMessages(self, parameters):
    method execute (line 26735) | def execute(self, parameters, messages):
  class ModifyLidar (line 26759) | class ModifyLidar(object):
    method __init__ (line 26760) | def __init__(self):
    method getParameterInfo (line 26765) | def getParameterInfo(self):
    method updateParameters (line 26791) | def updateParameters(self, parameters):
    method updateMessages (line 26794) | def updateMessages(self, parameters):
    method execute (line 26806) | def execute(self, parameters, messages):
  class ModifyNoDataValue (line 26820) | class ModifyNoDataValue(object):
    method __init__ (line 26821) | def __init__(self):
    method getParameterInfo (line 26826) | def getParameterInfo(self):
    method updateParameters (line 26846) | def updateParameters(self, parameters):
    method updateMessages (line 26849) | def updateMessages(self, parameters):
    method execute (line 26861) | def execute(self, parameters, messages):
  class Modulo (line 26877) | class Modulo(object):
    method __init__ (line 26878) | def __init__(self):
    method getParameterInfo (line 26883) | def getParameterInfo(self):
    method updateParameters (line 26910) | def updateParameters(self, parameters):
    method updateMessages (line 26913) | def updateMessages(self, parameters):
    method execute (line 26925) | def execute(self, parameters, messages):
  class Mosaic (line 26951) | class Mosaic(object):
    method __init__ (line 26952) | def __init__(self):
    method getParameterInfo (line 26957) | def getParameterInfo(self):
    method updateParameters (line 26988) | def updateParameters(self, parameters):
    method updateMessages (line 26991) | def updateMessages(self, parameters):
    method execute (line 27003) | def execute(self, parameters, messages):
  class MosaicWithFeathering (line 27023) | class MosaicWithFeathering(object):
    method __init__ (line 27024) | def __init__(self):
    method getParameterInfo (line 27029) | def getParameterInfo(self):
    method updateParameters (line 27074) | def updateParameters(self, parameters):
    method updateMessages (line 27077) | def updateMessages(self, parameters):
    method execute (line 27089) | def execute(self, parameters, messages):
  class MultiPartToSinglePart (line 27111) | class MultiPartToSinglePart(object):
    method __init__ (line 27112) | def __init__(self):
    method getParameterInfo (line 27117) | def getParameterInfo(self):
    method updateParameters (line 27144) | def updateParameters(self, parameters):
    method updateMessages (line 27147) | def updateMessages(self, parameters):
    method execute (line 27159) | def execute(self, parameters, messages):
  class MultidirectionalHillshade (line 27176) | class MultidirectionalHillshade(object):
    method __init__ (line 27177) | def __init__(self):
    method getParameterInfo (line 27182) | def getParameterInfo(self):
    method updateParameters (line 27225) | def updateParameters(self, parameters):
    method updateMessages (line 27228) | def updateMessages(self, parameters):
    method execute (line 27240) | def execute(self, parameters, messages):
  class Multiply (line 27259) | class Multiply(object):
    method __init__ (line 27260) | def __init__(self):
    method getParameterInfo (line 27265) | def getParameterInfo(self):
    method updateParameters (line 27292) | def updateParameters(self, parameters):
    method updateMessages (line 27295) | def updateMessages(self, parameters):
    method execute (line 27307) | def execute(self, parameters, messages):
  class MultiplyOverlay (line 27333) | class MultiplyOverlay(object):
    method __init__ (line 27334) | def __init__(self):
    method getParameterInfo (line 27339) | def getParameterInfo(self):
    method updateParameters (line 27360) | def updateParameters(self, parameters):
    method updateMessages (line 27363) | def updateMessages(self, parameters):
    method execute (line 27375) | def execute(self, parameters, messages):
  class MultiscaleCurvatures (line 27394) | class MultiscaleCurvatures(object):
    method __init__ (line 27395) | def __init__(self):
    method getParameterInfo (line 27400) | def getParameterInfo(self):
    method updateParameters (line 27486) | def updateParameters(self, parameters):
    method updateMessages (line 27489) | def updateMessages(self, parameters):
    method execute (line 27501) | def execute(self, parameters, messages):
  class MultiscaleElevationPercentile (line 27525) | class MultiscaleElevationPercentile(object):
    method __init__ (line 27526) | def __init__(self):
    method getParameterInfo (line 27531) | def getParameterInfo(self):
    method updateParameters (line 27599) | def updateParameters(self, parameters):
    method updateMessages (line 27602) | def updateMessages(self, parameters):
    method execute (line 27614) | def execute(self, parameters, messages):
  class MultiscaleRoughness (line 27636) | class MultiscaleRoughness(object):
    method __init__ (line 27637) | def __init__(self):
    method getParameterInfo (line 27642) | def getParameterInfo(self):
    method updateParameters (line 27693) | def updateParameters(self, parameters):
    method updateMessages (line 27696) | def updateMessages(self, parameters):
    method execute (line 27708) | def execute(self, parameters, messages):
  class MultiscaleRoughnessSignature (line 27728) | class MultiscaleRoughnessSignature(object):
    method __init__ (line 27729) | def __init__(self):
    method getParameterInfo (line 27734) | def getParameterInfo(self):
    method updateParameters (line 27785) | def updateParameters(self, parameters):
    method updateMessages (line 27788) | def updateMessages(self, parameters):
    method execute (line 27800) | def execute(self, parameters, messages):
  class MultiscaleStdDevNormals (line 27823) | class MultiscaleStdDevNormals(object):
    method __init__ (line 27824) | def __init__(self):
    method getParameterInfo (line 27829) | def getParameterInfo(self):
    method updateParameters (line 27889) | def updateParameters(self, parameters):
    method updateMessages (line 27892) | def updateMessages(self, parameters):
    method execute (line 27904) | def execute(self, parameters, messages):
  class MultiscaleStdDevNormalsSignature (line 27925) | class MultiscaleStdDevNormalsSignature(object):
    method __init__ (line 27926) | def __init__(self):
    method getParameterInfo (line 27931) | def getParameterInfo(self):
    method updateParameters (line 27991) | def updateParameters(self, parameters):
    method updateMessages (line 27994) | def updateMessages(self, parameters):
    method execute (line 28006) | def execute(self, parameters, messages):
  class MultiscaleTopographicPositionImage (line 28030) | class MultiscaleTopographicPositionImage(object):
    method __init__ (line 28031) | def __init__(self):
    method getParameterInfo (line 28036) | def getParameterInfo(self):
    method updateParameters (line 28085) | def updateParameters(self, parameters):
    method updateMessages (line 28088) | def updateMessages(self, parameters):
    method execute (line 28100) | def execute(self, parameters, messages):
  class NarrownessIndex (line 28129) | class NarrownessIndex(object):
    method __init__ (line 28130) | def __init__(self):
    method getParameterInfo (line 28135) | def getParameterInfo(self):
    method updateParameters (line 28155) | def updateParameters(self, parameters):
    method updateMessages (line 28158) | def updateMessages(self, parameters):
    method execute (line 28170) | def execute(self, parameters, messages):
  class NaturalNeighbourInterpolation (line 28186) | class NaturalNeighbourInterpolation(object):
    method __init__ (line 28187) | def __init__(self):
    method getParameterInfo (line 28192) | def getParameterInfo(self):
    method updateParameters (line 28251) | def updateParameters(self, parameters):
    method updateMessages (line 28254) | def updateMessages(self, parameters):
    method execute (line 28266) | def execute(self, parameters, messages):
  class NearestNeighbourGridding (line 28290) | class NearestNeighbourGridding(object):
    method __init__ (line 28291) | def __init__(self):
    method getParameterInfo (line 28296) | def getParameterInfo(self):
    method updateParameters (line 28354) | def updateParameters(self, parameters):
    method updateMessages (line 28357) | def updateMessages(self, parameters):
    method execute (line 28369) | def execute(self, parameters, messages):
  class Negate (line 28393) | class Negate(object):
    method __init__ (line 28394) | def __init__(self):
    method getParameterInfo (line 28399) | def getParameterInfo(self):
    method updateParameters (line 28419) | def updateParameters(self, parameters):
    method updateMessages (line 28422) | def updateMessages(self, parameters):
    method execute (line 28434) | def execute(self, parameters, messages):
  class NewRasterFromBase (line 28450) | class NewRasterFromBase(object):
    method __init__ (line 28451) | def __init__(self):
    method getParameterInfo (line 28456) | def getParameterInfo(self):
    method updateParameters (line 28501) | def updateParameters(self, parameters):
    method updateMessages (line 28504) | def updateMessages(self, parameters):
    method execute (line 28516) | def execute(self, parameters, messages):
  class NormalVectors (line 28532) | class NormalVectors(object):
    method __init__ (line 28533) | def __init__(self):
    method getParameterInfo (line 28538) | def getParameterInfo(self):
    method updateParameters (line 28566) | def updateParameters(self, parameters):
    method updateMessages (line 28569) | def updateMessages(self, parameters):
    method execute (line 28581) | def execute(self, parameters, messages):
  class NormalizeLidar (line 28595) | class NormalizeLidar(object):
    method __init__ (line 28596) | def __init__(self):
    method getParameterInfo (line 28601) | def getParameterInfo(self):
    method updateParameters (line 28628) | def updateParameters(self, parameters):
    method updateMessages (line 28631) | def updateMessages(self, parameters):
    method execute (line 28643) | def execute(self, parameters, messages):
  class NormalizedDifferenceIndex (line 28660) | class NormalizedDifferenceIndex(object):
    method __init__ (line 28661) | def __init__(self):
    method getParameterInfo (line 28666) | def getParameterInfo(self):
    method updateParameters (line 28709) | def updateParameters(self, parameters):
    method updateMessages (line 28712) | def updateMessages(self, parameters):
    method execute (line 28724) | def execute(self, parameters, messages):
  class Not (line 28746) | class Not(object):
    method __init__ (line 28747) | def __init__(self):
    method getParameterInfo (line 28752) | def getParameterInfo(self):
    method updateParameters (line 28779) | def updateParameters(self, parameters):
    method updateMessages (line 28782) | def updateMessages(self, parameters):
    method execute (line 28794) | def execute(self, parameters, messages):
  class NotEqualTo (line 28814) | class NotEqualTo(object):
    method __init__ (line 28815) | def __init__(self):
    method getParameterInfo (line 28820) | def getParameterInfo(self):
    method updateParameters (line 28847) | def updateParameters(self, parameters):
    method updateMessages (line 28850) | def updateMessages(self, parameters):
    method execute (line 28862) | def execute(self, parameters, messages):
  class NumDownslopeNeighbours (line 28888) | class NumDownslopeNeighbours(object):
    method __init__ (line 28889) | def __init__(self):
    method getParameterInfo (line 28894) | def getParameterInfo(self):
    method updateParameters (line 28914) | def updateParameters(self, parameters):
    method updateMessages (line 28917) | def updateMessages(self, parameters):
    method execute (line 28929) | def execute(self, parameters, messages):
  class NumInflowingNeighbours (line 28945) | class NumInflowingNeighbours(object):
    method __init__ (line 28946) | def __init__(self):
    method getParameterInfo (line 28951) | def getParameterInfo(self):
    method updateParameters (line 28971) | def updateParameters(self, parameters):
    method updateMessages (line 28974) | def updateMessages(self, parameters):
    method execute (line 28986) | def execute(self, parameters, messages):
  class NumUpslopeNeighbours (line 29002) | class NumUpslopeNeighbours(object):
    method __init__ (line 29003) | def __init__(self):
    method getParameterInfo (line 29008) | def getParameterInfo(self):
    method updateParameters (line 29028) | def updateParameters(self, parameters):
    method updateMessages (line 29031) | def updateMessages(self, parameters):
    method execute (line 29043) | def execute(self, parameters, messages):
  class OlympicFilter (line 29059) | class OlympicFilter(object):
    method __init__ (line 29060) | def __init__(self):
    method getParameterInfo (line 29065) | def getParameterInfo(self):
    method updateParameters (line 29101) | def updateParameters(self, parameters):
    method updateMessages (line 29104) | def updateMessages(self, parameters):
    method execute (line 29116) | def execute(self, parameters, messages):
  class Opening (line 29134) | class Opening(object):
    method __init__ (line 29135) | def __init__(self):
    method getParameterInfo (line 29140) | def getParameterInfo(self):
    method updateParameters (line 29176) | def updateParameters(self, parameters):
    method updateMessages (line 29179) | def updateMessages(self, parameters):
    method execute (line 29191) | def execute(self, parameters, messages):
  class Openness (line 29209) | class Openness(object):
    method __init__ (line 29210) | def __init__(self):
    method getParameterInfo (line 29215) | def getParameterInfo(self):
    method updateParameters (line 29251) | def updateParameters(self, parameters):
    method updateMessages (line 29254) | def updateMessages(self, parameters):
    method execute (line 29266) | def execute(self, parameters, messages):
  class Or (line 29284) | class Or(object):
    method __init__ (line 29285) | def __init__(self):
    method getParameterInfo (line 29290) | def getParameterInfo(self):
    method updateParameters (line 29317) | def updateParameters(self, parameters):
    method updateMessages (line 29320) | def updateMessages(self, parameters):
    method execute (line 29332) | def execute(self, parameters, messages):
  class PairedSampleTTest (line 29352) | class PairedSampleTTest(object):
    method __init__ (line 29353) | def __init__(self):
    method getParameterInfo (line 29358) | def getParameterInfo(self):
    method updateParameters (line 29392) | def updateParameters(self, parameters):
    method updateMessages (line 29395) | def updateMessages(self, parameters):
    method execute (line 29407) | def execute(self, parameters, messages):
  class PanchromaticSharpening (line 29428) | class PanchromaticSharpening(object):
    method __init__ (line 29429) | def __init__(self):
    method getParameterInfo (line 29434) | def getParameterInfo(self):
    method updateParameters (line 29492) | def updateParameters(self, parameters):
    method updateMessages (line 29495) | def updateMessages(self, parameters):
    method execute (line 29507) | def execute(self, parameters, messages):
  class ParallelepipedClassification (line 29540) | class ParallelepipedClassification(object):
    method __init__ (line 29541) | def __init__(self):
    method getParameterInfo (line 29546) | def getParameterInfo(self):
    method updateParameters (line 29583) | def updateParameters(self, parameters):
    method updateMessages (line 29586) | def updateMessages(self, parameters):
    method execute (line 29598) | def execute(self, parameters, messages):
  class PatchOrientation (line 29622) | class PatchOrientation(object):
    method __init__ (line 29623) | def __init__(self):
    method getParameterInfo (line 29628) | def getParameterInfo(self):
    method updateParameters (line 29641) | def updateParameters(self, parameters):
    method updateMessages (line 29644) | def updateMessages(self, parameters):
    method execute (line 29656) | def execute(self, parameters, messages):
  class PennockLandformClass (line 29671) | class PennockLandformClass(object):
    method __init__ (line 29672) | def __init__(self):
    method getParameterInfo (line 29677) | def getParameterInfo(self):
    method updateParameters (line 29728) | def updateParameters(self, parameters):
    method updateMessages (line 29731) | def updateMessages(self, parameters):
    method execute (line 29743) | def execute(self, parameters, messages):
  class PercentElevRange (line 29763) | class PercentElevRange(object):
    method __init__ (line 29764) | def __init__(self):
    method getParameterInfo (line 29769) | def getParameterInfo(self):
    method updateParameters (line 29805) | def updateParameters(self, parameters):
    method updateMessages (line 29808) | def updateMessages(self, parameters):
    method execute (line 29820) | def execute(self, parameters, messages):
  class PercentEqualTo (line 29838) | class PercentEqualTo(object):
    method __init__ (line 29839) | def __init__(self):
    method getParameterInfo (line 29844) | def getParameterInfo(self):
    method updateParameters (line 29872) | def updateParameters(self, parameters):
    method updateMessages (line 29875) | def updateMessages(self, parameters):
    method execute (line 29887) | def execute(self, parameters, messages):
  class PercentGreaterThan (line 29910) | class PercentGreaterThan(object):
    method __init__ (line 29911) | def __init__(self):
    method getParameterInfo (line 29916) | def getParameterInfo(self):
    method updateParameters (line 29944) | def updateParameters(self, parameters):
    method updateMessages (line 29947) | def updateMessages(self, parameters):
    method execute (line 29959) | def execute(self, parameters, messages):
  class PercentLessThan (line 29982) | class PercentLessThan(object):
    method __init__ (line 29983) | def __init__(self):
    method getParameterInfo (line 29988) | def getParameterInfo(self):
    method updateParameters (line 30016) | def updateParameters(self, parameters):
    method updateMessages (line 30019) | def updateMessages(self, parameters):
    method execute (line 30031) | def execute(self, parameters, messages):
  class PercentageContrastStretch (line 30054) | class PercentageContrastStretch(object):
    method __init__ (line 30055) | def __init__(self):
    method getParameterInfo (line 30060) | def getParameterInfo(self):
    method updateParameters (line 30106) | def updateParameters(self, parameters):
    method updateMessages (line 30109) | def updateMessages(self, parameters):
    method execute (line 30121) | def execute(self, parameters, messages):
  class PercentileFilter (line 30140) | class PercentileFilter(object):
    method __init__ (line 30141) | def __init__(self):
    method getParameterInfo (line 30146) | def getParameterInfo(self):
    method updateParameters (line 30190) | def updateParameters(self, parameters):
    method updateMessages (line 30193) | def updateMessages(self, parameters):
    method execute (line 30205) | def execute(self, parameters, messages):
  class PerimeterAreaRatio (line 30224) | class PerimeterAreaRatio(object):
    method __init__ (line 30225) | def __init__(self):
    method getParameterInfo (line 30230) | def getParameterInfo(self):
    method updateParameters (line 30243) | def updateParameters(self, parameters):
    method updateMessages (line 30246) | def updateMessages(self, parameters):
    method execute (line 30258) | def execute(self, parameters, messages):
  class PhiCoefficient (line 30273) | class PhiCoefficient(object):
    method __init__ (line 30274) | def __init__(self):
    method getParameterInfo (line 30279) | def getParameterInfo(self):
    method updateParameters (line 30306) | def updateParameters(self, parameters):
    method updateMessages (line 30309) | def updateMessages(self, parameters):
    method execute (line 30321) | def execute(self, parameters, messages):
  class PickFromList (line 30341) | class PickFromList(object):
    method __init__ (line 30342) | def __init__(self):
    method getParameterInfo (line 30347) | def getParameterInfo(self):
    method updateParameters (line 30375) | def updateParameters(self, parameters):
    method updateMessages (line 30378) | def updateMessages(self, parameters):
    method execute (line 30390) | def execute(self, parameters, messages):
  class PiecewiseContrastStretch (line 30413) | class PiecewiseContrastStretch(object):
    method __init__ (line 30414) | def __init__(self):
    method getParameterInfo (line 30419) | def getParameterInfo(self):
    method updateParameters (line 30453) | def updateParameters(self, parameters):
    method updateMessages (line 30456) | def updateMessages(self, parameters):
    method execute (line 30468) | def execute(self, parameters, messages):
  class PlanCurvature (line 30486) | class PlanCurvature(object):
    method __init__ (line 30487) | def __init__(self):
    method getParameterInfo (line 30492) | def getParameterInfo(self):
    method updateParameters (line 30527) | def updateParameters(self, parameters):
    method updateMessages (line 30530) | def updateMessages(self, parameters):
    method execute (line 30542) | def execute(self, parameters, messages):
  class PolygonArea (line 30560) | class PolygonArea(object):
    method __init__ (line 30561) | def __init__(self):
    method getParameterInfo (line 30566) | def getParameterInfo(self):
    method updateParameters (line 30579) | def updateParameters(self, parameters):
    method updateMessages (line 30582) | def updateMessages(self, parameters):
    method execute (line 30594) | def execute(self, parameters, messages):
  class PolygonLongAxis (line 30609) | class PolygonLongAxis(object):
    method __init__ (line 30610) | def __init__(self):
    method getParameterInfo (line 30615) | def getParameterInfo(self):
    method updateParameters (line 30635) | def updateParameters(self, parameters):
    method updateMessages (line 30638) | def updateMessages(self, parameters):
    method execute (line 30650) | def execute(self, parameters, messages):
  class PolygonPerimeter (line 30666) | class PolygonPerimeter(object):
    method __init__ (line 30667) | def __init__(self):
    method getParameterInfo (line 30672) | def getParameterInfo(self):
    method updateParameters (line 30685) | def updateParameters(self, parameters):
    method updateMessages (line 30688) | def updateMessages(self, parameters):
    method execute (line 30700) | def execute(self, parameters, messages):
  class PolygonShortAxis (line 30715) | class PolygonShortAxis(object):
    method __init__ (line 30716) | def __init__(self):
    method getParameterInfo (line 30721) | def getParameterInfo(self):
    method updateParameters (line 30741) | def updateParameters(self, parameters):
    method updateMessages (line 30744) | def updateMessages(self, parameters):
    method execute (line 30756) | def execute(self, parameters, messages):
  class Polygonize (line 30772) | class Polygonize(object):
    method __init__ (line 30773) | def __init__(self):
    method getParameterInfo (line 30778) | def getParameterInfo(self):
    method updateParameters (line 30799) | def updateParameters(self, parameters):
    method updateMessages (line 30802) | def updateMessages(self, parameters):
    method execute (line 30814) | def execute(self, parameters, messages):
  class PolygonsToLines (line 30833) | class PolygonsToLines(object):
    method __init__ (line 30834) | def __init__(self):
    method getParameterInfo (line 30839) | def getParameterInfo(self):
    method updateParameters (line 30859) | def updateParameters(self, parameters):
    method updateMessages (line 30862) | def updateMessages(self, parameters):
    method execute (line 30874) | def execute(self, parameters, messages):
  class Power (line 30890) | class Power(object):
    method __init__ (line 30891) | def __init__(self):
    method getParameterInfo (line 30896) | def getParameterInfo(self):
    method updateParameters (line 30923) | def updateParameters(self, parameters):
    method updateMessages (line 30926) | def updateMessages(self, parameters):
    method execute (line 30938) | def execute(self, parameters, messages):
  class PrewittFilter (line 30964) | class PrewittFilter(object):
    method __init__ (line 30965) | def __init__(self):
    method getParameterInfo (line 30970) | def getParameterInfo(self):
    method updateParameters (line 30998) | def updateParameters(self, parameters):
    method updateMessages (line 31001) | def updateMessages(self, parameters):
    method execute (line 31013) | def execute(self, parameters, messages):
  class PrincipalComponentAnalysis (line 31030) | class PrincipalComponentAnalysis(object):
    method __init__ (line 31031) | def __init__(self):
    method getParameterInfo (line 31036) | def getParameterInfo(self):
    method updateParameters (line 31071) | def updateParameters(self, parameters):
    method updateMessages (line 31074) | def updateMessages(self, parameters):
    method execute (line 31086) | def execute(self, parameters, messages):
  class PrintGeoTiffTags (line 31107) | class PrintGeoTiffTags(object):
    method __init__ (line 31108) | def __init__(self):
    method getParameterInfo (line 31113) | def getParameterInfo(self):
    method updateParameters (line 31125) | def updateParameters(self, parameters):
    method updateMessages (line 31128) | def updateMessages(self, parameters):
    method execute (line 31140) | def execute(self, parameters, messages):
  class Profile (line 31155) | class Profile(object):
    method __init__ (line 31156) | def __init__(self):
    method getParameterInfo (line 31161) | def getParameterInfo(self):
    method updateParameters (line 31189) | def updateParameters(self, parameters):
    method updateMessages (line 31192) | def updateMessages(self, parameters):
    method execute (line 31204) | def execute(self, parameters, messages):
  class ProfileCurvature (line 31224) | class ProfileCurvature(object):
    method __init__ (line 31225) | def __init__(self):
    method getParameterInfo (line 31230) | def getParameterInfo(self):
    method updateParameters (line 31265) | def updateParameters(self, parameters):
    method updateMessages (line 31268) | def updateMessages(self, parameters):
    method execute (line 31280) | def execute(self, parameters, messages):
  class QinFlowAccumulation (line 31298) | class QinFlowAccumulation(object):
    method __init__ (line 31299) | def __init__(self):
    method getParameterInfo (line 31304) | def getParameterInfo(self):
    method updateParameters (line 31373) | def updateParameters(self, parameters):
    method updateMessages (line 31376) | def updateMessages(self, parameters):
    method execute (line 31388) | def execute(self, parameters, messages):
  class Quantiles (line 31410) | class Quantiles(object):
    method __init__ (line 31411) | def __init__(self):
    method getParameterInfo (line 31416) | def getParameterInfo(self):
    method updateParameters (line 31444) | def updateParameters(self, parameters):
    method updateMessages (line 31447) | def updateMessages(self, parameters):
    method execute (line 31459) | def execute(self, parameters, messages):
  class QuinnFlowAccumulation (line 31476) | class QuinnFlowAccumulation(object):
    method __init__ (line 31477) | def __init__(self):
    method getParameterInfo (line 31482) | def getParameterInfo(self):
    method updateParameters (line 31543) | def updateParameters(self, parameters):
    method updateMessages (line 31546) | def updateMessages(self, parameters):
    method execute (line 31558) | def execute(self, parameters, messages):
  class RadialBasisFunctionInterpolation (line 31579) | class RadialBasisFunctionInterpolation(object):
    method __init__ (line 31580) | def __init__(self):
    method getParameterInfo (line 31585) | def getParameterInfo(self):
    method updateParameters (line 31678) | def updateParameters(self, parameters):
    method updateMessages (line 31681) | def updateMessages(self, parameters):
    method execute (line 31693) | def execute(self, parameters, messages):
  class RadiusOfGyration (line 31721) | class RadiusOfGyration(object):
    method __init__ (line 31722) | def __init__(self):
    method getParameterInfo (line 31727) | def getParameterInfo(self):
    method updateParameters (line 31754) | def updateParameters(self, parameters):
    method updateMessages (line 31757) | def updateMessages(self, parameters):
    method execute (line 31769) | def execute(self, parameters, messages):
  class RaiseWalls (line 31786) | class RaiseWalls(object):
    method __init__ (line 31787) | def __init__(self):
    method getParameterInfo (line 31792) | def getParameterInfo(self):
    method updateParameters (line 31835) | def updateParameters(self, parameters):
    method updateMessages (line 31838) | def updateMessages(self, parameters):
    method execute (line 31850) | def execute(self, parameters, messages):
  class RandomField (line 31875) | class RandomField(object):
    method __init__ (line 31876) | def __init__(self):
    method getParameterInfo (line 31881) | def getParameterInfo(self):
    method updateParameters (line 31901) | def updateParameters(self, parameters):
    method updateMessages (line 31904) | def updateMessages(self, parameters):
    method execute (line 31916) | def execute(self, parameters, messages):
  class RandomForestClassification (line 31932) | class RandomForestClassification(object):
    method __init__ (line 31933) | def __init__(self):
    method getParameterInfo (line 31938) | def getParameterInfo(self):
    method updateParameters (line 32016) | def updateParameters(self, parameters):
    method updateMessages (line 32019) | def updateMessages(self, parameters):
    method execute (line 32031) | def execute(self, parameters, messages):
  class RandomForestRegression (line 32060) | class RandomForestRegression(object):
    method __init__ (line 32061) | def __init__(self):
    method getParameterInfo (line 32066) | def getParameterInfo(self):
    method updateParameters (line 32135) | def updateParameters(self, parameters):
    method updateMessages (line 32138) | def updateMessages(self, parameters):
    method execute (line 32150) | def execute(self, parameters, messages):
  class RandomSample (line 32178) | class RandomSample(object):
    method __init__ (line 32179) | def __init__(self):
    method getParameterInfo (line 32184) | def getParameterInfo(self):
    method updateParameters (line 32212) | def updateParameters(self, parameters):
    method updateMessages (line 32215) | def updateMessages(self, parameters):
    method execute (line 32227) | def execute(self, parameters, messages):
  class RangeFilter (line 32244) | class RangeFilter(object):
    method __init__ (line 32245) | def __init__(self):
    method getParameterInfo (line 32250) | def getParameterInfo(self):
    method updateParameters (line 32286) | def updateParameters(self, parameters):
    method updateMessages (line 32289) | def updateMessages(self, parameters):
    method execute (line 32301) | def execute(self, parameters, messages):
  class RasterArea (line 32319) | class RasterArea(object):
    method __init__ (line 32320) | def __init__(self):
    method getParameterInfo (line 32325) | def getParameterInfo(self):
    method updateParameters (line 32369) | def updateParameters(self, parameters):
    method updateMessages (line 32372) | def updateMessages(self, parameters):
    method execute (line 32384) | def execute(self, parameters, messages):
  class RasterCalculator (line 32403) | class RasterCalculator(object):
    method __init__ (line 32404) | def __init__(self):
    method getParameterInfo (line 32409) | def getParameterInfo(self):
    method updateParameters (line 32428) | def updateParameters(self, parameters):
    method updateMessages (line 32431) | def updateMessages(self, parameters):
    method execute (line 32443) | def execute(self, parameters, messages):
  class RasterCellAssignment (line 32456) | class RasterCellAssignment(object):
    method __init__ (line 32457) | def __init__(self):
    method getParameterInfo (line 32462) | def getParameterInfo(self):
    method updateParameters (line 32492) | def updateParameters(self, parameters):
    method updateMessages (line 32495) | def updateMessages(self, parameters):
    method execute (line 32507) | def execute(self, parameters, messages):
  class RasterHistogram (line 32524) | class RasterHistogram(object):
    method __init__ (line 32525) | def __init__(self):
    method getParameterInfo (line 32530) | def getParameterInfo(self):
    method updateParameters (line 32550) | def updateParameters(self, parameters):
    method updateMessages (line 32553) | def updateMessages(self, parameters):
    method execute (line 32565) | def execute(self, parameters, messages):
  class RasterPerimeter (line 32581) | class RasterPerimeter(object):
    method __init__ (line 32582) | def __init__(self):
    method getParameterInfo (line 32587) | def getParameterInfo(self):
    method updateParameters (line 32631) | def updateParameters(self, parameters):
    method updateMessages (line 32634) | def updateMessages(self, parameters):
    method execute (line 32646) | def execute(self, parameters, messages):
  class RasterStreamsToVector (line 32665) | class RasterStreamsToVector(object):
    method __init__ (line 32666) | def __init__(self):
    method getParameterInfo (line 32671) | def getParameterInfo(self):
    method updateParameters (line 32705) | def updateParameters(self, parameters):
    method updateMessages (line 32708) | def updateMessages(self, parameters):
    method execute (line 32720) | def execute(self, parameters, messages):
  class RasterSummaryStats (line 32741) | class RasterSummaryStats(object):
    method __init__ (line 32742) | def __init__(self):
    method getParameterInfo (line 32747) | def getParameterInfo(self):
    method updateParameters (line 32759) | def updateParameters(self, parameters):
    method updateMessages (line 32762) | def updateMessages(self, parameters):
    method execute (line 32774) | def execute(self, parameters, messages):
  class RasterToVectorLines (line 32789) | class RasterToVectorLines(object):
    method __init__ (line 32790) | def __init__(self):
    method getParameterInfo (line 32795) | def getParameterInfo(self):
    method updateParameters (line 32814) | def updateParameters(self, parameters):
    method updateMessages (line 32817) | def updateMessages(self, parameters):
    method execute (line 32829) | def execute(self, parameters, messages):
  class RasterToVectorPoints (line 32845) | class RasterToVectorPoints(object):
    method __init__ (line 32846) | def __init__(self):
    method getParameterInfo (line 32851) | def getParameterInfo(self):
    method updateParameters (line 32870) | def updateParameters(self, parameters):
    method updateMessages (line 32873) | def updateMessages(self, parameters):
    method execute (line 32885) | def execute(self, parameters, messages):
  class RasterToVectorPolygons (line 32901) | class RasterToVectorPolygons(object):
    method __init__ (line 32902) | def __init__(self):
    method getParameterInfo (line 32907) | def getParameterInfo(self):
    method updateParameters (line 32926) | def updateParameters(self, parameters):
    method updateMessages (line 32929) | def updateMessages(self, parameters):
    method execute (line 32941) | def execute(self, parameters, messages):
  class RasterizeStreams (line 32957) | class RasterizeStreams(object):
    method __init__ (line 32958) | def __init__(self):
    method getParameterInfo (line 32963) | def getParameterInfo(self):
    method updateParameters (line 33007) | def updateParameters(self, parameters):
    method updateMessages (line 33010) | def updateMessages(self, parameters):
    method execute (line 33022) | def execute(self, parameters, messages):
  class Reciprocal (line 33044) | class Reciprocal(object):
    method __init__ (line 33045) | def __init__(self):
    method getParameterInfo (line 33050) | def getParameterInfo(self):
    method updateParameters (line 33070) | def updateParameters(self, parameters):
    method updateMessages (line 33073) | def updateMessages(self, parameters):
    method execute (line 33085) | def execute(self, parameters, messages):
  class Reclass (line 33101) | class Reclass(object):
    method __init__ (line 33102) | def __init__(self):
    method getParameterInfo (line 33107) | def getParameterInfo(self):
    method updateParameters (line 33141) | def updateParameters(self, parameters):
    method updateMessages (line 33144) | def updateMessages(self, parameters):
    method execute (line 33156) | def execute(self, parameters, messages):
  class ReclassEqualInterval (line 33174) | class ReclassEqualInterval(object):
    method __init__ (line 33175) | def __init__(self):
    method getParameterInfo (line 33180) | def getParameterInfo(self):
    method updateParameters (line 33222) | def updateParameters(self, parameters):
    method updateMessages (line 33225) | def updateMessages(self, parameters):
    method execute (line 33237) | def execute(self, parameters, messages):
  class ReclassFromFile (line 33256) | class ReclassFromFile(object):
    method __init__ (line 33257) | def __init__(self):
    method getParameterInfo (line 33262) | def getParameterInfo(self):
    method updateParameters (line 33289) | def updateParameters(self, parameters):
    method updateMessages (line 33292) | def updateMessages(self, parameters):
    method execute (line 33304) | def execute(self, parameters, messages):
  class ReconcileMultipleHeaders (line 33321) | class ReconcileMultipleHeaders(object):
    method __init__ (line 33322) | def __init__(self):
    method getParameterInfo (line 33327) | def getParameterInfo(self):
    method updateParameters (line 33391) | def updateParameters(self, parameters):
    method updateMessages (line 33394) | def updateMessages(self, parameters):
    method execute (line 33406) | def execute(self, parameters, messages):
  class RecoverFlightlineInfo (line 33428) | class RecoverFlightlineInfo(object):
    method __init__ (line 33429) | def __init__(self):
    method getParameterInfo (line 33434) | def getParameterInfo(self):
    method updateParameters (line 33486) | def updateParameters(self, parameters):
    method updateMessages (line 33489) | def updateMessages(self, parameters):
    method execute (line 33501) | def execute(self, parameters, messages):
  class RecreatePassLines (line 33518) | class RecreatePassLines(object):
    method __init__ (line 33519) | def __init__(self):
    method getParameterInfo (line 33524) | def getParameterInfo(self):
    method updateParameters (line 33575) | def updateParameters(self, parameters):
    method updateMessages (line 33578) | def updateMessages(self, parameters):
    method execute (line 33590) | def execute(self, parameters, messages):
  class ReinitializeAttributeTable (line 33610) | class ReinitializeAttributeTable(object):
    method __init__ (line 33611) | def __init__(self):
    method getParameterInfo (line 33616) | def getParameterInfo(self):
    method updateParameters (line 33628) | def updateParameters(self, parameters):
    method updateMessages (line 33631) | def updateMessages(self, parameters):
    method execute (line 33643) | def execute(self, parameters, messages):
  class RelatedCircumscribingCircle (line 33658) | class RelatedCircumscribingCircle(object):
    method __init__ (line 33659) | def __init__(self):
    method getParameterInfo (line 33664) | def getParameterInfo(self):
    method updateParameters (line 33677) | def updateParameters(self, parameters):
    method updateMessages (line 33680) | def updateMessages(self, parameters):
    method execute (line 33692) | def execute(self, parameters, messages):
  class RelativeAspect (line 33707) | class RelativeAspect(object):
    method __init__ (line 33708) | def __init__(self):
    method getParameterInfo (line 33713) | def getParameterInfo(self):
    method updateParameters (line 33748) | def updateParameters(self, parameters):
    method updateMessages (line 33751) | def updateMessages(self, parameters):
    method execute (line 33763) | def execute(self, parameters, messages):
  class RelativeTopographicPosition (line 33781) | class RelativeTopographicPosition(object):
    method __init__ (line 33782) | def __init__(self):
    method getParameterInfo (line 33787) | def getParameterInfo(self):
    method updateParameters (line 33823) | def updateParameters(self, parameters):
    method updateMessages (line 33826) | def updateMessages(self, parameters):
    method execute (line 33838) | def execute(self, parameters, messages):
  class RemoveFieldEdgePoints (line 33856) | class RemoveFieldEdgePoints(object):
    method __init__ (line 33857) | def __init__(self):
    method getParameterInfo (line 33862) | def getParameterInfo(self):
    method updateParameters (line 33905) | def updateParameters(self, parameters):
    method updateMessages (line 33908) | def updateMessages(self, parameters):
    method execute (line 33920) | def execute(self, parameters, messages):
  class RemoveOffTerrainObjects (line 33939) | class RemoveOffTerrainObjects(object):
    method __init__ (line 33940) | def __init__(self):
    method getParameterInfo (line 33945) | def getParameterInfo(self):
    method updateParameters (line 33981) | def updateParameters(self, parameters):
    method updateMessages (line 33984) | def updateMessages(self, parameters):
    method execute (line 33996) | def execute(self, parameters, messages):
  class RemovePolygonHoles (line 34014) | class RemovePolygonHoles(object):
    method __init__ (line 34015) | def __init__(self):
    method getParameterInfo (line 34020) | def getParameterInfo(self):
    method updateParameters (line 34040) | def updateParameters(self, parameters):
    method updateMessages (line 34043) | def updateMessages(self, parameters):
    method execute (line 34055) | def execute(self, parameters, messages):
  class RemoveRasterPolygonHoles (line 34071) | class RemoveRasterPolygonHoles(object):
    method __init__ (line 34072) | def __init__(self):
    method getParameterInfo (line 34077) | def getParameterInfo(self):
    method updateParameters (line 34113) | def updateParameters(self, parameters):
    method updateMessages (line 34116) | def updateMessages(self, parameters):
    method execute (line 34128) | def execute(self, parameters, messages):
  class RemoveShortStreams (line 34146) | class RemoveShortStreams(object):
    method __init__ (line 34147) | def __init__(self):
    method getParameterInfo (line 34152) | def getParameterInfo(self):
    method updateParameters (line 34194) | def updateParameters(self, parameters):
    method updateMessages (line 34197) | def updateMessages(self, parameters):
    method execute (line 34209) | def execute(self, parameters, messages):
  class RemoveSpurs (line 34231) | class RemoveSpurs(object):
    method __init__ (line 34232) | def __init__(self):
    method getParameterInfo (line 34237) | def getParameterInfo(self):
    method updateParameters (line 34265) | def updateParameters(self, parameters):
    method updateMessages (line 34268) | def updateMessages(self, parameters):
    method execute (line 34280) | def execute(self, parameters, messages):
  class RepairStreamVectorTopology (line 34297) | class RepairStreamVectorTopology(object):
    method __init__ (line 34298) | def __init__(self):
    method getParameterInfo (line 34303) | def getParameterInfo(self):
    method updateParameters (line 34329) | def updateParameters(self, parameters):
    method updateMessages (line 34332) | def updateMessages(self, parameters):
    method execute (line 34344) | def execute(self, parameters, messages):
  class Resample (line 34361) | class Resample(object):
    method __init__ (line 34362) | def __init__(self):
    method getParameterInfo (line 34367) | def getParameterInfo(self):
    method updateParameters (line 34412) | def updateParameters(self, parameters):
    method updateMessages (line 34415) | def updateMessages(self, parameters):
    method execute (line 34427) | def execute(self, parameters, messages):
  class RescaleValueRange (line 34452) | class RescaleValueRange(object):
    method __init__ (line 34453) | def __init__(self):
    method getParameterInfo (line 34458) | def getParameterInfo(self):
    method updateParameters (line 34506) | def updateParameters(self, parameters):
    method updateMessages (line 34509) | def updateMessages(self, parameters):
    method execute (line 34521) | def execute(self, parameters, messages):
  class RgbToIhs (line 34541) | class RgbToIhs(object):
    method __init__ (line 34542) | def __init__(self):
    method getParameterInfo (line 34547) | def getParameterInfo(self):
    method updateParameters (line 34604) | def updateParameters(self, parameters):
    method updateMessages (line 34607) | def updateMessages(self, parameters):
    method execute (line 34619) | def execute(self, parameters, messages):
  class Rho8FlowAccumulation (line 34649) | class Rho8FlowAccumulation(object):
    method __init__ (line 34650) | def __init__(self):
    method getParameterInfo (line 34655) | def getParameterInfo(self):
    method updateParameters (line 34717) | def updateParameters(self, parameters):
    method updateMessages (line 34720) | def updateMessages(self, parameters):
    method execute (line 34732) | def execute(self, parameters, messages):
  class Rho8Pointer (line 34753) | class Rho8Pointer(object):
    method __init__ (line 34754) | def __init__(self):
    method getParameterInfo (line 34759) | def getParameterInfo(self):
    method updateParameters (line 34787) | def updateParameters(self, parameters):
    method updateMessages (line 34790) | def updateMessages(self, parameters):
    method execute (line 34802) | def execute(self, parameters, messages):
  class RingCurvature (line 34819) | class RingCurvature(object):
    method __init__ (line 34820) | def __init__(self):
    method getParameterInfo (line 34825) | def getParameterInfo(self):
    method updateParameters (line 34861) | def updateParameters(self, parameters):
    method updateMessages (line 34864) | def updateMessages(self, parameters):
    method execute (line 34876) | def execute(self, parameters, messages):
  class RiverCenterlines (line 34894) | class RiverCenterlines(object):
    method __init__ (line 34895) | def __init__(self):
    method getParameterInfo (line 34900) | def getParameterInfo(self):
    method updateParameters (line 34935) | def updateParameters(self, parameters):
    method updateMessages (line 34938) | def updateMessages(self, parameters):
    method execute (line 34950) | def execute(self, parameters, messages):
  class RobertsCrossFilter (line 34968) | class RobertsCrossFilter(object):
    method __init__ (line 34969) | def __init__(self):
    method getParameterInfo (line 34974) | def getParameterInfo(self):
    method updateParameters (line 35002) | def updateParameters(self, parameters):
    method updateMessages (line 35005) | def updateMessages(self, parameters):
    method execute (line 35017) | def execute(self, parameters, messages):
  class RootMeanSquareError (line 35034) | class RootMeanSquareError(object):
    method __init__ (line 35035) | def __init__(self):
    method getParameterInfo (line 35040) | def getParameterInfo(self):
    method updateParameters (line 35059) | def updateParameters(self, parameters):
    method updateMessages (line 35062) | def updateMessages(self, parameters):
    method execute (line 35074) | def execute(self, parameters, messages):
  class Rotor (line 35093) | class Rotor(object):
    method __init__ (line 35094) | def __init__(self):
    method getParameterInfo (line 35099) | def getParameterInfo(self):
    method updateParameters (line 35135) | def updateParameters(self, parameters):
    method updateMessages (line 35138) | def updateMessages(self, parameters):
    method execute (line 35150) | def execute(self, parameters, messages):
  class Round (line 35168) | class Round(object):
    method __init__ (line 35169) | def __init__(self):
    method getParameterInfo (line 35174) | def getParameterInfo(self):
    method updateParameters (line 35194) | def updateParameters(self, parameters):
    method updateMessages (line 35197) | def updateMessages(self, parameters):
    method execute (line 35209) | def execute(self, parameters, messages):
  class RuggednessIndex (line 35225) | class RuggednessIndex(object):
    method __init__ (line 35226) | def __init__(self):
    method getParameterInfo (line 35231) | def getParameterInfo(self):
    method updateParameters (line 35251) | def updateParameters(self, parameters):
    method updateMessages (line 35254) | def updateMessages(self, parameters):
    method execute (line 35266) | def execute(self, parameters, messages):
  class ScharrFilter (line 35282) | class ScharrFilter(object):
    method __init__ (line 35283) | def __init__(self):
    method getParameterInfo (line 35288) | def getParameterInfo(self):
    method updateParameters (line 35316) | def updateParameters(self, parameters):
    method updateMessages (line 35319) | def updateMessages(self, parameters):
    method execute (line 35331) | def execute(self, parameters, messages):
  class SedimentTransportIndex (line 35348) | class SedimentTransportIndex(object):
    method __init__ (line 35349) | def __init__(self):
    method getParameterInfo (line 35354) | def getParameterInfo(self):
    method updateParameters (line 35397) | def updateParameters(self, parameters):
    method updateMessages (line 35400) | def updateMessages(self, parameters):
    method execute (line 35412) | def execute(self, parameters, messages):
  class SelectTilesByPolygon (line 35434) | class SelectTilesByPolygon(object):
    method __init__ (line 35435) | def __init__(self):
    method getParameterInfo (line 35440) | def getParameterInfo(self):
    method updateParameters (line 35467) | def updateParameters(self, parameters):
    method updateMessages (line 35470) | def updateMessages(self, parameters):
    method execute (line 35482) | def execute(self, parameters, messages):
  class SetNodataValue (line 35499) | class SetNodataValue(object):
    method __init__ (line 35500) | def __init__(self):
    method getParameterInfo (line 35505) | def getParameterInfo(self):
    method updateParameters (line 35533) | def updateParameters(self, parameters):
    method updateMessages (line 35536) | def updateMessages(self, parameters):
    method execute (line 35548) | def execute(self, parameters, messages):
  class ShadowAnimation (line 35565) | class ShadowAnimation(object):
    method __init__ (line 35566) | def __init__(self):
    method getParameterInfo (line 35571) | def getParameterInfo(self):
    method updateParameters (line 35653) | def updateParameters(self, parameters):
    method updateMessages (line 35656) | def updateMessages(self, parameters):
    method execute (line 35668) | def execute(self, parameters, messages):
  class ShadowImage (line 35692) | class ShadowImage(object):
    method __init__ (line 35693) | def __init__(self):
    method getParameterInfo (line 35698) | def getParameterInfo(self):
    method updateParameters (line 35758) | def updateParameters(self, parameters):
    method updateMessages (line 35761) | def updateMessages(self, parameters):
    method execute (line 35773) | def execute(self, parameters, messages):
  class ShapeComplexityIndex (line 35794) | class ShapeComplexityIndex(object):
    method __init__ (line 35795) | def __init__(self):
    method getParameterInfo (line 35800) | def getParameterInfo(self):
    
Condensed preview — 90 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,215K chars).
[
  {
    "path": ".gitignore",
    "chars": 1638,
    "preview": "# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n.idea/\nwhitebox/WBT/\n**/*.tar.xz\n**/*.xml\n**/."
  },
  {
    "path": ".pre-commit-config.yaml",
    "chars": 882,
    "preview": "repos:\n  - repo: https://github.com/pre-commit/pre-commit-hooks\n    rev: v6.0.0\n    hooks:\n      - id: check-toml\n      "
  },
  {
    "path": "LICENSE",
    "chars": 1068,
    "preview": "MIT License\n\nCopyright (c) 2019 Qiusheng Wu\n\nPermission is hereby granted, free of charge, to any person obtaining a cop"
  },
  {
    "path": "README.md",
    "chars": 8908,
    "preview": "# WhiteboxTools-ArcGIS\n\n[![docs](https://img.shields.io/badge/whitebox-docs-brightgreen.svg)](https://www.whiteboxgeo.co"
  },
  {
    "path": "WBT/LICENSE.txt",
    "chars": 1084,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2017-2021 John Lindsay\n\nPermission is hereby granted, free of charge, to any person"
  },
  {
    "path": "WBT/PRE/WhiteboxTools.py",
    "chars": 1461289,
    "preview": "import arcpy\nimport os\nimport webbrowser\nfrom WBT.whitebox_tools import WhiteboxTools\nif sys.version_info < (3, 0):\n    "
  },
  {
    "path": "WBT/PRE/automation.py",
    "chars": 21656,
    "preview": "##################################################################\n# Steps for updating WhiteboxTools-ArcGIS\n# Step 0: -"
  },
  {
    "path": "WBT/PRE/file_about.py",
    "chars": 12068,
    "preview": "class Help(object):\n    def __init__(self):\n        \"\"\"Define the tool (tool name is the name of the class).\"\"\"\n        "
  },
  {
    "path": "WBT/PRE/file_header.py",
    "chars": 22483,
    "preview": "import arcpy\nimport os\nimport webbrowser\nfrom WBT.whitebox_tools import WhiteboxTools\nif sys.version_info < (3, 0):\n    "
  },
  {
    "path": "WBT/PRE/file_tool.py",
    "chars": 877,
    "preview": "class Tool(object):\n    def __init__(self):\n        \"\"\"Define the tool (tool name is the name of the class).\"\"\"\n        "
  },
  {
    "path": "WBT/PRE/file_toolbox.py",
    "chars": 545,
    "preview": "class Toolbox(object):\n    def __init__(self):\n        \"\"\"Define the toolbox (the name of the toolbox is the name of the"
  },
  {
    "path": "WBT/PRE/testing.py",
    "chars": 4589,
    "preview": "import whitebox\nimport ast\nimport json\nimport os\nimport sys\n\nwbt = whitebox.WhiteboxTools()\n# wbt.set_verbose_mode(True)"
  },
  {
    "path": "WBT/PRE/whitebox_tools.py",
    "chars": 357075,
    "preview": "#!/usr/bin/env python3\n''' This file is intended to be a helper for running whitebox-tools plugins from a Python script."
  },
  {
    "path": "WBT/UserManual.txt",
    "chars": 286,
    "preview": "The WhiteboxTools User Manual is now available online at:\n\nhttps://www.whiteboxgeo.com/manual/wbt_book/preface.html\n\nPle"
  },
  {
    "path": "WBT/__init__.py",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "WBT/plugins/conditional_evaluation.json",
    "chars": 2033,
    "preview": "{\n    \"tool_name\": \"ConditionalEvaluation\",\n    \"exe\": \"conditional_evaluation\",\n    \"short_description\": \"Performs a co"
  },
  {
    "path": "WBT/plugins/conditioned_latin_hypercube.json",
    "chars": 3641,
    "preview": "{\n    \"tool_name\": \"ConditionedLatinHypercube\",\n    \"exe\": \"conditioned_latin_hypercube\",\n    \"short_description\": \"Impl"
  },
  {
    "path": "WBT/plugins/edge_contamination.json",
    "chars": 1623,
    "preview": "{\n    \"tool_name\": \"EdgeContamination\",\n    \"exe\": \"edge_contamination\",\n    \"short_description\": \"Identifies grid cells"
  },
  {
    "path": "WBT/plugins/exposure_towards_wind_flux.json",
    "chars": 1821,
    "preview": "{\n    \"tool_name\": \"ExposureTowardsWindFlux\",\n    \"exe\": \"exposure_towards_wind_flux\",\n    \"short_description\": \"Evaluat"
  },
  {
    "path": "WBT/plugins/gaussian_scale_space.json",
    "chars": 3827,
    "preview": "{\n    \"tool_name\": \"GaussianScaleSpace\",\n    \"exe\": \"gaussian_scale_space\",\n    \"short_description\": \"Uses the fast Gaus"
  },
  {
    "path": "WBT/plugins/heat_map.json",
    "chars": 2734,
    "preview": "{\n    \"tool_name\": \"HeatMap\",\n    \"exe\": \"heat_map\",\n    \"short_description\": \"Calculates a heat map, or kernel density "
  },
  {
    "path": "WBT/plugins/individual_tree_detection.json",
    "chars": 2372,
    "preview": "{\n    \"tool_name\": \"IndividualTreeDetection\",\n    \"exe\": \"individual_tree_detection\",\n    \"short_description\": \"Identifi"
  },
  {
    "path": "WBT/plugins/install_wb_extension.json",
    "chars": 896,
    "preview": "{\n    \"tool_name\": \"InstallWbExtension\",\n    \"exe\": \"install_wb_extension\",\n    \"short_description\": \"Use to install a W"
  },
  {
    "path": "WBT/plugins/launch_wb_runner.json",
    "chars": 576,
    "preview": "{\n    \"tool_name\": \"LaunchWbRunner\",\n    \"exe\": \"launch_wb_runner\",\n    \"short_description\": \"Opens the Whitebox Runner "
  },
  {
    "path": "WBT/plugins/lidar_shift.json",
    "chars": 1630,
    "preview": "{\n    \"tool_name\": \"LidarShift\",\n    \"exe\": \"lidar_shift\",\n    \"short_description\": \"Shifts the x,y,z coordinates of a L"
  },
  {
    "path": "WBT/plugins/local_quadratic_regression.json",
    "chars": 1269,
    "preview": "{\n    \"tool_name\": \"LocalQuadraticRegression\",\n    \"exe\": \"local_quadratic_regression\",\n    \"short_description\": \"An imp"
  },
  {
    "path": "WBT/plugins/max_upslope_value.json",
    "chars": 1214,
    "preview": "{\n    \"tool_name\": \"MaxUpslopeValue\",\n    \"exe\": \"max_upslope_value\",\n    \"short_description\": \"Calculates the maximum u"
  },
  {
    "path": "WBT/plugins/normalize_lidar.json",
    "chars": 1180,
    "preview": "{\n    \"tool_name\": \"NormalizeLidar\",\n    \"exe\": \"normalize_lidar\",\n    \"short_description\": \"Normalizes a LiDAR point cl"
  },
  {
    "path": "WBT/plugins/qin_flow_accumulation.json",
    "chars": 2966,
    "preview": "{\n    \"tool_name\": \"QinFlowAccumulation\",\n    \"exe\": \"qin_flow_accumulation\",\n    \"short_description\": \"Calculates Qin e"
  },
  {
    "path": "WBT/plugins/quinn_flow_accumulation.json",
    "chars": 2596,
    "preview": "{\n    \"tool_name\": \"QuinnFlowAccumulation\",\n    \"exe\": \"quinn_flow_accumulation\",\n    \"short_description\": \"Calculates Q"
  },
  {
    "path": "WBT/plugins/raster_calculator.json",
    "chars": 1044,
    "preview": "{\n    \"tool_name\": \"RasterCalculator\",\n    \"exe\": \"raster_calculator\",\n    \"short_description\": \"Performs a complex math"
  },
  {
    "path": "WBT/plugins/repair_stream_vector_topology.json",
    "chars": 1409,
    "preview": "{\n    \"tool_name\": \"RepairStreamVectorTopology\",\n    \"exe\": \"repair_stream_vector_topology\",\n    \"short_description\": \"T"
  },
  {
    "path": "WBT/plugins/rho8_flow_accumulation.json",
    "chars": 2631,
    "preview": "{\n    \"tool_name\": \"Rho8FlowAccumulation\",\n    \"exe\": \"rho8_flow_accumulation\",\n    \"short_description\": \"Calculates Fai"
  },
  {
    "path": "WBT/plugins/split_vector_lines.json",
    "chars": 1187,
    "preview": "{\n    \"tool_name\": \"SplitVectorLines\",\n    \"exe\": \"split_vector_lines\",\n    \"short_description\": \"Used to split a vector"
  },
  {
    "path": "WBT/plugins/travelling_salesman_problem.json",
    "chars": 1288,
    "preview": "{\n    \"tool_name\": \"TravellingSalesmanProblem\",\n    \"exe\": \"travelling_salesman_problem\",\n    \"short_description\": \"Find"
  },
  {
    "path": "WBT/plugins/vector_stream_network_analysis.json",
    "chars": 2003,
    "preview": "{\n    \"tool_name\": \"VectorStreamNetworkAnalysis\",\n    \"exe\": \"vector_stream_network_analysis\",\n    \"short_description\": "
  },
  {
    "path": "WBT/readme.txt",
    "chars": 49349,
    "preview": "WhiteboxTools\n\nThe main tool library is contained in the whitebox_tools (or whitebox_tools.exe on \nMS Windows) file. Thi"
  },
  {
    "path": "WBT/wb_runner.py",
    "chars": 60302,
    "preview": "#!/usr/bin/env python3\n\n# This script is part of the WhiteboxTools geospatial analysis library.\n# Authors: Dr. John Lind"
  },
  {
    "path": "WBT/whitebox_example.py",
    "chars": 6132,
    "preview": "#!/usr/bin/env python\n''' This module provides examples of how to call the whitebox_tool script and the\nwhitebox-tools g"
  },
  {
    "path": "WBT/whitebox_tools.py",
    "chars": 493552,
    "preview": "#!/usr/bin/env python3\n''' This file is intended to be a helper for running whitebox-tools plugins from a Python script."
  },
  {
    "path": "WhiteboxTools.pyt",
    "chars": 1461294,
    "preview": "import arcpy\nimport os, sys\nimport webbrowser\nfrom WBT.whitebox_tools import WhiteboxTools\nif sys.version_info < (3, 0):"
  },
  {
    "path": "testdata/DEM/DEM.dep",
    "chars": 445,
    "preview": "Min:\t212.22877502441406\nMax:\t1233.0966796875\nNorth:\t4895782.5891085025\nSouth:\t4878858.5400943495\nEast:\t686063.139196986\n"
  },
  {
    "path": "testdata/Landsat/LC80320272014265LGN00_Boundary.cpg",
    "chars": 5,
    "preview": "UTF-8"
  },
  {
    "path": "testdata/Landsat/LC80320272014265LGN00_Boundary.prj",
    "chars": 424,
    "preview": "PROJCS[\"NAD_1983_UTM_Zone_14N\",GEOGCS[\"GCS_North_American_1983\",DATUM[\"D_North_American_1983\",SPHEROID[\"GRS_1980\",637813"
  },
  {
    "path": "testdata/Landsat/Readme.txt",
    "chars": 302,
    "preview": "Landsat 8 scene id: LC80320272014265LGN00\nAcquisition Date: 2014-09-22\nCoverage area: Central North Dakota\n \nDownloaded "
  },
  {
    "path": "testdata/Wetlands/CLSA_Boundary.prj",
    "chars": 424,
    "preview": "PROJCS[\"NAD_1983_UTM_Zone_14N\",GEOGCS[\"GCS_North_American_1983\",DATUM[\"D_North_American_1983\",SPHEROID[\"GRS_1980\",637813"
  },
  {
    "path": "testdata/Wetlands/CLSA_Wetland_Points.prj",
    "chars": 424,
    "preview": "PROJCS[\"NAD_1983_UTM_Zone_14N\",GEOGCS[\"GCS_North_American_1983\",DATUM[\"D_North_American_1983\",SPHEROID[\"GRS_1980\",637813"
  },
  {
    "path": "testdata/Wetlands/CLSA_Wetland_Polygons.prj",
    "chars": 424,
    "preview": "PROJCS[\"NAD_1983_UTM_Zone_14N\",GEOGCS[\"GCS_North_American_1983\",DATUM[\"D_North_American_1983\",SPHEROID[\"GRS_1980\",637813"
  },
  {
    "path": "testdata/Wetlands/CLSA_Wetland_Polylines.cpg",
    "chars": 5,
    "preview": "UTF-8"
  },
  {
    "path": "testdata/Wetlands/CLSA_Wetland_Polylines.prj",
    "chars": 424,
    "preview": "PROJCS[\"NAD_1983_UTM_Zone_14N\",GEOGCS[\"GCS_North_American_1983\",DATUM[\"D_North_American_1983\",SPHEROID[\"GRS_1980\",637813"
  },
  {
    "path": "testdata/Wetlands/Readme.txt",
    "chars": 116,
    "preview": "Cottonwood Lake Study Area(CLSA), Stutsman County, North Dakota.\n\nMore info at: https://dx.doi.org/10.5066/F7707ZJ6\n"
  },
  {
    "path": "testdata/WorldMap/Readme.txt",
    "chars": 2961,
    "preview": "TM_WORLD_BORDERS-0.1.ZIP \r\n\r\nProvided by Bjorn Sandvik, thematicmapping.org\r\n\r\nUse this dataset with care, as several of"
  },
  {
    "path": "testdata/WorldMap/TM_WORLD_BORDERS_SIMPL-0.3.prj",
    "chars": 145,
    "preview": "GEOGCS[\"GCS_WGS_1984\",DATUM[\"D_WGS_1984\",SPHEROID[\"WGS_1984\",6378137.0,298.257223563]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Deg"
  },
  {
    "path": "testdata/examples.py",
    "chars": 547,
    "preview": "import os\r\n# import arcpy\r\n\r\ndata_dir = os.path.dirname(os.path.abspath(__file__))\r\nwbt_dir = os.path.dirname(data_dir)\r"
  }
]

// ... and 36 more files (download for full content)

About this extraction

This page contains the full source code of the giswqs/WhiteboxTools-ArcGIS GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 90 files (3.8 MB), approximately 1.0M tokens, and a symbol index with 4495 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!