『公告』 预祝您龙年大吉,万事如意, 过节期间, 大家如需数据服务,请拨打400 或直接添加客服微信,再祝大家龙年,心想事成。
关注我们 新浪 腾讯

ArcGIS教程:主成分分析

ArcGIS教程:主成分分析
对一组栅格波段执行主成分分析 (PCA) 并生成单波段栅格作为输出。

摘要

    对一组栅格波段执行主成分分析 (PCA) 并生成单波段栅格作为输出。

用法

·      为主成分数指定的值可用于确定输出多波段栅格中的主成分波段数。该数目不得大于输入中的栅格波段总数。

·      栅格波段必须具有一个公共交集。如果不存在公共交集,则会出现错误,且不会创建任何输出。

·      在指定输出数据文件名的情况下,协方差和相关矩阵、特征值和特征向量以及各特征值所捕获的百分比方差和所述的累积方差都将存储在 ASCII 文件中。

·      百分比方差确定了各特征值所捕获的方差量。这可用于解释 PCA 的结果。如果少数特征值(各特征值与输出格栅中的波段对应)捕获了大量方差,则在后续波段分析中使用此波段子集可能已经足够,因为它们可以捕获原始多波段数据集中的大部分交互作用。

·      在确定各特征值所捕获的百分比方差时,将特征值之和输入以下公式:(特征值 * 100)/总和。第一个特征值(及其关联波段)捕获最大的方差,后续的特征值会捕获顺次较小的方差。累积的方差百分比为各特征值所捕获的连续方差之和。

·      如果输入为创建自多波段栅格(超过三个波段)的图层,则操作将会考虑与源数据集相关联的所有波段,而不仅仅是由图层加载(符号化)的三个波段。

·      您可以使用多种方式将多波段栅格的波段子集指定为工具的输入。

§  如果要使用工具对话框,则通过输入栅格波段旁边的按钮导航至多波段栅格,打开栅格并选择所需波段。

§  如果多波段栅格是内容列表中的图层,则可以使用创建栅格图层工具来创建一个新的只包含所需波段的多波段图层。

§  您还可以用波段合成来创建一个只包含所需波段的新数据集,并将生成的数据集用作工具的输入。

§  Python 中,可以在工具参数中以列表形式直接指定所需波段。

语法

    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) 示例 1Python 窗口)

    此例对输入多波段栅格执行主成分分析 (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")

      京ICP备2025132830号-1 京公网安备 号