R:如何将EPSG 25832坐标转换为EPSG 4326坐标

Pig*_*gna 1 r geospatial coordinate-systems rgdal

我有一个 csv 文件,其中包含三列,格式为value x y. 我知道 x 和 y 指的是 EPSG 25832。我需要将这些坐标转换为 EPSG 4326,因为当我调用summary()要绘制数据的 shapefile 时,我得到了这一行:

proj4string :
[+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0]
Run Code Online (Sandbox Code Playgroud)

WGS84 对应 EPSG 4326,对吗?

通过阅读其他答案,我了解到我需要使用 rgdal 包中的 spTransform 函数。但是我没有找到该函数用法的任何详尽解释。请帮忙!

文档对我来说非常神秘(我对 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"))
Run Code Online (Sandbox Code Playgroud)

zwe*_*wep 5

这应该可以解决问题!

问题是..您需要使用 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)
Run Code Online (Sandbox Code Playgroud)