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)] ツールは、マップ代数演算の式を実行します。 このツールには演算インターフェイスがあり、ボタンをクリックするだけで、ほとんどのマップ代数演算のステートメントを作成できます。 このツールはスタンドアロン ツールとして使用でき、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] ボタン Python ウィンドウを表示 をクリックします。

Python ウィンドウの例

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

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

Python 統合開発環境

ArcGIS AllSourcePython ウィンドウで入力できるステートメントの数に制限はありませんが、複雑なモデルを作成するには扱いにくくなる可能性があります。 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 つ目のステートメントでは、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 でのジオプロセシングの詳細については、次のトピックをご参照ください。

関連トピック