Identify Termini Polygons
Summary
Finds the corridor termini within each Wildland Block: the concentrations of a quality surface — a species habitat-suitability surface, a Land Facet Density raster, or a diversity surface — that the least-cost corridors will run between. A corridor does not run from the edge of one block to the edge of the other; it runs between the concentrations of good ground inside the blocks, and if a block held no meaningful concentration there would be nothing to connect. Cells above a threshold are aggregated into regions (edge or corner contact counts as connected), and each block keeps the regions at least a given percentage (default 50%) of the size of its own largest region. A modernized, generalized port of the Land Facet Corridor Designer's tool of the same name; no Spatial Analyst needed.
The analysis surface
This tool serves both corridor workflows. Its traditional use — the one CorridorDesigner was built for — is a habitat suitability surface, where the median rule below finds the best half of each block's own ground. The Land Facet chain uses the same mechanism two ways: fed a multi-band Land Facet Density raster, the tool reads the band-to-facet mapping from the raster's own records, analyzes every facet in one run, and labels each terminus with its facet; fed a diversity surface (from Diversity Indices), it produces the termini for the facet-interspersion corridor. Any single-band raster where high means good works the same way.
Whatever the input, the output is the same thing: one polygon feature class of termini. Run on a suitability or diversity surface, that feature class holds one set of termini, normally one polygon per Wildland Block, all under a single category. Run on a multi-band land facet density raster, the single feature class holds the termini for every band, a set of polygons per facet, each stamped with its facet's name in the Category field. Eighteen facets give one feature class holding eighteen sets of termini, not eighteen feature classes, and Least-Cost Corridor reads them all from this single feature class.
The three threshold rules
Fixed value keeps cells strictly above the density threshold you give — the manual recommends 0 for density surfaces, meaning any cell with any density at all is eligible. Median within each Wildland Block implements the manual's diversity rule exactly: each block's threshold is the median of its own cells, computed per block automatically — the published “highest half of each block” rule. Treat entire block polygons as termini skips thresholding altogether — each Wildland Block becomes its own terminus, a good default when no patch information is available. The threshold each region had to beat is written to its Threshold field. When entire blocks are used as termini no threshold is applied, and the field holds −9999 to say so.
The output schema
One polygon feature class with Category, CategoryID, and Block fields — blocks are numbered 1, 2, 3… in the order the features appear in the block layer (not by ObjectID). This is the required input of the Least-Cost Corridor tool, which builds its block-pair picker from exactly these fields. Any number of Wildland Block features is allowed.
A tour of the dialog
The tool serves both workflows, and the two dialogs below show the difference. On the left, the Corridor Design Tutorial runs it on a single-band habitat suitability model with a fixed threshold of 60, and gets one terminus per block. On the right, the Land Facet Tutorial runs it on the 18-band density raster with the threshold at zero, meaning any density at all, and gets termini for every facet in one pass.
The third threshold rule, the median within each Wildland Block, is for surfaces where no fixed number makes a sensible cut. Some surfaces have no natural zero at all: a corridor built on elevation, say, or on curvature, where a cell is only high or low relative to its neighbors and any fixed threshold would be arbitrary. There the median is the natural rule: a cell qualifies if it is above the median of its own block, so each block yields its upper half, and the size test then keeps the largest regions of that. We have not yet worked an example on that kind of data. The example below is the one the Land Facet manual prescribes the median rule for, the facet diversity surface of the interspersion corridor. Diversity does have a natural zero, a cell surrounded entirely by one facet, and the zeros show in the map as holes; the median is used here not for want of a zero but because the manual's rule is each block's more-diverse half, whatever its values happen to be.
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 |
|---|---|---|
| Analysis surfaceRequired · in_raster | Density, diversity, or habitat-suitability raster; multi-band density rasters process every facet in one run. | Raster Layer |
| Wildland Block polygonsRequired · blocks | Each feature is one block, numbered in feature order. | Feature Layer |
| Output termini feature classRequired · out_fc | Termini polygons with Category / CategoryID / Block / Threshold fields. | Feature Class |
| Threshold ruleRequired · threshold_mode | Fixed value, per-block median, or entire blocks as termini. | String |
| Threshold valueOptional · threshold_value | For the fixed rule: keep cells above this. | Double |
| Relative size thresholdOptional · relative_size_pct | Keep regions at least this % of each block's largest region (default 50). | Double |
| Categories / bands to analyzeOptional · facets | Restrict a multi-band run to chosen facets (default all). | String |
Python
import arcpy
arcpy.ImportToolbox(r"C:\path\to\JennessEnterprisesTools.pyt") # your install path
arcpy.jenness.IdentifyTerminiPolygons(
in_raster=r"D:\corr.gdb\Facet_Density",
blocks="Wildland_Blocks",
out_fc=r"D:\corr.gdb\Facet_Termini",
threshold_mode="Fixed value",
threshold_value=0,
relative_size_pct=50)
Recommended citation
Credits and references
By Jeff Jenness, Jenness Enterprises (www.jennessent.com), ported from the Land Facet Corridor Designer by Jenness, Brost 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)
- Jenness, J., B. Brost, and P. Beier. 2013. Land Facet Corridor Designer. 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.
Related tools and pages
- Least-Cost Corridor — consumes this tool's output directly.
- Corridor Design Tutorial and Land Facet Tutorial — the termini step in both workflows.