0

在使用从 ArcGIS 10 导入的栅格数据在 R 中创建 RSF 图时,我遇到了 NoData/NA 的一些问题。

我的栅格是
a) 河流的属性(在 ArcGIS 10 to0、1 和河流外的 NoData 中重新分类) b) 与房屋的距离

我需要将最终地图限制为河流,但不知何故,所有周边区域都包含在生成的地图中,甚至显示了河流附近的高质量区域。在绘制河流的单个栅格时,它们看起来很好,在河流之外没有隐藏数据

我猜这个错误发生在我对栅格求和的地方。我假设当我对栅格求和时,只包括没有 NA 数据的单元格,但这可能是我的大错误。因此,如何以最简单有效的方式排除河流以外的区域?

您可以在下面找到我正在使用的脚本。

# Import Raster to R using the library(raster)
Raster1 <-raster("Raster1")
Raster2 <-raster("Raster2")
Raster3 <-raster("Raster3")
RasterD <-raster("RasterD")

# Create a raster stack and do raster multiplications
model_stack<-raster::stack(Raster1,Raster2, Raster3, RasterD)

# assign the beta coefficients (stemming from glmer)
mean_search<-fixef(mod) 

# multiply the rasters by the coefficients
model_stack_coef<-model_stack*mean_search

# Sum over all rasters - creates a single raster
pre_ssf <- calc(model_stack_coef, fun=sum)

# multiply by the power of exp
ssf<-calc(pre_ssf,fun=function(x){exp(x)})

# standardize between 0 and 1
ssf_p<-calc(ssf,fun=function(x){(x-min(x))/(max(x)-min(x))})
4

1 回答 1

0

您可以检查所有 NA 值的函数:

fun=function(x){ifelse(x>quantile(x,0.995),quantile(x,0.995),x)}
fun(c(NA,NA,NA))
#Error in quantile.default(x, 0.995) : 
#  missing values and NaN's not allowed if 'na.rm' is FALSE

并修复它:

fun=function(x){ifelse(x>quantile(x,0.995,na.rm=T),quantile(x,0.995, na.rm=T),x)}
fun(c(NA,NA,NA))
# [1] NA NA NA
于 2015-10-12T02:41:16.327 回答