高斯正反算计算函数
[转载]高斯正反算
![[转载]高斯正反算](https://img.taocdn.com/s3/m/d13bd7fbe109581b6bd97f19227916888486b9df.png)
[转载]⾼斯正反算⼤地坐标向笛卡尔坐标转换⾼斯正反算采⽤不同椭球实现⾼斯克⾥格投影,将经纬度坐标转换为⾼斯平⾯坐标:正算⾼斯平⾯坐标转换为不同椭球下的经纬度坐标:反算1void GaussProjectDirect(double a,double efang,double B,double L,double L0,double& x,double &y,double& R)//⾼斯投影正算克⽒2 {34double b=aefangtob(a,efang);5double e2=seconde(a,b);6double W=sqrt(1-efang*sin(B)*sin(B));printf("W=%f",W);7double N=a/W;printf("N=%f",N);8double M=a*(1-efang)/pow(W,3);printf("M=%f",M);9double t=tee(B);10double eitef=eitefang(a,b,B);11double l=L-L0;12//主曲率半径计算13double m0,m2,m4,m6,m8,n0,n2,n4,n6,n8;14 m0=a*(1-efang); n0=a;15 m2=3.0/2.0*efang*m0; n2=1.0/2.0*efang*n0;16 m4=5.0/4.0*efang*m2; n4=3.0/4.0*efang*n2;17 m6=7.0/6.0*efang*m4; n6=5.0/6.0*efang*n4;18 m8=9.0/8.0*efang*m6; n8=7.0/8.0*efang*n6;19//⼦午线曲率半径20double a0,a2,a4,a6,a8;21 a0=m0+m2/2+3*m4/8+5*m6/16+35*m8/128;22 a2=m2/2+m4/2+15*m6/32+7.0/16.0*m8;23 a4=m4/8.0+3.0/16.0*m6+7.0/32.0*m8;24 a6=m6/32+m8/16;25 a8=m8/128;2627double X=a0*B-a2/2*sin(2*B)+a4/4*sin(4*B)-a6/6*sin(6*B)+a8/8*sin(8*B);28 x=X+N/2*t*cos(B)*cos(B)*l*l+N/24*t*(5-t*t+9*eitef+4*pow(eitef,2))*pow(cos(B),4)*pow(l,4)+N/720*t*(61-58*t*t+pow(t,4))*pow(cos(B),6)*pow(l,6);29 y=N*cos(B)*l+N/6*(1-t*t+eitef)*pow(cos(B),3)*pow(l,3)+N/120*(5-18*t*t+pow(t,4)+14*eitef-58*eitef*t*t)*pow(cos(B),5)*pow(l,5);30 R=sqrt(M*N);31 }323334//⾼斯投影反算353637void GaussProjectInvert(double a,double efang,double x,double y,double L0,double &B,double& L,double& R)38 {39double b=aefangtob(a,efang);404142double m0,m2,m4,m6,m8,n0,n2,n4,n6,n8;43 m0=a*(1-efang); n0=a;44 m2=3.0/2.0*efang*m0; n2=1.0/2.0*efang*n0;45 m4=5.0/4.0*efang*m2; n4=3.0/4.0*efang*n2;46 m6=7.0/6.0*efang*m4; n6=5.0/6.0*efang*n4;47 m8=9.0/8.0*efang*m6; n8=7.0/8.0*efang*n6;484950//⼦午线曲率半径51double a0,a2,a4,a6,a8;52 a0=m0+m2/2+3*m4/8+5*m6/16+35*m8/128;53 a2=m2/2+m4/2+15*m6/32+7.0/16.0*m8;54 a4=m4/8.0+3.0/16.0*m6+7.0/32.0*m8;55 a6=m6/32+m8/16;56 a8=m8/128;575859double X=x;60double FBf=0;61double Bf0=X/a0,Bf1=0;62while((Bf0-Bf1)>=0.0001)63 { Bf1=Bf0;64 FBf=a0*Bf0-a2/2*sin(2*Bf0)+a4/4*sin(4*Bf0)-a6/6*sin(6*Bf0)+a8/8*sin(8*Bf0);65 Bf0=(X-FBf)/a0;66 }67double Bf=Bf0;68double Vf=bigv(a,b,Bf);69double tf=tee(Bf);70double Nf=bign(a,b,Bf);71double eiteffang=eitefang(a,b,Bf);72double Bdu=rad_deg(Bf)-1/2.0*Vf*Vf*tf*(pow((y/Nf),2)-1.0/12*(5+3*tf*tf+eiteffang-9*eiteffang*tf*tf)*pow((y/Nf),4)+1.0/360.0*(61+90*tf*tf+45*tf*tf)*pow((y/Nf),6))*180/PI; 73double ldu=1.0/cos(Bf)*(y/Nf+1.0/6.0*(1+2*tf*tf+eiteffang)*pow((y/Nf),3)+1.0/120.0*(5+28*tf*tf+24*tf*tf+6*eiteffang+8*eiteffang*tf*tf)*pow((y/Nf),5))*180.0/PI;747576 B=deg_int(Bdu);77 L=L0+deg_int(ldu);78double W=sqrt(1-efang*sin(B)*sin(B));printf("W=%f\n",W); 79double N=a/W;printf("N=%f\n",N);80double M=a*(1-efang)/pow(W,3);printf("M=%f\n",M);81 R=sqrt(M*N);828384 }。
高斯正反算计算函数

高斯正反算计算函数高斯正反算(Gauss forward and backward calculation)是一种用于大地测量中进行坐标计算的方法。
该方法以德国数学家高斯(Carl Friedrich Gauss)的名字命名,用于将球面坐标(经度、纬度、大地高)转换为平面直角坐标(X、Y、Z)或反之。
正算(forward calculation)是将球面坐标转换为平面直角坐标。
该过程包括以下几个步骤:1.首先,确定球面坐标的基准,通常选择一个已知的起始点。
2.然后,计算球面坐标与基准点之间的角度差值,并将其转换为弧度。
3.使用三角函数,根据球面坐标的经度、纬度以及角度差值,计算出平面直角坐标的X、Y、Z值。
反算(backward calculation)是将平面直角坐标转换为球面坐标。
该过程与正算相反,包括以下几个步骤:1.确定平面直角坐标的基准点,即已知的起始点。
2.计算平面直角坐标与基准点之间的距离差值,通常使用勾股定理计算距离。
3.使用三角函数,根据平面直角坐标的X、Y、Z值以及距离差值,计算出球面坐标的经度、纬度以及大地高。
高斯正反算的原理是基于球面三角学和球面坐标系的转换公式。
在正算中,通过球面三角学的公式计算球面坐标与基准点之间的角度差值,并使用三角函数计算平面直角坐标。
在反算中,通过勾股定理计算平面直角坐标与基准点之间的距离差值,并使用三角函数计算球面坐标。
总结起来,高斯正反算是一种用于大地测量中进行坐标计算的方法,通过球面三角学和转换公式将球面坐标和平面直角坐标进行转换。
正算将球面坐标转换为平面直角坐标,反算将平面直角坐标转换为球面坐标。
它在地理信息系统、地图制图等领域有着广泛的应用。
高斯平面直角坐标与大地坐标的相互转换——高斯投影的正算与反算.

昆明冶金高等专科学校测绘学院 (4)计算公式
3 2 2 2 4 ( 5 3 t 9 t ) y f f f f 2M f N f 2 4M f N 3 f tf 2 4 6 (6 1 9 0t f 4 5t f ) y 7 2 0M f N 5 f 1 1 2 2 3 l y (1 2t f f ) y 3 N f co s B f 6 N f co s B f 1 2 5 (5 2 8t 2 t4 2 2 f 24 f 6 f 8 f t f )y 5 1 2 0N f co s B f B Bf tf y2 tf
式中:
2 e 2 cos2 B
t 2 tan2 B l (L L0) X为B对应子午线弧长 N为卯酉圈曲率半径 20626 5
昆明冶金高等专科学校测绘学院
2
高斯投影坐标反算公式
(1)高斯投影反算:
已知某点 x, y ,求该点 L, B ,即 x, y ( L, B) 的坐标变换。 (2)投影变换必须满足的条件
昆明冶金高等专科学校测绘学院
二、高斯投影坐标正反算得实用公式及算例
1 高斯投影坐标正算公式 (1)高斯投影正算: 已知某点的 L, B ,求该点的 x, y ,即 (2)投影变换必须满足的条件: 中央子午线投影后为直线; 中央子午线投影后长度不变; 投影具有正形性质,即正形投影条件。 (3)投影过程 在椭球面上有对称于中央子午线的两点 P1 和 P2 ,它们的大地坐标 分别为 ( L1 , B1 )或(l1 , B1)及 (L2 , B2)或(l2 , B2 ) 式中 l 为椭球面上点的经 度与中央子午线 ( L0 ) 的经度差:l L L0 ,点在中央子午线之东, l 为正,在西则为负,则投影后的平面坐标一定为P1 ( x1 , y1 ) 和 P2 ( x 2 , y 2 ) 。
GAUSSLE坐标正反算fx

GAUSSLE坐标正反算fx-4850程序源程序1.正算主程序GSZSI"X0":S"Y0":O"K0":G"F0":H"KN":P"R0":R"RN":Q”Q(-Z +Y)” :D=(P-R)÷(2(H-O)PR):KL”L(-Z +Y)” :M”ANG(YJJ)”=90:(注:此处若不给M赋值,则可计算斜交点)J=Abs(K-O):Prog"SUB1":”FWJ=”:F=F-M:”X=”:X=X:Pause0: ”Y=”:Y=Y◢2. 反算主程序GSFSXY:Z[2]=X:Z[3] =Y:I"X0":S"Y0":O"K0":G"F0":H"KN":P"R0":R"RN":Q”Q(-Z +Y)” :D=(P-R)÷(2(H-O)PR):J=Abs((Y-S)cos(G-90)-(X-I)sin(G-90)):L=0:M”M(YJJ)”=90:Lbl 0:Prog "SUB1":L=(Z[3]-Y)cos(G-90+QJ(1÷P+JD)×180÷π)-(Z[2]-X)sin(G-90+QJ(1÷P +JD) ×180÷π):AbsL<1E-6=>Goto1:≠>J=J+L:Goto 0Δ←┘Lbl 1:L=0:Prog "SUB1":L=(Z[3]-Y)÷sinF:”K=”:K=O+J:Pause0:”L=”:L=L◢3. 正算子程序(SUB1)Defm 4:A=0.1184634425:B=0.2393143352:Z[4]=0.2844444444:C=0.046910077 0:E=0.2307653449:Z[1]=0.5:X=I+J(Acos(G+QCJ(1÷P+C JD)×180÷π)+Bcos(G+Q EJ(1÷P+E JD)×180÷π) +Z[4]cos(G+QZ[1]J(1÷P+Z[1]JD)×180÷π)+Bcos(G+Q(1-E)J(1÷P+(1-E)J D)×180÷π)+Acos(G+Q (1-C)J(1÷P+(1-C)JD) ×180÷π)):Y=S+J(Asin(G+QCJ(1÷P+C JD)×180÷π)+Bsin(G+Q EJ(1÷P+E JD)×180÷π) +Z[4]sin(G+QZ[1]J(1÷P+Z[1]JD)×180÷π)+Bsin(G+Q(1-E)J(1÷P+(1-E)J D)×180÷π)+Asin(G+Q (1-C)J(1÷P+(1-C)JD) ×180÷π)):F=G+QJ(1÷P+JD) ×180÷π+M:X=X+LcosF:Y=Y+LsinF4. 曲线元要素数据库:DAT-MK≥O=>K<H=> I=**:S=**:O=**:G=**:H=**:P=**:R=**:Q=**⊿⊿←┘K≥O=>K<H=> I=**:S=**:O=**:G=**:H=**:P=**:R=**:Q=**⊿⊿←┘K≥O=>K<H=> I=**:S=**:O=**:G=**:H=**:P=**:R=**:Q=**⊿⊿←┘K≥O=>K<H=> I=**:S=**:O=**:G=**:H=**:P=**:R=**:Q=**⊿⊿←┘K≥O=>K≤H=> I=**:S=**:O=**:G=**:H=**:P=**:R=**:Q=**⊿⊿←┘……………………………K≥O=>K≤H=> I=**:S=**:O=**:G=**:H=**:P=**:R=**:Q=**⊿⊿←┘(注:如有多个曲线元要素继续添加入数据库DAT-M中)5、M线(坐标正算)组合程序MG-ZBProg”DAT-M”:Prog”GSZS”6、M线(坐标计算-放样)组合程序MG-FYProg”MG-ZB”:Prog”LTKZD”: Prog”FY”7、M线(坐标反算)组合程序M-GSFBProg”DAT-M”:Prog”GSFS”说明:一、程序功能及原理1.功能说明:本程序由两个主程序——正算主程序(GSZS)、反算主程序(GSFS)和两个子程——正算子程序(SUB1)、线元数据库(DAT-M)构成,可以根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线元要素(起点坐标、起点里程、起点切线方位角、终点里程、起点曲率半径、止点曲率半径)及里程边距或坐标,对该曲线段范围内任意里程中边桩坐标进行正反算。
高斯投影正反算公式

高斯投影坐标正反算一、基本思想:高斯投影正算公式就是由大地坐标(L ,B )求解高斯平面坐标(x ,y ),而高斯投影反算公式则是由高斯平面坐标(x ,y )求解大地坐标(L ,B )。
二、计算模型:基本椭球参数:椭球长半轴a椭球扁率f椭球短半轴:(1)b a f =-椭球第一偏心率:e a= 椭球第二偏心率:e b'=高斯投影正算公式:此公式换算的精度为0.001m6425644223422)5861(cos sin 720)495(cos 24cos sin 2l t t B B N l t B simB N l B B N X x ''+-''+''++-''+''⋅''+=ρηηρρ 5222425532233)5814185(cos 120)1(cos 6cos l t t t B N l t B N l B N y ''-++-''+''+-''+''⋅''=ηηρηρρ其中:角度都为弧度B 为点的纬度,0l L L ''=-,L 为点的经度,0L 为中央子午线经度; N 为子午圈曲率半径,1222(1sin )N a e B -=-;tan t B =; 222cos e B η'=1803600ρπ''=*其中X 为子午线弧长:2402464661616sin cos ()(2)sin sin 33X a B B B a a a a a B a B ⎡⎤=--++-+⎢⎥⎣⎦02468,,,,a a a a a 为基本常量,按如下公式计算:200468242684468686883535281612815722321637816323216128m a m m m m m m a m m m a m m m m a m a ⎧=++++⎪⎪⎪=+++⎪⎪⎪=++⎨⎪⎪=+⎪⎪⎪=⎪⎩02468,,,,m m m m m 为基本常量,按如下公式计算:22222020426486379(1);;5;;268m a e m e m m e m m e m m e m =-====;高斯投影反算公式:此公式换算的精度为0.0001’’.()()()()2222243246532235242225053922461904572012cos 6cos 5282468120cos f f f f f f f f f f f f f f f f f f f f f ff f f f f f ft t B B y t t yM N M N t y t t yM N y y l t N B N B y t t t N B L l L ηηηηη=-+++--++=-+++++++=+其中: 0L 为中央子午线经度。
第四章 7高斯投影坐标正反算

——正形投影的一般条件 ——高斯投影坐标正算 ——高斯投影坐标反算 ——高斯投影几何解释
提前在黑板上写出四个m2
上一讲应掌握的内容
1、地图(数学)投影:将椭球面上元素(包括坐标,方位和 距离)按一定的数学法则投影到可展平面上。 x F1 ( L, B) 坐标投影公式: y F2 ( L, B) 2、地图投影变形几个概念: 长度比,主方向,变形椭圆 3、四种投影变形: 长度变形,方向变形,角度变形,面积变形
x m0 m 2 l 2 m 4 l 4 y m1l m3 l 3 m5 l 5
分别对l 和q 求偏导数
2) 由第三个条件正形投影条件
y x x y 和 l q l q
dm0 dm2 2 dm4 4 2 4 m1 3m3 l 5m5 l dq dq l dq l 2m l 4m l 3 dm1 l dm3 l 3 )
将各系数代入,略去高次项,得高斯投影坐标正算公式 精度为0.001m
xX N N sin B cos Bl 2 + sin B cos 3 B(5 - t 9 2 4 4 )l 4 + 2 24
N sin B cos 5 B(61 - 58t 2 t 4 )l 6 720
dl tan Adq
2 2 2 2 E ( dq ) 2 F tan A ( dq ) G tan A ( dq ) m2 2 2 2 r2 ( dq ) tan A ( dq )
E 2 F tan A G tan 2 A = r 2 sec 2 A E cos 2 A 2 F sin A cos A G sin 2 A = r2
高斯投影坐标反算公式

