【229】Raster Calculator - 柵格計算器


參考:分段函數進行復制,利用語句

參考:ArcGIS柵格計算器 - CSDN

參考:ArcGIS柵格計算器con條件函數使用

參考:ArcGIS柵格計算器 - 電腦玩物

參考:在柵格計算器中構建表達式(官方幫助)


("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:表示所需條件結果為真或假的輸入柵格。
◈  in_true_raster_or_constant條件為真時,其值作為輸出像元值的輸入。
◈  in_false_raster_or_constant:條件為假時,其值作為輸出像元值的輸入。
◈  where_clause:決定輸入像元為真或假的邏輯表達式。表達式遵循 SQL 表達式的一般格式。where_clause 的一個示例為 "VALUE > 100"。

   
# 直接將結果添加到 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:定義要用於輸出值的柵格位置的輸入柵格。
◈  in_rasters_or_constants將從中選擇輸出值的輸入的列表。

   
# 按照一行一行計算位置
# 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])
           


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM