将纬度/经度转换为任意墨卡托地图投影上的像素坐标

时间:2014-06-24 02:29:21

标签: c# php google-maps maps gis

我知道这个问题已经以其他形式提出,但我无法使用有效的解决方案。

我想在墨卡托地图上绘制X,Y坐标。地图可以是世界地图,也可以是国家级地图(例如美国)。根据我正在考虑的区域,限制lat / long的地图可能会有所不同。在我的世界地图中,我正在砍掉南极洲,我的地图不是一个完美的广场。

我发现的帖子假设地图边界或使用谷歌地图相关的计算,这对我没用。我没有使用谷歌地图图像 - 我有其他墨卡托矢量地图源(MapBox TileMill导出是一个来源)

有没有人有一个干净的算法或我可以使用/看的C#代码,这将非常有帮助。我确实试过这里发布的算法

Mercator longitude and latitude calculations to x and y on a cropped map (of the UK)

但是它给了我不正确的Y值......

上的伪代码

Covert latitude/longitude point to a pixels (x,y) on mercator projection

非常好,除了它只假设一个标准的全尺寸墨卡托,并且不适用于裁剪地图。我不够聪明,无法弄清楚如何计算偏移量:(

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果您想要任意投影,mercator或其他方面的准确结果,PROJ4库是一种可能的解决方案。初始化时,您将为PROJ4的API提供所需的输出墨卡托图的特征。该链接为您提供了一个从纬度/长度到墨卡托的示例,其纬度为真度33度和Clarke 1866椭圆体。您可以使用其他initialization parameters获得精确结果 - 请注意,该示例使用现已弃用的API。阅读当前使用的文档。