1. Calculate the meridian arc length X from the equator from the point's geodetic coordinate B
When performing some measurement calculations on the ellipsoid surface, such as the Gaussian projection calculation, formulas such as the meridian arc length are used. The existing derivation is
as follows: As shown in the figure, set two points P1, P2 on the meridian circle, and the corresponding latitude B1 B2, find the meridian arc length X between P1 and P2.
The idea of calculus can be used at this time because the meridian is not a circular arc. Take a small arc segment, namely the arc element dX, corresponding to the difference in latitude is dB. If the radius of curvature of the meridian of point P is M, then the dextrin dX can be regarded as a circular arc with M as the radius, so dX = MdB.
The arc length X between the two points of P1 and P2 is required to find the integral of dX from B1 to B2, that is, taking
into account M = a (1-e 2 ) / W 3 = c / V 3
can be transformed into:
This formula is an ellipse Integral, can not be integrated directly, need to expand it into series according to the binomial theorem :
Binomial theorem Baidu Encyclopedia
So there is:
For the convenience of calculation, the power function of sine is converted into a double angle function of cosine,
namely: sin 2 = 1/2 -1 / 2 * cos2B
Trigonometric formula descending formula Baidu Encyclopedia
After completion of the simplification obtained: This equation is generally radial arc length
if too meridian counting from the equator, the arc length becomes equation:
where [rho] is the radian angle conversion constant, ρ "= 206264.80624710", ρ ° = 57.29577951308 °
matlab source program
First define the angle to radian function
function rad=d2r(deg,min,sec)
% 角度转弧度
rad=(deg+min/60+sec/3600)*pi/180;
There is also a generating coefficient function
function [A,B,C,D,E,F]=coe(e2)
% 产生运算系数
A=1+3/4*e2+45/64*e2^2+175/256*e2^3+11025/16384*e2^4+43659/65536*e2^5;
B=3/4*e2+15/16*e2^2+525/512*e2^3+2205/2048*e2^4+72765/65536*e2^5;
C=15/64*e2^2+105/256*e2^3+2205/4096*e2^4+10395/16384*e2^5;
D=35/512*e2^3+105/2048*e2^4+31185/131072*e2^5;
E=315/16384*e2^4+3465/65536*e2^5;
F=693/131072*e2^5;
B seeking X main program
clear
clc
deg=input('请输入纬度:\n度:');
min=input('分:');
sec=input('秒:');
b=d2r(deg,min,sec);
a=input('请输入椭球参数:\n长半轴半径a:');
f=input('请输入扁率f:');
e2=2*f-f*f;
[A,B,C,D,E,F]=coe(e2); %调用coe函数产生运算系数
X=a*(1-e2)*(A*b-B/2*sin(2*b)+C/4*sin(4*b)-D/6*sin(6*b)+E/8*sin(8*b)-F/10*sin(10*b));
fprintf('\n由赤道起算的子午线弧长X=%.6fm\n\n',X);
2. The meridian arc length X from the equator inversely solves the earth latitude B
The inverse solution requires an iterative calculation.
Initial value:
B = X / (a (1-e 2 ) A ')
Iterative formula:
B i = 1 / A' * [X / a (1-e 2 ) + B'sin2B i-1 -C'sin4B i-1 + D'sin6B i-1 -E'sin8B i-1 + F'sin10B i-1 +…] The
iterative convergence condition can be that the difference between the two calculated absolute values of B is less than 10 -20
Matlab source program
First define the radian to angle function
function deg=r2d(rad)
% 弧度转角度
rad1=rad*180/pi;
deg1=fix(rad1);
min=fix((rad1-deg1)*60);
sec=((rad1-deg1)*60-min)*60;
deg=deg1+min/100+sec/10000;
X seeking B main program
clear
clc
X=input('请输入由赤道起算的子午线弧长X:');
a=input('请输入椭球参数:\n长半轴半径a:');
f=input('请输入扁率f:');
e2=2*f-f*f;
[A,B,C,D,E,F]=coe(e2); %调用coe函数产生运算系数
b0=X/(a*(1-e2)*A);
b1=1/A*(X/(a*(1-e2))+B/2*sin(2*b0)-C/4*sin(4*b0)+D/6*sin(6*b0)-E/8*sin(8*b0)+F/10*sin(10*b0));
while abs(b1-b0)>=1e-20 %迭代运算
b0=b1;
b1=1/A*(X/(a*(1-e2))+B/2*sin(2*b0)-C/4*sin(4*b0)+D/6*sin(6*b0)-E/8*sin(8*b0)+F/10*sin(10*b0));
end
B1=r2d(b1);
fprintf('\n所求大地纬度B=%.9f\n\n',B1);
Please correct me if there are any mistakes