Skip to main content

マップ代数演算での演算子の使用

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

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

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

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

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

操作

Python 演算子

マップ代数演算の演算子

ジオプロセシング ツール

数学

加算

+

+

Plus

除算

/

/

Divide

整数除算

//

//

N/A

モジュロ

%

%

Mod

乗算

*

*

Times

累乗

**

**

Power

減算

Minus

単項減算

Negate

単項加算

+

+

N/A

Boolean

Boolean And

N/A

&

Boolean And

Boolean Complement

N/A

~

Boolean Not

Boolean Exclusive Or

N/A

^

Boolean XOr

Boolean Or

N/A

|

Boolean Or

Relational

Equal To

==

==

Equal To

Greater Than

>

>

Greater Than

Greater Than And Equal To

>=

>=

Greater Than Equal

Less Than

<

<

Less Than

Less Than And Equal To

<=

<=

Less Than Equal

Not Equal To

!=

!=

Not Equal

Bitwise

Bitwise And

&

N/A

Bitwise And

Bitwise Complement

~

N/A

Bitwise Not

Bitwise Exclusive Or

^

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 つの演算子の優先順位が同じ値である場合は、式の中で左から右の順に処理されます。

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

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

マップ代数演算の演算子

参考情報

<、<=、>、>=、==、!=

Less ThanLess Than EqualGreater ThanGreater Than EqualEqual ToNot Equal

|

Boolean Or

^

Boolean XOr

&

Boolean And

<<、>>

Bitwise Left ShiftBitwise Right Shift

+、-

AdditionSubtraction

*、/、//、%

MultiplicationDivisionInteger DivisionModulo

+、-、~

Unary PlusNegateBoolean Not

**

Power