lat / lon转换为x / y坐标

时间:2010-08-18 14:26:10

标签: latitude-longitude proj4js proj4

我有一个openstreetmap图片。 左上角是纬度:80 lon:-169 右下角是拉特:-56 lon:190 图像的宽度为:2618,高度为1513

如何将给定的纬度/经度坐标转换为图片x / y坐标?

我自己尝试过,但无法弄清楚如何转换坐标。

我希望有人能回答我的问题。

3 个答案:

答案 0 :(得分:4)

正如所提出的那样,问题几乎是荒谬的。所要求的区域几乎覆盖整个地球,从80N 169W到56S 190E。这使得带状极从170W到169W,在北极80N附近的磁盘,以及在56S以南的南极周围的较大磁盘。从地球的大区域到屏幕,没有单一的最佳投影。请参阅geographic coordinates上的wiki和map projections作为一般背景的起始位置。

那就是说,如果输入合理,这是一个合理的问题。

对于赤道附近的非常小的区域,一个简单的投影是将纬度映射到Y,经度映射到X.当你离开赤道时,由于长度的减小,这将引入一个小的失真。纬度接近任一极点的经度。对于与赤道不对称的足够大的区域,这将使得上边缘的长度以英里显着不同于底边。

更好的投影会将纬度映射到Y,但是将经度缩放cos(latitude)以获得X.对于足够小的区域,比例在整个数字上几乎是恒定的,并且可以计算一次并保持不变。

地图投影的一般主题比这里最简单的解决方案有更多的解决方案。它们因每个投影的目标不同而不同。投影的选择取决于预期用途,即使是特定用途,通常也没有单一的“最佳”投影。

答案 1 :(得分:2)

对于进出投影的更一般转换,有PROJ.4的perl和python包装器。这些可以让你解决任何这样的问题。

答案 2 :(得分:2)

维基上有示例代码将OpenStreetMap磁贴系统转换为lat / long和back:

http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames

祝你好运!