圆柱投影 - 如何从tangens(纬度)获得y图像坐标

时间:2014-01-10 21:48:49

标签: map projection

我需要实现从具有高数据的地理坐标到图像的转换。

http://mathworld.wolfram.com/CylindricalProjection.html中所述。

我根本不知道如何创建合适的y值...

例如:

   double longitude   = -180; // (λ)   
   double latitude    =  80;  // (φ)   
   int mapHeight   = 360;   
   int mapWidth    = 720;   
   x = (int)((longitude+180.0)*(mapWidth/360.0)); 

我如何使用

的结果
 Math.tan(Math.toRadians(latitude))  

谢谢!

1 个答案:

答案 0 :(得分:0)

您无法使用圆柱投影来表示极点。所以你需要设置一个最大纬度并存储它(比如说double maxlat=3.1415/2.0)。要获得y,首先,测试点是否不接近极点,然后计算:

  y=(int)(mapHeight/2+mapHeight/2*Math.tan(Math.toRadians(latitude)) /Math.tan(Math.toRadians(maxlat))) ;

如果您正在寻找漂亮的地图,请考虑使用墨卡托投影:

 y=(int)(mapHeight/2+mapHeight/2*Math.log(Math.tan(Math.toRadians(latitude)/2.0+M_PI/4.0)) /Math.log(Math.tan(Math.toRadians(maxlat)/2.0+M_PI/4.0))) ;

如果您需要计算多个点,请存储Math.tan(Math.toRadians(maxlat))math.log(Math.tan(Math.toRadians(maxlat)/2.0+M_PI/4.0))