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 a 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 use the Divide tool to divide the result by a factor (for example, by 100) to normalize the output values to be between 0.0 and 1.0.

  • The spread determines how rapidly the fuzzy membership values decrease from 1 to 0. The larger the value, the steeper the fuzzification around the midpoint. That is, 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 membership types, 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 membership types, the default value of 5 is a good starting point in which, typically, the values vary between 1 and 10.

    Affect of spread on a Gaussian fuzzy membership

  • There are cases in which 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 case, you can 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 Hedge parameter options are Very, Somewhat, and None. 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 types.

  • For the Linear membership type, 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 this parameter use the Spread type to determine how rapidly the fuzzy membership values decrease from 1 to 0. The default values for the spread are detailed in the entries below.

  • Gaussian—Assigns 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 type but has a more narrow spread.

    • Midpoint—The default is the midpoint of the range of values of the input raster.
    • Spread—The default is 0.1. Typically, the values vary between [0.01–1].
  • Small—Indicates that small values of the input raster have high membership in the fuzzy set.

    A membership value of 0.5 is assigned at the midpoint.

    • Midpoint—The default is the midpoint of the range of values of the input raster.
    • Spread—The default is 5.
  • Large—Indicates that large values of the input raster have high membership in the fuzzy set.

    A membership value of 0.5 is assigned at the midpoint.

    • Midpoint—The default is the midpoint of the range of values of the input raster.
    • Spread—The default is 5.
  • Near—Calculates memberships for values near an intermediate value.

    A membership value of 1 is assigned at the midpoint. The membership decreases to 0 for values that deviate from the midpoint.

    • Midpoint—The default is the midpoint of the range of values of the input raster.
    • Spread—The default is 0.1. Typically, the values vary within the range of [0.001–1].
  • MSLarge—Calculates membership based on the mean and standard deviation of the input data in which large values have high membership.

    The result can be similar to the Large type, depending on how the multipliers of the mean and standard deviation are defined.

    • Mean multiplier—The default is 1.
    • Standard deviation multiplier—The default is 2.
  • MSSmall—Calculates membership based on the mean and standard deviation of the input data in which small values have high membership. This is the default membership type.

    The result can be similar to the Small type, depending on how the multipliers of the mean and standard deviation are defined.

    • Mean multiplier—The default is 1.
    • Standard deviation multiplier—The default is 2.
  • Linear—Calculates membership based on the linear transformation of the input raster.

    A membership value of 0 is assigned at the minimum and a membership value of 1 is assigned at the maximum.

    • Minimum—The default is 1.
    • Maximum—The default is 2.
Fuzzy function
Hedge
(Optional)

Specifies the hedge that will be applied. A hedge increases or decreases the fuzzy membership values, which modify the meaning of a fuzzy set. Hedges help in controlling the criteria or important attributes.

  • NoneNo hedge will be applied. This is the default.
  • SomewhatA hedge known as dilation and defined as the square root of the fuzzy membership function will be applied. This hedge increases the fuzzy membership functions.
  • VeryA hedge known as concentration and defined as the fuzzy membership function squared will be applied. 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 following are the types of membership classes:

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)

Specifies the hedge that will be applied. A hedge increases or decreases the fuzzy membership values, which modify the meaning of a fuzzy set. Hedges help in controlling the criteria or important attributes.

  • NONENo hedge will be applied. This is the default.
  • SOMEWHATA hedge known as dilation and defined as the square root of the fuzzy membership function will be applied. This hedge increases the fuzzy membership functions.
  • VERYA hedge known as concentration and defined as the fuzzy membership function squared will be applied. 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 in which 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 in which 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")

Licensing information

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

Related topics