Démixage spectral linéaire (Spatial Analyst)

Disponible avec une licence Image Analyst.

Disponible avec une licence Spatial Analyst.

Résumé

Effectue une classification inférieure au pixel et calcule l’abondance fractionnelle de différents types d’occupation du sol pour les pixels individuels.

Démixage spectral linéaire

Utilisation

  • Cet outil calcule la couverture fractionnelle pour des pixels contenant plusieurs types d’occupation du sol. Il génère un raster multicanal dans lequel chaque canal correspond à l’abondance fractionnelle d’une classe d’occupation du sol. Par exemple, vous pouvez l’utiliser pour procéder à la classification des occupations du sol sur une image multispectrale afin d’identifier la végétation photosynthétique, le sol nul, la végétation morte ou non photosynthétique.

  • L’ordre du raster multicanal en sortie reflète l’ordre du profil spectral en entrée.

  • Le nombre de classes ne doit pas dépasser le nombre de canaux du raster en entrée. Par exemple, vous ne pouvez pas extraire des informations sur plus de 8 classes à partir d’un raster à 8 canaux.

  • L’exemple suivant illustre un profil spectral fourni sous forme d’un fichier .json :

    {
      "EsriEndmemberDefinitionFile" : 0,  "FileVersion" : 1,  "NumberEndmembers" : 3,  "NumberBands" : 7,  "Endmembers" : [	    {
          "EndmemberID" : 1,      "EndmemberName" : "urban",      "SpectralProfile" : [            88,			                     42,			                     48,			                     38,			                     86,			                    115,			                     59          ]    },    {
          "EndmemberID" : 2,      "EndmemberName" : "vegetation",      "SpectralProfile" : [			                       50,			                       21,			                       20,			                       35,			                       50,			                      110,			                       23          ]    },    {
          "EndmemberID" : 3,      "EndmemberName" : "water",      "SpectralProfile" : [			                       51,			                       20,			                       14,			                        9,			                        7,			                      116,			                        4          ]    }
      ]        
    }
  • Les fichiers de définition de classificateur (.ecd) générés par l’outil Préparer le classificateur de vraisemblance maximale constituent pour l’instant la seule sortie de classificateur prise en charge.

  • Les entités surfaciques exigent les noms de champ suivants :

    • classname : zone de texte indiquant le nom de la catégorie de classe
    • classvalue : champ d’entier long contenant la valeur entière de chaque catégorie de classe
  • Lors du calcul de l’abondance fractionnelle de chaque classe d’occupation du sol, la solution peut inclure des fractions ou des coefficients négatifs. Si cela se produit, examinez les échantillons d’entraînement qui se trouvent dans le profil spectral en entrée pour s’assurer qu’ils représentent fidèlement chaque classe. S’ils sont corrects, sélectionnez Non-negative (Non négatif) pour Output Value Option (Option de valeur en sortie).

Syntaxe

LinearSpectralUnmixing(in_raster, in_spectral_profile_file, {value_option})
ParamètreExplicationType de données
in_raster

Jeu de données raster en entrée.

Raster Dataset; Mosaic Dataset; Mosaic Layer; Raster Layer; File; Image Service
in_spectral_profile_file

Informations spectrales pour les différentes classes d’occupation du sol.

Il peut être fourni sous forme d’entités surfaciques, d’un fichier de définition de classificateur (.ecd) généré via l’outil Préparer le classificateur de vraisemblance maximale ou d’un fichier JSON (.json) qui contient les profils spectraux de classe.

File; Feature Layer; String
value_option
[value_option,...]
(Facultatif)

Indique comment les valeurs de pixel en sortie sont définies.

  • SUM_TO_ONELes valeurs de classe pour chaque pixel sont fournies au format décimal, la somme de toutes les classes étant égale à 1. Exemple : Classe1 = 0,16 ; Classe2 = 0,24 ; Classe3 = 0,60.
  • NON_NEGATIVEIl n’y aura pas de valeurs négatives en sortie.
String

Valeur renvoyée

NomExplicationType de données
out_raster

Jeu de données d'un raster multicanal en sortie.

Raster

Exemple de code

Exemple 1 d’utilisation de la fonction LinearSpectralUnmixing (fenêtre Python)

Cet exemple calcule l’abondance fractionnelle des classes à partir d’un fichier de définition de classificateur (.ecd) et génère un raster multicanal.

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

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("SpatialAnalyst")

# Execute 
unmixing_outputs = LinearSpectralUnmixing("C:/data/landsat7_image.crf",
    "C:/data/train_maxi_likelihood_ecd_output.ecd", "SUM_TO_ONE;NON_NEGATIVE")
	
# Save output
unmixing_outputs.save("C:/data/unmixing_outputs.crf")
Exemple 2 d’utilisation de la fonction LinearSpectralUnmixing (script autonome)

Cet exemple calcule l’abondance fractionnelle des classes à partir d’un fichier de définition de classificateur (.ecd) et génère un raster multicanal.

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

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("SpatialAnalyst")

# Define input parameters
inFile = "C:/data/landsat7_image.crf"
json_file = "C:/data/customized_endmembers.json"
options = "SUM_TO_ONE" 

# Execute 
unmixing_outputs = LinearSpectralUnmixing(inFile, json_file, options)
	
# Save output
unmixing_outputs.save("C:/data/unmixing_outputs_using_json.crf")
Exemple 3 d’utilisation de la fonction LinearSpectralUnmixing (script autonome)

Cet exemple calcule l’abondance fractionnelle des classes à partir d’une classe d’entités d’échantillon d’entraînement (.ecd) et génère un raster multicanal.

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

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("SpatialAnalyst")

# Define input parameters
inFile = "C:/data/landsat7_image.crf"
training_features = "C:/data/training_features.shp"
options = "SUM_TO_ONE;NON_NEGATIVE" 

# Execute 
unmixing_outputs = LinearSpectralUnmixing(inFile, training_features, options)
	
# Save output
unmixing_outputs.save("C:/data/unmixing_outputs_using_training_features.crf")

Informations de licence

  • Basic: Requiert Spatial Analyst ou Image Analyst
  • Standard: Requiert Spatial Analyst ou Image Analyst
  • Advanced: Requiert Spatial Analyst ou Image Analyst

Rubriques connexes