使用光谱对栅格进行分类 (Image Analyst)

获得 Image Analyst 许可后可用。

需要 Spatial Analyst 许可。

摘要

使用光谱匹配方法对多波段栅格数据集进行分类。 输入光谱数据可以作为点要素类或 .json 文件提供。

使用情况

  • 如果输入 .json 文件包含以表面反射率百分比形式提供的光谱值,则必须使用特定于传感器的比例因子重新调整栅格数据集。 例如,可以使用以下表达式将 Landsat 8 和 9 集合 2 级别 2 表面反射率产品重新调整为 0–1:Raster*0.0000275+(-0.2)

  • 应用缩放和偏移因子后,可能会出现负值,尤其是在水体等深色要素上。 在使用 SID 分类方法之前,必须屏蔽这些负像素。

  • 输出分类栅格的顺序将遵循输入光谱图的顺序。

  • 以下是作为 .json 文件提供的光谱图示例:

    
    {
      "EsriEndmemberDefinitionFile" : 0,
      "FileVersion" : 1,
      "NumberOfEndmembers" : 4,
      "NumberOfBands" : 7,
      "Endmembers" : [	
        {
          "EndmemberID" : 1,
          "EndmemberName" : "basalt",
          "SpectralProfile" : [
                0.076036952,
    			                       0.08137,
    			                       0.09371,
    			                       0.10768,
    			                       0.11076,
    			                       0.11424,
    			                       0.09824
              ]
        }, 
        {
          "EndmemberID" : 2,
          "EndmemberName" : "quartz",
          "SpectralProfile" : [
                              0.75812,
                              0.77608,
                              0.80143,
                              0.81418,
                              0.82648,
                              0.85234,
                              0.86170
              ]
        },
        {
          "EndmemberID" : 3,
          "EndmemberName" : "salt deposits",
          "SpectralProfile" : [
                              0.53381,
                              0.59598,
                              0.70402,
                              0.79024,
                              0.86628,
                              0.89397,
                              0.89507
              ]
        },
        {
          "EndmemberID" : 4,
          "EndmemberName" : "limestone",
          "SpectralProfile" : [
                              0.15477,
                              0.16733,
                              0.19435,
                              0.21431,
                              0.24765,
                              0.32578,
                              0.32451
              ]
        }
      ]        
    }
  • 点要素需要以下字段:

    • classname- 指示类类别名称的文本字段
    • classvalue- 包含每个类类别的整数值的长整型字段
  • 输出 Esri 分类器定义文件 (.ecd) 可用作分类栅格工具的输入。

参数

标注说明数据类型
输入栅格

输入多波段栅格。

Mosaic Layer; Raster Layer; Image Service; String; Raster Dataset; Mosaic Dataset
光谱或点

不同像素类的光谱信息。

光谱信息可以作为点要素、从训练样本管理器窗格生成的训练样本点要素类或包含类光谱图的 .json 文件提供。

Feature Layer; File; String
方法

指定将使用的光谱匹配方法。

  • 光谱角度映射器将计算输入多波段栅格和参考光谱之间的矢量角度,其中每个像素的光谱将被视为矢量。 角度值以弧度为单位。
  • 光谱信息散度将计算输入多波段栅格和参考光谱之间的光谱信息散度。 将根据像素和参考光谱的概率分布之间的差异为每个像素计算分数。 值以弧度为单位。
String
阈值
(可选)

光谱匹配的阈值。 超过此值的像素值将被归类为未定义。 这可以是应用于所有光谱类的单个值,也可以是每个类的以空格分隔的值列表。

String
输出得分栅格
(可选)

存储每个终端成员的匹配结果的多波段栅格。 波段顺序遵循 Spectra or Points 参数值中的类顺序。 如果输入为多维栅格,则输出格式必须为 CRF。

Raster Dataset
输出分类器定义文件
(可选)

输出 .ecd 文件。

File

返回值

标注说明数据类型
输出分类栅格

输出分类的栅格。

Raster

ClassifyRasterUsingSpectra(in_raster, in_spectra_file, method, {thresholds}, {out_score_raster}, {out_classifier_definition})
名称说明数据类型
in_raster

输入多波段栅格。

Mosaic Layer; Raster Layer; Image Service; String; Raster Dataset; Mosaic Dataset
in_spectra_file

不同像素类的光谱信息。

光谱信息可以作为点要素、从训练样本管理器窗格生成的训练样本点要素类或包含类光谱图的 .json 文件提供。

Feature Layer; File; String
method

指定将使用的光谱匹配方法。

  • SAM将计算输入多波段栅格和参考光谱之间的矢量角度,其中每个像素的光谱将被视为矢量。 角度值以弧度为单位。
  • SID将计算输入多波段栅格和参考光谱之间的光谱信息散度。 将根据像素和参考光谱的概率分布之间的差异为每个像素计算分数。 值以弧度为单位。
String
thresholds
(可选)

光谱匹配的阈值。 超过此值的像素值将被归类为未定义。 这可以是应用于所有光谱类的单个值,也可以是每个类的以空格分隔的值列表。

String
out_score_raster
(可选)

存储每个终端成员的匹配结果的多波段栅格。 波段顺序遵循 in_spectra_file 参数值中的类顺序。 如果输入为多维栅格,则输出格式必须为 CRF。

Raster Dataset
out_classifier_definition
(可选)

输出 .ecd 文件。

File

返回值

名称说明数据类型
out_classified_raster

输出分类的栅格。

Raster

代码示例

ClassifyRasterUsingSpectra 示例 1

此示例在 Landsat 8 栅格上执行了光谱角度映射 (SAM),并为每个类指定了阈值。 将在 .json 文件中提供参考光谱。

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

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

# Set local variables
in_raster = "C:/Data/LandSat8_SurfaceReflectance.tif"
in_spectra_file = "C:/Data/ref_spectra.json"
method = "SAM"
thresholds = ".08 .04 .05 .07"
out_score_raster = "C:/Data/scoreSAM.crf"
out_classifier_definition = "C:/Data/SAM_classifier.ecd"

# Execute 
Classified_output = arcpy.ia.ClassifyRasterUsingSpectra(in_raster, in_spectra_file, method, thresholds, out_score_raster, out_classifier_definition)

# Save output
Classified_output.save("C:/data/Classified_output.crf")
ClassifyRasterUsingSpectra 示例 2

此示例计算了 Landsat 8 栅格与源自点要素类的参考光谱之间的光谱信息散度 (SID)。

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

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

# Set local variables
in_raster = "C:/Data/LandSat8_SurfaceReflectance.tif"
in_spectra_file = "C:/Data/ref_spectra.shp"
method = "SID"
thresholds = .08
out_score_raster = "C:/Data/scoreSID.crf"
out_classifier_definition = "C:/Data/SID_classifier.ecd"

# Execute 
Classified_output = arcpy.ia.ClassifyRasterUsingSpectra(in_raster, in_spectra_file, method, thresholds, out_score_raster, out_classifier_definition)

# Save output
Classified_output.save("C:/data/Classified_output.crf")

相关主题