Fuzzy Membership (Spatial Analyst)
Transforms the input raster into a 0 to 1 scale, indicating the strength of a membership in a set, based on a specified fuzzification algorithm.
A value of 1 indicates full membership in the fuzzy set, with membership decreasing to 0, indicating it is not a member of the fuzzy set.
This tool does not scale categorical data. To include categorical data into fuzzy overlay analysis, a preprocessing step is necessary. You can create a model or run the following geoprocessing tools. First, use the Reclassify tool to provide a new range of values (for example, 1 to 100). Then Divide the result by a factor (for example, by 100) to normalize the output values to be between 0.0 and 1.0.
Spread determines how rapidly the fuzzy membership values decrease from 1 to 0. The larger the value, the steeper the fuzzification around the midpoint. Said another way, as the spread gets smaller, the fuzzy memberships approach 0 more slowly. The selection of the appropriate spread value is a subjective process that is dependent on the range of the crisp values. For Gaussian and Near, the default value of 0.1 is a good starting point. Typically, the values vary within the ranges of [0.01–1] or [0.001-1], respectively. For Small and Large, the default value of 5 is a good starting point where, typically, the values vary between 1 and 10.
You may have a case where none of the input values have a 100 percent possibility of being a member of the specified set. In other words, no input value has a fuzzy membership of 1. In this situation, you may want to rescale the fuzzy membership values to reflect the new scale. For example, if the highest membership for the input values is .75, you can establish the new scale by multiplying each of the fuzzy membership values by 0.75.
The hedges implemented are Very and Somewhat. Very is also known as concentration and is defined as the fuzzy membership function squared. Somewhat is known as dilation, or More or Less, and is the square root of the fuzzification membership function. The very and somewhat hedges decrease and increase, respectively, the fuzzy membership functions.
Negative values are not accepted in the Small and Large membership functions.
For the Linear membership function, the input raster must be ordered data. The minimum can be less than the maximum to create a positive slope or greater than the maximum to create a negative slope for the transformation.
If the minimum is less than the maximum, a positive-sloped function is used for the transformation; if the minimum is less than the maximum, a negative-sloped function is used.
The input raster whose values will be scaled from 0 to 1.
Specifies the algorithm used in fuzzification of the input raster.
The fuzzy classes are used to specify the type of membership.
The types of membership classes are:
The following are the forms of the membership classes:
Defining a hedge increases or decreases the fuzzy membership values which modify the meaning of a fuzzy set. Hedges are useful to help in controlling the criteria or important attributes.
The output will be a floating-point raster with values ranging from 0 to 1.
This example creates a fuzzy membership raster using the Gaussian function where elevation values closer to the midpoint (1,200 ft.) have a higher membership value.
import arcpy from arcpy.sa import * from arcpy import env env.workspace = "c:/sapyexamples/data" outFzyMember = FuzzyMembership("elevation", FuzzyGaussian(1200, 0.06)) outFzyMember.save("c:/sapyexamples/fzymemb")
This example creates a fuzzy membership raster using the Gaussian function and a spread of 0.4, where elevation values closer to the midpoint (1,000 ft.) have a higher membership value.
# Name: FuzzyMembership_Ex_02.py # Description: Scales input raster data into values ranging from zero to one # indicating the strength of a membership in a set. # Requirements: Spatial Analyst Extension # Author: ESRI # 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 = "elevation" # Create the FuzzyGaussian algorithm object midpoint = 1000 spread = 0.4 myFuzzyAlgorithm = FuzzyGaussian(midpoint, spread) # Check out the ArcGIS Spatial Analyst extension license arcpy.CheckOutExtension("Spatial") # Execute FuzzyMembership outFuzzyMember = FuzzyMembership(inRaster, myFuzzyAlgorithm) # Save the output outFuzzyMember.save("c:/sapyexamples/fzymemb2")