Con (Spatial Analyst)

サマリー

入力ラスターのそれぞれの入力セルに対して if/else 条件の評価を実行します。

Con を使用した条件評価の詳細

Con の図
OutRas = Con(InRas1, 40, 30, "Value >= 2")

使用法

  • 条件が true の場合のラスターと false の場合のラスターのいずれかが浮動小数の場合、出力ラスターは浮動小数になります。 true と false の両方のラスターが整数の場合、出力ラスターは整数になります。

  • [入力条件付きラスター] (Python では in_conditional_raster) がシングルバンド ラスターで、[式が TRUE のときの入力ラスター、または定数値] (Python では in_true_raster_or_constant) ラスターまたは [式が FALSE のときの入力ラスター、または定数値] (Python では in_false_raster_or_constant) ラスターのいずれかが定数の場合、出力はシングルバンド ラスターになります。

  • すべての入力がマルチバンド ラスターの場合、出力はマルチバンド ラスターになります。 true 入力またはオプションの false 入力が定数の場合、出力ラスターもマルチバンドになります。 各マルチバンド入力のバンド数は同一である必要があります。

  • ツールは、他の入力の対応するバンドを使用して、条件ラスターの各バンドに対して操作を実行します。 条件付き入力がマルチバンド ラスターであり、true または false ラスター入力が定数の場合、ツールはマルチバンド入力の各バンドの定数値を使用して操作を実行します。

  • 式の評価がゼロでない場合、true として処理されます。

  • [式が FALSE のときの入力ラスター、または定数値] が指定されていない場合、式で true にならないセルには NoData が割り当てられます。

  • NoData が式を満たしていない場合は、false の場合の入力ラスターの値は受け取られず、NoData のままとなります。

  • [式] は SQL クエリを使用します。 クエリを作成する方法の詳細については、以下のトピックをご参照ください。

  • Python で {where_clause} を使用するには、これを引用符で囲む必要があります。 例: "Value > 5000"

    Python でのクエリの指定については、ヘルプをご参照ください。

  • Python では、Value フィールドを指定する {where_clause} を使用せず、代わりに in_conditional_raster としてマップ代数演算式を使用することができます。

    たとえば、次のような式があります。

    • Con("elev", 0, 1, "value > 1000")

    は、次のように書き換えることができます。

    • Con(Raster("elev") > 1000, 0, 1)

    詳細については、以下に示したサンプル コードまたはマップ代数演算の「複雑なステートメントの構築」をご参照ください。

  • 論理式の最大長は 4,096 文字です。

  • 少なくとも 1 つの入力が、同数の変数を含む多次元ラスター データの場合、このツールは、ディメンション値が同じすべてのスライスについて演算を実行します。 出力は CRF 形式の多次元ラスターになります。 このツールで処理を行うには、一般的なディメンションと一般的なディメンション値が入力の変数に少なくとも 1 つ必要です。これらがないとエラーが発生します。

    2 つの入力が多次元ラスターで 1 つの変数を共有しているものの、名前が異なる場合は、ツールの実行前に多次元変数の照合ジオプロセシング環境をオフにします (Python では arcpy.env.matchMultidimensionalVariable = False を設定)。

    [入力条件ラスター] の値が多次元ラスターで、[式が TRUE のときの入力ラスター、または定数値][式が FALSE のときの入力ラスター、または定数値] の各パラメーターが定数値に設定されている場合、ツールでは定数値を使ってすべての変数のすべてのスライスに対して操作を実行し、出力は多次元ラスターになります。

パラメーター

ラベル説明データ タイプ
入力条件付きラスター

目的の条件の true または false の結果を表す入力ラスター。

整数タイプでも浮動小数点タイプでもかまいません。

Raster Layer
式が TRUE のときの入力ラスター、または定数値

条件が true である場合に出力セル値として使用される値を持つ入力。

整数、浮動小数点ラスター、または定数値のいずれかになります。

Raster Layer; Constant
式が FALSE のときの入力ラスター、または定数値
(オプション)

条件が false である場合に出力セル値として使用する値を持つ入力。

整数、浮動小数点ラスター、または定数値のいずれかになります。

Raster Layer; Constant
(オプション)

入力セルのどれが true でどれが false かを判定する論理式。

