Cumulative Surface

Corridor Designer Tools · Ancillary Corridor Tools · geoprocessing tool · by Jeff Jenness
Works at every ArcGIS Pro license level

Summary

Combines any mix of polygon layers and rasters into one integer raster whose cell value counts how many of those objects occur on that cell — a way of estimating the relative importance, or the number of species served, of preserving that ground. Built to stack patch maps and corridor rasters across species (which ground serves six species' corridors? which serves one?), but it combines any polygon/raster mix. A modernized port of the CorridorDesigner Evaluation Tools' Cumulative Surface tool; no Spatial Analyst needed.

Learn more About Corridor Design covers why ground that many species choose is the natural place to begin conservation, and why a single species' choice still counts. Step 8 of the Corridor Design Tutorial stacks twelve corridors, and Step 6 of the Land Facet Tutorial stacks the facet strands, with the tutorial data (41 MB) available to download so you can follow along.

What counts as “present”

A raster counts on a cell when its value there is neither NoData nor zero — a corridor raster's 0 background never counts. Keep that rule in mind when combining arbitrary rasters whose 0 is meaningful data. A polygon layer counts where any of its polygons covers the cell center — and it counts once there even where several of its polygons overlap each other. That layer-level counting is the difference from Esri's Count Overlapping Features: here, two overlapping patches of the same species still mean one species served. Each map layer's selection is honored independently, using the Use the selected records switch Pro shows under each layer, and a layer with no selection contributes all its polygons.

The exception is by request. With Treat each polygon as a separate layer checked, every polygon feature counts as its own layer, so a cell's value is the number of polygons covering it. That is how one feature class holding a corridor per land facet, or per species, is combined without exporting each corridor on its own: select the slices you want and check the box. A multipart feature counts once; several single-part features that overlap each count, so dissolve a strand stored as separate parts first if that is not what you want. Rasters still count once each. The Land Facet Tutorial uses this to count eighteen facet strands and the interspersion corridor from two feature classes.

The shared grid

Every raster input must share one coordinate system — the tool refuses otherwise, because resampling presence between projections would silently shift it. Polygon layers may be in any known coordinate system; they are projected on the fly (true-curve polygons are densified first, so geodatabase circles and arcs rasterize correctly). The output takes the first raster's coordinate system, a cell size equal to the smallest among the input rasters (overridable), the union of every input's extent, and a grid snapped to the smallest-cell raster's own origin so raster presence never shifts by a fraction of a cell.

A legend ready to draw

The output is a small integer raster with a value attribute table (Value / Count / Class_Name) and shipped symbology: 0 in white, then the color-blind-friendly viridis ramp from dark violet (fewest layers) to bright yellow (most). The original shaded red through yellow to green — the classic red–green color-blindness confusion — so this version switched ramps. The optional legend label word is appended to each class (“0 Species”, “1 Species”, …), and the no-layers background can be written as NoData instead of the white 0 class when it would hide layers underneath.

Provenance

The output carries a machine-readable linkage record listing every source layer with its selection state and analysis identifiers; the Corridor Analysis Data Report window reads it back, appending each source's own analysis history. Combining sources from different analyses — one corridor per species — is this tool's normal use, and the report says so rather than warning.

A tour of the dialog

The example below is the twelve-species linkage from the Corridor Design Tutorial: each species' 2% corridor polygon as an input, and a count of how many cover each cell as the output.

The Corridor Designer Tools gallery open on the ribbon, with the Cumulative Surface button, in the Ancillary Corridor Tools row, outlined in blue
Where to find it: Cumulative Surface is in the Ancillary Corridor Tools row of the Corridor Designer Tools gallery, in the Corridor Designer Tools group of the Wildlife and Forestry tab.
The Cumulative Surface geoprocessing pane: twelve corridor layers to combine, output raster Linkage_Cumulative_Surface, the selected-polygons option, legend label Species, Exclude areas where no layers occur checked, and an optional cell size
Polygon layers and rasters can be mixed; the legend label writes the output's symbology (“3 Species”); excluding no-layer cells makes 0 NoData so the surface draws only where something is present.
The cumulative surface between the wildland blocks, from dark purple for one species to yellow for eight, with a bright band of high agreement running northeast from the Tumacacori block
The output, ready to draw: one to eight species per cell, in the viridis ramp with the legend the tool wrote.

The per-feature mode, from the Land Facet Tutorial: two feature classes with the 1% slices selected, eighteen facet strands in one and the interspersion corridor in the other, counted feature by feature.

The Cumulative Surface geoprocessing pane: layers to combine Diversity_Corridors with Use the selected records 1 and Facet_Corridors with Use the selected records 18; output Diversity_Cumulative_Corridors; Treat each polygon as a separate layer checked; legend label Land Facets; Exclude areas where no layers occur checked; cell size blank
Two selected layers, Treat each polygon as a separate layer checked, zeros excluded.
The cumulative surface of the nineteen strands over a topographic base, from dark purple where one land facet strand covers a cell through blue and green to yellow where eight overlap: most of the sprawling design is a single strand, and the overlap concentrates in one band running from the Tumacacori block northeast across the Santa Cruz valley toward the Santa Rita block, with the wildland blocks outlined in yellow
Nineteen strands counted from two layers: one to eight per cell, with the overlap concentrated in a single band across the valley.

The tool builds the whole output grid in memory at once, so the memory it needs grows with the number of cells. On most grids 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 the grid is too large, set a larger Cell size.

ModelBuilder

A ModelBuilder diagram: twelve species corridor inputs feeding Cumulative Surface, producing Linkage_Cumulative_Surface
Twelve corridors in, the count surface out.

Parameters

LabelExplanationData type
Layers to combineRequired · datasets Any mix of polygon layers/classes and rasters; drag several from Contents at once or multi-select from disk. Multiple Value
Output cumulative surface rasterRequired · out_raster The integer count raster, with VAT and viridis symbology. Raster Dataset
Treat each polygon as a separate layerOptional · per_feature Checked, every polygon feature counts as its own layer and a cell counts the polygons covering it; unchecked (default), a layer counts once wherever any of its polygons lies. Selections and layer definition queries are honored either way: only the polygons the layer shows, or the selected ones among them, are counted. Boolean
Legend labelOptional · legend_label Word appended to each legend class (“Species”). String
Exclude areas where no layers occurOptional · zero_to_nodata Write the 0 class as NoData instead of white. Boolean
Cell sizeOptional · cell_size Override the default (smallest input raster cell, or 1/1000 of the longest extent edge for all-polygon inputs). Double

Python

import arcpy
arcpy.ImportToolbox(r"C:\path\to\JennessEnterprisesTools.pyt")  # your install path
arcpy.jenness.CumulativeSurface(
    datasets=r"D:\corr.gdb\bear_corridor;D:\corr.gdb\deer_corridor;D:\corr.gdb\coati_patches",
    out_raster=r"D:\corr.gdb\Species_Served",
    legend_label="Species")

Recommended citation

Jenness, J., D. Majka and P. Beier. 2026. Cumulative Surface. Wildlife and Forestry Tools add-in for ArcGIS Pro, v. 1.99 (September 2026). Jenness Enterprises. Available at: https://github.com/JeffJenness/Wildlife_Tools.

Credits and references

By Jeff Jenness, Jenness Enterprises (www.jennessent.com), ported from the CorridorDesigner Evaluation Tools by Jenness, Majka and Beier.

Licensing information

Works at every ArcGIS Pro license level (Basic, Standard, Advanced). No extension licenses are required.