Using Matlab to calculate the meridian arc length in geodesy

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.
Insert picture description here

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
Insert picture description here
into account M = a (1-e 2 ) / W 3 = c / V 3
can be transformed into:
Insert picture description here
This formula is an ellipse Integral, can not be integrated directly, need to expand it into series according to the binomial theorem :
Insert picture description here

Binomial theorem Baidu Encyclopedia

So there is:
Insert picture description here
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
Insert picture description here
if too meridian counting from the equator, the arc length becomes equation:
Insert picture description here
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

Published 13 original articles · Like 32 · Visits 10,000+

Guess you like

Origin blog.csdn.net/weixin_43637490/article/details/89404196
arc