2016-04-30 243 views
3

我正在使用Landsat圖像來計算淨輻射。 我的轉換反射柵格圖層中存在非常低的負值(例如:-0.000003)。我想確保我的反射率爲0 - 1,以減少我未來計算中的錯誤。如何在R代碼中將小於0的柵格值替換爲NA

如何在R中將小於0的柵格值替換爲「NA」。類似於柵格計算函數。我不確定如何提供一個例子,但我相信你們中的一個可以幫助我,是嗎?

這裏是我從Bastiaanssen等人獲得的反射率方程。 (1998)

假設,pb1表示Landsat的第1波段的反射率,pi = 3.14 ...,lb1 =第1波段的輻射亮度,ESUN =第1波段的外大氣層值,dr =相對地球太陽距離一年中的一天。

#Calculate reflectivity per band. QC: Always 0 to 1 
pb1 = (pi * lb1)/(ESUN1 * cos(solzen) * dr) 

創建這個光柵之後,我想要做的就是將小於0的pb1值設置爲NA。

幫助?

回答

5
library(raster) 

values(pb1)[values(pb1) < 0] = NA 

或者,由@jbaums建議:

pb1[pb1 < 0] <- NA 

如果你想保持原來的柵格對象,記得運行上面的代碼之前,原始柵格到一個新的對象名稱分配。

+0

感謝您的快速回復。不過,我的新柵格被完全分類爲NA。 – MaeAntoinette

+0

pb1c =(values(pb1)[values(pb1)<0] = NA) > pb1c [1]不適用 – MaeAntoinette

+0

我不需要重新命名(即:pb1c,c代表「更正」)嗎? – MaeAntoinette

0

存儲安全的方式做到這一點是使用reclassify

library(raster) 
r <- raster(ncol=10, nrow=10) 
values(r) <- rnorm(100) 
x <- reclassify(r, cbind(-Inf, 0, NA), right=FALSE) 

right=FALSE不爲0的值設置爲NA。

reclassify的另一個優點是您可以提供文件名參數。

相關問題