坐标正反算计算程序
卡西欧5800多功能实用坐标正反算小程序(附后方交会程序)

Goto0:
Lbl3:Cls:”X1=”?A:”Y1=”?B:?F: ”X2=”?X:”Y2=”?Y:
(X-A)cos(F)+(Y-B)sin(F)→I:
(Y-B)cos(F)-(X-A)sin(F)→Z:
Cls:“L=”: “Z=”:Locate4,1,I:Locate 4,2,Z◢
Goto0
注:程序中的“=>”是一个双箭号, 按FUNCTION选3下翻两页选3 即可输入。方Biblioteka 角L距离Z
偏距
R
斜交偏距的转角(顺时针为正数,正交输入0)
2程序名:HFJH(距离后方交会)
LBI 1 :〝XA〞?A :〝YA〞?B :〝XB〞?C :〝YB〞?D :〝D1〞?E :〝D2〞?F :?Q : 0→J : POL(C-A , D-B)→G : J+Q Cos-1((GG+EE-FF)÷(2GE))→H :〝XP=〞: A+E Cos(H)→X▲〝YP=〞: B+E Sin(H)→Y▲Goto1
显示及操作说明:
显示
功能
1.XY→LF
2.LF→XY
3.XYF→LZ
1.输入两点坐标计算距离与方位角
2.输入起点坐标及方位角、距离、偏距、偏距的转角
3.输入起点坐标及方位角,输入实测坐标,计算实测点与起点的垂直距离和垂直偏距
显示
输入及显示说明
X1、Y1
第一点(起点)坐标
X2、Y2
坐标正反算程序计算器

一、Lbl 3:"1→ZS,2→FS"?QQ=1=>Goto 1:Q=2=>Goto 2Lbl 1:"CE:X"?M:"CE:Y"?F:"JL"?L:"FWJ"?A:Rec(L,A):M+I→C:F+J→DCls"X=":Locate 3,1,C:"Y=":Locate 3,2,D◢Goto 3Lbl 2::"CE:X"?G:"CE:Y"?H:"(HOU)FY:X"?N:"(HOU)FY:Y"?EPol(N-G,E-H)If J<0:Then J+360→Y:Else J→Y:IfEndCls"FY JL=":Locate 10,1,I:"FY FWJ=":Y◆DMS◢Goto 3进入程序运行如下:1→ZS,2→FS? 输入1为正算,2为反算.以输入1为例:CE:X? 测站点X(5796.717)CE:Y? 测站点Y(5212.569)JL? 仪器测得的距离(321.889)FWJ? 仪器测得的方位角(193-41-07)得到:X=5483.966Y=5136.414再按EXE,输2为例:CE:X? 测站点X(5796.717)CE:Y? 测站点Y(5212.569)(HOU)FY:X? 后视或放样的X(5483.966)(HOU)FY:Y? 后视或放样的Y(5136.414)得到:FY JL=321.889FY FWJ=193-41-6.79二、Deg : Fix 3 : “XZ→0:YZ→1”?A : If A = 1: Then Goto 1 : IfEnd ↙If A = 0 : Then “BS→0:XY→1:AND→2:DK→3:L(I)→4 ”?O : IfEnd ↙If O = 4: Then Goto 1 : IfEnd ↙If O = 3: Then Prog “F.2 ”: If X= 0 : Then Goto 1 : IfEnd : IfEnd ↙If O≠1: Then “X1 ”?X : “Y1”?Y : X→Z[11]: Y→Z[12]: “X2 ”?P : “Y2”?Q : Pol( P-X , Q-Y) : If J﹤0 : Then J + 360→J : IfEnd : Cls : “S12= ”: Locate 6 ,1, I : “B12= ”: J ►DMS◣1→B : IfEnd ↙If O = 1: Then “XY(0) →0: ≠﹥1”? B: IfEnd ↙Lbl 1 : If A = 1 And O = 3 :Then Prog “F.2 ”: IfEnd : Prog “Q.1 ”子程序PPQX (给定综合曲线属性)“ZQX →0: *** →1: *** →2 ******* ”?C ↙If C=0: Then 100→Z[98]: n0 →Z[99]: IfEnd ↙If C=1: Then m1→Z[98]: n1 →Z[99]: IfEnd ↙If C=2: Then m2→Z[98]: n2 →Z[99]: IfEnd ↙*******Prog “PQX ”其中: mi为第i条综合曲线矩阵变量起始单元,(第1条综合曲线矩阵变量起始单元应自100开始,以便其他程序临时使用100以前的矩阵变量,综合曲线中每一基本单元需8个矩阵存储单元);ni为第i条综合曲线中基本单元数,每增加一个条综合曲线则增加一行If C=*******→Z[99]: IfEnd↙语句。
坐标正反算程序

