マップ代数演算での演算子の使用
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 Than、Less Than Equal、Greater Than、Greater Than Equal、Equal To、Not Equal |
|
| |
|
|
^ |
|
|
& |
|
|
<<、>> |
|
|
+、- |
|
|
*、/、//、% |
|
|
+、-、~ |
|
|
** |