Spatial Analyst のライセンスで利用可能。
Image Analyst ライセンスで利用できます。
図
使用法
条件が 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 ラスター入力が定数の場合、ツールではマルチバンド入力の各バンドの定数値を使用して操作が実行されます。
式の評価が 0 以外の場合、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 文字です。
構文
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 |
コードのサンプル
次の例では、入力条件ラスターの値が 2000 より大きい場合は、出力が元の値になり、そうでない場合は、値が NoData になります。
import arcpy
from arcpy import env
from arcpy.ia import *
env.workspace = "C:/output/data"
outCon = Con("elevation", "elevation", "", "VALUE > 2000")
outCon.save("C:/output/outcon.img")
# Execute Con using a map algebra expression instead of a where clause
outCon2 = Con(Raster("elevation") > 2000, "elevation")
outCon2.save("C:/output/outcon2")
この例では、Nodata の場合を除いて、元の値が出力で保持されます。Nodata は 0 で置換されます。
# Name: Con_Ex_02.py
# Description: Performs a conditional if/else evaluation
# on each pixel of an input raster.
# Requirements: Image Analyst Extension
# Import system modules
import arcpy
from arcpy import env
from arcpy.ia import *
# Set environment settings
env.workspace = "C:/output"
# Set local variables
inRaster = Raster("elevation")
inTrueRaster = 1
inFalseConstant = 0
whereClause = "VALUE >= 1500"
# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")
# Execute Con and save the output
outCon = Con(inRaster, inTrueRaster, inFalseConstant, whereClause)
outCon.save("C:/output/outcon.tif")
# Execute Con using a map algebra expression instead of a where clause, and save the output.
outCon2 = Con(inRaster >= 1500, inTrueRaster, inFalseConstant)
outCon2.save("C:/output/outcon2.tif")
環境
ライセンス情報
- Basic: 次のものが必要 Image Analyst または Spatial Analyst
- Standard: 次のものが必要 Image Analyst または Spatial Analyst
- Advanced: 次のものが必要 Image Analyst または Spatial Analyst