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

基于分割索引栅格与值栅格创建向量列表的技术实现问询

按分割索引分组提取栅格值的向量列表实现方案

你已经用raster包构建好了值栅格img和分割索引栅格segmentation,要实现按分割索引分组创建数值向量列表的话,咱们可以分几步来做,保证逻辑清晰且结果准确:

首先先补全你未写完的segmentation栅格(这里假设是10x10的完整分割矩阵,你可以根据实际数据替换调整):

library(raster)

# 你的值栅格
img=raster(t(matrix(c(1,3,1,2,1,11,11,10,NA,NA,2,12,13,14,2,3,1,2,2,1,2,13,NA,12,0,1,2,20,21,2,3,12,13,14,3,2,21,22,21,1,1,2,3,2,2,1,1,NA,NA,1,NA,NA,13,14,NA,NA,27,6,6,5,NA,NA,NA,12,22,28,7,8,5,6,NA,NA,23,24,22,5,NA,NA,5,8,1,2,1,1,2,5,NA,NA,NA,NA,1,2,1,2,2,7,6,5,NA,NA),10,10)))

# 补全后的分割索引栅格
segmentation=raster(t(matrix(c(1,1,1,1,1,4,4,4,4,4,
                                1,7,7,7,1,5,5,5,5,5,
                                1,7,7,7,1,5,5,6,6,5,
                                1,7,7,7,1,5,6,6,6,5,
                                1,1,1,1,1,5,6,6,6,5,
                                2,2,2,2,2,3,3,3,3,3,
                                2,8,8,8,2,3,3,9,9,3,
                                2,8,8,8,2,3,9,9,9,3,
                                2,8,8,8,2,3,9,9,9,3,
                                2,2,2,2,2,3,3,3,3,3),10,10)))

第一步:验证两个栅格的匹配性

这一步很关键,必须确保img和segmentation的范围、分辨率、坐标系完全一致,否则分组会出错:

# 检查栅格匹配情况,返回TRUE说明完全匹配
compareRaster(img, segmentation, res=TRUE, ext=TRUE, crs=TRUE)

第二步:提取栅格值并分组(两种实现方式)

方式一:Base R 实现

用values()提取栅格的所有值,合并成数据框后,用split()按分割索引分组,同时过滤掉值为NA的记录:

# 将两个栅格的值合并为数据框
raster_df <- data.frame(
  img_value = values(img),
  seg_index = values(segmentation)
)

# 过滤NA值,然后按分割索引分组为向量列表
seg_value_list <- split(
  x = raster_df$img_value[!is.na(raster_df$img_value)],
  f = raster_df$seg_index[!is.na(raster_df$img_value)]
)

# 查看结果,比如索引为1的向量
seg_value_list$`1`

方式二:Tidyverse 实现

如果你习惯用dplyr等tidyverse工具,代码会更直观:

library(dplyr)

seg_value_list <- raster_df %>%
  filter(!is.na(img_value)) %>%  # 过滤NA值
  group_by(seg_index) %>%        # 按分割索引分组
  group_split(.keep = FALSE) %>% # 拆分为列表,只保留值列
  lapply(unlist)                 # 将每个分组的 tibble 转为向量

# 查看结果,比如第一个分组(对应索引1)
seg_value_list[[1]]

结果说明

最终得到的seg_value_list是一个命名列表(Base R方式)或有序列表(tidyverse方式),每个元素对应一个分割索引的数值向量,向量里包含该分割区域内所有非NA的栅格值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:56:09