Con (Spatial Analyst)
図
使用法
-
条件が true の場合のラスタと false の場合のラスタのいずれかが浮動小数の場合、出力ラスタは浮動小数になります。true と false の両方のラスタが整数の場合、出力ラスタは整数になります。
-
式の評価がゼロでない場合、true として処理されます。
-
false の場合の入力ラスタまたは定数が指定されていない場合、式で True にならないセルには NoData が割り当てられます。
-
NoData が条件式を満たしていない場合は、false の場合の入力ラスタの値は受け取られず、NoData のままとなります。
Python では、値フィールドを指定する {where_clause} を使用せず、マップ代数演算式を [入力条件ラスタ] に使用することができます。
たとえば、次のような条件式があります。
- Con("elev", 0, 1, "value > 1000")
- Con(Raster("elev") > 1000, 0, 1)
詳細については、以下に示したコード サンプルまたは「複雑なステートメントの構築」をご参照ください。
Python で {where_clause} を使用するには、これを引用符で囲む必要があります。たとえば、「"Population > 5000"」のように入力します。Python でのクエリの指定については、ヘルプをご参照ください。
-
論理式の最大長は 4,096 文字です。
構文
パラメータ | 説明 | データ タイプ |
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 式の一般的な形式に従います。 詳細については「ArcGIS で使用されるクエリ式への SQL リファレンス」と「Python でのクエリの指定」をご参照ください。 | SQL Expression |
戻り値
名前 | 説明 | データ タイプ |
out_raster |
出力ラスタ。 | Raster |
コードのサンプル
次の例では、入力ラスタの値が 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")
この例では、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")
この例では、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")
この例では、1 つの [Con] の内部で複数の [Con] ツールを使用しています。
import arcpy
from arcpy import env
from arcpy.sa import *
arcpy.CheckOutExtension = "Spatial"
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")
次の例では、入力ラスタの値が 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"
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
# 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")