1.坐标反算(ZBFS)主程序XY:N=X: T=Y:Pros"DAT1"W"X0":S"Y0":O"K0":G"F0":H"KN":P"R0":R"RN":Q”Q(-Z +Y)” :D=(P-R)÷(2 Abs (H-O)PR):Z=Abs((T-S)cos(G-90)-(N-W)sin(G-90)):L=0:M”M(YJJ)”=90: (注:此处若不给M赋值,则可计算斜交点)Lbl 0:Prog " SUB1 ":L=(T-Y)cos(G-90+QZ(1÷P+ZD)×180÷π)-(N-X)sin(G-90+QZ(1÷P +ZD) ×180÷π):AbsL<1E-6=>Goto1:≠>Z=Z+L:Goto 0Δ←┘Lbl 1:L=0:Prog " SUB1 ":L=(T-Y)÷sinF:”K=”:K=O+Z◢”L=”:L=L2.正算主程序 ( ZBZS)W"X0":S"Y0":O"K0":G"F0":H"KN":P"R0":R"RN":Q”Q(-Z +Y)” :D=(P-R)÷(2Abs(H-O)PR):L”L(-Z +Y)” :M”ANG”=90:(注:此处若不给M赋值,则可计算斜交点)Z=Abs(K-O):Prog"SUB1":”FWJ=”:F=F-M:”X=”:X=X◢”Y=”:Y=Y3.正算子程序(SUB1)Defm4:A=0.1184634425:B=0.2393143352:Z[4]=0.2844444444:C=0.046910 0770:E=0.2307653449:Z[1]=0.5:X=W+Z(Acos(G+QCZ(1÷P+CZD)×180÷π)+Bcos(G+QEZ(1÷P+EZD)×180÷π)+Z[4]cos(G+QZ[1]Z(1÷P+Z[1]ZD)×180÷π)+Bcos(G+Q(1-E)Z(1÷P+(1-E)Z D)×180÷π)+Acos(G+Q (1-C)Z(1÷P+(1-C)ZD) ×180÷π)):Y=S+Z(Asin(G+QCZ(1÷P+CZD)×180÷π)+Bsin(G+QEZ(1÷P+EZD)×180÷π) +Z[4]sin(G+QZ[1]Z(1÷P+Z[1]ZD)×180÷π)+Bsin(G+Q(1-E)Z(1÷P+(1-E)ZD)×180÷π)+Asin(G+Q (1-C)Z(1÷P+(1-C)ZD) ×180÷π)):F=G+QZ(1÷P+ZD) ×180÷π+M:X=X+LcosF:Y=Y+LsinF4.曲线元要素数据库:DAT-01K≥O=>K<H=> W=**:S=**:O=**:G=**:H=**:P=**:R=**:Q=**⊿⊿←┘K≥O=>K<H=> W=**:S=**:O=**:G=**:H=**:P=**:R=**:Q=**⊿⊿←┘K≥O=>K<H=> W=**:S=**:O=**:G=**:H=**:P=**:R=**:Q=**⊿⊿←┘K≥O=>K<H=> W=**:S=**:O=**:G=**:H=**:P=**:R=**:Q=**⊿⊿←2、输入与显示说明(1)输入部分:X0 ?线元起点的X坐标Y0 ?线元起点的Y坐标K0 ?线元起点里程F0 ?线元起点切线方位角KN ?线元终点里程R0 ?线元起点曲率半径RN ?线元止点曲率半径Q ?线元左右偏标志(左偏Q=-1,右偏Q=1,直线段Q=0)K ?正算时所求点的里程L ?正算时所求点距中线的边距(左侧取负值,右侧取正值,在中线上取零) ANG?正算边桩时左右边桩连线与线路中线的右交角X ?反算时所求点的X坐标Y ?反算时所求点的Y坐标M ? 斜交右角线元要素数据库中K≥O=>K<H=>中的O和H分别为该段线元起点里程和终点里程A、B、Z[4] 是Gauss-Legendre求积公式中的插值系数C 、E、Z[1] 是Gauss-Legendre求积公式中的求积节点(2)显示部分:X=×××正算时,计算得出的所求点的X坐标Y=×××正算时,计算得出的所求点的Y坐标K=×××反算时,计算得出的所求点的里程L=×××反算时,计算得出的所求点的边距。
工程测量:坐标正反算

