如何在R中将数据框列指定为空间点向量的属性列
在R中为SpatVector添加属性列(保留空间特性)
方法一:创建空间点时直接包含所有属性
最稳妥的方式是从数据框创建空间向量时,直接指定坐标列,所有非坐标列会自动转为属性:
# 从完整数据框创建SpatVector,指定x、y为坐标列并设置CRS pontos <- vect(amostragem, geom = c("x", "y"), crs = "epsg:32723") # 执行投影转换 pontos <- project(pontos, worldDEM)
此时pontos会保留所有原始属性(ID、dsp、section),同时保持空间点特性。
方法二:为已创建的SpatVector添加属性
如果已经单独创建了仅含坐标的SpatVector,可用以下两种方式添加属性,不会丢失空间特性:
- 单列添加:使用
$操作符直接赋值
# 逐个添加属性列 pontos$ID <- amostragem$ID pontos$dsp <- amostragem$dsp pontos$section <- amostragem$section
- 批量添加:用
cbind()合并属性表(确保左侧为SpatVector,右侧为数据框子集)
# 一次性添加多列属性,仅选择需要的非坐标列 pontos <- cbind(pontos, amostragem[, c("ID", "dsp", "section")])
为什么之前操作会丢失空间特性?
如果直接用普通cbind()将SpatVector和单个向量合并(比如cbind(pontos, amostragem$section)),R会自动将SpatVector转换为普通数据框,导致空间特性丢失。必须使用上述terra包支持的属性添加方式。
内容的提问来源于stack exchange,提问作者teaga
相关产品推荐
相关产品推荐

