【问题标题】:How to convert WGS84 to Lat/Long using R如何使用 R 将 WGS84 转换为纬度/经度
【发布时间】:2017-04-04 19:09:16
【问题描述】:

我有一个包含 WGS84 坐标的大型数据集,我想将其转换为 Long/Lat 坐标。 WGS84 坐标目前分为自己的列(即“北”“东”),另外还有“区域”和相应的区域。总共有几个区域。

关于将这些列转换为 Lat/Long 并将它们保存到新列中的任何建议?

数据集示例:

Longitude Latitude zone  
233243    6571770   33  
262706    6653520   33  
195348    6573696   33   
256880    6645020   33  
260610    6654042   32  
13799     6505840   33  

【问题讨论】:

  • Ummm WGS84 lat-long(嗯,有点,但是当人们说“WGS84”时,他们通常表示 EPSG:4326 lat-long)。有机会查看您的实际数据吗?否则我们在这里猜测......
  • 确实,原始数据是“long and lat” 这是数据示例,列名在 () 4952 (longitude) 6470636 (latitude) 32 (zone) 目标格式看起来像例如:13.665768 (经度)59.739838(纬度)我不会对所有这些格式保持稳定:P
  • 这些看起来像 UTM 坐标而不是 WGS84。您是否有机会将几行数据粘贴到问题的编辑中?
  • 感谢您的回复!我编辑了主帖:)

标签: r geolocation coordinates coordinate-systems gis


【解决方案1】:

您可能需要阅读sp 包、坐标和spTransform 函数。除其他事项外。

对于d 作为数据框:

> d
  Longitude Latitude zone
1    233243  6571770   33
2    262706  6653520   33
3    195348  6573696   33
4    256880  6645020   33
5    260610  6654042   32
6     13799  6505840   33

计划是:通过zone id 拆分成一个列表,然后为每个列表元素创建一个空间点数据框,使用坐标参考系统“+init=epsg:326”+“zone”(例如“ +init=epsg:32633" for zone 33),然后转换为 epsg:4326 lat-long,然后将地块合并到单个空间点数据框:

需要这些:

> library(sp) ; library(raster)

按区域 ID 创建列表:

> byzone = split(d,d$zone)

在所有部分上,设置坐标、CRS和变换:

> zdll = lapply(byzone, 
    function(zd){
      coordinates(zd)=~Longitude+Latitude
      proj4string(zd)=paste0("+init=epsg:326",zd$zone[1])
      spTransform(zd, CRS("+init=epsg:4326"))
     })

现在加入他们:

> dll = do.call(rbind.SpatialPointsDataFrame, zdll)

如果您现在绘制dll,您将看到经纬度上的点。如果您想要坐标并与原始坐标进行比较,请执行以下操作:

> cbind(d, coordinates(dll))
  Longitude Latitude zone Longitude Latitude
5    233243  6571770   33  4.712098 59.95395
1    262706  6653520   33 10.327202 59.20086
2    195348  6573696   33 10.750120 59.95049
3    256880  6645020   33  9.663825 59.19259
4    260610  6654042   32 10.656096 59.87099
6     13799  6505840   33  6.663177 58.42136

他们在预期的地方吗?

【讨论】:

  • 非常感谢!这确实解决了我的问题! :)
  • 更新:现在似乎一些 UTM/lat 长坐标在地图上对应(即geoplaner.com),而另一些则严重不匹配。对可能的原因有什么建议吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-06
  • 1970-01-01
  • 2012-02-16
  • 1970-01-01
  • 2016-07-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多