【发布时间】:2014-10-07 05:30:45
【问题描述】:
我正在处理一些涉及 Shapefile 的开放数据,并且我设法将数据转换为 GeoJSON 并提取点的坐标(以及其他信息)。但是坐标似乎不是纬度/经度坐标:
[ 368667.2455000002, 5009510.4067 ]
[ 367885.47140000015, 5019804.3237 ]
[ 395852.80260000005, 5027699.9354 ]
[ 379358.1364000002, 5036798.5747 ]
[ 351968.9621000001, 5017404.8727 ]
[ 375123.64269999973, 5033338.467499999 ]
[ 378133.7736999998, 5032617.237500001 ]
[ 385791.0351, 5010557.9144 ]
[ 349796.77770000044, 5013571.1559999995 ]
[ 367271.0566999996, 5030212.897399999 ]
[ 378808.0292999996, 5013921.017100001 ]
[ 336650.69820000045, 5039983.886399999 ]
[ 364178.05599999987, 5015957.9625 ]
[ 362715.9132000003, 5023112.371200001 ]
[ 351321.0865000002, 5013763.298699999 ]
[ 373254.0789000001, 5026533.7453000005 ]
[ 355235.6211000001, 5016957.0644000005 ]
[ 327797.9938000003, 5036758.195699999 ]
[ 362836.86930000037, 5015895.811000001 ]
[ 375479.41530000046, 5001245.2017 ]
经过进一步研究,我发现我必须根据 PRJ 文件中的数据“投影”这些坐标:
PROJCS["City of Ottawa",
GEOGCS["GCS_North_American_1983",
DATUM["D_North_American_1983",
SPHEROID["GRS_1980", 6378137.0, 298.257222101]
],
PRIMEM["Greenwich", 0.0],
UNIT["Degree", 0.0174532925199433]
],
PROJECTION["Transverse_Mercator"],
PARAMETER["False_Easting", 304800.0],
PARAMETER["False_Northing", 0.0],
PARAMETER["Central_Meridian", -76.5],
PARAMETER["Scale_Factor", 0.9999],
PARAMETER["Latitude_Of_Origin", 0.0],
UNIT["Meter", 1.0]
]
我已经读过What does an esri projection file represent? 和随后的https://gis.stackexchange.com/questions/2383/does-re-projecting-an-esri-shapefile-only-update-the-content-of-the-prj-file/2386#2386。尽管它们描述了投影文件的作用/是什么,但没有讨论如何完成转换。
与 Shapefile 不同,我无法找到有关 PRJ 文件的规范。是否有用于将坐标转换为纬度/经度坐标的算法?
我也愿意使用库,但它们需要与 Android(GeoTools 不适合我)或 JavaScript(Node)兼容。
【问题讨论】:
-
这么多年过去了,你有更新吗?如何使用 nodeJS 或 JS 使用该投影文件将这些坐标转换为 GPS 坐标(wgs84)?
标签: coordinates gis shapefile geo map-projections