我有一个openstreetmap 图像。左上角是纬度:80 经度:-169 右下角是纬度:-56 经度:190 图像的宽度:2618,高度:1513
如何将给定的纬度/经度坐标转换为图片的 x/y 坐标?
我自己尝试过,但无法弄清楚如何转换坐标。
我希望有人能回答我的问题。
我有一个openstreetmap 图像。左上角是纬度:80 经度:-169 右下角是纬度:-56 经度:190 图像的宽度:2618,高度:1513
如何将给定的纬度/经度坐标转换为图片的 x/y 坐标?
我自己尝试过,但无法弄清楚如何转换坐标。
我希望有人能回答我的问题。
正如所问的那样,这个问题几乎是荒谬的。请求的区域几乎覆盖了整个地球,从 80N 169W 到 56S 190E。这留下了从 170W 到 169W 的带极对极,80N 以北的北极周围的圆盘,以及 56S 以南的南极周围的更大圆盘。从地球这么大的区域到屏幕,没有单一的最佳投影。请参阅关于地理坐标和地图投影的wiki作为一般背景的起点。
也就是说,如果输入合理,这是一个合理的问题。
对于赤道附近非常小的区域,一个简单的投影是将纬度映射到 Y,将经度映射到 X。当您远离赤道时,由于经度长度的减少,这将引入一个小的失真,因为纬度接近任一极。对于一个关于赤道不对称的足够大的区域,这将使顶部边缘的长度(以英里为单位)与底部边缘明显不同。
更好的投影将纬度映射到 Y,但将经度缩放cos(latitude)
以获得 X。对于足够小的区域,比例在整个图形上几乎是恒定的,并且可以计算一次并保持恒定。
地图投影的一般主题比此处确定的最简单的解决方案要多得多。它们因每个投影的不同目标而异。投影的选择取决于预期用途,即使针对特定用途,通常也没有单一的“最佳”投影。
wiki 上有将 OpenStreetMap 瓦片系统转换为纬度/经度并返回的示例代码:
http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames
祝你好运!
对于投影的更一般转换,PROJ.4有 perl 和 python 包装器。这些可以让您解决任何此类问题。