You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于raster::adjacent()输出值的疑问:创建车氏邻接矩阵遇阻

问题解析:为什么raster::adjacent()的邻接关系看起来不符合预期?

你的困惑主要来自两个核心误解:对raster包的像元编号规则不熟悉,以及默认的像元顺序和你预想的不一样,我们一步步拆解清楚:

1. 先搞懂raster的像元编号逻辑

你创建的3x3栅格,像元编号是列优先的:从左上角开始,先按列从上到下编号,再切换到下一列。具体对应关系是:

行\列第1列第2列第3列
第1行147
第2行258
第3行369

所以你看到的from=1, to=3,并不是同一行的左右两个像元,而是第1列的第1行和第3行像元——它们是垂直相邻的,完全符合车氏(rooks)邻接的定义(上下左右相邻)。

2. 确认directions参数的正确性

你用directions=4是完全正确的!根据raster包的文档:

  • directions=4对应Neumann邻接,也就是上下左右四个方向(车氏邻接)
  • 如果你想让代码更直观,也可以写成directions='rook',效果完全一致

你之所以觉得1和3的邻接关系有问题,是因为默认像元编号是行优先(同一行从左到右1→2→3),但raster包的核心操作都是基于列优先编号的,这才是误解的根源。

3. 验证邻接关系的正确性

我们可以用xyFromCell()函数查看像元的坐标,直接验证邻接逻辑:

# 查看像元1和3的中心坐标
xyFromCell(r, 1)  # 返回 (0.5, 2.5) → 第1列第1行
xyFromCell(r, 3)  # 返回 (0.5, 0.5) → 第1列第3行

这两个像元在同一列,垂直相邻,确实是车氏邻接的合法关系。

内容的提问来源于stack exchange,提问作者gvan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:08:07