大地坐标表示方法:BLH
空间直角坐标表示方法:XYZ
进行地图投影的一般操作步骤为先将BLH转换为XYZ,然后将XYZ通过三参数或者7参数的办法转换为xyz,涉及到两个椭球体以及坐标系之间的转换,本文主要讨论BLH转换为XYZ的办法,通过C#程序实现。
WGS84坐标系的参数:
已知量:a,f 可以求解出b与e
长半轴:a=6378137
WGS84椭球扁率:f=1/298.257223563
椭球扁率f=(a-b)/a
椭球第一偏心率:e*e=(a*a-b*b)/a*a
BLH转XYZ的公式如下:
WGS84椭球体的参数如下:
C#程序实现核心代码:
f = 1 / 298.257223563;
b = a * (1 - f);
e = Math.Sqrt(a * a - b * b) / a;
N = a / Math.Sqrt(1 - e * e * Math.Sin(lat * Math.PI / 180) * Math.Sin(lat * Math.PI / 180));
WGS84_X = (N + H1) * Math.Cos(lat * Math.PI / 180) * Math.Cos(lon * Math.PI / 180);
WGS84_Y = (N + H1) * Math.Cos(lat * Math.PI / 180) * Math.Sin(lon * Math.PI / 180);
WGS84_Z = (N * (1 - (e * e)) + H1) * Math.Sin(lat * Math.PI / 180);