因此,使用rasterToPoints爲獨特的專題類提取SpatialPoints對象。然後使用sp :: spDists函數來查找點之間的距離。
library(raster)
r1 <- raster(nrow=10,ncol=10)
r2 <- raster(nrow=10,ncol=10)
set.seed(1)
r1[] <- ceiling(runif(100,0,10))
r2[] <- ceiling(runif(100,0,10))
dist.class <- NULL
for(i in unique(values(r1))){
p1 <- rasterToPoints(r1, fun=function(xx) xx==i, spatial=T)
p2 <- rasterToPoints(r2, fun=function(xx) xx==i, spatial=T)
dist.class[i] <- min(spDists(p1,p2))
}
cbind(class = unique(values(r1)),dist.class)
循環可能對您沒有效率。如果這是一個問題,請將其包裝到一個函數中,然後使用它。另外,要小心你的班級,如果他們不是1:10,我的循環將無法工作。如果您的投影在度數,您可能需要geosphere包來獲得準確的結果。但在這種情況下,我認爲最好的方法是以米爲單位進行投影。