理解R语言gdistance包下的transition函数

时间:2023-02-09 20:40:37

library(raster)
library(gdistance)
r <- raster(nrows=3, ncols=4, xmn=0, xmx=7, ymn=0, ymx=6, crs="+proj=utm +units=m")
r[] <- c(2, 2, 1, 1,
         2, 2, 4, 4,
         2, 1, 1, 4)
par(mar=c(2,2,2,2))
plot(r)
text(r)
理解R语言gdistance包下的transition函数

那么如果我们要求算四个方向上的平均值,注意是四个方向上的,不是8个方向的。

T <- transition(r, function(x) mean(x), 4,symm=F)
plot(raster(T))

text(raster(T), digit=2)

理解R语言gdistance包下的transition函数

对于左上角的结果值是如下计算的,2= (mean(c(2,2))+mean(c(2,2)))/2得到的,1.83 = (mean(c(2,2))+mean(c(2,2))+mean(c(2,1)))/3得到的,

1.67 = (mean(c(1,2))+mean(c(1,4))+mean(c(1,1)))/3,其他的都是可以这样推出来的。

那么如下的运算,得到的结果如何解释呢

am = function(x) max(x)
T <- transition(r,am, 4,symm=F)

理解R语言gdistance包下的transition函数理解R语言gdistance包下的transition函数

为方便,左图为原始图层,显然右侧的值可以计算如下

左上角的2 = (max(c(2,2) + max(c(2,2))/2;

第一行第二列的2 =(max(c(2,2)) + max(c(2,2)) + max(c(2,1)))/3

第一行第三列的2.33 = (max(c(1,2) + max(c(1,4)) + max(c(1,1))))/3

https://gis.stackexchange.com/questions/280593/understanding-the-values-from-transition-layers-produced-by-the-r-package-gdist