Shrink (Spatial Analyst)

Available with Spatial Analyst license.

Summary

Shrinks the selected zones by a specified number of cells by replacing them with the value of the cell that is most frequent in its neighborhood.

Learn more about how Shrink works

Illustration

Shrink illustration
OutRas = Shrink(InRas1, 1, [5])

Usage

  • The specified zone values are considered to be foreground zones, while the remaining zone values are considered to be background zones. With this tool, cells in the foreground zones are allowed to be replaced by cells in the background zones.

  • When two adjacent regions are part of the selected set to shrink, there is no change at the boundary between them.

  • NoData has the same priority as any valid value to invade areas vacated by shrinking selected values. Therefore, if a selected value is adjacent to NoData, it may become NoData after shrinking.

  • See Analysis environments and Spatial Analyst for additional details on the geoprocessing environments that apply to this tool.

Syntax

Shrink(in_raster, number_cells, zone_values, {shrink_method})
ParameterExplanationData Type
in_raster

The input raster for which the identified zones are to be shrunk.

It must be of integer type.

Raster Layer
number_cells

The number of cells by which to shrink each specified zone.

The value must be an integer greater than 0.

Long
zone_values
[zone_value,...]

The list of zone values to shrink.

The zone values must be integers. They can be in any order.

Long
shrink_method
(Optional)

The method to use to shrink the selected zones.

  • MORPHOLOGICALUses a mathematical morphology method to shrink the zones. This is the default.
  • DISTANCEUses a distance-based method to shrink the zones.

The DISTANCE option supports parallelization, and can be controlled with the parallelProcessingFactor environment setting.

String

Return Value

NameExplanationData Type
out_raster

The output generalized raster.

The specified zones of the input raster will be shrunk by the specified number of cells.

The output is always of integer type.

Raster

Code sample

Shrink example 1 (Python window)

This example shrinks the zone specified by a list of values by two cells.

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outShrink = Shrink("land", 2, [1, 3, 7])
outShrink.save("c:/sapyexamples/output/shrinkout")
Shrink example 2 (stand-alone script)

This example shrinks the zone specified by a list of values by two cells.

# Name: Shrink_Ex_02.py
# Description: Shrinks the selected zones by a 
#              specified number of cells.
# Requirements: Spatial Analyst Extension

# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *

# Set environment settings
env.workspace = "C:/sapyexamples/data"

# Set local variables
inRaster = "land"
cellRemove = 2
zoneSet = [1,3,7,9]

# Execute Shrink
outShrink = Shrink(inRaster, cellRemove, zoneSet)

# Save the output 
outShrink.save("c:/sapyexamples/output/outshrink")

Licensing information

  • Basic: Requires Spatial Analyst
  • Standard: Requires Spatial Analyst
  • Advanced: Requires Spatial Analyst

Related topics