主成分分析(Principal Components) (Spatial Analyst)
サマリ
一連のラスタ バンドに対して主成分分析(PCA)を実行し、1 つのマルチバンド ラスタを出力として生成します。
使用法
-
主成分の数に指定した値は、出力マルチバンド ラスタの主成分バンドの数を決定します。数字は、入力のラスタバンドの合計数を超えてはなりません。
-
ラスタ バンドは共通の交差部を持つ必要があります。ない場合は、エラーが発生し、出力は作成されません。
-
出力データのファイル名を指定すると、共分散と相関行列、固有値と固有ベクトル、捕捉した固有値ごとの割合分散、および説明された累積分散が ASCII ファイルに格納されます。
割合分散は、捕捉した固有値ごとの分散の量を識別します。この値は、PCA の結果を解釈する際に役立ちます。少数の(それぞれが出力ラスタのバンドに対応する)固有値で分散の大部分が捕捉される場合は、このバンドのサブセットで元のマルチバンド データセット内のほとんどの操作を捕捉できるため、以降の解析では、このサブセットの使用で十分です。
捕捉した固有値ごとの割合分散を決定するときには、固有値の合計を「(固有値 * 100)/合計」の式で使用します。最初の固有値(および、関連するバンド)は最大の分散を捕捉し、以降の固有値はそれぞれより小さい分散を捕捉します。分散の累積割合は、捕捉した固有値ごとの分散を累積した合計です。
-
入力が、4 バンド以上のマルチバンド ラスタから作成したレイヤである場合、この操作では、レイヤによって読み込まれた(シンボル表示された)3 つのバンドだけでなく、ソース データセットに関連付けられたバンドがすべて考慮されます。
マルチバンド ラスタからバンドのサブセットを指定し、ツールの入力として使用するには、いくつかの方法があります。
- ツールのダイアログ ボックスを使用する場合は、[入力ラスタ バンド] の横にある参照 ボタンを使用してマルチバンド ラスタを参照し、ラスタを開いて、使用するバンドを選択します。
- マルチバンド ラスタがコンテンツ ウィンドウのレイヤである場合は、[ラスタ レイヤの作成(Make Raster Layer)] ツールを使用して、目的のバンドだけを含む新しいマルチバンド レイヤを作成できます。
- [コンポジット バンド(Composite Bands)] を使用して、目的のバンドだけを含む新しいデータセットを作成し、結果のデータセットをツールの入力として使用することもできます。
- Python では、使用するバンドをツール パラメータでリストとして直接指定できます。
構文
パラメータ | 説明 | データ タイプ |
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 |
コードのサンプル
次の例では、入力マルチバンド ラスタに対して主成分分析(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")
次の例では、入力マルチバンド ラスタに対して主成分分析(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")