複雑なステートメントの構築
マップ代数演算の最も強力な機能の 1 つは、複数のオペレータとツールを 1 行のステートメントにして作成できることです。複数の演算子とツールを 1 行のステートメントに入力できることで、複雑な処理を簡単にモデル化し、全体の処理時間を短縮できます。複雑な式は、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]))
dist = EucDistance(arcpy.Select_analysis("schools", "#", "Pop>2000"))
- 式でツールのオプション出力を使用するには、データセット名またはデータセットを表す変数を使用する必要があります。上の例では、オプション出力のバック リンク ラスタが、「out_bklink」と言う名前でワークスペースに出力されています。
costDist = CostDistance("source", "in_cost", 15000, "out_bklink") costOut = CostPath("dest", costDist, "out_bklink")
上の例では、バック リンク ラスタは、ツールを実行する前に変数によって定義されています。変数は、出力バック リンク ラスタの場所と名前を指しています。bklink = "C:/results/out_bklink" costDist = CostDistance("source", "in_cost", 15000, bklink) costOut = CostPath("dest", costDist, bklink)
関連項目
7/10/2012