我想将以下代码从ArcGis的栅格计算器转移到R.
Con("diff_canopy" >= 1), "diff_canopy")
这会估计一个新栅格,它只包含diff_canopy中diff_canopy大于或等于1的数据。
为了解决这个问题,我遵循并调整了此post中提出的代码:
test <- raster (extent(canopy_sjd), nrows=nrow(canopy_sjd), ncols=ncol(canopy_sjd))
test[canopy_sjd[]>=1] <- canopy_sjd[canopy_sjd[] >=1]
代码工作正常但是,当我将使用R代码获得的栅格与直接使用ArcGis计算器获得的栅格进行比较时,我获得了不同的值:
来自ArcGis计算器:min 1.01598 max 10.0271
来自改编的R代码:min 1.01598 max 11.7207
我的问题如下:
1)改编的代码与光栅计算器声明匹配?
2)如果匹配,为什么输出光栅之间的最大值不同?
3)如果不匹配,还有其他任何修复错误的建议吗?
答案 0 :(得分:0)
始终包含一些示例数据:
customer_ID Item_number Frequency
1 53 10
1 64 10
2 82 11
2 64 11
这是一个简单的解决方案:
library(raster)
canopy <- raster(nrow=4, ncol=4, xmn=0, xmx=1, ymn=0, ymx=1, crs='+proj=utm +zone=1')
values(canopy) <- 1:ncell(canopy)
canopy <- canopy - 5
替代方案:
x <- reclassify(canopy, cbind(-Inf, 1, NA), right=FALSE)
还有一个:
y <- mask(canopy, canopy >=1, maskvalue=0)
对于小型数据集,可以使用您的解决方案(但不推荐)。我会这样做:
z <- calc(canopy, function(i){ i[i<1] <- NA; i})