Shrink (Spatial Analyst)
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.
Illustration
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.
Syntax
Parameter | Explanation | Data 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 |
Return Value
Name | Explanation | Data Type |
out_raster |
The output generalized raster. The specified zones of the input raster will be shrunk by the specified number of cells. | Raster |
Code Sample
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")
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]
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# Execute Shrink
outShrink = Shrink(inRaster, cellRemove, zoneSet)
# Save the output
outShrink.save("c:/sapyexamples/output/outshrink")