我有一个csv文件,其中包含value x y
形式的三列。
我知道x和y指的是EPSG 25832。
我需要将这些坐标转换为EPSG 4326,因为当我在shapefile上调用我想绘制数据的summary()
时,我得到这一行:
proj4string :
[+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0]
WGS84对应EPSG 4326,对吧?
通过阅读其他答案,我了解到我需要使用rgdal包中的spTransform函数。但是我没有找到有关功能用法的详尽说明。请帮忙!
documentation对我来说非常神秘(我是R和空间数据的新手),所以它并没有帮助我。
编辑:添加dput(head(data))
structure(list(Value = c(10L, 9L, 17L, 13L, 10L, 6L), X = c(687199.0608,
687199.0608, 687199.0608, 687199.0608, 687199.0608, 687199.0608
), Y = c(4928179.721, 4928179.721, 4928179.721, 4928179.721,
4928179.721, 4928179.721)), .Names = c("Value", "X", "Y"), row.names = c(NA,
-6L), class = c("tbl_df", "tbl", "data.frame"))
答案 0 :(得分:3)
这应该可以解决问题!
问题是......您需要使用CRS定义两个坐标系......这些确实由它们的EPSG代码定义。然后你可以用spTransform转换它们:)但是这当然只有在你用坐标和proj4string为数据分配正确的坐标系时才有可能。
library(rgdal)
library(data.table)
d <- structure(list(Value = c(10L, 9L, 17L, 13L, 10L, 6L), X = c(687199.0608,
687199.0608, 687199.0608, 687199.0608, 687199.0608, 687199.0608
), Y = c(4928179.721, 4928179.721, 4928179.721, 4928179.721,
4928179.721, 4928179.721)), .Names = c("Value", "X", "Y"), row.names = c(NA,
-6L), class = c("tbl_df", "tbl", "data.frame"))
d = as.data.table(d)
d = d[,.(X,Y)]
coordinates(d) <- c("X","Y")
proj4string(d) <- CRS("+init=epsg:25832")
CRS.new <- CRS("+init=epsg:4326") # WGS 84
dnew <- spTransform(d, CRS.new)