Fuzzy Membership (Spatial Analyst)

Available with Spatial Analyst license.

Summary

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.

Learn more about how Fuzzy Membership works

Usage

  • 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.

    Affect of spread on a Gaussian fuzzy membership illustration
    Affect of spread on a Gaussian fuzzy membership.

  • 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.

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

Parameters

LabelExplanationData Type
Input raster

The input raster whose values will be scaled from 0 to 1.

It can be an integer or a floating-point raster.

Raster Layer
Membership type
(Optional)

Specifies the algorithm used in fuzzification of the input raster.

Certain settings for Membership type employ a Spread parameter to determine how rapidly the fuzzy membership values decrease from 1 to 0. The default values for the spread are detailed in the table below.

  • GaussianAssigns a membership value of 1 at the midpoint.The membership decreases to 0 for values that deviate from the midpoint according to a normal curve. Gaussian is similar to the Near function but has a more narrow spread.
    • Midpoint — Default is the midpoint of the range of values of the input raster.
    • Spread — Default is 0.1. Typically, the values vary between [0.01–1].
  • SmallUsed to indicate that small values of the input raster have high membership in the fuzzy set.Assigns a membership value of 0.5 at the midpoint.
    • Midpoint — Default is the midpoint of the range of values of the input raster.
    • Spread — Default is 5.
  • LargeUsed to indicate that large values of the input raster have high membership in the fuzzy set.Assigns a membership value of 0.5 at the midpoint.
    • Midpoint — Default is the midpoint of the range of values of the input raster.
    • Spread — Default is 5.
  • NearCalculates memberships for values near some intermediate value.Assigns a membership value of 1 at the midpoint. The membership decreases to 0 for values that deviate from the midpoint.
    • Midpoint — Default is the midpoint of the range of values of the input raster.
    • Spread — Default is 0.1. Typically, the values vary within the range of [0.001–1].
  • MSLargeCalculates membership based on the mean and standard deviation of the input data where large values have high membership.The result can be similar to the Large function, depending on how the multipliers of the mean and standard deviation are defined.
    • Mean multiplier — Default is 1.
    • Standard deviation multiplier — Default is 2.
  • MSSmallCalculates membership based on the mean and standard deviation of the input data where small values have high membership. This is the default membership type.The result can be similar to the Small function, depending on how the multipliers of the mean and standard deviation are defined.
    • Mean multiplier — Default is 1.
    • Standard deviation multiplier — Default is 2.
  • LinearCalculates membership based on the linear transformation of the input raster.Assigns a membership value of 0 at the minimum and a membership of 1 at the maximum.
    • Minimum — Default is 1.
    • Maximum — Default is 2.
Fuzzy function
Hedge
(Optional)

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.

  • NoneNo hedge is applied. This is the default.
  • SomewhatKnown as dilation, defined as the square root of the fuzzy membership function. This hedge increases the fuzzy membership functions.
  • VeryAlso known as concentration, defined as the fuzzy membership function squared. This hedge decreases the fuzzy membership functions.
String

Return Value

LabelExplanationData Type
Output raster

The output will be a floating-point raster with values ranging from 0 to 1.

Raster

FuzzyMembership(in_raster, {fuzzy_function}, {hedge})
NameExplanationData Type
in_raster

The input raster whose values will be scaled from 0 to 1.

It can be an integer or a floating-point raster.

Raster Layer
fuzzy_function
(Optional)

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:

  • FuzzyGaussian({midpoint},{spread})
  • FuzzyLarge({midpoint},{spread})
  • FuzzyLinear({minimum},{maximum})
  • FuzzyMSLarge({meanMultiplier},{STDMultiplier})
  • FuzzyMSSmall({meanMultiplier},{STDMultiplier})
  • FuzzyNear({midpoint},{spread})
  • FuzzySmall({midpoint},{spread})

Fuzzy function
hedge
(Optional)

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.

  • NONENo hedge is applied. This is the default.
  • SOMEWHATKnown as dilation, defined as the square root of the fuzzy membership function. This hedge increases the fuzzy membership functions.
  • VERYAlso known as concentration, defined as the fuzzy membership function squared. This hedge decreases the fuzzy membership functions.
String

Return Value

NameExplanationData Type
out_raster

The output will be a floating-point raster with values ranging from 0 to 1.

Raster

Code sample

FuzzyMembership example 1 (Python window)

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")
FuzzyMembership example 2 (stand-alone script)

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

# 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)

# Execute FuzzyMembership
outFuzzyMember = FuzzyMembership(inRaster, myFuzzyAlgorithm)

# Save the output
outFuzzyMember.save("c:/sapyexamples/fzymemb2")