
("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]) |
||
