将条件命令从ArcGis的栅格计算器传输到R.

时间:2018-06-13 23:23:48

标签: r conditional arcgis raster r-raster

我想将以下代码从ArcGis的栅格计算器转移到R.
Con("diff_canopy" >= 1), "diff_canopy")
这会估计一个新栅格,它只包含diff_canopy中d​​iff_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)如果不匹配,还有其他任何修复错误的建议吗?

1 个答案:

答案 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})