大地方位角=坐标方位 角-子午线收敛角+方 向改化 A1 2 1 2 1 2
高斯坐标反算实用步骤
1、根据高斯坐标确定带号、计算中央子午 线经度 ①计算带号
n int( y / 1000000 )
②计算中央子午线经度 六度带 L 6n 3 0 三度带 L0 3n
11 n 24 23 n 49
0.0067 l 2 ]l 2 cos2 B}l sinB )
对于1975国际椭球
{1 (C3 C5l 2 )l 2 cos2 B}l sin B
C3 0.33332 0.00678 cos2 B C5 0.2 cos2 B 0.0667
计算子午线收敛角的意义: 1、用于大地方位角和高斯平面坐标方位角的转换; 2、高斯正反算检核坐标计算的正确性。。
B Bf t3 f 2 4M f N
3 f
tf 2M f N f
y
2
5 3t
2 f
2 9 2 t 2 y 4 f f f
5、中央子午线收敛角和经度
2 y 2 2 y tan B f [1 (1 tan B f f )] 3 Nf 3N f
1 tan sin B l (1 t 2 3 2 2 4 ) sin B cos 2 Bl 3 3 1 (2 4t 2 2t 4 ) sin B cos 4 Bl 5 15
sin B l sin B cos 2 Bl 3 (1 3 2 2 4 )
L L0 l
小结
• • • • 了解反算公式的推导思路; 掌握反算公式保符号的意义; 用反算公式会进行计算; 掌握子午线收敛角的定义及作用;
4850-5800高斯5点通用公式正反算(验证正确)适用于各种线形

