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

Map 圆柱投影-如何从tangens(纬度)获取y图像坐标,map,projection,Map,Projection,我需要实现从具有高数据的地理坐标到图像的转换 如中所述 我只是不知道如何创建合适的y值 例如: double longitude = -180; // (λ) double latitude = 80; // (φ) int mapHeight = 360; int mapWidth = 720; x = (int)((longitude+180.0)*(mapWidth/360.0)); 我如何使用的结果 Ma

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

如中所述

我只是不知道如何创建合适的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))  

谢谢大家!

不能使用圆柱投影表示极点。因此,您需要设置一个最大纬度并存储它(比如说
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))
如果您需要计算多个点

非常感谢您快速而有用的回答/Math.tan(Math.toRadians(maxlat))是我缺少的部分。我知道墨卡托是一种比标准圆柱更好的地图投影方式,我已经有了它的实现(我必须实现3种不同的投影)。