需要 Spatial Analyst 许可。
描述
对一组栅格波段执行主成分分析 (PCA) 并生成单波段栅格作为输出。
使用
为主成分数指定的值可用于确定输出多波段栅格中的主成分波段数。该数目不得大于输入中的栅格波段总数。
将多波段栅格指定为输入栅格波段(Python 中的 in_raster_bands)之一时,将使用所有波段。
要处理一系列来自多波段栅格的波段,可先用波段合成工具创建由这些特定波段组成的新栅格数据集,并在输入栅格波段(Python 中的 in_raster_bands)列表中使用该结果。
栅格波段必须具有一个公共交集。如果不存在公共交集,则会出现错误,且不会创建任何输出。
百分比方差确定了各特征值所捕获的方差量。这可用于解释 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")
环境
许可信息
- Basic: 需要 Spatial Analyst
- Standard: 需要 Spatial Analyst
- Advanced: 需要 Spatial Analyst