Gauss-Legendre 5点通用公式坐标正反算CASIOfx-4850P程序一、(4850程序)正反算主程序(ZFS)Deg↵"1.KL⇒XY":"2.XY⇒KL":N:I"X0":S"Y0":○"K0":G"F0":H"KN":P" R0":R"RN":Q"Q(-Z+Y)":D=(P-R)÷(2(H-○)PR): M=180÷π:N=1⇒Goto1:≠⇒Goto2↵Lbl1:{KL}:KL:J=Abs(K-○):Prog"SUB1":"X=":X◢"Y=":Y◢"FWJ=":F -90→DMS◢Goto1↵Lbl2:{XY}:XY:Z[2]=X:Z[3]=Y:Prog"SUB2":"K=":○+J◢"L=":L◢Goto2↵2.正算子程序(SUB1)A=0.1184634425:B=0.2393143352:Z[4]=0.2844444444:C=0.046910077:E= 0.2307653449:Z[1]=0.5: X=I+J(Acos(G+QCM J(1÷P+CJD))+Bcos(G+QE MJ (1÷P+EJD))+Z[4]cos(G+QZ[1]J M(1÷P+Z[1]JD))+Bco s(G+Q(1-E)JM(1÷P +(1-E)JD))+Acos(G+Q(1-C)JM(1÷P+(1-C)JD))):Y=S+J(Asin(G+QCJM(1÷P+CJD))+Bsin(G+QEJM(1÷P+EJD))+Z[4]sin(G+QZ[1]J M(1÷P+Z[1]JD))+B sin(G+Q(1-E)JM(1÷P+(1-E)JD))+Asin(G+Q(1-C)JM(1÷P+(1-C)JD))):F= G+QJM(1÷P+JD) +90:X=X+LcosF:Y=Y+LsinF↵3. 反算子程序(SUB2)J=Abs((Y-S)cos(G-90)-(X-I)sin(G-90)):L=0:Lbl0:Prog"SUB1":L=(Z [3]-Y)cos(G-90+QJM(1÷P+JD))-(Z[2]-X)sin(G-90+QJM(1÷P+JD)):AbsL <1E-6⇒Goto1:≠⇒J=J+L:Goto0↵Lbl1:L=0:Prog"SUB1":L=(Z[3]-Y)÷sinF↵二、(4850程序带数据库)正反算主程序(ZFS)反算时需输入里程以判断属于哪段线元Deg↵"1.KL⇒XY":"2.XY⇒KL":N:M=180÷π:N=1⇒Goto1:≠⇒Goto2↵Lbl1:{TL}:TL:Prog"DATA":D=(P-R)÷(2(H-○)PR):J=Abs(K-○):Pro g"SUB1":"X=":X◢"Y=":Y◢"FWJ=":F-90→DMS◢Goto1↵Lbl2:{XYT}:XYT:Prog"DATA":D=(P-R)÷(2(H-○)PR):Z[2]=X:Z[3]=Y:Prog"SUB2":"K=":○+J◢"L=":L◢Goto2↵2.正算子程序(SUB1)----与无数据库版相同3.反算子程序(SUB2)----与无数据库版相同4.数据库(DATA)---锦赤铁路T≤172554.99⇒I=4638500.956:S=536490.9244:○=167000:G=-77°50′0. 9″:H=172554.99:P=10∧45:R=10∧45:Q=0:Goto1T≤172624.99⇒I=463967 1.6805:S=531060.7017:○=172554.99:G=-77°50′0.9″:H=172624.99:P =10∧45:R=2000:Q=-1:Goto1T≤172840.8458⇒I=4639686.033:S=530992. 19:○=172624.99:G=-78°50′10.53″:H=172840.8458:P=2000:R=2000:Q =-1:Goto1T≤172910.8458⇒I=4639716.328:S=530778.5764:○=172840. 8458:G=-85°01′12.26″:H=172910.8458:P=2000:R=10∧45:Q=-1:Goto1T≤177000⇒I=4639721.59:S=530708.7755:○=172910.8458:G=-86°01′21.89″:H=177000:P=10∧45:R=10∧45:Q=0:Goto1↵Lbl1:T<167000⇒"CHAO XIAN"◢≠⇒T>177000⇒"CHAO XIAN"◢三、(5800程序)正反算主程序(ZFS)Deg↵"1.KL⇒XY":"2.XY⇒KL":?N:"X0"?I:"Y0"?S:"K0"?○:"F0"?G:"KN"? H:"R0"?P:"RN"?R:"Q(-Z+Y)"?Q:(P-R)÷(2(H-○)PR)→D:180÷π→M:N =2⇒Goto2↵Lbl1:?K:?L:Abs(K-○)→J:Prog"SUB1":"X=":X◢"Y=":Y◢"FWJ=":F-9 0►DMS◢Goto1↵Lbl2:?X:?Y:X→Z[2]:Y→Z[3]:Prog"SUB2":"K=":○+J→K◢"L=":L◢Goto2↵2.正算子程序(SUB1)0.1184634425→A:0.2393143352→B:0.2844444444→Z[4]:0.046910077→C:0.2307653449→E:0.5→Z[1]:I+J(Acos(G+QCJM(1÷P+CJD))+Bcos(G+QE JM(1÷P+EJD))+Z[4]cos(G+QZ[1]J M(1÷P+Z[1]JD))+Bcos(G+Q(1-E)JM(1÷P+(1-E)JD))+Acos(G+Q(1-C)JM(1÷P+(1-C)JD)))→X:S+J(Asin(G+QCJM (1÷P+CJD))+Bsin(G+QEJ M(1÷P+EJD))+Z[4]sin(G+QZ[1]J M(1÷P+Z[1]J D))+Bsin(G+Q(1-E)JM(1÷P+(1-E)JD))+Asin(G+Q(1-C)JM(1÷P+(1-C)JD)))→Y:G+QJM(1÷P+JD) +90→F:X+Lcos(F)→X:Y+Lsin(F)→Y↵3. 反算子程序(SUB2)Abs((Y-S)cos(G-90)-(X-I)sin(G-90))→J:0→L↵Lbl0:Prog"SUB1":(Z[3]-Y)cos(G-90+QJM(1÷P+JD))-(Z[2]-X)sin(G-90 +QJM(1÷P+JD))→L:If Abs(L)<0.000001:Then0→L:Prog"SUB1":(Z[3] -Y)÷sin(F)→L:Else J+L→J:Goto0:IfEnd↵四、(5800程序带数据库)正反算主程序(ZFS)Deg↵"1.KL⇒XY":"2.XY⇒KL":?N:180÷π→M:N=2⇒Goto2↵Lbl1:"KP"?T:?L:Prog"DATA":(P-R)÷(2(H-○)PR)→D:Abs(T-○)→J:Pr og"SUB1":"X=":X◢"Y=":Y◢"FWJ=":F-90►DMS◢Goto1↵Lbl2:?X:?Y:"KP"?T:Prog"DATA":(P-R)÷(2(H-○)PR)→D:X→Z[2]:Y →Z[3]:Prog"SUB2":"K=":○+J→T◢"L=":L◢Goto2↵2.正算子程序(SUB1)---与无数据库版相同3.反算子程序(SUB2)---与无数据库版相同4.数据库(DATA)---锦赤铁路167000→○:172554.99→H:If T≤H:Then4638500.956→I:536490.9244→S:-77°50′0.9″→G:10^(45)→P:10^(45)→R:0→Q:Goto1:IfEnd↵H→○:172624.99→H:If T≤H:Then 4639671.6805→I:531060.7017→S:-77°50′0.9″→G:10^(45)→P:2000→R:-1→Q:Goto 1:IfEnd↵H→○:172840.8458→H:If T≤H:Then 4639686.033→I:530992.19→S:-7 8°50′10.53″→G:2000→P:2000→R:-1→Q:Goto 1:IfEnd↵H→○:172910.8458→H:If T≤H:Then 4639716.328→I:530778.5746→S: -85°01′12.26″→G:2000→P:10^(45)→R:-1→Q:Goto 1:IfEnd↵H→○:177000→H:If T≤H:Then 4639721.59→I:530708.7755→S:-86°0 1′21.89″→G:10^(45)→P:10^(45)→R:0→Q:Goto 1:IfEnd↵Lbl1:If T<167000 or T>177000:Then"CHAO XIAN"◢Stop:IfEnd:Return↵说明:一、程序功能及原理1.功能说明:本程序由一个主程序和两个子程——正算子程序(SUB1)、反算子程序(SUB2)构成,可以根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线元要素(起点坐标、起点里程、起点切线方位角、终点里程、起点曲率半径、止点曲率半径)及里程边距或坐标,对该线元段范围内任意里程中边桩坐标进行正反算。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//servey.h
// #ifndef SERVEY_H
// #define SERVEY_H
#include <math.h>
#include <stdio.h>
#include <iomanip.h>
const double PI = 3.149323846;
const double epsilon = 0.;
//角度(度、分、秒)化弧度(带符号)
double angle_to_radian (double alfa)
{
double alfa1,alfa2,fsign,fbeta;
if( fabs(alfa) < epsilon ) return(0.0);
fbeta=fabs(alfa); fsign=alfa/fbeta;
alfa1=floor(fbeta+epsilon)+floor((fbeta-floor(fbeta+epsilon))*100.+epsilon)/60.;
alfa2=(fbeta*100.-floor(fbeta*100.+epsilon))/36.;
alfa1+=alfa2; alfa1=fsign*alfa1*PI/180.;
return (alfa1);
}
//度分秒化为度
double angle_to_degree(double alfa)
{
double alfa_sign; //alfa的正负号
if(alfa>=0)
{
alfa_sign = 1;
}else
{
alfa_sign = -1;
}
alfa = fabs(alfa);
double alfa1,alfa2;
double A = floor(alfa+epsilon);
double B = floor((alfa-A)*100+epsilon);
alfa1 = A+B/60;
alfa2=(alfa*100.-floor(alfa*100.+epsilon))/36.;
alfa1+=alfa2;
return (alfa_sign*alfa1);
}
//弧度化度分秒
double radian_to_angle(double alfa)
{
double alfa_sign; //alfa的正负号
if(alfa>=0)
{
alfa_sign = 1;
}else
{
alfa_sign = -1;
}
alfa = fabs(alfa);
double alfa1=alfa*180./PI+epsilon;
double alfa2=floor(alfa1+epsilon)+floor((alfa1-floor(alfa1+epsilon))*60+epsilon)/100;
double alfa3=(alfa1-angle_to_degree(alfa2))*0.36;
alfa2+=alfa3;
return (alfa_sign*alfa2);
}
//高斯正算函数
//Ellipse为枚举类型
//Cent_Meridian为中央子午线经度
//x,y为返回的高斯平面坐标
int BL_xy(int ellipse, double Cent_Meridian, double B,
double L, double& x, double& y)
{
double a, b, e1, e2; //e1为第一偏心率,e2为第二偏心率
switch (ellipse) //选椭球
{
case 0 : //54椭球
{
a=6378245.; //长半轴
b=6356863.0187730473; //短半轴
e1=sqrt(pow(a,2.)-pow(b,2.))/a;
e2=sqrt(pow(a,2.)-pow(b,2.))/b;
break;。