Least-Cost Corridor
Summary
Builds least-cost corridor polygons between every pair of Wildland Blocks in an Identify Termini Polygons output, for every category present. The tool combines the accumulated cost-distance from each block into a corridor surface — lowest along the literal least-cost path, the path of least resistance, and rising away from it — computed internally with no Spatial Analyst, then extracts the surface at a series of percentile-width thresholds as polygons. Geodesic distances are used automatically on a geographic coordinate system. A modernized, generalized port of the original CorridorDesigner CorridorModel tool.
One tool for both corridor workflows
This tool serves the traditional corridor analysis and the land facet analysis alike. In the traditional workflow, its most common use, the cost surface is a species habitat-suitability surface inverted to cost, and the result is the classic CorridorDesigner corridor between two protected blocks. In the land facet workflow the same machinery builds a corridor between each facet's concentrations, with the cost surfaces coming from Land Facet Mahalanobis. The tool works identically either way; the Category fields on its input and output simply mean whatever the termini were grouped by — species surface or land facet alike.
Blocks, pairs, and the corridor surface
A corridor connects two Wildland Blocks — never two termini inside the same block, since a block is already protected ground. Blocks are identified by the small 1, 2, 3… numbers the termini tool assigned (the Wildland Block pairs parameter is a picker built from the pairs actually present, so you never look the numbers up by hand). With more than two blocks, a corridor is built for every pair by default, and you have the option to generate corridors between all pairs of blocks or only specific pairs. For each pair and category, the accumulated cost from block A's termini plus the accumulated cost from block B's is summed into the corridor surface, whose value at any cell is the total cost of the best route through that cell; the percentile slices (as a percentage of the analysis area) turn it into nested corridor polygons, from the lean spine outward.
A tour of the dialog
The example is the land facet run from the Land Facet Tutorial, eighteen facets in one pass.
The single-category form is the same dialog with a cost raster given directly. Here it builds the interspersion corridor of the Land Facet Tutorial from the diversity termini and the inverted diversity surface; a species corridor from a habitat model works the same way.
The tool holds the whole raster in memory at once, so the memory it needs grows with the number of cells. On most rasters that is no concern. On a very large one the tool may need more memory than your computer has free, and then one of two things happens: Windows starts using the disk as overflow memory and the tool slows to a crawl, or the tool stops with an out-of-memory error. There is no fixed limit; it depends on how much memory your computer has free. If a raster is too large, clip it to the area you need first.
ModelBuilder
Parameters
| Label | Explanation | Data type |
|---|---|---|
| Termini feature classRequired · in_termini | The Identify Termini Polygons output (not the raw blocks layer). | Feature Layer |
| Cost raster (single category)Optional · cost_raster | One cost surface, for a single-category run. | Raster Layer |
| Cost raster workspaceOptional · cost_workspace | A workspace of per-category cost rasters — e.g. Land Facet Mahalanobis's or Invert Raster's output workspace; matched to categories by their records. | Workspace |
| Output workspaceRequired · out_workspace | Home for the corridor cost rasters. | Workspace |
| Output raster name prefixOptional · out_prefix | Prefix for the per-corridor rasters. | String |
| Output corridor polygon feature classRequired · out_fc | The corridor slices, attributed by category, block pair, and percentile. Polygons are written widest slice first, so each narrower slice draws on top of the wider ones, and the layer arrives symbolized by Percentile with a graded color ramp and a partly transparent fill. | Feature Class |
| Percentile-width thresholdsOptional · percentiles | The slices, as % of the analysis area. | Double (multiple) |
| Wildland Block pairsOptional · block_pairs | Which pairs to connect (default: all pairs present). | String |
| Categories to processOptional · facets | Restrict the run to chosen categories (default all). | String |
Python
import arcpy
arcpy.ImportToolbox(r"C:\path\to\JennessEnterprisesTools.pyt") # your install path
arcpy.jenness.LeastCostCorridor(
in_termini=r"D:\corr.gdb\Facet_Termini",
cost_workspace=r"D:\corr.gdb",
out_workspace=r"D:\corr.gdb",
out_fc=r"D:\corr.gdb\Facet_Corridors",
percentiles=[0.5, 1, 2, 5])
Recommended citation
Credits and references
By Jeff Jenness, Jenness Enterprises (www.jennessent.com), ported from the CorridorDesigner tools by Jenness, Majka and Beier.
- Beier, P., D. Majka, and J. Jenness. 2007, revised 2026. Designing wildlife corridors with ArcGIS: ArcGIS Pro edition. Workshop book, revised by J. Jenness for the Corridor Designer Tools of the Wildlife and Forestry Tools add-in. Available at: CorridorDesigner_WorkshopBook_2026_ArcGISPro.pdf (5 MB)
- Majka, D., J. Jenness, and P. Beier. 2007. CorridorDesigner: ArcGIS tools for designing and evaluating corridors. Available at: corridordesign.org (archived copy at the Internet Archive)
Licensing information
Works at every ArcGIS Pro license level (Basic, Standard, Advanced). No extension licenses are required — the cost-distance accumulation is computed internally, with no Spatial Analyst.
Related tools and pages
- Identify Termini Polygons — produces the required input.
- Invert Raster — turns suitability into cost.
- Fill Corridor Holes and Union Corridors — the post-processing pair.
- Corridor Design Tutorial and Land Facet Tutorial — the tool in both workflows.
- Diversity Indices — the diversity surface behind the interspersion corridor run above.