[WHERE 句] は、SQL 式の一般的な形式に従います。 [SQL 編集] モード ボタン SQL クエリ をクリックすると、「VALUE > 100」のように直接入力することが可能です。 [項目の編集モード] 項目の編集 では、[項目の追加モード] ボタンをクリックすると式の構築を開始できます。

SQL Expression

戻り値

ラベル説明データ タイプ
出力ラスター

出力ラスター。

Raster

Con(in_conditional_raster, in_true_raster_or_constant, {in_false_raster_or_constant}, {where_clause})
名前説明データ タイプ
in_conditional_raster

目的の条件の true または false の結果を表す入力ラスター。

整数タイプでも浮動小数点タイプでもかまいません。

Raster Layer
in_true_raster_or_constant

条件が true である場合に出力セル値として使用される値を持つ入力。

整数、浮動小数点ラスター、または定数値のいずれかになります。

Raster Layer; Constant
in_false_raster_or_constant
(オプション)

条件が false である場合に出力セル値として使用する値を持つ入力。

整数、浮動小数点ラスター、または定数値のいずれかになります。

Raster Layer; Constant
where_clause
(オプション)

入力セルのどれが true でどれが false かを判定する論理式。

式は、SQL 式の一般的な形式に従います。 where_clause の例: "VALUE > 100"

SQL Expression

戻り値

名前説明データ タイプ
out_raster

出力ラスター。

Raster

コードのサンプル

Con の例 1 (Python ウィンドウ)

この例では、入力条件付きラスターの値が 2000 より大きい場合は、元の値が出力で保持され、そうでない場合は、値が NoData になります。

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outCon = Con("elevation", "elevation", "", "VALUE > 2000")
outCon.save("C:/sapyexamples/output/outcon.img")

# Execute Con using a map algebra expression instead of a where clause
outCon2 = Con(Raster("elevation") > 2000, "elevation")
outCon2.save("C:/sapyexamples/output/outcon2")
Con の例 2 (Python ウィンドウ)

この例では、Nodata の場合を除いて、元の値が出力で保持されます。Nodata は 0 で置換されます。

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
outCon = Con(IsNull("elevation"),0, "elevation")
outCon.save("C:/sapyexamples/output/outcon")
Con の例 3 (Python ウィンドウ)

この例では、2 つの異なるラスターを使用して、条件付きラスターを作成します。

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
inRaster1 = Raster("landuse")
inRaster2 = Raster("landuse2")
outCon = Con(((inRaster1 == 1) & (inRaster2 == 5)), inRaster1 + inRaster2, 99)
outCon.save("C:/sapyexamples/output/outcon")
Con の例 4 (Python ウィンドウ)

この例では、1 つの [Con] の内部で複数の [Con] ツールを使用しています。

import arcpy
from arcpy import env
from arcpy.sa import *
env.workspace = "C:/sapyexamples/data"
inRas1 = Raster("inRaster")
outCon = Con(inRas1 < 45,1, Con((inRas1 >= 45) & (inRas1 < 47),2, Con((inRas1 >= 47) & (inRas1 < 49),3, Con(inRas1 >= 49,4))))
outCon.save("C:/sapyexamples/output/outcon")
Con の例 5 (スタンドアロン スクリプト)

この例では、入力条件付きラスターの値が 1500 以上の場合は、出力値が 1 になり、1500 未満の場合は、出力値が 0 になります。

# Name: Con_Ex_02.py
# Description: Performs a conditional if/else evaluation 
#              on each cell of an input raster.
# Requirements: Spatial Analyst Extension

# Import system modules
import arcpy
from arcpy import env
from arcpy.sa import *

# Set environment settings
env.workspace = "C:/sapyexamples/data"

# Set local variables
inRaster = Raster("elevation")
inTrueRaster = 1
inFalseConstant = 0
whereClause = "VALUE >= 1500"

# Execute Con
outCon = Con(inRaster, inTrueRaster, inFalseConstant, whereClause)

# Execute Con using a map algebra expression instead of a where clause
outCon2 = Con(inRaster >= 1500, inTrueRaster, inFalseConstant)

# Save the outputs 
outCon.save("C:/sapyexamples/output/outcon")
outCon2.save("C:/sapyexamples/output/outcon2")

関連トピック