Kernel Density Probability Contours

Home Range · geoprocessing tool · by Jeff Jenness
Works at every ArcGIS Pro license level
Learn more About kernel density analysis covers the theory — and why probability isopleths, not density thresholds, are the consistent way to delineate kernel home ranges. Home-range estimation is also a wildlife module of Jeff's GIS training course, with videos and lab exercises using these tools.

Summary

Generates home-range probability (volume) isopleths from a kernel density surface at the standard levels — 5% to 100% in 5% steps — as contour polylines and/or polygon areas. The X% isopleth bounds the smallest area containing X% of the estimated use. For example, one reasonable way to delineate core areas and home ranges might be to single out the 95% level for the home range and the 50% level as the core. The tool recognizes what kind of raster you hand it and contours accordingly.

Two inputs, one answer

The tool automatically recognizes your input:

A kernel density raster — Esri's Kernel Density output, or the Densities or Expected counts output of Kernel Density Enhanced: the tool sorts the cell values, accumulates the volume, finds the density threshold that encloses each target percentage, and contours those thresholds.

A proportion-under-the-surface raster — from KD to Proportion Surface or Kernel Density Enhanced's Proportion under curve output: the cumulative volume is already stored in the cells, so the tool simply contours the standard proportion levels directly. These rasters are identified by a marker written into their metadata — not by guessing from the cell values, which would misfire on other 0-to-1 rasters. Isopleths from the two paths agree to within a fraction of a percent.

You may produce contour polylines, polygon areas, or both (at least one is required); the polygon boundaries coincide exactly with the polylines, and both carry the same attribute fields. Each polygon is the ground where the surface is at or above its level: a hollow inside an isopleth, a patch the animal used less than its surroundings, is left as a hole, and an isopleth that runs off the edge of the raster is closed along the edge.

Give this tool the whole surface. The tool can only see the cells in the raster, and it treats their total as the whole distribution. A density raster that was trimmed by a Mask, clipped, or cut off by a small Processing Extent is missing part of its volume, so every isopleth computed from it is a share of the trimmed surface and not of the animal's full distribution. If you need a masked proportion surface, run Kernel Density Enhanced with the mask and its Proportion under curve output: it computes the proportions from the whole surface and trims them afterward.

The outermost isopleth, labeled 100%, is the edge of the surface itself, where the density trails off to nothing. It is drawn as a smooth closed line along the edge of the cells with a density above zero, not as a staircase of cell sides.

On a latitude/longitude raster the cells are not all the same size: they narrow toward the poles. The volume under the surface is density times cell area, so the tool needs to know what the cell values are. If they are densities, each cell is weighted by its true area. If they are expected counts, the area is already in the values, and the cells are ranked by the count a cell of average size would hold, which is their density. The tool reads the answer from the raster's metadata: Kernel Density Enhanced records what it wrote, and Esri's Kernel Density records its choice in the geoprocessing history. Only when the metadata does not say does the tool assume densities, and the Raster cell values parameter, which appears only for latitude/longitude rasters, then shows a warning so you can correct it. On a projected raster every cell has the same area and none of this matters.

Output fields

FieldDefinition
Density The raster value contoured to produce this isopleth — a density threshold for a density input, a cumulative proportion for a proportion input.
Isopleth The home-range isopleth level: the proportion (0 to 1) of the total volume enclosed by this contour (0.95 = the 95% isopleth).
CumProportion 1 − Isopleth: the value at which to contour a proportion surface to reproduce this isopleth. In a shapefile output, whose field names are limited to ten characters, the field is named CumProport.
Label The level as a percentage label (“95%”).
Primary True for the prominent levels (5, 25, 50, 75, 95%), False for the minor ones — ready-made for a two-weight symbology.

And the outputs arrive already symbolized that way: the primary isopleths draw as heavier dark lines and the minor levels as lighter gray ones (polygons draw hollow with the same outline weights, so the nested isopleths all stay visible).

Coordinate system behavior

Contours are generated in the raster's own coordinate system; if the Output Coordinate System environment is set, the finished polylines and polygons are reprojected to it as a last step. No other environments affect the tool.

A tour of the dialog

One input raster, two checkbox-and-output pairs — lines, areas, or both.

The Home Range Tools gallery open on the ribbon, with the KD Probability Contours button, in the Kernel Density Tools row, outlined in blue
Where to find it: KD Probability Contours is in the Kernel Density Tools row of the Home Range Tools gallery, in the Home Range group of the Wildlife and Forestry tab.
The Kernel Density Probability Contours pane with the Points per Sq. km density raster as input and both polyline and polygon outputs named, beside the resulting nested isopleths over aerial imagery: heavier dark contours labeled 95, 75, 50 and 25 percent, lighter unlabeled minor contours between them, and a pale blue outer band with a smooth edge that marks the limit of the surface
The dialog and its result — run here on the raw density raster (points per square kilometer). The primary isopleths draw heavier and carry their labels; the minor levels stay light and quiet. The pale blue band outside the 95% line runs out to the 100% isopleth, the smooth edge of the surface. Run the same tool on the proportion surface instead and you get the same lines — as long as those surfaces were created with our tools, whose metadata marker tells the contour tool exactly what it is reading.

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

The polygon areas are the model-friendly output. As one example of how the isopleths could be used downstream, a Select on Isopleth = 0.95 might pull out a home-range polygon and Isopleth = 0.50 a core area, chaining onward to clip habitat rasters, compute areas, or compare animals — but those two levels are conventions, not the law, and any of the twenty levels can reasonably serve whatever threshold fits your analysis.

A ModelBuilder diagram: a kernel density raster feeding the Kernel Density Probability Contours tool, which outputs both the probability lines and probability areas feature classes
The tool in a model: surface in, both isopleth outputs onward.

Parameters

LabelExplanationData type
Input kernel density rasterRequired · in_raster A kernel density raster or a proportion-under-the-surface raster; the tool detects which and contours accordingly. Raster Layer
Create contour polylinesOptional · make_lines Check to produce isopleth polylines. At least one output is required. Boolean
Output contour polylinesOptional · out_lines The isopleth contour polylines, with the fields above. Feature Class
Create contour polygon areasOptional · make_polys Check to produce the enclosed polygon areas. Boolean
Output contour polygon areasOptional · out_polys The isopleth polygon areas; boundaries coincide with the polylines. Feature Class
Raster cell values (latitude/longitude rasters)Optional · value_kind Densities or Expected counts. Shown only for a latitude/longitude raster, and filled in from the raster's metadata; Densities is assumed, with a warning, when the metadata does not say. String

Python

Isopleth polylines and polygon areas from a density raster:

import arcpy
arcpy.ImportToolbox(r"C:\path\to\JennessEnterprisesTools.pyt")  # your install path
arcpy.jenness.KernelDensityContours(
    in_raster=r"D:\data\telemetry.gdb\KD_density",
    make_lines=True,
    out_lines=r"D:\data\telemetry.gdb\KD_isopleth_lines",
    make_polys=True,
    out_polys=r"D:\data\telemetry.gdb\KD_isopleth_areas")

Recommended citation

Jenness, J. 2026. Kernel Density Probability Contours. 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). The volume-isopleth approach to kernel home ranges follows Worton.

Licensing information

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