我正在将适用性模型从arcpy转移到R,并试图找到执行类似于FuzzyOverlay的模糊覆盖的函数或包。哪些R运算会产生与ArcPy中的FuzzyOverlay(,“ AND”)函数相同的输出?
我的模型生成具有0-100值的中间栅格图层,我正尝试通过模糊隶属度进行覆盖
我已经尝试了FuzzySim :: fuzzyOverlay,但是不确定它们是否执行相同的操作。我的模型输入值是0-100,在arcpy FuzzyOverlay中运行得很好,但是FuzzySim :: fuzzyOverlay给出了错误,直到我将值重新缩放为0-1。 下面是对可复制代码的尝试,但同样,不确定是否要使用此函数。
#make 4 rasters
r1 <- raster(xmn = -100, xmx = -60, ymn = 25, ymx = 50, res = c(1,1))
r2 <- r1
r3 <- r1
r4 <- r1
#fill with random values
r1[] <- runif(ncell(r2), 0, 1)
r2[] <- runif(ncell(r2), 0, 1)
r3[] <- runif(ncell(r3), 0, 1)
r4[] <- runif(ncell(r3), 0, 1)
#stack rasters
rs <- stack(r1, r2, r3, r4)
#perform fuzzyOverlay
xy <- fuzzyOverlay(rs, op = "fuzzy_and")
我想要一个根据ESRI's description返回的输出,“返回输入模糊栅格中的模糊隶属关系的最小值”,最好以栅格格式返回。 我在正确的轨道上吗?
答案 0 :(得分:1)
给出描述fuzzyAndValue = min(arg1, ..., argn)
,我认为这只是一个简单的min
函数:
#make 4 rasters
r1 <- raster(xmn = -100, xmx = -60, ymn = 25, ymx = 50, res = c(1,1))
r2 <- r1
r3 <- r1
r4 <- r1
#fill with random values
r1[] <- runif(ncell(r2), 0, 1)
r2[] <- runif(ncell(r2), 0, 1)
r3[] <- runif(ncell(r3), 0, 1)
r4[] <- runif(ncell(r3), 0, 1)
#stack rasters
rs <- stack(r1, r2, r3, r4)
#perform fuzzyOverlay
xy <- min(rs)
plot(xy)