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

R语言中如何对raster对象分层,获取模拟空间点所属的stratum层级?

R空间点生成分层标识的实现方案

前置代码笔误修正

现有代码存在几处笔误会导致后续变量值异常,先修正:

  1. 生成R2时误用了v1数组,替换为v2:
# 原错误代码 R2 <- raster(matrix(v1,byrow=T,nrow=10, ncol=10))
R2 <- raster(matrix(v2,byrow=T,nrow=10, ncol=10))
  1. 转换.im对象时重复赋值给IM1,新增IM2变量:
# 原错误代码 IM1 <- as.im.RasterLayer(R2)
IM2 <- as.im.RasterLayer(R2)
  1. 合并环境变量时重复调用IM1,改为两个im对象相加:
# 原错误代码 Com <- IM1 + IM1
Com <- IM1 + IM2

生成分层(stratum)的实现方法

之前用split函数不符合需求,该函数作用是拆分数据对象,不是生成分组编号。可以用cut函数对连续值分箱生成10个层级,两种常用分层逻辑可选:

方法1:按综合环境值分层

根据生成的全局环境指标Com的取值分10个层级,相同环境特征的点会被分到同一层:

# 提取每个点对应的综合环境值
point_env_val <- lookup.im(Com, lgc.process$x, lgc.process$y)
# 分箱生成1-10的层级编号,新增到数据最后一列
lgc.data <- cbind(lgc.data, stratum = cut(point_env_val, breaks = 10, labels = FALSE))

方法2:按空间位置分层

根据点的坐标位置划分10个空间层级,相邻位置的点会被分到同一层:

# 按x坐标范围0-300切分为10段,生成1-10的层级编号
lgc.data <- cbind(lgc.data, stratum = cut(lgc.data[,1], breaks = 10, labels = FALSE))

结果验证

运行后可通过以下代码确认分层符合要求:

# 查看生成的层级唯一值,会返回1到10的整数,满足至少10个层级的要求
unique(lgc.data[,"stratum"])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:09:00