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

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)] ツールは、マップ代数演算の式を実行します。 このツールには使いやすい演算インターフェイスがあり、ボタンをクリックするだけで、ほとんどのマップ代数演算のステートメントを作成できます。 [ラスター演算 (Raster Calculator)] はスタンドアロン ツールとして使用できますが、ModelBuilder 内でも使用できます。 つまり、このツールを使用して、マップ代数演算の能力を ModelBuilder に統合できます。

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

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

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

ラスター演算は、すべてのツールと同様にジオプロセシング ツールであるため、ModelBuilder に統合することができます。 詳細については、以下のトピックをご参照ください。

Python ウィンドウ

[Python] ウィンドウは、ArcGIS の中からジオプロセシング ツールや Python の機能を使用するのに、効率的で便利な場所です。このウィンドウから実行される Python コマンドには、1 行の単純なコードから、ロジックを持つ複雑なブロックまで、さまざまなものがあります。Python ウィンドウは、カスタムまたはサードパーティの Python モジュールおよびライブラリを使用して追加の機能にアクセスする場所としても機能します。

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

Python ウィンドウの例

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

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

Python IDE (統合開発環境)

ArcGIS Pro の Python ウィンドウで入力できるステートメントの数に制限はありませんが、さらに複雑なモデルを作成するには扱いにくくなる可能性があります。 Image Analyst モジュールのツール、演算子、関数、クラスは、PythonWin のような任意の 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"

# Execute 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") + Raster("inras2")

演算子はラスターと数値の混在に対応します。 たとえば、次の例では 8 という一定の値が入力ラスター内のすべてのセルに加算されます。

outRas = Raster("inras1") + 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 でのジオプロセシングの詳細については、以下のトピックが役に立ちます。

関連トピック