Normalize Existing HSM

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

Summary

Linearly stretches a habitat suitability model built outside this tool chain — a logistic-regression probability surface on 0–1, a Maxent output, an expert model on 1–10, any consistent scale — onto the 0–100 suitability scale the CorridorDesigner chain expects. You name the value in your model that means worst habitat (it becomes 0) and the value that means best (it becomes 100); everything between stretches proportionally: output = ((x − worst) / (best − worst)) × 100. A model where low values mean good habitat inverts naturally — just give a worst value larger than the best. A modernized port of the CorridorDesigner Normalize Existing HSM tool; no Spatial Analyst needed.

Learn more About Corridor Design covers the 0–100 suitability scale and its biological anchor points, which are what this tool maps an outside model onto. The Corridor Design Tutorial builds the black bear model that the example below adds a normalized factor to, with the tutorial data (41 MB) available to download so you can follow along.

The anchors are meanings, not the raster's min and max

The two values you supply are the values that mean worst and best habitat in your model's own terms — for a probability surface, worst 0 and best 1, even if the raster's actual values only span 0.03 to 0.91. Anchoring to what you know are the best and worst possible values in that scale, rather than to observed extremes, keeps the output comparable across models and study areas — a 0.91 cell stays a 91, not an artificially perfect 100. Values beyond the anchors are clamped to 0–100 by default. Once normalized, line your model up against the scale's biological anchor points (100 / 80 / 60 / 30 / 0 — see Create Habitat Suitability Model) before trusting downstream patch thresholds.

A tour of the dialog

To show the tool at work we need a suitability surface that did not come out of the Corridor Designer chain, so here is a hypothesis rather than an expert's model. Suppose we suspect that habitat quality in the black bear landscape is affected by which way the ground faces, and specifically by how far a slope's aspect departs from a compass bearing of 45°. The idea has a pedigree: Trimble and Weitzman (1956), studying oak site index in the northern Appalachians, found that northeast slopes grew the best oaks and southwest slopes the worst, with everything else in between, and they built that finding into a transformation of aspect that scores each slope by how close it faces to northeast. If the vegetation a bear depends on follows the same rule, then deviation from 45° is a habitat factor worth trying, and it arrives on a scale of its own: 0° for a slope facing exactly northeast, 180° for one facing exactly southwest.

The Corridor Designer Tools gallery open on the ribbon, with the Normalize Existing HSM button, in the Habitat Suitability Modeling row, outlined in blue
Where to find it: Normalize Existing HSM is in the Habitat Suitability Modeling row of the Corridor Designer Tools gallery, in the Corridor Designer Tools group of the Wildlife and Forestry tab.

The Aspect Transformation tool (in the Aspect Tools of the Topographic Analysis group) makes that raster directly: from an aspect raster of the clipped DEM, its Numeric deviation from a bearing transform with the target bearing left at its default of 45° writes the angular difference, in degrees, between each cell's aspect and northeast.

A grayscale raster named Black_Bear_Aspect_DevFrom45 over the two wildland blocks, with values from 0 in black to 180 in white, so that slopes facing northeast are dark and slopes facing southwest are bright, giving a fine-grained relief-like texture across the mountains
Deviation of aspect from 45°, in degrees. Dark slopes face northeast (deviation near 0), bright slopes face southwest (deviation near 180).

Now the normalization. Under our hypothesis the best possible value in this raster is 0, a slope facing exactly northeast, and the worst possible value is 180, a slope facing exactly southwest. Those are the anchors, and they are anchors of meaning: no cell in the study area needs to hit either extreme for them to be right. Because the worst value is larger than the best, the tool inverts the scale as it stretches it, and a deviation of 45° becomes a suitability of 75, a deviation of 135° a suitability of 25.

The Normalize Existing HSM geoprocessing pane: the input existing habitat suitability model Black_Bear_Aspect_DevFrom45, the value for worst habitat 180, the value for best habitat 0, Clamp results to 0-100 checked, and the output named HSM_Norm_Black_Bear_Aspect_DevFrom45
Worst 180, best 0: a low-is-good raster inverted onto the 0–100 scale in one step.
The normalized raster HSM_Norm_Black_Bear_Aspect_DevFrom45 over the two wildland blocks in a blue-to-red color ramp from 0 to 100, northeast-facing slopes in red and orange, southwest-facing slopes in blue, forming a striped pattern along every ridge and valley
The result: northeast-facing slopes score toward 100 (red), southwest-facing slopes toward 0 (blue). It is now a 0–100 habitat factor and can go straight into Combine Habitat Factors alongside the black bear model's other factors, or into Create Habitat Patches on its own.

Whether aspect really belongs in a bear's habitat model is a separate question, and one the expert would have to answer. The point of the example is that a factor arriving on any scale at all, once you can say what its best and worst values mean, is two numbers away from joining the model.

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

A ModelBuilder diagram: Black_Bear_Aspect_DevFrom45 feeding Normalize Existing HSM, producing HSM_Norm_Black_Bear_Aspect_DevFrom45
The external raster in, the normalized 0–100 surface out, ready to chain into Combine Habitat Factors or Create Habitat Patches.

Parameters

LabelExplanationData type
Input existing habitat suitability modelRequired · in_raster The external model, on any consistent scale. Raster Layer
Value for WORST habitatRequired · worst Becomes 0. May exceed best to invert a low-is-good model. Double
Value for BEST habitatRequired · best Becomes 100. Double
Clamp results to 0–100Optional · clamp Values beyond the anchors are pinned to the scale (default on). Boolean
Output normalized HSMRequired · out_raster The 0–100 surface, ready for the rest of the chain. Raster Dataset

Python

import arcpy
arcpy.ImportToolbox(r"C:\path\to\JennessEnterprisesTools.pyt")  # your install path
arcpy.jenness.NormalizeExistingHSM(
    in_raster=r"D:\models\occupancy_prob.tif",
    worst=0, best=1,
    out_raster=r"D:\corr.gdb\occupancy_hsm")

Recommended citation

Jenness, J., D. Majka and P. Beier. 2026. Normalize Existing HSM. 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 tools by Jenness, Majka and Beier.

Licensing information

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