Map 圆柱投影-如何从tangens(纬度)获取y图像坐标
我需要实现从具有高数据的地理坐标到图像的转换 如中所述 我只是不知道如何创建合适的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
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种不同的投影)。