对 raster::adjacent() 输出值的说明:

gva*_*van 1 gis r raster

我正在尝试使用 raster::adjacent() 创建一个 rooks case 邻接矩阵,但我无法理解输出。

可重现的例子:

library(raster)

r <- raster(nrow = 3, ncol = 3)

rAdjacent <- raster::adjacent(r, cells = 1:ncell(r), pairs = TRUE, directions = 4) 

rAdjacent
      from to
 [1,]    1  3
 [2,]    2  1
 [3,]    3  2
 [4,]    4  6
...
Run Code Online (Sandbox Code Playgroud)

从我对输出的解释来看,输出表明 1 和 3 具有 rooks 大小写关系(如果我正确理解了这种关系,则它们没有)。

问题 1. 这是正确的吗?我是否正确解释了这个输出?

问题 2. 我如何使用 next() 或其他方法创建输出,它可以为我提供相邻的单元格编号对?

谢谢 :)

DJa*_*ack 5

您需要投影您的栅格。

如果栅格未投影(在地理(纬度/经度)“投影”中)并且经度为 -180 度和 180 度,则该函数将连接外部子午线。(从这里)。

r <- raster(nrow = 3, ncol = 3)
crs(r) <- CRS("+proj=robin +datum=WGS84")

rAdjacent <- raster::adjacent(r, cells = 1:ncell(r), 
                              pairs = TRUE, directions = 4) 
rAdjacent[order(rAdjacent[,1]),]
Run Code Online (Sandbox Code Playgroud)
      from to
 [1,]    1  2
 [2,]    1  4
 [3,]    2  1
 [4,]    2  3
 [5,]    2  5
 [6,]    3  2
 [7,]    3  6
 [8,]    4  5
 [9,]    4  1
[10,]    4  7
[11,]    5  4
[12,]    5  6
[13,]    5  2
[14,]    5  8
[15,]    6  5
[16,]    6  3
[17,]    6  9
[18,]    7  8
[19,]    7  4
[20,]    8  7
[21,]    8  9
[22,]    8  5
[23,]    9  8
[24,]    9  6
Run Code Online (Sandbox Code Playgroud)