【问题标题】:Convert NZMG coordinates to lat/long将 NZMG 坐标转换为纬度/经度
【发布时间】:2020-02-23 09:04:12
【问题描述】:

我有一堆新西兰地图网格坐标,我想将其转换为纬度/经度。 Based on this question,这是我尝试过的。

library(sp)
options(digits = 11) # to display to greater d.p.

尝试 1:

proj4string <- "+proj=nzmg +lat_0=-41.0 +lon_0=173.0 +x_0=2510000.0 
+y_0=6023150.0 +ellps=intl +units=m"
p <- proj4::project(c(2373200, 5718800), proj = proj4string, inverse=T)

尝试 2

dat <- data.frame(id = c(1), x = c(2373200) , y = c(5718800))
sp::coordinates(dat) = ~x+y

sp::proj4string(dat) = CRS('+init=epsg:27200') 
data_wgs84 <- spTransform(dat, CRS('+init=epsg:4326'))
print(data_wgs84)

如果我通过linz coordinate conversion tool 运行我的坐标,我会得到一个稍微不同的结果,这是“真实”的结果。

Results:
171.30179199  -43.72743909  # attempt 1 - ~200m off linz 
171.30190004, -43.72577765  # attempt 2 - a few meters off linz
171.30189464, -43.72576664  # linz

基于Mike T's 的回答,我应该使用“失真网格变换方法”,他链接到“nzgd2kgrid0005.gsb 网格移位文件”。

我的问题:是否可以使用 R 进行此转换而无需下载其他文件 (nzgd2kgrid0005.gsb)?我想与其他人共享我的代码,而无需他们下载任何其他文件。

非常感谢任何建议。

【问题讨论】:

  • 链接的答案很清楚:为了获得最佳准确性,您需要一个文件。请注意,您已经在没有文件的情况下在 R 中完成了转换,您只需要确定降低的精度是否对您来说足够好。

标签: r coordinate-transformation proj


【解决方案1】:

事实证明这很简单,如果您安装了rgdal 软件包,则包含所需的nzgd2kgrid0005.gsb 文件,您无需额外下载任何内容。

您只需要使用Mike T 的答案中概述的完整 PROJ.4 字符串。

dat <- data.frame(id = c(1), x = c(2373200) , y = c(5718800))
sp::coordinates(dat) = ~x+y

proj4string <- "+proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=6023150 
+ellps=intl +datum=nzgd49 +units=m +towgs84=59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993 
+nadgrids=nzgd2kgrid0005.gsb +no_defs"

sp::proj4string(dat) = sp::CRS(proj4string) 
data_wgs84 <- sp::spTransform(dat, sp::CRS('+init=epsg:4326'))
as.data.frame(data_wgs84)

id          x            y
1 171.3018946 -43.72576664

这与 LINZ 坐标转换工具的输出相同。希望这可以节省其他人一些时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多