Skip to main content

Image Analyst のマップ代数演算の使用のクイック ツアー

Image Analyst ライセンスで利用可能。

Spatial Analyst ライセンスで利用可能。

マップ代数計算では、代数演算を使用して演算子、関数、クラスにアクセスすることができます。 最も基本的な形式では、出力ラスターを等号 (=) の前に指定し、ツール、演算子、およびそれらのパラメーターを後ろに指定します。 例を以下に示します。

from arcpy.ia import *
elevationPlus100 = Plus("inelevation", 100)

上のステートメントは、標高データセットに 100 単位を追加し、elevationPlus100 という Raster オブジェクトを作成して結果を保存しています。

マップ代数演算ではシンプルなステートメントも実行できますが、この言語の力は複雑なステートメントやモデルの作成時に発揮されます。 マップ代数演算は Python に統合されているため、Python および ArcPy のすべての機能とそのエクステンション (モジュール、クラス、関数、プロパティ) をモデラーは使用することができます。

必要性が高まるにつれ、マップ代数演算の多くの側面を探求できます。 次のクイック ツアーでは、使用を開始するための基本事項を説明します。

マップ代数演算の基本

マップ代数演算を使用するには、次の 3 つの方法があります。

  • ラスター演算 ツール

  • Python ウィンドウ

  • Python 統合開発環境 (IDE)

ラスター演算

ラスター演算 ツールは、マップ代数演算の式を実行します。 このツールには演算インターフェイスがあり、ボタンをクリックするだけで、ほとんどのマップ代数演算のステートメントを作成できます。 このツールはスタンドアロン ツールとして使用でき、ModelBuilder 内でも使用できます。 その結果、このツールを使用して、マップ代数演算を ModelBuilder に統合できるようになります。

ラスター演算ツールのユーザー インターフェイス

上の式では、2 番目と 3 番目のラスターが乗算され、その結果が 1 番目に加算されて、3 つのラスターが演算されます。 演算子は、定義された優先順位に従って処理されます。

ラスター演算 ツールは、他の Image Analyst または Spatial Analyst ツールを置き換えるものではありません。 適切な演算に対しては他のツールの使用を継続してください。 たとえば、複数の加重ラスターをオーバーレイするには、加重合計 ツールを使用します。 ラスター演算 ツールは、1 行の代数演算ステートメントを実行するように設計されています。

先に述べたように、ラスター演算 ツールを ModelBuilder に統合することができます。 詳細については、以下のトピックをご参照ください。

Python ウィンドウ

Python ウィンドウの対話型コンソールを使用することで、ArcGIS Pro から Python インタープリターを介して Python コードを直接実行することができ、スクリプト ファイルは必要ありません。 このウィンドウから実行する Python コードは、単一行テキストから複数行のコード ブロックまで広範囲にわたります。 次のビデオでは、Python ウィンドウの概要を紹介します。

Python ウィンドウを開くには、解析 タブの ジオプロセシング グループ、または 表示 タブの ウィンドウ グループから Python ボタン をクリックします。

Python ウィンドウの例

上の一連のステートメントでは、ArcPy サイト パッケージ、ジオプロセシング環境、Image Analyst モジュールがインポートされ、ワークスペースが設定され、ラスターの分類 ツールが実行されます。 ステートメントの最後にキャリッジ リターンが入力されると、ステートメントは即座に実行されます。

Python ウィンドウの機能には、あらかじめ組み込まれた行のオートコンプリート、変数の使用、Python および ArcPy の機能へのアクセスなどがあります。

Python IDE (統合開発環境)

ArcGIS Pro の Python ウィンドウで入力できるステートメントの数に制限はありませんが、複雑なモデルを作成するには扱いにくくなる可能性があります。 Image Analyst モジュールのツール、演算子、関数、クラスは、IDE からアクセスすることもできます。 IDE を起動して、希望するステートメントを入力してください。

次のスクリプトでは、ArcPy、ジオプロセシング環境、Image Analyst モジュールがインポートされ、変数が設定され、エクステンションがチェックアウトされ、ラスターの分類 ツールが実行され、出力が保存されます。

# Name: Image Classification
# Description:
# Requirements: Image Analyst Extension
# Import system modules
import arcpy
from arcpy import env
from arcpy.ia import *
# 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 つ目のステートメントでは、inras1inras2 に加算され、その結果が inras3 で除算されています。 2 つ目のステートメントのように括弧がない場合は、inras2inras3 によって除算され、その結果が 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")

上のステートメントではワークスペースが設定され、RedlandsLandcoverC:/data に保存されます。

追加情報

ArcPy の詳細については、次のトピックをご参照ください:

Python でのジオプロセシングの詳細については、次のトピックをご参照ください: