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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:15:46