需要 Spatial Analyst 许可。
摘要
对一组栅格波段执行主成分分析 (PCA) 并生成单波段栅格作为输出。
用法
为主成分数指定的值可用于确定输出多波段栅格中的主成分波段数。该数目不得大于输入中的栅格波段总数。
栅格波段必须具有一个公共交集。如果不存在公共交集,则会出现错误,且不会创建任何输出。
百分比方差确定了各特征值所捕获的方差量。这可用于解释 PCA 的结果。如果少数特征值(各特征值与输出格栅中的波段对应)捕获了大量方差,则在后续波段分析中使用此波段子集可能已经足够,因为它们可以捕获原始多波段数据集中的大部分交互作用。
在确定各特征值所捕获的百分比方差时,将特征值之和输入以下公式:(特征值 * 100)/总和。第一个特征值(及其关联波段)捕获最大的方差,后续的特征值会捕获顺次较小的方差。累积的方差百分比为各特征值所捕获的连续方差之和。
如果输入为创建自多波段栅格(超过三个波段)的图层,则操作将会考虑与源数据集相关联的所有波段,而不仅仅是由图层加载(符号化)的三个波段。
您可以使用多种方式将多波段栅格的波段子集指定为工具的输入。
有关适用于此工具的地理处理环境的详细信息,请参阅分析环境和 Spatial Analyst。
语法
PrincipalComponents (in_raster_bands, {number_components}, {out_data_file})
参数 | 说明 | 数据类型 |
in_raster_bands [in_raster_band,...] | 输入栅格波段。 可为整型或浮点型。 | Raster Layer |
number_components (可选) | 主成分的数目。 该数目必须大于零并小于等于输入栅格波段总数。 默认值为输入的栅格波段总数。 | Long |
out_data_file (可选) | 存储主成分参数的输出 ASCII 数据文件。 输出数据文件记录协方差和相关矩阵、特征值和特征向量以及各特征值所捕获的百分比方差和特征值所述的累积方差。 该输出文件的扩展名可以是 .txt 或 .asc。 | File |
返回值
名称 | 说明 | 数据类型 |
out_multiband_raster | 输出多波段栅格数据集。 如果所有的输入波段为整型,那么输出栅格波段也为整型。如果任何输入波段属于浮点型,则输出波段也将为浮点型。 如果输出是一个 Esri Grid 栅格,名称必须少于 10 个字符。 | Raster |
代码示例
主成分分析 (PrincipalComponents) 示例 1(Python 窗口)
此例对输入多波段栅格执行主成分分析 (PCA) 并生成多波段栅格输出。
import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outPrincipalComp = PrincipalComponents(["redlands"], 4,"pcdata.txt")
outPrincipalComp.save("C:/sapyexamples/output/outpc01")
主成分分析 (PrincipalComponents) 示例 2(独立脚本)
此例对输入多波段栅格执行主成分分析 (PCA) 并生成多波段栅格输出。
# Name: PrincipalComponents_Ex_02.py
# Description: Performs principal components analysis on a set of raster bands.
# 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
inRasterBand1 = "redlands/redlandsc1"
inRasterBand2 = "redlands/redlandsc3"
numberComponents = 2
outDataFile = "C:/sapyexamples/output/pcdatafile.txt"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.checkOutExtension("Spatial")
# Execute PrincipalComponents
outPrincipalComp = PrincipalComponents([inRasterBand1, inRasterBand2], 2,
outDataFile)
# Save the output
outPrincipalComp.save("C:/sapyexamples/output/outpc01")
环境
许可信息
- ArcGIS Desktop Basic: 需要 Spatial Analyst
- ArcGIS Desktop Standard: 需要 Spatial Analyst
- ArcGIS Desktop Advanced: 需要 Spatial Analyst