("lyr" = 0) * 1 + ("lyr" > 0) * ("lyr" < 0.783) * (0.6508 - 0.3436 * log10("lyr")) + ("lyr" > 0.783 ) * 0
其中:* 表示赋值,+ 表示连接,个人理解
# 以下实现分段函数 # x<60, y=1 # 60<=x<=120, y=2 # x>120, y=3 ("Countries" < 60) * 1 + ("Countries" >= 60) * ("Countries" <= 120) * 2 + ("Countries" > 120) * 3 ("Countries" < 60) * 1 + (("Countries" >= 60) & ("Countries" <= 120)) * 2 + ("Countries" > 120) * 3 # 利用条件判断Con可以实现if...elseif...elseif...else的操作 # 只需要在FALSE的参数位置继续增加Con语句即可 Con("Countries" < 60, 1, Con(("Countries" >= 60) & ("Countries" <=120), 2, 3)) # 4个分段 Con("Countries" < 60, 1, Con(("Countries" >= 60) & ("Countries" <=120), 2, Con(("Countries" > 120) & ("Countries" < 180), 3, 4)))
以下是可在栅格计算器工具中执行的“地图代数”表达式的若干示例。在这些表达式中,栅格图层名称被包含在引号内,例如 "dist"。
# 以下形式实现将大于200的赋值为1,其他为0的操作 # 前面两个利用条件判断,若True=1 "elev" > 200 ("elev" > 200) Con("elev",1, 0, "Value > 200") Con("elev > 200",1, 0) # 也可以将两个图层进行合并计算 ("pop" > 150) & ("dist" > 10) # 进行复杂的公式运算 (("reclass_rd_dist" * 3) + ("reclass_landuse" * 2) + "reclass_elev") /6.0 ("Band4" - "Band3") / Float("Band4" + "Band3") # 以下两种形式均能实现将值大于20的赋值为2,其他为3的操作 Con("elev",2, 3, "Value > 20") Con("elev > 20",2, 3) # 将 Null 替换为 0 Con(IsNull("elev"),0, "elev") # True对应两个图层象元相加,否则为99 Con(("landuse1" == 1) & ("landuse2" == 5), "landuse1" + "landuse2", 99) Con(Raster('elev') != 0,'elev') (Con('elev', 'elev', "", "elev_feet <> 0")) + Raster("tree_height") Con("inRas" < 45,1, Con(("inRas" >= 45) & ("inRas" < 47),2, Con(("inRas" >= 47)&("inRas" < 49),3, Con("inRas" >= 49,4))))
相关函数说明:
序号 | 类名称 |
功能说明 |
语法 & 举例 | ||
01 | sa.Con |
====<<<< Description >>>>==== 针对输入栅格的每个输入像元执行 if/else 条件评估。 ====<<<< Syntax >>>>==== sa.Con (in_conditional_raster, in_true_raster_or_constant, {in_false_raster_or_constant}, {where_clause}) ====<<<< Parameters >>>>==== ◈ in_conditional_raster:表示所需条件结果为真或假的输入栅格。 |
# 直接将结果添加到 ArcMap,名称为 outCon >>> outCon = arcpy.sa.Con("rastercalc4", 2, 1, "VALUE < 100") # 按照默认形式命名 >>> arcpy.sa.Con("rastercalc4", 42, 1, "VALUE < 100") |
||
02 | sa.Pick |
====<<<< Description >>>>==== 位置栅格数据的值用于确定要从输入栅格列表中的哪一个栅格获取输出像元值。 ====<<<< Syntax >>>>==== sa.Pick (in_position_raster, in_rasters_or_constants) ====<<<< Parameters >>>>====
◈ in_position_raster:定义要用于输出值的栅格位置的输入栅格。 |
# 按照一行一行计算位置 # InRas1 的第1个象元是1,因此获取列表中第1个栅格的第1个象元1 # InRas1 的第4个象元是2,因此获取列表中第2个栅格的第4个象元NoData # InRas1 的第9个象元是NoData,结果为NoData # InRas1 的第12个象元是3,已经超出列表长度,象元为NoData OutRas = Pick(InRas1, [InRas2, InRas3]) |
||