Fill Corridor Holes
Summary
Closes small interior holes in one or more polygon feature classes — typically a Least-Cost Corridor output, but any polygon dataset works. Every hole smaller than a size threshold is filled; holes at or above the threshold are left as real, meaningful gaps — a lake in the middle of a habitat polygon, a genuinely excluded area. Hole size is measured as true geodesic area, correct on any coordinate system including geographic ones. Every attribute field is preserved unchanged; only the geometry is edited.
Fill small, keep large
This tool identifies and measures every hole in your polygon features directly and applies an exact threshold in the unit of your choice: below it, filled; at or above it, kept. That is the standard useful direction for hole cleanup — it removes rasterization slivers while preserving genuinely large gaps — and matches the only direction Esri's Eliminate Polygon Part supports.
Multiple inputs in one run
Every listed feature class is processed independently and written to its own output, named <input name><suffix> (default _holes_removed) in the output workspace — a straight schema copy with only the geometry edited. A non-polygon input is skipped with a warning rather than failing the batch.
A tour of the dialog
The example is the preliminary linkage design from the Corridor Design Tutorial, a union of twelve species' corridors riddled with small holes, cleaned with a 10-hectare threshold.
ModelBuilder
Parameters
| Label | Explanation | Data type |
|---|---|---|
| Input polygon feature classesRequired · in_features | One or more polygon datasets; each is processed independently. | Feature Layer (multiple) |
| Hole size thresholdRequired · threshold_value | Holes smaller than this are filled. | Double |
| Threshold unitsRequired · threshold_units | The areal unit of the threshold (hectares, acres, square kilometers, …). | String |
| Output workspaceRequired · out_workspace | Home for the cleaned outputs. | Workspace |
| Output name suffixOptional · name_suffix | Appended to each input's name (default _holes_removed). | String |
Python
import arcpy
arcpy.ImportToolbox(r"C:\path\to\JennessEnterprisesTools.pyt") # your install path
arcpy.jenness.FillCorridorHoles(
in_features=r"D:\corr.gdb\bear_corridor;D:\corr.gdb\deer_corridor",
threshold_value=50,
threshold_units="Hectares",
out_workspace=r"D:\corr.gdb")
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.
Related tools and pages
- Least-Cost Corridor — the usual source of holes worth filling.
- Union Corridors — the next step toward the linkage design.