5

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

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

最初我尝试过

write.table(spdf, filename, row.names=FALSE)

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

目前,我正在使用感觉非常可怕的东西来做到这一点(如下所示),但我的问题是:是否有一种好的和直接的方法可以将 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)
4

3 回答 3

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)
于 2014-02-15T18:20:58.060 回答
2

writeOGR您可以使用from rgdalpackage写入 .shp 文件。或者,您可以fortify(从ggplot2)您的数据并将其写入为 csv 文件。

于 2013-06-27T11:34:57.193 回答
1

coordinates跟进 Noah 关于数据值之类的方法的评论:该raster包具有getValues()返回 SpatialPointsDataFrame 值的方法。

library(raster)

spdf <- raster('raster.sdat')
write.table(
    cbind(coordinates(spdf), getValues(spdf)), 
    file = output_file, 
    col.names = c("X", "Y", "ZVALUE"),
    row.names = FALSE,
    quote = FALSE
    )
于 2020-01-13T07:54:46.533 回答