LinearUnmixing

Available with Image Analyst license.

Available with Spatial Analyst license.

Summary

Performs subpixel classification and calculates the fractional abundance of land-cover types for individual pixels.

Discussion

For more information about how this function works, see the Linear Spectral Unmixing raster function.

The referenced raster dataset for the raster object is temporary. To make it permanent, you can call the raster object's save method.

Syntax

LinearUnmixing (in_raster, in_spectral_profile_file, {value_option})
ParameterExplanationData Type
in_raster

The input raster.

Raster
in_spectral_profile_file

The path to the spectral profile for the various land cover classes.

This can be provided as a polygon feature class, a classifier definition file (.ecd) generated from the Train Maximum Likelihood Classifier tool, or a JSON file (.json) that contains the class spectral profiles.

String
value_option

Specifies how the output pixel values will be defined.

  • SUM_TO_ONE—Class values for each pixel will be provided in decimal format with the sum of all classes equal to 1; for example, Class1 = 0.16; Class2 = 0.24; Class3 = 0.60.
  • NON_NEGATIVE—There will be no negative output values.

Both options can be specified by delimiting with a semicolon: "SUM_TO_ONE;NON_NEGATIVE".

String
Return Value
Data TypeExplanation
Raster

The output raster.

Code sample

LinearUnmixing example

This example resolves the fractional class values for each pixel in the multispectral raster.

from arcpy.ia import *
out_linearunmixing_raster = LinearUnmixing(
    "Landsat8.tif","C:/arcpyExamples/data/training_feature.ecd")
out_linearunmixing_raster.save(
    "C:/arcpyexamples/outputs/linearunmix_output.tif")
LinearUnmixing example

This example resolves the fractional class values for each pixel in the multispectral raster.

# Import system modules
import arcpy
from arcpy.ia import *

# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")

# Set the local variables
in_raster = "C:/data/Landsat_8.tif"
in_spectral_profile = "C:/data/training_features.ecd"
value_options = "SUM_TO_ONE;NON_NEGATIVE" 

# Apply LinearSpectralUnmixing function
unmixing_outputs = LinearUnmixing(in_raster, in_spectral_profile, value_options)

# Save the output
unmixing_outputs.save("C:/arcpyExamples/outputs/unmixing_results.tif")