R : 如何从 SpatialPointsDataFrame 写入 XYZ 文件?

Fly*_*yto 5 r spatial

我有一个 SpatialPointsDataFrame,它有一个属性(为了方便起见,我们称之为 z)以及纬度/经度坐标。

我想把它写到一个 XYZ 文件(即一个包含三列的 ASCII 文件)。

最初我试过

write.table(spdf, filename, row.names=FALSE)
Run Code Online (Sandbox Code Playgroud)

但这首先在每一行上写入 z 值,然后是坐标。所以它是 ZXY 格式而不是 XYZ。也许没什么大不了的,但对于必须使用该文件的其他人来说很烦人。

目前,我正在使用一种感觉非常可怕的 bodge 来执行此操作(如下所示),但我的问题是:是否有一种很好且直接的方法可以将 SPDF 写为 XYZ,并且列的顺序正确?似乎应该很容易!

感谢您的任何建议。

博奇:

dfOutput <- data.frame(x = coordinates(spdf)[,1], y = coordinates(spdf)[,2])
dfOutput$z <- data.frame(spdf)[,1]
write.table(dfOutput, filename, row.names=FALSE)
Run Code Online (Sandbox Code Playgroud)

Noa*_*oah 4

为什么不只是

library(sp)
spdf <- SpatialPointsDataFrame(coords=matrix(rnorm(30), ncol = 2), 
                               data=data.frame(z = rnorm(15)))


write.csv(cbind(coordinates(spdf), spdf@data), file = "example.csv", 
          row.names = FALSE)
Run Code Online (Sandbox Code Playgroud)

  • 快速浏览文档并没有显示“坐标”之类的数据访问方法。`slot(object=spdf, name = "data")` 几乎会做同样的事情。`as.data.frame(spdf)[,1:ncol(spdf), drop = FALSE]` 可以,但有点笨拙。我猜大多数时候这都是相当好的建议,但是“sp”对象的一般结构已经相当稳定一段时间了。 (2认同)