Spatial Analyst のライセンスで利用可能。
Image Analyst ライセンスで利用できます。
マップ代数演算では、複数の演算子とツールから成るステートメントを、1 つのステートメントで作成できます。 1 つのステートメントに複数の演算子とツールを入力できることにより、複雑な操作をより効率的にモデル化できるようになるので、全体的な処理時間を短縮できます。 複雑な式は、ArcGIS Spatial Analyst エクステンションのツールが提供する機能に制限されません。他のツールボックスのツールも含めることができます。 複雑なステートメントを構築する際、正しく実行するためには、特定の操作ルールが必要となることがあります。
複雑なステートメントのルール
有効な複雑なステートメントを作成する際のガイドとして、次のリストに示すルールを使用してください。
- 複雑なステートメントでは、等号の左側にある出力だけが Raster オブジェクトになります。
- 式を実行する順序は、括弧と、使用される演算子の優先順位によって決定されます。 演算子の優先順位に関する詳細については、「演算子の優先順位のテーブル」をご参照ください。
outRaster = Raster("inras1") + Raster("inras2") / Raster("inras3")
上のステートメントでは、inras2 が inras3 で除算され、その結果が inras1 に加算されます。
- 実行の順序は、括弧を使用して制御できます。 括弧を入れ子にすると、演算子の優先順位にかかわらず、最も内側にある括弧が最初に処理されます。
outRas = Raster("inras1") / (Raster("inras2") + Raster("inras3"))
上のステートメントでは、inras1 が inras2 と inras3 の合計で除算されます。
- 複数のブール演算子 (~、&、^、|) または関係演算子 (<、<=、>、>=、==、!=) を 1 つの式の中で連続して使用するときは、括弧を使う必要があります。 たとえば、(a>2) & (a<5) という式には括弧が必要です。
outRas = (Raster("a") > 2 ) & ( Raster("a") < 5)
詳細:
括弧を必要としない式もありますが、その代わりに書き直した方がよいものもあります。 たとえば、a < b < c という形式の式は実行されず、括弧を追加すると式の意味が変わります。 したがって、この式を正常に実行するには、(a < b) & (b < c) という形に書き直す必要があります。
- 複雑なステートメントでは、演算子、変数、数値、ツールを使用できます。
outRas = Sin("inras1") + Raster("inras2") + 8
const = 10 outRas = Raster("inras1") + 2 * const
- 演算子で作成されたステートメントの括弧に適用されるすべてのルールは、ツールと演算子で作成されたステートメントにも適用されます。 入れ子の最も内側にある括弧内のツールまたは演算子が、最初に処理されます。
num = 10 outRas = (ZonalStatistics((Raster("inras2") + Raster("inras3")), "Value", "valueras", "MAXIMUM") - num ) / 8
上のステートメントでは、inras2 と inras3 の合計が [ゾーン統計 (Zonal Statistics)] ツールの入力として使用されています。 num の値が減算されてから、除算されます。
- 一連のステートメントで、前のステートメントからの出力を、後続のステートメントへの入力として使用できます。
outAdd = Raster("inras1") + Raster("inras2") outRas = FocalStatistics(outAdd, NbrCircle(5, "Map"), "MEAN")
上の例の outAdd は、inras1 と inras2 の加算から作成される Raster オブジェクトです。 outAdd は変数になるため、後に続く [フォーカル統計 (Focal Statistics)] ツールへの入力として使用するときに引用符は不要です。
- 結果がラスターであれフィーチャクラスであれ、どのツールも別のツールに組み込むことができます。 組み込みのツールから得られた必須の出力が、外側のツールの入力として使用されます。
outdistance = EucDistance(ContourList("elevation", "#", [1500]))
この例では、[コンター リスト (Contour List)] ツールの出力が、[ユークリッド距離 (Euclidean Distance)] ツールの入力として使用されています。
dist = EucDistance(arcpy.Select_analysis("schools", "#", "Pop>2000"))
上の例では、解析ツールボックスの [選択 (Select)] ツールの出力が、[ユークリッド距離 (Euclidean Distance)] ツールの入力として使用されています。
注意:
組み込まれているツールは、大規模なワークフローの中間段階の出力を作成するだけなので、出力引数をハッシュ記号「"#"」で置換することができます。これにより、ツールは、この一時出力の一意のパスと名前を作成することができます。 ハッシュ記号の使用の詳細は、「Python でのツールの使用」ヘルプ トピックの「ツールの出力」で説明されています。
- 式のツールから得られた任意の出力を使用するには、データセットを表すデータセット名か変数を使用する必要があります。
costDist = CostDistance("source", "in_cost", 15000, "out_bklink") costOut = CostPath("dest", costDist, "out_bklink")
上の例では、任意に出力されるバックリンク ラスターは、"out_bklink" という名前でワークスペースに出力されます。
bklink = "C:/results/out_bklink" costDist = CostDistance("source", "in_cost", 15000, bklink) costOut = CostPath("dest", costDist, bklink)
上の例では、バックリンク ラスターは、ツールが実行される前に変数によって定義されます。 変数は、出力バックリンク ラスターの位置と名前をポイントします。