Image Analyst ライセンスで利用できます。
Spatial Analyst のライセンスで利用可能。
マップ代数計算では、代数演算を使用して演算子、関数、クラスにアクセスすることができます。 最も基本的な形式では、出力ラスターを等号 (=) の前に指定し、ツール、演算子、およびそれらのパラメーターを後ろに指定します。 例を以下に示します。
from arcpy.ia import *
elevationPlus100 = Plus("inelevation", 100)
上のステートメントは、標高データセットに 100 単位を追加し、elevationPlus100 という Raster オブジェクトを作成して結果を保存しています。
マップ代数演算ではシンプルなステートメントも実行できますが、この言語の力は複雑なステートメントやモデルの作成時に発揮されます。 マップ代数演算は Python に統合されているため、モデラーは Python および ArcPy のすべての機能とそのエクステンション (モジュール、クラス、関数、プロパティ) を使用することができます。
必要性が高まるにつれ、マップ代数演算の多くの側面を探求できます。 次のクイック ツアーでは、使用を開始するための基本事項を説明します。
マップ代数演算の基本
マップ代数演算を使用するには、次の 3 つの方法があります。
- [ラスター演算 (Raster Calculator)] ツール
- Python ウィンドウ
- Python 統合開発環境 (IDE)
ラスター演算 (Raster Calculator)
[ラスター演算 (Raster Calculator)] ツールは、マップ代数演算の式を実行します。 このツールには演算インターフェイスがあり、ボタンをクリックするだけで、ほとんどのマップ代数演算のステートメントを作成できます。 このツールはスタンドアロン ツールとして使用でき、ModelBuilder 内でも使用できます。 その結果、このツールを使用して、マップ代数演算を ModelBuilder に統合できるようになります。
上の式では、2 番目と 3 番目のラスターが乗算され、その結果が 1 番目に加算されて、3 つのラスターが演算されます。 演算子は、定義された優先順位に従って処理されます。
[ラスター演算 (Raster Calculator)] ツールは、他の Image Analyst または Spatial Analyst ツールを置き換えるものではありません。 適切な演算に対しては他のツールの使用を継続してください。 たとえば、複数の加重ラスターをオーバーレイするには、[加重合計 (Weighted Sum)] ツールを使用します。 [ラスター演算 (Raster Calculator)] ツールは、1 行の代数演算ステートメントを実行するように設計されています。
先に述べたように、[ラスター演算 (Raster Calculator)] ツールを ModelBuilder に統合することができます。 詳細については、以下のトピックをご参照ください。
Python ウィンドウ
Python ウィンドウの対話型コンソールを使用することで、ArcGIS AllSource から Python インタープリターを介して Python コードを直接実行することができ、スクリプト ファイルは必要ありません。 このウィンドウから実行する Python コードは、単一行テキストから複数行のコード ブロックまで広範囲にわたります。 次のビデオでは、Python ウィンドウの概要を紹介します。
Python ウィンドウを開くには、[解析] タブの [ジオプロセシング] グループ、または [表示] タブの [ウィンドウ] グループから [Python] ボタン をクリックします。
上の一連のステートメントでは、ArcPy サイト パッケージ、ジオプロセシング環境、Image Analyst モジュールがインポートされ、ワークスペースが設定され、[ラスターの分類 (Classify Raster)] ツールが実行されます。 ステートメントの最後にキャリッジ リターンが入力されると、ステートメントは即座に実行されます。
Python ウィンドウの機能には、あらかじめ組み込まれた行のオートコンプリート、変数の使用、Python および ArcPy の機能へのアクセスなどがあります。
Python 統合開発環境
ArcGIS AllSource の Python ウィンドウで入力できるステートメントの数に制限はありませんが、複雑なモデルを作成するには扱いにくくなる可能性があります。 Image Analyst モジュールのツール、演算子、関数、クラスは、IDE からアクセスすることもできます。 IDE を起動して、希望するステートメントを入力してください。
次のスクリプトでは、ArcPy、ジオプロセシング環境、Image Analyst モジュールがインポートされ、変数が設定され、エクステンションがチェックアウトされ、[ラスターの分類 (Classify Raster)] ツールが実行され、出力が保存されます。
# Name: Image Classification
# Description:
# Requirements: Image Analyst Extension
# Import system modules
import arcpy
from arcpy import env
from arcpy.ia import *
# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")
# Set environment settings
env.workspace = "C:/data"
# Set local variables
inRaster = "Landsat8_Redlands.tif"
classification_file = "LandCover.ecd"
# Run Classify Raster
outLandCover = ClassifyRaster(inRaster, classification_file)
# Save the output
outLandCover.save("C:/data/Landcover.tif")
Python ウィンドウと同様に、IDE では利用可能なすべての Python および ArcPy の機能へのアクセスが提供されます。
演算子
マップ代数演算では、一連の演算子 (+、-、* など) がサポートされます。 これらの同じ演算子は Python 内にも存在しますが、マップ代数演算で Raster オブジェクトを別の方法で扱うために変更されています。 たとえば、次の例は 2 つの数値を合計して 1 つの変数にします。
# set outVar to 14 using the Python + operator
outVar = 5 + 9
ステートメントがラスターに対して機能する (つまり、マップ代数演算の演算子を使用する) 必要があることを区別するには、データセットを Raster オブジェクトとしてキャストする必要があります。 次の例では、マップ代数演算の + 演算子を使用して、2 つのラスターを合計します。
outRas = Raster("inras1.tif") + Raster("inras2.tif")
演算子はラスターと数値の混在に対応します。 たとえば、次の例では 8 という一定の値が入力ラスター内のすべてのセルに加算されます。
outRas = Raster("inras1.tif") + 8
複雑な式
ツールと演算子は、1 つのステートメント内で 1 つにつなぐことができます。 次の例では複数のツールと演算子がそれぞれの式で実行されます。
outRas = Slope("indem" * 2) / 57
outdist = EucDistance(ExtractByAttributes("inras", "Value > 105"))
括弧を使用して、処理の順序を制御することができます。 次の 2 つの例を考えてください。どちらも同じ演算子が使われていますが、括弧が使われているために結果が異なっています。
outRas1 = (Raster("inras1") + Raster("inras2")) / Raster("inras3")
および
outRas2 = Raster("inras1") + Raster("inras2") / Raster("inras3")
1 つ目のステートメントでは、inras1 が inras2 に加算され、その結果が inras3 で除算されています。 2 つ目のステートメントのように括弧がない場合は、inras2 が inras3 によって除算され、その結果が inras1 に加算されます。
マップ代数演算ステートメントに関する推奨事項
以下に示したすべてのマップ代数演算の例では、出力が Raster オブジェクトになっています。 Raster オブジェクトはテンポラリ ラスター データセットをポイントします。このデータセットは明示的に保存しない限り、ArcGIS セッションの終了時に削除されます。 このテンポラリ データセットを実ファイルとして保存するには、Raster オブジェクトで save メソッドを呼び出します (以下の 2 例を参照)。
ワークスペース環境を示す例は次のとおりです。
import arcpy
from arcpy import env
from arcpy.ia import *
env.workspace = "C:/data"
outLandCover = ClassifyRaster("Landsat8_Redlands", "LandCover.ecd")
outLandCover.save("RedlandsLandcover")
上のステートメントではワークスペースが設定され、RedlandsLandcover は C:/data に保存されます。
参考情報
ArcPy の詳細については、次のトピックをご参照ください。
Python でのジオプロセシングの詳細については、次のトピックをご参照ください。