2016-11-19 274 views
-1

我有一個raster圖像(.tif),每個像素的連續值在0和1之間。 我想在此計算面積(也可以是多個像素) raster它具有一組值間隔中的值:即0.1-0.2,0.3-0.4,0.7-0.8。 最終目標是看看哪個間隔佔用了更大的面積。 任何想法嘗試或如何接近它在R在R中計算具有特定值的柵格的面積

+0

你說的光柵是什麼意思?光柵包,或者只是一個矩陣,或? – mdsumner

+0

好的,看看柵格包,你可以做直接比較,嘗試表(值(cut(r,intervals))),但是如果你還沒有使用柵格,可以探索相關的功能。使用r = raster(「file.tif」)閱讀您的文件 – mdsumner

回答

1

如果ras是光柵圖像,您可以執行以下操作:

sum(ras[] >= 0.1 & ras[] <= 0.2) 

這將返回包含的範圍內0.1值的像素數 - 0.2。如果你乘以這個平方的單元格大小:

sum(ras[] >= 0.1 & ras[] <= 0.2) * res(ras)[1]^2 

你得到的平方米的面積。

只需更改值以調整範圍,或編寫一個迭代超過預定義值範圍的函數/循環,甚至可以創建條形圖。

喜歡的東西:

intervals <- list(c(0.1,0.2), 
        c(0.2,0.3), 
        c(0.3,0.4)) 

sapply(intervals, function(x) { 
    sum(ras[] > x[1] & ras[] <= x[2]) 
}) 
+0

非常感謝,這完全回答了我的問題! – MIH