r - 使用 terra 将列添加到 shapefile?

标签 r raster shapefile terra

我们有一个像这样的形状文件:

library(terra)
#> terra 1.6.7
v <- system.file("ex/lux.shp", package="terra") |> vect()

我们可以添加一个字段或列,如下所示:

v[["ID_new_v1"]] <- 1:nrow(v)
v$ID_new_v2 <- 1:nrow(v)

但是,我想添加一列 from:dat、一列 my,到 v 中 NAME_2 中的所有对应名称

dat=structure(list(ec = c("Diekirch", "Redange"), med.x = c(7, 8), 
                   co.x = c(113L, 590L), my = c(3, 5), co.y = c(113L, 590L), 
                   per = c(3, 9)), row.names = 1:2, class = "data.frame")

最佳答案

您可以使用 tidyterra 包中的 left_join 将数据框连接到 shapefile,例如

library(terra)
library(tidyterra)

v <- system.file("ex/lux.shp", package="terra") |> vect()

dat=structure(list(ecoregion = c("Diekirch", "Redange"), med.x = c(7, 8), 
                   co.x = c(113L, 590L), my = c(3, 5), co.y = c(113L, 590L), 
                   per = c(3, 9)), row.names = 1:2, class = "data.frame")

left_join(v, dat, by = c("NAME_2" = "ecoregion"))

您还可以使用 terra 包中的 merge 函数,例如

merge(v, dat, all.x=TRUE, by.x=c('NAME_2'), by.y=c('ecoregion'))

关于r - 使用 terra 将列添加到 shapefile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77353043/

相关文章:

r - 使用来自不同来源的形状文件和数据文件在 R 中绘制专题 map

r - 根据 R 中的另一个点数据集为多边形中的每个点着色

将第一行添加到空 data.frame 时,行号不同(NA 与 1)

r - 如何解决r中的未知变量?

r - 如果列的类型不常见,如何检查列的类型?

string - 根据图层部分名称匹配选择堆栈中的栅格

r - 将 GIS 形状文件转换为 R 中的栅格?

javascript - Paper.js背景栅格化故障

shapefile - 将形状文件导入postgis?

regex - 将带有正则表达式的文件与 list.files 进行匹配