マップ代数演算の演算子の操作

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

Image Analyst ライセンスで利用できます。

マップ代数演算では、入力されたラスターおよび数値に対する数学演算が演算子によって適用されます。

演算子は、一般に 2 つの入力 (オペランド) の間に置かれ、数学演算 (outVar = 3 + 7 など) を実行します。マップ代数演算では、オペランドはラスターまたは数値になります。演算子をラスターで使うには、ラスターは Raster objectでなければなりません。

次の表では、現在のマップ代数演算の演算子が、Python の演算子に関してどのように実装されているかを即座に確認することができます。

演算Python 演算子マップ代数演算の演算子ジオプロセシング ツール

算術演算

加算

+

+

Plus

除算

/

/

Divide

整数除算

//

//

N/A

モジュロ

%

%

Mod

乗算

*

*

Times

累乗

**

**

Power

減算

-

-

Minus

単項減算

-

-

Negate

単項加算

+

+

N/A

ブール型

ブール型論理積

N/A

&

Boolean And

ブール型論理否定 (補数)

N/A

~ キー

Boolean Not

ブール型排他的論理和

N/A

^

Boolean XOr

ブール型論理和

N/A

|

Boolean Or

関係

と等しい

==

==

Equal To

大きい

>

>

Greater Than

以上

>=

>=

Greater Than Equal

未満

<

<

Less Than

以下

<=

<=

Less Than Equal

と等しくない

!=

!=

Not Equal

ビット演算

Bitwise And

&

N/A

Bitwise And

ビット単位の論理否定 (補数)

~ キー

N/A

Bitwise Not

ビット単位の排他的論理和

^

N/A

Bitwise XOr

Bitwise Left Shift

<<

<<

Bitwise Left Shift

Bitwise Or

|

N/A

Bitwise Or

Bitwise Right Shift

>>

>>

Bitwise Right Shift

演算子のルール

  • 演算子で数値のみが使用された場合、結果は数値になります。
    # outVar will be assigned 10
    outVar = 3 + 7
  • 演算子をラスターで使用する場合、ラスターは Raster オブジェクトでなければなりません。
    outRas = Raster("inraster1") + Raster("inraster2")
  • ラスター オペランドが使用された場合、結果は Raster オブジェクトになります。
    # In the following statement, 4 is added to each cell value in inraster1
    outRas = Raster("inraster1") + 4
    outRas2 = Raster("inraster") + math.pi

    上のステートメントでは、Python math モジュールの pi が使われています。math モジュールには自然対数の底も含まれており (math.e)、これもマップ代数演算のステートメントで使用できます。

  • Raster オブジェクトや数値の前に付く演算子もあります。
    outRas = -Raster("inraster")
  • ブール型演算子 (~&^|) は、1 つ以上の入力 (オペランド) がラスターの場合にブール型演算を実行します。どちらの入力 (オペランド) も数値の場合は、演算子によってビット単位の演算が実行されます。

ヒント:

演算子間のスペースは不要ですが、読みやすくするために入れることをお勧めします。

ツールと演算子をネストして、複雑なステートメントを作成することができます。

多次元ラスターの演算子のルール

  • 演算子が多次元ラスターと数字で使用されると、その結果は、入力と同じ変数と次元を持つ多次元 Raster オブジェクトになります。
    # In the following statement, 100 is added to each cell in 
    # each slice of in_multidem_raster
    out_multidem_raster = in_multidem_raster + 100
  • 演算子が多次元ラスターと非多次元ラスターで使用されると、その結果は、入力と同じ変数と次元を持つ多次元 Raster オブジェクトになります。

    入力 Raster オブジェクトが重複していない場合、結果は返されません。

    # In the following statement, the cell values from in_raster are added to 
    # the cell values in each slice of in_multidem_raster.
    out_multidem_raster = in_multidem_raster + in_raster
  • 演算子が 2 つの多次元ラスターで使用されると、結果は、入力間で共通している変数と次元のみを含む多次元 Raster オブジェクトになります。たとえば、一方の多次元ラスターに 1995 ~ 2015 年の毎日の気温データが含まれ、もう一方の多次元ラスターに 2001 ~ 2005 年の毎日の気温データが含まれている場合、両方の多次元ラスターで使用される演算子の結果には、2001 ~ 2005 年の毎日の気温データのみが含まれます。

    入力多次元 Raster オブジェクトに共通の変数と次元がない場合、結果は返されません。

    # In the following statement, the cell values in each slice from in_multidem_raster1
    # are added to the cell values in each slice from in_multidem_raster2, only where variables and 
    # dimensionality overlap.
    out_multidem_raster = in_multidem_raster1 + in_multidem_raster2

演算子の優先順位

優先順位の値によって、実行される演算子の順序が決まります。優先順位の高い演算子が先に処理されます。2 つの演算子の優先順位が同じ値である場合は、式の中で左から右の順に処理されます。

括弧を使って優先順位の順序を無効にすることができます。指定された演算子にかかわらず、最も深い括弧内にある演算子が先に処理されます。

次の表は、マップ代数演算のすべての演算子を優先順位の低いものから高いものの順に示しています。同じ行に示されている演算子の優先順位は同じです。

関連トピック