如何从R/terra的SpatVector对象中提取点坐标?
提取SpatVector点对象坐标的正确方法
你遇到的问题是as.data.frame()默认仅提取SpatVector的属性表,而你创建的点对象没有附加属性字段,因此返回空数据框。
提取点坐标的正确方法有两种:
- 使用
terra::coords()函数直接获取坐标矩阵:
sq = terra::vect(cbind(c(0, 1, 1, 0, 0), c(0, 0, 1, 1, 0)), type = "points", crs = "local") coords(sq)
输出结果:
x y [1,] 0 0 [2,] 1 0 [3,] 1 1 [4,] 0 1 [5,] 0 0
- 使用
terra::geom()函数获取包含坐标、对象ID等信息的数据框,可灵活筛选所需内容:
geom(sq)
输出示例:
fid part x y 1 1 1 0 0 2 2 1 1 0 3 3 1 1 1 4 4 1 0 1 5 5 1 0 0
若仅需坐标列,可进一步筛选:
geom(sq)[, c("x", "y")]
内容的提问来源于stack exchange,提问作者randr
相关产品推荐
相关产品推荐

