7

我有坐标,所有坐标都应该位于 DC,但我不知道如何将它们从 NAD 83 转换为 R 中的纬度和经度。我正在使用spTransform()rgdal 包中的函数并收到关于不合格的错误数据。

library(rgdal)
nad83_coords <- data.frame(x=c(396842.6, 397886.9, 398315.5, 398154.3, 398010.3), y=c(140887.1, 139847.0, 138743.9, 139534.5, 138697.3))
coordinates(nad83_coords) <- c('x', 'y')
proj4string(nad83_coords) <- CRS("+init=epsg:4269")
Error in `proj4string<-`(`*tmp*`, value = <S4 object of class "CRS">) : 
  Geographical CRS given to non-conformant data: 398315.5 140887.1

proj4strings 的其他组合产生相同的错误。我相信错误是因为坐标太大,但我不确定为什么会这样。坐标的文档如下:

值在马里兰州平面米 NAD 83 地图投影中。

我对映射和投影非常陌生,感谢您提供任何帮助。

4

1 回答 1

6

查找 espg:4269:

http://spatialreference.org/ref/epsg/4269/

它是一个经纬度系统。所以你的大数字(米)太大了。

如果您在这些坐标中的任何地方都有一个带有数据的 shapefile,那么您可能有一个带有投影规范的 .prj 文件,否则您将不得不在 spatialreference.org 上追逐它:

http://spatialreference.org/ref/?search=nad83+maryland&srtext=搜索

NAD83 有各种各样的变体,而且到处都有“国家平面”。我不太确定哪个是哪个。epsg: 代码更标准,然后有一堆 esri: 代码。sr-org: 是用户在网站上提供的。

esri 代码看起来与您提供的文本足够接近。咱们试试吧:

> proj4string(nad83_coords)=CRS("+init=esri:102285")
> spTransform(nad83_coords,CRS("+init=epsg:4326"))
SpatialPoints:
             x        y
[1,] -77.03642 38.93586
[2,] -77.02437 38.92650
[3,] -77.01942 38.91656
[4,] -77.02128 38.92368
[5,] -77.02294 38.91614

DC附近有吗?实际上, epsg:2804 和 epsg:3559 给出了相同的答案,并且可能更“标准”......

于 2012-07-25T12:43:57.300 回答