Spatial Analyst クラス使用の概要
クラスはオブジェクトの作成に使用でき、多くの場合、インスタンスとして参照できます。オブジェクトをインスタンス化すると、そのプロパティとメソッドを使用できます。近傍クラスやリマップ クラスなどの Spatial Analyst クラスは、ジオプロセシング ツールのパラメータを実行するためのショートカットとしてよく使用されます。Spatial Analyst クラスを使用しない場合、これらのパラメータはもっと複雑な文字列が必要になります。
文字列よりクラスを使用した方が、パラメータの作成と管理がずっと簡単になります。パラメータにクラスを使用することには、次のような利点があります。
- クラスは、パラメータの多様な引数に対するヘルプとオートコンプリート機能を提供します。
- 結果オブジェクトから、パラメータの個々の引数をクエリできます。
- クラスの個々の引数を簡単に変更して、さらに解析することができます。
マップ代数演算における Spatial Analyst クラスの使用の詳細については、以下をご参照ください。
クラスを使用すると簡単に実装できるアプリケーションの例を以下に示します。
- クラス タイプまたは個々の引数値の判定:
たとえば、入力半径タイプと検索距離をクエリすると、IDW 内挿法に適用する乗数値がわかります。
- 入力値の変更:
たとえば、フォーラムでの公開された入力に基づいて、適地選定モデルの入力再分類値を変更して、リマップ テーブルを再作成せずに、さまざまなシナリオの出力への影響を調べることができます。
- 感度解析の実行:
たとえば、適地選定モデルのリマップ テーブルで、終了と開始の値を 5 パーセントずつ増やしながら何度も変更することで、入力条件のわずかな変更が出力にどのような影響するかを調べることができます。
- エラー解析の実行:
たとえば、パラメータの引数をランダムに変更しながらモデルを複数回実行し、データのエラーや不確実性に対する影響を調べることができます。
Spatial Analyst クラスの使用
Spatial Analyst ジオプロセシング ツールの一部のパラメータは、入力としてクラス オブジェクトを使用します。通常、パラメータは単純な文字列、データセット名、パス、キーワード、フィールド名、許容値、およびドメインとして定義されます。一部のパラメータはより複雑で、一連のプロパティまたは値を定義します。これらのパラメータを長い複雑なテキスト文字列を使用して定義する代わりに、クラス(近傍やリマップ テーブルなど)を使用することができます。クラス コンストラクタの入力要件を理解すると、クラス オブジェクトの作成、クエリ、変更、保存が容易になります。
Spatial Analyst クラスの引数として使用される入力には、さまざまなタイプがあります。
- スカラー
- 文字列
- Python リストまたはリストのリスト
- その他のクラス
読みやすくするために、クラスを変数に設定し、ツールではその変数を使用することをお勧めします。たとえば、次のような質問です。
Neighborhood = NbrRectangle(5, 5, "MAP")
outRas = FocalStatistics("inRas", Neighborhood, "MEAN")
ただし、クラスをツールのパラメータ内に定義することもできます。
outRas = FocalStatistics("inRas", NbrRectangle(5, 5, "MAP"), "MEAN")
固定数の入力で作成したクラス
一部のクラスは、固定数の単純なスカラーまたは文字列の引数を使用して作成されます。たとえば、5 マップ単位の半径で円形の近傍を作成する場合、次のようになります。
Neighborhood = NbrCircle(5, "MAP")
outRas = FocalStatistics("inRas", Neighborhood, "MAXIMUM")
これら各クラスは、入力引数の位置が事前に決定されています。これらのクラスは、処理するツール パラメータに基づいてグループ化できます。
-
ファジー クラス
(FuzzyGaussian、FuzzyLarge、FuzzyLinear、FuzzyMSLarge、FuzzyMSSmall、FuzzyNear、FuzzySmall)
- 水平方向ファクタ クラス
- KrigingModel クラス
-
近傍クラス
(NbrAnnulus、NbrCircle、NbrIrregular、NbrRectangle、NbrWedge、NbrWeight)
- 半径クラス
-
時間クラス
(TimeWithinDay、TimeSpecialDays、TimeMultipleDays、TimeWholeYear)
-
変換関数クラス
TfExponential、TfGaussian、TfLarge、TfLinear、TfLogarithm、TfLogisticDecay、TfLogisticGrowth、TfMSLarge、TfMSSmall、TfNear、TfPower、TfSmall、TfSymmetricLinear)
-
垂直方向ファクタ クラス
(VfBinary、VfLinear、VfSymLinear、VfInverseLinear、VfSymInverseLinear、VfCos、VfSec、VfCosSec、VfSecCos、VfTable)
Python リストを使用して作成したクラス
TopoBoundary、TopoLake、および TopoStream クラスなど、もっと複雑なクラスもあります。これらには複数の入力が必要で、[トポ → ラスタ(Topo to Raster)] ツールのパラメータに使用されます。複数の入力は Python リストを使って定義され、リストへの入力の数は状況によって(言い換えると、解析に必要な入力の数)によって変わります。
たとえば、TopoBoundary クラス コンストラクタは、1 つ以上の inFeature 入力を含むリストを想定しています。この inFeatures として識別されるリストは、結果オブジェクトのプロパティになります。inFeatures リスト内のアイテムをクエリまたは操作するには、リスト内のエントリとしてそれぞれを処理する必要があります(「クラスのクエリ」をご参照ください)。
inBoundary = TopoBoundary(["inBound1.shp", "inBound2.shp"])
リスト内のリストで作成したクラス
特定の状況によってパラメータに入力される入力エントリの数が決まるツールもあります。この種の入力パラメータは、リスト内のリストで作成されたクラスから生成されます。リスト内のリストからクラスが作成されるツールとしては、次の 3 つのグループがあります。
- 再分類テーブル(RemapRange、RemapValue)
- 加重再分類テーブル(オーバーレイおよび合計)(WOTable、WSTable)
- Topo クラス(サブセット)(TopoContour、TopoPointElevation、TopoSink)
たとえば、リマップ クラスは入力としてテーブルを想定しています。テーブルは、startValue、endValue、および分類される newValue を示すレコードのリストによってモデル化されます。テーブルは、結果オブジェクトのプロパティになります。テーブル入力をクエリまたは操作するには、リスト内のリストにあるエントリとして処理する必要があります(「クラスのクエリ」をご参照ください)。
# Usage: RemapRange([[startValue, endValue, newValue],...])
myRemapRange = RemapRange([[-3, -1.75, 1], [-1.75, -0.5, 2], [-0.5, 0.75, 3],
[0.75, 2, 4], [2, 3.25, 5], [3.25, 4.5, 6],
[4.5, 5.75, 7], [5.75, 7, 8]])
outReclassRR = Reclassify("inRas", "VALUE", myRemapRange)
リスト内の一連のクラスから作成されたクラス
一部のツールは、一連のクラスを入力とするクラス パラメータを使用します。一連のクラスは、リストで構成されます。リスト内の一連のクラスを必要とするクラス(Extract by Points や Extract by Rectangle など)は、一般に指定されたジオメトリによってデータを抽出します。