=+Δ=1376.00−57.69=1318.31
=+Δ=748.00+52.86=800.86
坐标反算
02
二、坐标反算
坐标反算,就是根据直线两个端点的已知坐标,计算直线的水平距离D和坐
标方位角α。
X
◎
X
B
X
◎
A
B
Δ = −
= + Δ
= + Δ
思考
坐标正算和坐标反算的适用情形?
谢谢观看
T
H
A
N
K
Y
O
U
已知直线AB的水平距离为78.25m,坐标方位角为137°30′00″,其中一个端点A的坐标
为(1376.00,748.00),求直线另一个端点B的坐标(、)。
解:先求出直线AB的坐标增量
Δ=·cos=78.25×cos137°30′00″= −57.69
Δ=·sin=78.25×sin137°30′00″=52.86
《工程测量》
坐标正反算
目录
01
02
坐标正算
坐标反算
坐标正算
01
一、坐标正算
坐标正算,就是根据直线的起点坐标、水平距离和坐标方位角,计算直线
另一个端点的坐标。
X
◎
X
B
X
◎
A
B
A
Y
Y
A
B
Y
一、坐标正算
(一)坐标正算原理
如图所示,已知直线AB的一个端点A的坐标为(、),水平距离、坐标方位
A
Y
Y
CASIO4850坐标正反算程序说明书

CASIO fx4850线路正反算测量程序(全站仪伴侣)CL-测量Norm :Lbl 1:Cls:{U}:U"1 ZS 2 FS"=1 =>Prog "ZS":≠>U=2 =>Prog "FS":≠>Goto 1△△D-读Lbl 1:K[B]=Z[G+B]:Dsz B:Goto 1 FS-反算Lbl 1:Cls:{KVW}:V"X"W"Y":Lbl 2:Prog "P":Pol(V-X,W-Y):J=J-A:I=Rec(I,J):K=K+I:AbsI≥E-3=>Goto 2:≠>Prog "WZ":Goto 1△HQ-缓曲N=I-I^5÷40S2+I^9÷3456S^4-I^13÷599040S^6:M=I^3÷6S-I^7÷336S^3+I^11÷42240S^5:Z=90IAbsI÷πS:J=90-(90-tan-1(M÷N))AbsI÷I:I=√(M2+N2)HY-缓圆I=O:Prog "HQ":Prog "XY":I=K-L-O HZ-缓直I=P: Prog "Y": Prog "XY":I=Q:S=RQ:Prog “HQ”:J=Z-J:Prog "XY":I=K-L-O-P-QML-目录Cls:Fix 3:C=Z[100]:D=Z[101] :Lbl 1:B=6:G=C-6D:Prog "D":K≥L =>K≤M =>C=N:D=O:E=P:F=Q: Goto 2△△Dsz D:Goto 1:Lbl 2P-平Prog"ML": Prog"PM"PM-平面Lbl 1:B=9:G=C-8D-1:Prog "D":K≤T =>Prog "PQ":Goto 2△Dsz D:Goto 1:Lbl 2 PQ-平曲Prog "ZH":K≤L =>Prog "ZX":≠>K≤L+O =>Prog "HQ":≠>Prog "HY":K≤L+O+P =>Prog "Y":≠> Prog "HZ":K≤L+O+P+Q => Prog "HQ" :≠>Prog "ZX"△△△△Prog "XY"PY-偏移Lbl 1:I=0:J=90:{IJ}:I"L"≠0 =>Z=J"<":Prog "XY":Prog "ZB":Goto 1△PZ-平纵Prog "ML":Prog "PM":Prog "ZM"SQ-竖曲Z=N+(K-M)L:K≤M-T =>Z:≠>Z=Z- (K-M+T)2÷2O△WZ-位置"KJ":K:Pause1:J▲XY-XYJ=A+J: A=A+Z:X=X+Rec(I,J):Y=Y+JY-圆J=90I÷πR: I=2RSinJ: Z=2JZ-纵Prog"ML": Prog"ZM"ZB-坐标A=360Frac((A+360)÷360):"ZB":X:Pause 1:Y:Pause 1ZH-直缓X=M:Y=N:A=S:I=K-L:S=ORZM-纵面Lbl 1:B=5:G=E-4F-1:Prog "D":T=Abs(O(P-L)÷2):K≤M+T =>Prog "SQ":Goto2△Dsz F:Goto 1:Lbl 2ZS-正算{U}:Lbl 1:{K}:U"1 B"=1=> Prog "P": Prog "PY" :Goto 1△Prog "PZ":Prog "ZB": Z▲Goto 1ZX-直线J=0:Z=0使用说明运行CL程序首先程序提示正反算1 ZS2 FS?输1正算、输2反算,其它重选。
坐标正反算程序(4850)

