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