R语言中如何对raster对象分层,获取模拟空间点所属的stratum层级?
R空间点生成分层标识的实现方案
前置代码笔误修正
现有代码存在几处笔误会导致后续变量值异常,先修正:
- 生成R2时误用了v1数组,替换为v2:
# 原错误代码 R2 <- raster(matrix(v1,byrow=T,nrow=10, ncol=10)) R2 <- raster(matrix(v2,byrow=T,nrow=10, ncol=10))
- 转换.im对象时重复赋值给IM1,新增IM2变量:
# 原错误代码 IM1 <- as.im.RasterLayer(R2) IM2 <- as.im.RasterLayer(R2)
- 合并环境变量时重复调用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
相关产品推荐
相关产品推荐