坐标正反算程序(4850)正算主程序:ZS1.Prog “SJ”2.Lbl 0: {ZS}3.Z<A=>Rec(sqrt(S2+(Z-Q)2),F+180-tan-1(S÷(Q-Z))):X=N+I:Pause 0:Y=E+J◢4.Goto 0◣第一直线5.Z<B=>L=Z-A:W=F+90GL2÷πRU+90:H=U:O=Z[5]:P=Z[6]:T=F+90G:Goto 1◣第一回旋线6.Z<C=>L=Z-B7.W=F+G((90U+180L)÷πR+270)8.Rec(R-GS,W):X=Z[9]+I: Pause 0:Y=Z[10]+J◢9.Goto 0◣圆曲线10.Z<D=>L=D-Z:W=F+G(K-90L2÷πR V)+90:H=V:O=Z[7]:P=Z[8]:T=F+G(K+90):Goto 1◣第二回旋线11.Lbl 1:X=L-L5÷40R2V2+L9÷3456R4V412.Y=L3÷6RV-L7÷336R3V3+L11÷42240R5V513.Rec(sqrt(X2+Y2),T):X=O+I:Y=P+J14.Rec(S,W): X=X+I: Pause 0:Y=Y+J◢15.Goto 0◣16.Z>D=>Rec(sqrt(S2+(Z-D+Z[4])2),F+G(K+tan-1(S÷(Z-D+Z[4])))):X=N+I: Pause 0:Y=E+I◢17.Goto 0◣第二直线反算主程序:FS1.Prog"SJ"2.H=90U÷πR第一回旋线所对圆心角β013.T=90V÷πR第二回旋线所对圆心角β024.Rec((Z[3] +Z[4]÷cosK)/tanK,F+90G):Z[11]=Z[5]+I:Z[12]=Z[6]+J ZH、HZ点垂线交点坐标5.Z[13]=F+90G+180 ZH点与ZH、HZ点垂线交点连线方位角6.Z[14]=Z[13]+GH HY点与圆心连线方位角7.Z[15]=Z[13]+G(K-H) YH点与圆心连线方位角8.Z[16]=Z[15]+GT HZ点与ZH、HZ点垂线交点连线方位角9.Lbl 0:{XY}10.Pol(X-Z[11],Y-Z[12]):J<0=>J=J+360◣11.GJ<GZ[13]=> Pol(N-X,E-Y):Rec(I,F-J): “Z”:Z=Q-I:Pause 0:“S”:J◢12.Goto 0◣第一直线13.GJ>GZ[16]=> Pol(X-N,Y-E):Rec(I,J-F-GK): “Z”:Z=I-Z[4]+D:Pause 0:“S”:J◢14.Goto 0◣第二直线15.GJ>GZ[13]=>Pol(X-Z[9],Y-Z[10]):J<0=>J=J+360◣16.GJ<GZ[14]=>P=Z[13]:H=U:M=A:T=1:Z[17]=Z[5]:Z[18]=Z[6]:Z[19]=F:Goto 1◣第一缓和曲线17.GJ<GZ[15]=> “Z”:Z=B+RG(J-Z[14]):Pause 0:“S”:S=G(R-I)◢18.Goto 0◣圆曲线19.GJ>GZ[15]=>P=Z[16]:H=V:M=D:T=-1:Z[17]=Z[7]:Z[18]=Z[8]:Z[19]=F+GK+180:Goto 1◣第二缓和曲线20.Lbl 1:Pol(X-Z[11],Y-Z[12]):J<0=>J=J+360:L= Abs(J-P) πR÷180 “L=H×Abs(J-P)÷2÷(90H÷πR)”21.Lbl 2:O=L-L5÷40R2H2+L9÷3456R4H4-L13÷599040R6H622.P=L3÷6RH-L7÷336R3H3+L11÷42240R5H5-L15÷9676800R7H723.Rec(sqrt(O2+P2),Z[19]+TGtan-1(P÷O)):O=Z[17]+I:P=Z[18]+J24.Pol(X-O,Y-P):Rec(I,J-(Z[19]+90TGL2÷πRH)):AbsI>0.001=>L=L+I:Goto 2:≠>“Z”:Z=M+TL: Pause 0: “S”:TJ◢25.Goto 0◣子程序(曲线要素数据):SJ1.Defm 19:M:M=1=>F=*:K“ZJ”=*:G=*:U(Ls1)=*:V(Ls2)=*:R=*:Q=*:N“XJ”=*:E“YJ”=*:Goto 1◣2.M=2=>F=*:K“ZJ”=*:G=*:U(Ls1)=*:V(Ls2)=*:R=*:Q=*:N“XJ”=*:E“YJ”=*:Goto 1◣3.………………4.Lbl 1:Z[1]=U2÷24R-U4÷2688R3+U6÷506880R5Z[1]第一回旋线内移值P15.Z[2]=V2÷24R-V4÷2688R3+V6÷506880R5Z[2]第二回旋线内移值P26.M=(R+Z[2]-(R+Z[1])cosK)÷sinK7.P=(R+Z[1]-(R+Z[2])cosK)÷sinK8.Z[3]= M+U÷2-U3÷240R2Z[3]第一回旋线切线长T19.Z[4]= P+V÷2-V3÷240R2Z[4]第二回旋线切线长T210.L=RKπ÷180+(U+V)÷2曲线长(Ls1+圆+Ls2)11.A=Q-Z[3]:B=A+U:D=A+L:C=D-V ZH,HY,HZ,YH里程桩号12.I=0:J=0:Rec(Z[3],F+180):Z[5]=N+I:Z[6]=E+J ZH点坐标增量计算,ZH点坐标13.Rec(Z[4],F+GK):Z[7]=N+I:Z[8]=E+J HZ点坐标增量计算,HZ点坐标14.Rec(sqrt(M2+(R+Z[1])2),F+G(K+tan-1((R+Z[2])÷P))):Z[9]=N+I:Z[10]=E+J 圆心坐标注:F-起始边方位角K-转角G-线路左转为-,右转为+U-第一回旋线长V-第二回旋线长R-半径Q-交点桩号N,E-交点坐标Z-待求点桩号S-偏距(左偏为-,右偏为+)sqrt为根号。
公路坐标正反算程序
RAπ÷180-(B+C) ÷2→Q↙
(R+(Z[6]+Z[7])÷2)÷cos(A÷2)-R→E↙
K-S→Z[1] ↙↙
Z[1]+B→Z[2] ↙↙
Z[2]+Q÷2→Z[3]↙
Z[1]+L-C→Z[4]↙
Z[4]+C→Z[5]↙
子程序2名: JDB
X-Scos(M)→Z[19]:
(Abs(K-O)) →J:Prog"SUB1":
(F-M) →F
Return
2. 反算主程序 GSFS
Lbi 0:?X:?Y:X→Z[2]:Y→Z[3]:
“QDXO”?I:"QDY0"?S:"QDLC"?O:"QDFWJ "?G:"ZDLC"?H:"QDR"?P:"ZDR"?R:”Q(Z=-1 ZX=0 Y=1)” ?Q:
M+90WL2 ÷(BRπ)→Z↙
Goto 5↙
LbI 2 : If P>Z[4]:Then Goto 3 :IfEnd↙
P-Z[1]→L:90(2L-B)÷R÷π→Z[11]↙
Rsin(Z[11])+Z[8]→Z[14]:R(1-cos(Z[11]))+Z[6]→Z[15]↙
M→Z : Goto 5↙
LbI 1 : If P>Z[2]:Then Goto 2 :IfEnd↙
P-Z[1]→L:L→Z[12]:B→Z[13]:Prog"JDC"↙
Z[19]+Z[14]cos(M)-WZ[15]sin(M)+Dcos(Z+H)→F↙
科学计算器坐标正反算操作步骤
科学计算器坐标正反算操作步骤科学计算器是一种常见的工具,可以对数据进行各种计算和操作。
其中,坐标正反算是科学计算器的一项重要功能。
本文将介绍科学计算器中坐标正反算的操作步骤。
坐标正算坐标正算是指通过已知的数据计算出指定点的坐标。
下面是坐标正算的操作步骤:1.打开科学计算器:首先,按下科学计算器的电源按钮,打开计算器。
2.配置计算器模式:根据实际需要,选择合适的计算模式。
科学计算器通常有各种模式可供选择,比如直角坐标模式、极坐标模式等。
在这个步骤中,我们需要确保选择的是直角坐标模式。
3.输入已知数据:根据需要输入已知数据。
通常情况下,我们需要输入已知点的坐标值。
根据计算器的键盘布局,输入数据时使用对应的数字键进行输入。
例如,如果某个点的坐标是(2, 3),则需要按下相应的键来输入这两个数字。
4.进行计算:输入完毕后,按下计算器上的计算按钮(通常是“=”按钮),进行计算。
5.查看结果:计算器会自动计算出指定点的坐标值,结果会显示在计算器的显示屏上。
在直角坐标模式下,通常会显示两个结果,分别为横坐标和纵坐标。
以上就是坐标正算的操作步骤。
坐标反算坐标反算是指通过已知的数据计算出与指定坐标相符的点。
下面是坐标反算的操作步骤:1.打开科学计算器:同样地,按下科学计算器的电源按钮,打开计算器。
2.配置计算器模式:确保选择的是直角坐标模式,以便进行坐标反算。
3.输入已知数据:根据需要输入已知坐标的数值。
计算器的键盘布局通常是将数字和运算符分开的,因此你需要找到合适的键来输入每个数字。
例如,如果已知的坐标是(2, 3),则需要按下相应的键来输入这两个数字。
4.进行计算:输入完毕后,按下计算器上的计算按钮,进行计算。
5.查看结果:计算器会自动计算出与输入的坐标相符的点。
结果通常以坐标形式显示在计算器的显示屏上。
以上就是坐标反算的操作步骤。
总结:科学计算器的坐标正反算功能在我们日常生活中具有重要意义。
通过坐标正算,我们可以根据已知的数据计算出指定点的坐标;而通过坐标反算,我们可以根据已知坐标计算出与之相符的点。
卡西欧5800计算器坐标正反算程序
卡西欧5800计算器坐标正反算程序主程序坐标正反算程序名称:ZBZFSLb1 A↙30→Dim Z :"0=ZS,1=FS"?Z ↙If Z=0:Then Goto B:IfEnd↙ (Z=0进入里程点坐标正算)If Z=1:Then Prog"FSLCZ "↙ (Z=1进入反算里程边桩)Lb1 B ↙Prog”ZBZS” ↙子程序反算里程桩名称:FSLCZLb1 1↙"XK="?X:"YK="?Y↙(输入任意测点的X、Y坐标)“K=”?K ↙(试算里程,任意输入标段内里程点即可,也可以输入大致的估算里程加快速度)Lb1 2↙Prog"SJK ":T-90 →W:W<0=>360+W→W:Abs((Y-Z[19])*Cos(W)-(X-Z[18])*Sin(W))→S↙If S<0.0001:Then Goto 4:Else Goto 3:Ifend↙Lb1 3↙K+S→K: Prog"SJK":T-90 →W:W<0=>360+W→W:Abs((Y-Z[19])*Cos W-(X-Z[18])*Sin (W)→Q↙If Q<0.0001 :Then Q→S: Goto 4:Else if Q<S: Then K+Q→K:Goto 2 :Else if Q>S :Then K-Q→K:Goto 2:Ifend:Ifend:Ifend↙Lb1 4↙Pol (X-Z[18],Y-Z[19]:"DP(-Z+Y)=":I◢(偏距)"K=":K+S→K◢(里程)Goto 1↙子程序坐标正算名称:ZBZSLb1 0 ↙“XHS="?G(后视点X):"YHS="?L(后视点Y):"XZJ="?M(置镜点X):"YZJ="?N(置镜点Y):Pol(G-M,L-N):"DH=":I(后视距)◢J<0=>J+360→J:"FH=":JDMS◢(后视方位角)Lb1 1↙“K=”?K :(输入所需计算里程)Prog"SJK "↙XI : Z[18]↙YI: Z[19] ↙Pol(Z[18]-M,Z[19]-N): J<0=>J+360→J↙“PJ=”?P↙ (输入桩与线路夹角)“PD=”?D↙ (输入桩距中线的距离)Z[18]+D*Cos(T+P) →Z[20] ↙Z[19]+D*Sin(T+P) →Z[21] ↙“X=”: Z[20] ◢ (放样坐标X)“Y=”: Z[21] ◢ (放样坐标Y)Pol(Z[20]-M,Z[21]-N):"D=":I◢(放样距)J<0=>J+360→J:"F=":JDMS◢(放样方位角)Goto 1↙子程序数据库名称:SJKif K<本段曲线终点里程And K≥上段曲线终点里程:Then 本段曲线终点里程→Z[1] : 上段曲线终点里程(第一段曲线输起点的里程)→Z[2] :1→O (注:左偏曲线输入-1→O,右偏曲线输入1→O): 半径→R :曲线偏角→A:第一缓和曲线→Z[6] : 第二缓和曲线→Z[7] : 交点X→B :交点Y→C : 小里程向交点方位角→E : 交点向大里程方位角→F : Pr og”JSPB”:Return: Ifend↙if…………Prog”JSPB”:Retur n:Ifend(曲线段分段输入)↙补充直线段输入如下 (只需输线路的最后一段直线数据)if K<本段直线终点里程And K≥本段直线起点里程:Then 本段直线终点里程→Z[3]:终点X→Z[16]:终点Y→Z[17]:方位角→E: Z[16]+ (K- Z [3])*Cos(E)→Z[18]:Z[17]+ (K- Z[3])*Sin(E)→Z[19] : Return:Ifend ↙子程序计算判别名称:JSPBLb1 2 ↙(曲线要素计算)Z[6]/2- Z[6]^3/(240*R^2)+ Z[6]^5/(34560*R^4) →Z[8] ↙ (M1)Z[7]/2- Z[7]^3/(240*R^2)+ Z[7]^5/(34560*R^4) →Z[9] ↙ (M2)Z[6]^2/(24*R)- Z[6]^4/(2688*R^3) →Z[10] ↙ (P1)Z[7]^2/(24*R)- Z[7]^4/(2688*R^3) →Z[11] ↙ (P2)π*A*R/180+0.5*( Z[6]+ Z[7])→Z[25] ↙ (曲线总长)90* Z[6]/(R*π) →Z[14] ↙ (第一缓和曲线总偏角)90* Z[7]/(R*π) →Z[15] ↙(第二缓和曲线总偏角,可以省略)Z[8]+(R+Z[10])Tan(A/2)-(Z[10]-Z[11] )/Sin( A)→Z[12]↙ (切线T1)Z[9]+(R+Z[11])Tan(A/2)+(Z[10]-Z[11] )/Sin (A)→Z[13]↙ (切线T2)B+ Z[12]*Cos (E+180)→ Z[16] ↙ (ZH点X)C+ Z[12]*Sin(E+180)→ Z[17] ↙ (ZH点Y)Z[1]- Z[25]→Z[3] ↙ (ZH点里程)Z[3]+ Z[6]→Z[4] ↙ (HY点里程)Z[1]- Z[7]→Z[5] ↙ (YH点里程)Goto 3 ↙LB1 3 ↙(判断里程点与曲线关系)if K≤Z[3] And K> Z[2] : Then Goto 4 : Ifend ↙if K≤Z[4] And K> Z[3] : Then Goto 5 : Ifend ↙if K≤Z[5] And K> Z[4] : Then Goto 6 : Ifend ↙if K≤Z[1] And K> Z[5] : Then Goto 7 : Ifend ↙Lb1 4 ↙(里程小于直缓点直线独立坐标)K- Z[3] →Z[23] : 0→Z[24] : E→T : Goto 8↙Lb1 5 ↙(第一缓和曲线独立坐标)K- Z[3] →H ↙H-H^5/(40*R^2* Z[6]^2)+H^9/(3456*R^4* Z[6]^4) →Z[23] ↙H^3/(6*R* Z[6])-H^7/(336*R^3* Z[6]^3) →Z[24] ↙90*H^2/( R*π* Z[6]) →T ↙if O>0 :Then T +E→T : Eles E-T →T : T<0=>360+T→T : Ifend ↙Got o 8 ↙Lb1 6 ↙(圆曲线独立坐标)K- Z[4] →H ↙H*180/( R*π)+ Z[14]→T ↙R*Sin(T)+ Z[8]→Z[23] ↙R*(1-Cos(T))+ Z[10]→Z[24] ↙if O>0 :Then T +E→T : Eles E-T →T : T<0=>360+T→T : Ifend ↙Goto 8 ↙Lb1 7 ↙(第二缓和曲线独立坐标)Z[1] -K →H ↙H-H^5/(40*R^2* Z[7]^2)+H^9/(3456*R^4* Z[7]^4) →U↙H^3/(6*R* Z[7])-H^7/(336*R^3* Z[7]^3) →V ↙90*H^2/( R*π* Z[7]) →T ↙Z[13]Cos(A)+ Z[12]-U*Cos(A)-V*Sin(A)→Z[23] ↙Z[13]*Sin(A)-U*Sin(A)+V*Cos(A)→Z[24] ↙if O>0 :Then F-T→T : T<0=>360+T→T : Else F+T →T : Ifend ↙Goto 8 ↙Lb1 8if O<0 : Then - Z[24]→Z[24] : Ifend ↙Z[16]+Z[23]*Cos(E) -Z[24]*Sin(E)→Z[18] ↙Z[17]+Z[23]*Sin(E)+Z[24]*Cos(E)→Z[19] ↙Return↙此程序大约占计算器2900字节!此程序本人已亲自验算,无误!!子程序反算里程桩名称:FSLCZLb1 1↙"XK="?X:"YK="?Y↙(输入任意测点的X、Y坐标)“K=”?K ↙(试算里程,任意输入标段内里程点即可,也可以输入大致的估算里程加快速度)Lb1 2↙Prog"SJK ":T-90 →W:W<0=>360+W→W:Abs((Y-Z[19])*Cos(W)-(X-Z[18])* Sin(W))→S↙If S<0.0001:Then Goto 4:Else Goto 3:Ifend↙Lb1 3↙K+S→K: Prog"SJK":T-90 →W:W<0=>360+W→W:Abs((Y-Z[19])*Cos W-(X-Z [18])*Si n (W)→Q↙If Q<0.0001 :Then Q→S: Goto 4:Else if Q<S: Then K+Q →K: Goto 2 :Else if Q>S :Then K-Q→K:Goto 2:Ifend:Ifen d:Ifend↙Lb1 4↙Pol (X-Z[18],Y-Z[19]:"DP(-Z+Y)=":I◢(偏距)"K=":K+S→K◢(里程)Goto 1↙Lb1 4↙Pol (X-Z[18],Y-Z[19]:------------差个撒样"DP(-Z+Y)=":I◢(偏距)"K=":K+S→K◢(里程)Goto 1↙。
坐标正反算计算程序
坐标正反算计算程序```pythonimport mathdef coordinate_forward(h0, l0, alpha, s):"""坐标正算函数,根据给定的起始位置和观测角度、距离计算目标位置的坐标。
:param h0: 起始位置的水平坐标。
:param l0: 起始位置的纵向坐标。
:param alpha: 观测角度,以正北方向为基准,顺时针方向为正。
:param s: 距离。
:return: 目标位置的水平坐标和纵向坐标。
"""d = math.radians(alpha)h = h0 + s * math.sin(d)l = l0 + s * math.cos(d)return h, ldef coordinate_inverse(h0, l0, h, l):"""坐标反算函数,根据给定的起始位置和目标位置的坐标计算观测角度和距离。
:param h0: 起始位置的水平坐标。
:param l0: 起始位置的纵向坐标。
:param h: 目标位置的水平坐标。
:param l: 目标位置的纵向坐标。
:return: 观测角度和距离。
"""dh = h - h0dl = l - l0s = math.sqrt(dh ** 2 + dl ** 2)alpha = math.degrees(math.atan2(dh, dl))if alpha < 0:alpha += 360return alpha, s```使用这个坐标正反算计算程序,可以简单地实现坐标的正反算。
例如:```python#坐标正算示例h0=0l0=0alpha = 45s=10h, l = coordinate_forward(h0, l0, alpha, s)print(f"目标位置坐标:h={h}, l={l}")#坐标反算示例h0=0l0=0h=5l=5alpha, s = coordinate_inverse(h0, l0, h, l)print(f"观测角度和距离:alpha={alpha}, s={s}")```这段程序中的坐标正算函数`coordinate_forward`接受起始位置的坐标`h0`和`l0`,观测角度`alpha`(以正北方向为基准,顺时针方向为正),以及距离`s`作为参数,返回目标位置的水平坐标`h`和纵向坐标`l`。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
坐标正反算计算程序
在进行坐标正反算计算之前,需要先了解一些基本概念和公式:
1.大地坐标系:大地坐标系是用经纬度表示地球表面上的点的坐标系统,其中经度表示东西方向的位置,纬度表示南北方向的位置。
2.平面坐标系:平面坐标系是用平面直角坐标系表示地球上的点的坐标系统,其中X轴表示东西方向的位置,Y轴表示南北方向的位置。
3.椭球坐标参数:椭球坐标参数包括椭球体长半轴a、短半轴b和偏心率e等参数,用来描述地球表面的形状。
4.大地坐标与平面坐标的转换公式:
-大地坐标转平面坐标:
平面X坐标 = N * (cosB * (L - L0))
平面Y坐标 = M + N * sinB * tan(B - B0)
-平面坐标转大地坐标:
B=B0+(Y-M)/N
L = L0 + X / (N * cosB)
H = (N / cosB) - N
其中,N、M、B0、L0分别代表椭球的参数计算中的一些辅助数值,H 代表大地高。
下面是一个示例的坐标正反算计算程序:
```python
import math
class CoordinateConverter:
def __init__(self, a, b, e, lon_origin, lat_origin):
self.a = a
self.b = b
self.e = e
self.lon_origin = lon_origin
t_origin = lat_origin
def geodetic_to_plane(self, lon, lat):
lon_diff = lon - self.lon_origin
M = self.a * (1 - self.e ** 2) / (1 - self.e ** 2 * math.sin(t_origin) ** 2) ** 1.5
N = self.a / math.sqrt(1 - self.e ** 2 *
math.sin(t_origin) ** 2)
X = N * math.cos(t_origin) * lon_diff
Y = M + N * math.sin(t_origin) * math.tan(lat - t_origin)
return X, Y
def plane_to_geodetic(self, X, Y):
M = self.a * (1 - self.e ** 2) / (1 - self.e ** 2 *
math.sin(t_origin) ** 2) ** 1.5
N = self.a / math.sqrt(1 - self.e ** 2 *
math.sin(t_origin) ** 2)
lat = t_origin + (Y - M) / N
lon = self.lon_origin + X / (N * math.cos(lat))
H = (N / math.cos(lat)) - N
return lon, lat, H
#示例用法
#大地坐标转平面坐标
X, Y = converter.geodetic_to_plane(lon=121, lat=41)
print("平面坐标:", X, Y)
#平面坐标转大地坐标
print("大地坐标:", lon, lat, H)
```
注意:在实际使用时,需要根据具体的椭球参数和坐标系定义进行适当修改,以满足实际需求。