坐标反算(VB编程代码)

合集下载

坐标正反算(带高程,可以算任何线性)

坐标正反算(带高程,可以算任何线性)

100→DimZ:”ZS=1,FS=2”?Q:”K+”?MIf Q=1:Then Goto A:Else Goto S:IfEndLb1 S“X1=”?S“Y1=”?TLb1 AIf M<23285.856(第一缓和曲线起点):Then 22396.61(起点交点)→Z:3049173.247(起点X坐标)→A:121°1°16.97°(起点方位角)→C: C:236818.413(起点Y坐标)→B:1×1020(起点半径)→R:0(右转输入0,左转输入1)→F:0(起点缓和曲线长)→L:Goto 0:IfEndIf M<23647.847(第二缓和曲线起点或圆曲线终点):Then 23285.856(第一缓和曲线起点)→Z:3048706.061(起点X坐标)→A:121°1°16.97°(起点方位角)→C:237595.285(起点Y坐标)→B:640(起点半径)→R:0(右转输入0,左转输入1)→F:180(缓和曲线长)→L:Goto 0:IfEndIf M<23827.847(第二缓和曲线终点):Then 3048473.122(起点X坐标)→A:237868.071(起点Y坐标)→B: 145°22°16.81°(线元方位角)→C :(1÷640)(上一段曲率半径)→D: 1÷(1×1020)(下一段曲率半径)→E:23647.847(第二缓和曲线起点或圆曲线终点)→Z:23827.847→H:Goto H:IfEndIf Q=2:Then 0→U:0→O: Else “U=”?U: “O=”?O:IfEndM-Z→Z[12]If√(Z[12]2)<L:Then Goto 1:IfEndIf√(Z[12]2)≥L:Then Goto 2:IfEndLb1 1Z[12]- Z[12]5÷40÷R2÷L2→Z[18](-1)F×((Z[12]3÷6÷R÷L)- Z[12] 7÷3366÷R3÷L3) →Z[19] A+ Z[18]cos(C)- Z[19]sin(C) →NB+ Z[18]sin(C)+Z[19]cos(C) →WC+90×(-1)F×Z[12]2◢(LRπ)→Z[14]If Q=2:Then Goto F:IfEndN+Ucos(Z[14]+O) →XW+Usin(Z[14]+O) →Y“JSGC=1”?→Z[25]If Z[25]=1:Then Prog “GAOCHEN”:IfEnd“X=”:X◢“Y=”:Y◢Goto 3Lb1 2((Z[12]-L) ÷R+L÷(2R)) ×180÷π→Z[13]Rsin(Z[13]+L÷2-L3÷240÷R2→Z[18](-1)F×(R×(1-cos(Z[13]))+ L2÷(24R)- L4÷2688÷R3) →Z[19] A+ Z[18]cos(C)- Z[19]sin(C) →NB+ Z[18]sin(C)+Z[19]cos(C) →WIf R=1×1020:Then C→Z[14]:Else C+90×(-1) F×(2Z[12]-L) ÷R ÷π→Z[14]:IfEndIf Q=2:Then Goto F:IfEndN+Ucos((-1)F×Z[13]+C+O) →XW+Usin((-1)F×Z[13]+C+O) →Y“JSGC=1”?→Z[25]If Z[25]=1:Then Prog “GAOCHEN”:IfEnd“X=”:X◢“Y=”:Y◢Goto 3Lb1 H(E-D)÷Abs(H-Z)→Z[15]Abs(M-Z)→Z[16]Z[15]×Z[16]→Z[17](C+90×Z[16](Z[17]+2×D)÷π)→Z[14](C+15×Z[16](Z[17]÷12+2×D)÷(2π)→Z[1](C+45×Z[16](3×Z[17]÷12+2×D)÷(2π)→Z[2](C+75×Z[16](5×Z[17]÷12+2×D)÷(2π)→Z[3](C+105×Z[16](7×Z[17]÷12+2×D)÷(2π)→Z[4](C+135×Z[16](9×Z[17]÷12+2×D)÷(2π)→Z[5](C+165×Z[16](11×Z[17]÷12+2×D)÷(2π)→Z[6](C+15×Z[16]( Z[17]÷6+2×D)÷π→Z[7](C+30×Z[16](2 Z[17]÷6+2×D)÷π→Z[8](C+45×Z[16]( 3Z[17]÷6+2×D)÷π→Z[9](C+60×Z[16](4 Z[17]÷6+2×D)÷π→Z[10](C+75×Z[16](5 Z[17]÷6+2×D)÷π→Z[11]A+Z[16](cos(C)+4(cos(Z[1])+cos(Z[2])+cos(Z[3]+cos(Z[4])+cos(Z[ 5])+cos(Z[6]))+2(cos(Z[7])+cos(Z[8])+cos(Z[9]+cos(Z[10])+cos(Z[ 11]))+cos(Z[14]))÷36→NB+Z[16](sin(C)+4(sin(Z[1])+sin(Z[2])+sin(Z[3]+sin(Z[4])+sin(Z[5] )+sin(Z[6]))+2(sin(Z[7])+sin(Z[8])+sin(Z[9]+ sin (Z[10])+ sin (Z[11]))+ sin (Z[14]))÷36→WIf Q=2:Then Goto F: Else “U=”?U: “O=”?O:IfEndRec(U,Z[14]+O)N+I→XW+J→Y“JSGC=1”?→Z[25]If Z[25]=1:Then Prog “GAOCHEN”:IfEnd“X=”:X◢“Y=”:Y◢Goto 3Pol(S-N,T-W)If (T-W)<0:Then –I→G:Else I→G:IfEndIf J<0:Then J+360→J:IfEndJ-Z[14] →PIf P<0:Then P+360→P:IfEndIf Abs(I×cos(P))>0.005:Then M+(I×cos(P)) →M:Goto A:IfEnd“K=”:M◢“D=”:G◢“JSGC=1”?→Z[25]If Z[25]=1:Then Prog “GAOCHEN”:IfEnd“X=”:X◢“Y=”:Y◢Goto 9Lb1 3“CZX=”?S: “CZY=”?T:Pol(X-S,Y-T)If J≤0:Then J+360→J:IfEnd“S1=”:I◢“A1=”:J▽DMS◢Goto 9子程序If M<24317:Then 724.99→Z[21]:22900→K:-2.6÷100→Z[22]:1×1020→Z[23]:Goto N:IfEndIf M<25043:Then 689.468→Z[21]:24317→K:-2.6÷100→Z[22]:-22000→Z[23]:Goto N:IfEndIf M<25830:Then 682.571→Z[21]:25043→K:0.7÷100→Z[22]: 1×1020→Z[23]:Goto N:IfEndLb1 NZ[21]+(M-K) ×Z[22]-(M-K)2÷(2 ×Z[23]) →Z[24]“GC=”:Z[24]◢“YXG=”:? →Z[26]“SR=”:? →Z[27]If Q=1:Then U→Z[29]:Else G→Z[29]:IfEndIF Z[27]=0:Then 0→Z[29]:IfEndZ[26]+Z[24]+√(Z[27]2-Z[29]2) →Z[28]“FY GAO=”:Z[28]◢说明Z[22] 纵坡Z[23] 半径(凹为“-”凸为“+”)Z[21] 起算点高程。

坐标反算

坐标反算

坐标反算(4X00)下面两篇文章均来自本站的论坛==== 1 ===坐标反算(源程序)File ZBFS1: M“X0” : N“Y0” : A“PJ” : R : L“LS” : T : O“L” : H“ZH” : F“FWJ”2: Z[1]=P“XJD”+T cos ( F+180) : Z[2]=K“YJD”+T sin ( F+180)3: U“R+1,L-1”4: Z[3]=H+L : Z[4]=H+O-L : Z[5]=H+O5: Lbl 0 : C“LC” : Z[7]=Abs(C-H)6: Prog“KL”7: S=-((X-M)sin(Q+90)-(Y-N) cos (Q+90) : Abs S<0.0001 C“ LC ” ◢W=“LP ”= ( X-M ) sin Q-(Y-N) cos Q◢C = C+S : Goto 0 △File KL1: C≤H Z[8]=-Z[7] : Z[9] = 0 : Z[10] = 0 : Goto 2 △2: C≤Z[3] Z[8]= Z[7]-Z[7] ^5÷40÷R2÷L2 : Z[9] = Z[7]^3÷6÷R÷L-Z[7] ^7÷336÷R^3÷L^3 : Z[10] = 90 Z[7] 2÷R÷L÷Л : Goto 2 △3: C≤Z[4] Z[10] = 90 L÷R÷Л +180( Z[7] -L)÷R÷Л : Rsin (Z[10]+0.5L-L^3÷240÷R2 : Z[9] = R(1-cosZ[10] )+L2÷24÷R : Goto 2 4: C≥Z[5] X=-( Z[7] -O) : Y = 0 : Z[10] = A : Goto 1 △5: C≥Z[4] Z[10]= A-90 (O-Z[7] ) 2 ÷R÷L÷Л :X = (O-Z[7] )-(O-Z[7] )^5÷40÷R2÷L2 : Y = (O-Z[7] )^3÷6÷R÷L-(O-Z[7] )^7÷336÷R^3÷L^3 △6: Lbl 1 : Z[8] = T+(T-X) cos A-Y sin A : Z[9] =(T-X) sin A+ Y cos A : Goto 2 △7: Lbl 2 : Pol (Z[8],Z[9]) : Z[7] =F+JU : Q=F+Z[10] U : X=Z[1] + IcosZ[7] : Y=Z[2] + I sin Z[7]==== 2 ====用于CASIO4X00计算器的坐标反算程序用于CASIO4X00计算器的坐标反算程序(已知两坐标求算其平距和方位角)(最简)源程序如下:程序名:【AZIMUTH】I=0:J=0LbI0NormDeg{DGXY}D"XA"G"XB"X"XB"Y"YB"Pol(X-D,Y-G)J<0=>J=J+360△Fix6J"AZIMUTH A-B"=IntJ+.01Int(60FracJ)+.006Frac(60FracJ)▲Fix3I"H.DIST="▲Goto0特点:界面友好、简单易用、输出方便注意:本程序在CASIO4800上调试运行通过。

坐标反算程序

坐标反算程序

坐标正反算程序(5800)反算主程序:FS1.Prog"SJ"2.90U÷π÷R→H 第一回旋线所对应圆心角β013.90V÷π÷R→T 第二回旋线所对应圆心角β024.Rec((Z[3]+Z[4]÷cosK)÷tanK,F+90G):Z[5]+I→Z[11]:Z[6]+J→Z[12]ZH 、HZ点垂线交点坐标5.F-90G→Z[13]ZH点与ZH、HZ点垂线交点连线方位角6.Z[13]+GH→Z[14]HY点与圆心连线方位角7.Z[13]+G(K-T)→Z[15]YH点与圆心连线方位角8.Z[15]+GT→Z[16]HZ点与ZH、HZ点垂线交点连线方位角9.Lbl 0:?X:?Y10.Pol(X-Z[11],Y-Z[12])11.If GIsin(J-Z[13])<0:Then Pol(N-X,E-Y):Rec(I,F-J)12.Q-I→Z: J→S:Cls:“Z=”:Locate3,1,Z:”S=”:Locate 3,2,S◢13.Goto 0:IfEnd 第一直线14.If GIsin(J-Z[16])>0:Then Pol(X-N,Y-E):Rec(I,J-F-GK)15.I-Z[4]+D→Z: J→S:Cls:“Z=”:Locate3,1,Z:”S=”:Locate 3,2,S◢16.Goto 0:IfEnd 第二直线17.If GIsin(J-Z[13])>0:Then Pol(X-Z[9],Y-Z[10])18.If GIsin(J-Z[14])<0:ThenZ[13]→P:U→H:A→M:1→T:Z[5]→Z[17]:Z[6]→Z[18]:F→Z[19]:Goto 1:IfEnd 第一缓和曲线19.If GIsin(J-Z[15])<0:Then Abs(J-Z[14])→Z[20]:Z[20]>360?Z[20]-360→Z[20]20.B+πRZ[20]÷180→Z: G(R-I)→S:Cls:“Z=”:Locate3,1,Z:”S=”:Locate 3,2,S◢21.Goto 0:IfEnd 圆曲线22.If GIsin(J-Z[15])>0:Then Z[16]→P:V→H:D→M:-1→T:Z[7]→Z[17]:Z[8]→Z[18]:F+GK+180→Z[19]:Goto 1:IfEnd 第二缓和曲线23.Lbl 1:Pol(X-Z[11],Y-Z[12]): Abs(J-P)→J:J>180?J-360→J:JπR÷180→L L为以R为半径,以所求点-(Z[11],Z[12])连线与P的角度差计算得的弧长24.Lbl 2:L-L5÷(40R2H2)+L9÷(3456R4H4)-L13÷(599040R6H6)→O25.L3÷(6RH)-L7÷(336R3H3)+L11÷(42240R5H5)-L15÷(9676800R7H7)→P26.Rec(sqrt(O2+P2),Z[19]+TGtan-1(P÷O)):Z[17]+I→O:Z[18]+J→P27.Pol(X-O+0.00001,Y-P+0.00001):Rec(I,J-(Z[19]+90TGL2÷(πRH)))28.If AbsI>0.001:Then L+I→L:Goto 2:Else M+TL→Z:TJ→S:Cls:“Z=”:Locate3,1,Z:”S=”:Locate 3,2,S◢29.Goto 0:IfEnd子程序(曲线要素数据):SJ1.20→DimZ:?M2.If M=1:Then *→F:*→K:*→G:*→U:*→V:*→R:*→Q:*→N:*→E:Goto 1:IfEnd3.If M=2:Then *→F:*→K:*→G:*→U:*→V:*→R:*→Q:*→N:*→E:Goto 1:IfEnd4.………………5.Lbl 1:U2÷24÷R-U4÷2688÷R3+U6÷506880÷R5→Z[1]Z[1]第一回旋线内移值P16.V2÷24÷R-V4÷2688÷R3+V6÷506880÷R5→Z[2]Z[2]第二回旋线内移值P27.(R+Z[2]-(R+Z[1])cosK)÷sinK→M8.(R+Z[1]-(R+Z[2])cosK)÷sinK→P9.M+U÷2-U3÷240÷R2→Z[3]Z[3]第一切线长T110.P+V÷2-V3÷240÷R2→Z[4]Z[4]第二切线长T211.πRK÷180+(U+V)÷2→L 曲线长(Ls1+圆+Ls2)12.Q-Z[3]→A:A+U→B:A+L→D:D-V→C ZH,HY,HZ,YH里程桩号13.0→I:0→J:Rec(Z[3],F+180):N+I→Z[5]:E+J→Z[6]ZH点坐标14.Rec(Z[4],F+GK):N+I→Z[7]:E+J→Z[8]HZ点坐标15.Rec(sqrt(M2+(R+Z[1])2),F+G(K+tan-1((R+Z[2])÷P))):N+I→Z[9]:E+J→Z[10]Z[9],Z[10] 圆心坐标注:F-起始边方位角K-转角G-线路左转输-1,右转输1U-第一回旋线长V-第二回旋线长R-圆曲线半径Q-交点桩号N,E-交点坐标Z-待求点桩号S-偏距(左偏为-,右偏为+)sqrt为根号。

工程测量坐标正反算通用程序(终极篇)

工程测量坐标正反算通用程序(终极篇)

工程测量坐标正反算通用程序(终极篇)第五篇坐标正反算通用程序(终极篇)1. 坐标正算主程序(命名为ZBZS)第1行:Lbl 0:”K=”?K:”BIAN=”? Z:”α=”?B第2行:Prog “A”第3行:”X=”:N+Zcos(F+B)◢第4行:”Y=”:E+Zsin(F+B)◢第5行:”F=”:F?DMS◢第6行:Goto 0K——计算点的里程BIAN——计算点到中桩的距离(左负右正)α——取前右夹角为正2. 坐标反算桩号和偏距主程序(命名为ZBFS)第1行:”X1=”? C:”Y1=”?D:”K1=”?K第2行:Lbl 0:Prog “A”第3行:Pol(C-N,D-E):Icos(F-J)→S:K+S→K第4行:Abs(S)>0.0001=>Goto 0第5行:”K1=”:K◢第6行:”BIAN=”:Isin(J-F)→Z◢X1——取样点的X坐标Y1——取样点的Y坐标K1——输入时为计算起始点(在线路内即可),输出时为反算点的桩号Z——偏距(左负右正)注:在9860或9960中需将第3行替换为Pol(C-N,D-E): List Ans[1]→I :List Ans[2]→J:Icos(J-F)→S:K+S →K,正反算主程序所有输入赋值多加一赋值符号(→),其他所有除数据库外的程序均保持不变3. 计算坐标子程序(命名为XYF)为了简洁,本程序由数据库直接调用,上述中的正反算主程序不直接调用此程序第1行:K-A→S:(Q-P)÷L→I第2行:N+∫(cos(F+X(2P+XI)×90÷π),0,S)→N第3行:E+∫(sin(F+X(2P+XI)×90÷π),0,S)→E第4行:F+S(2P+S I)×90÷π→F第5行:F<0=>F+360→F: F>360=>F-360→F4. 数据库(命名为A)第1行:K≤175.191=>Stop(超出后显示Done)第2行:175.191→A:428513.730→N:557954.037→E:92°26′40″→F:0→P:1/ 240→Q:70.417→L:K≤A+L =>GoTo 1(第一缓和曲线)第3行:245.607→A: 428507.298→N:558024.092→E: 100°50′59.4″→F: 1/240→P:1/240→Q:72.915→L: K≤A+L =>Goto 1(圆曲线)第4行:318.522→A: 428482.988→N:558092.538→E: 118°15′25.2″→F: 1/240→P: 0→Q: 55.104→L: K≤A+L =>Goto 1(第二缓和曲线)第5行:373.627→A:428453.283→N:558138.912→E:124°50′4.5″→F:0→P:-1/180→Q:67.222→L:K≤A+L=>Goto 1:Stop(下一曲线的第一缓和曲线,示例为S型曲线,超出后显示Done)第6行:Lbl 1:Prog “XYF”A——曲线段起点的里程N——曲线段起点的x坐标E——曲线段起点的y坐标F——曲线段起点的坐标方位角P——曲线段起点的曲率(半径倒数,直线为0,左负右正)Q——曲线段终点的曲率(半径倒数,直线为0,左负右正)L——曲线段长度(尽量使用长度,为计算断链方便)说明:(1)正算主程序可以计算一般边桩的坐标,如要计算类似涵洞端墙的坐标需增加两个变量,具体方法参考本程序集中的第1篇辛普生公式的坐标计算通用程序(2)适用于任意线形:直线(0→P、0→Q)、圆曲线(圆半径倒数→P、圆半径倒数→Q)、缓和曲线(0或圆半径倒数→P、圆半径倒数或0→Q)、卵形曲线(接起点圆的半径倒数→P、接终点圆的半径倒数→Q),曲线左转多加一负号。

教你如何通过ExcelVBA编写测量坐标计算程序

教你如何通过ExcelVBA编写测量坐标计算程序

教你如何通过ExcelVBA编写测量坐标计算程序(入门篇)摘要:认识VBA、理解VBA,并利用Office Excel VBA编写测量坐标计算程序。

关键词:Excel VBA 程序坐标编写了解:VBA是什么?简单的说就是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案。

可以用E xcel的宏语言来使E xcel自动化运行等……Microsoft让它开发出来的应用程序共享一种通用的自动化语言——Visual Basic For Application(VBA),可以认为VBA是非常流行的应用程序开发语言Visual Basic的子集,事实上VBA是VB应用程序的版本,尽管存在有些不同VBA和VB在结构上仍然十分相似。

如果你已经了解VB会发现学习VBA非常快。

相应的学完VBA会给学习VB打下坚实的基础。

理由:选择Excel VBA编程的理由是因为它的计算功能非常强大,是现今任何编程计算器无法逾越的。

它运用范围广,计算速度快,计算精度高,合理化显示等。

或许很多测量人员对Excel VBA还有些陌生,主要是大家寄托于计算器、电脑、手机PDA等系列软件使用。

Excel VBA对于大多数测量人员而没有系统学过计算机语言程序设计的人群来讲有一定含糊,不过只要有基本数学知识、测量常识和逻辑理解的人,都能通过Excel VBA编写设计出称心如意的测量程序。

目标:基于Excel VBA的测量坐标计算程序的设计目标是将繁琐计算过程转入到计算机中,利用程序语言的重复性原理,在计算机中可将坐标计算得出更精确的结果,使坐标计算更加可靠。

最终目标是让用户可以通过Excel VBA自行完成坐标计算程序设计。

认识:学习VBA到底需要什么基础和了解些什么?学习VBA需要认识英文字母、一般的单词(如:函数所用的过程)、数学基础知识、测量常识、逻辑性思维即可。

在VBA中需要了解VBA的过程、变量、属性、方法、事件、语句等。

5800P编程计算器坐标正反算程序

5800P编程计算器坐标正反算程序

5800P编程计算器坐标正反算程序一,主程序文件名(TYQXJS)LbI 4:“1.SZ=> XY’’:’’2.XY=>SZ’’︰?N:?S:Prog“SUB0”1÷P→C:(P-R) ÷(2HPR) →D:180÷π→E:N=1=> Goto1:Goto2LbI 1: ?Z:Abs(s-O)→W︰Prog“SUB1”︰“XS=”:X◀“YS=”:Y◀F-90→F:”FS=”:F▶DMS◀Goto 4LbI 2:?X:?Y:X→I:Y→J:Prog”SUB2”:O+W→S﹕“S=”S◀“Z=”:Z◀Goto 4二:子程序(文件名SUB1)0.1739274226→A:0.3260725774→B:0.0694318442→K:0.3300094782→L:1-L→F:1-K→M:U+W(Acos(G+QEKW(C+KWD))+Bcos(G+QELW(C+QELW(C+LWD))+Bcos(G+QEFW(C+FWD))+Acos(G+QEMW(C+MWD)))→X:V+W(Asin(G+QEKW(C+KWD))+Bsin(G +QELW(C+LWD))+Bsin(G+QEFW(C+FWD))+Asin(G +QEMW(C+QEMW(C+QEMW(C+MWD)))→Y:G+QEW(C+WD)+90→F:X+Zcos(F)→X:Y+Zsin(F)→Y 三:反算子程序(文件名SUB2)G-90→T:Abs((Y-V)Cos(T)-(X-U)Sin(T)→W:0→Z:LbI 0:Prog“SUB1”:T+QEW(C+WD)→L:(J-Y)cos(L)-(I-X)sin(L)→Z:IfAbs(Z)<0.000001:ThenGoto1:Else W+Z→W:Goto0LbI 1:0→Z:Prog“SUB1”:(J-Y)÷sin(F)→Z:四:数据库(文件名)LbI 1:If S<止点里程:Then起点方位角→G:起点里程→O:起点X坐标→X:起点Y坐标→Y:起点半径→P:止点半径→R:曲线长→H:左转(-1)右转(1)直线(0)→Q:Return:IfEnd数据库说明:每增加一段曲线就增加以上一句上面的语句,当半径为无穷大时以10的45次方代替,左转输入负1,右转输入正1五:程序输入及显示说明1:输入部分1,SZ=>XY2,XY=>SZN? 选择计算方式输入1表示由里程边距计算坐标(正算)输入2表示由坐标计算里程及边距(反算)S? 正算时输入所求点的里程,反算时为所求点的近似里程(注意反算时的近似里程不能跨曲线,如果跨曲线需要进行两次反算,并以第一的里程结果作为近似里程,否则,反算的里程及边距不对。

直线坐标正反算带方位角计算(ZXZBZFS)5800程序

直线坐标正反算带方位角计算(ZXZBZFS)5800程序

直线坐标反算(ZXZBZFS)程序(带方位角计算)第一步:Deg:Fix 3:20→DimZ第二步:“QDX=”?X:“QDY=”?Y:“QDLC”?Z:“FWJ”?A:A=0=>Goto A:Goto 0第三步:Lbl A:“ZDX=”?R:“ZDY=”?N:Pol(R-X,N-Y):J<0=>J+360→J:J→A:“FWJ=”:A►DMS◢第四步:“D=”:I◢第五步:Lbl 0第六步:“ZS[1],FS[2]”?B第七步:If B=1:Then Goto 1:Else Goto 5:IfEnd第八步:Lbl 1第九步:“JSLC=”?K:Rec(Abs(K-Z),A):If K-Z>0:Then I+X →W;J+Y→P:Else X-I→W:Y-J→P:IfEnd第十步:Lbl 2:“JJ=”?Q:Q=0=>Goto 1第十一步:“JSPJ=”?S:S=0=>Goto 3:A+Q→E:If E>360:Then E-360→E:IfEnd:Rec(Abs(S),E):If S>0:Then W+I→G:P+J→V:Else W-I→G:P-J→V:Goto 4:IfEnd:“X=”:G◢第十二步:“Y=”:V◢第十三步:Goto 1第十四步:Lbl 3:W→G:“X=”:G◢第十五步:P→V:“Y=”:V◢第十六步:Goto 1第十七步:Lbl 4:“X=”:G◢第十八步:“Y=”:V◢第十九步:Goto 1第二十步:Lbl 5第二十一步:“FSX=”?C:“FSY=”?D第二十二步:Pol(C-X,D-Y):“LC=”:I×cos(J-A)+Z◢第二十三步:“PJ=”:I×sin(J-A)◢第二十四步:Goto 5QDLC:设置直线坐标中心里程,设置为0;QDX、QDY:设置直线坐标中心坐标;ZDX、ZDY:设置直线的第二坐标计算方位角;FSX、FSY:需要反算的坐标;X、Y:计算出的放样坐标;D:设置计算方位角两个坐标之间的距离;FWJ:设置坐标方位角;FSX、FSY:需要计算的坐标;JJ:直线坐标系水平与直线方向的夹角;JSLC:需计算的坐标相对该直线坐标系的前后距离;JSPJ:需计算的坐标相对该直线坐标系的左右距离,左为负,右为正;PJ:反算出的偏距,作为负,右为正;LC:反算出的里程。

高斯投影正反算及换带计算VB程序设计

高斯投影正反算及换带计算VB程序设计

摘要本设计主要阐述了高斯投影分带以及高斯投影坐标正、反算的推导公式,从而根据公式来编写基于VB语言基础上的换带及坐标转换程序。

作者系统介绍了测量中经常使用的坐标系以及地图投影的概念和高斯投影的具体含义,叙述了换带和临带计算的原因以及它们在运算时的原理、过程,详细叙述了在VB语言中实现的原理基础以及代码的编写设计。

在设计中根据高斯的正反算公式写出了基于VB语言的程序设计,其程序设计任务完成了由地理坐标向54平面坐标系和80平面坐标系转换的功能,以及由54坐标系和80坐标系向地理坐标系转换的功能,同时也有同一平面坐标系不同投影带之间的换带计算和同一平面坐标系相同投影带临带计算等相互转换的功能。

关键词:高斯投影、坐标正反算、换带计算、临带换算、程序设计5程序设计5.1界面设计本程序要实现的功能是根据所选择的椭球参数和指定的分带情况,将已知地理坐标或高斯投影坐标经正算和反算求得相应的高斯坐标和地理坐标,以及相应的换带计算和临带计算。

因此需要用一个框架控件来组织椭球参数、两个框架分别组织分带选择和换算方式选择,两个框架组织地理坐标和高斯坐标,三个命令按钮分别执行投影计算、换带和临带计算。

程序设计界面如图5-1[9]图5-1 高斯投影计算程序设计界面命令按钮属性设置表如表5-1表5-1 命令按钮属性设置表对象属性值Command1 Caption BL->xy Command1 Name cmdCalc Command2 Caption 6->3 Command2 Name cmdChange Command3 Caption 临带计算Command3 Name cmdNear选择椭球框架内控件的属性值表5-2表5-2 择椭球框架内控件的属性值单选按钮控件属性设置表5-35-3 单选按钮控件属性设置表5.2程序代码设计在这里主要介绍高斯投影坐标转换的正反算代码设计,完整的代码见附录1所示。

5.2.1投影计算过程的正算子过程代码设计①54系高斯投影正算子过程Public Sub Pro54()Dim ll#, N#, a0#, a4#, a6#, a3#, a5#, cosB#cosB = Cos(B)ll = L - DoToHu(L0)N = 6399698.902 - (21562.267 - (108.973 - 0.612 * cosB * cosB) * cosB * cosB) * cosB * cosBa0 = 32140.404 - (135.3302 - (0.7092 - 0.004 * cosB * cosB) * cosB * cosB) * cosB * cosBa4 = (0.25 + 0.00252 * cosB * cosB) * cosB * cosB - 0.04166a6 = (0.166 * cosB * cosB - 0.084) * cosB * cosBa3 = (0.3333333 + 0.001123 * cosB * cosB) * cosB * cosB - 0.1666667a5 = 0.0083 - (0.1667 - (0.1968 + 0.004 * cosB * cosB) * cosB * cosB) * cosB * cosBX = 6367558.4969 * B - (a0 - (0.5 + (a4 + a6 * ll * ll) * ll * ll) * ll * ll * N) * Sin(B) * cosBY = (1 + (a3 + a5 * ll * ll) * ll * ll) * ll * N * cosBEnd Sub②80系高斯投影正算子过程Public Sub Pro80()Dim ll#, N#, a0#, a4#, a6#, a3#, a5#, cosB#cosB = Cos(B)ll = L - DoToHu(L0)N = 6399596.652 - (21565.045 - (108.996 - 0.603 * cosB * cosB) * cosB * cosB) * cosB * cosBa0 = 32144.5189 - (135.3646 - (0.7034 - 0.0041 * cosB * cosB) * cosB *cosB) * cosB * cosBa4 = (0.25 + 0.00253 * cosB * cosB) * cosB * cosB - 0.04167a6 = (0.167 * cosB * cosB - 0.083) * cosB * cosBa3 = (0.3333333 + 0.001123 * cosB * cosB) * cosB * cosB - 0.1666667a5 = 0.00878 - (0.1702 - 0.20382 * cosB * cosB) * cosB * cosBX = 6367452.1328 * B - (a0 - (0.5 + (a4 + a6 * ll * ll) * ll * ll) * ll * ll * N) * Sin(B) * cosBY = (1 + (a3 + a5 * ll * ll) * ll * ll) * ll * N * cosBEnd Sub5.2.2投影计算过程的反算子过程代码设计①54系高斯投影反算子过程[12]Public Sub ConPro54()Dim Bf#, bet#, Z#, Nf#, b2#, b3#, b4#, b5#, cos2B#, cos2Bf#bet = X / 6367558.4969cos2B = Cos(bet) * Cos(bet)Bf = bet + (50221746 + (293622 + (2350 + 22 * cos2B) * cos2B) * cos2B) * 0.0000000001 * Sin(bet) * Cos(bet)cos2Bf = Cos(Bf) * Cos(Bf)Nf = 6399698.902 - (21562.267 - (108.973 - 0.612 * cos2Bf) * cos2Bf) * cos2BfZ = Y / (Nf * Cos(Bf))b2 = (0.5 + 0.003369 * cos2Bf) * Sin(Bf) * Cos(Bf)b3 = 0.333333 - (0.166667 - 0.001123 * cos2Bf) * cos2Bfb4 = 0.25 + (0.16161 + 0.00562 * cos2Bf) * cos2Bfb5 = 0.2 - (0.1667 - 0.0088 * cos2Bf) * cos2BfB = Bf - (1 - (b4 - 0.12 * Z * Z) * Z * Z) * Z * Z * b2L = DoToHu(L0) + (1 - (b3 - b5 * Z * Z) * Z * Z) * ZEnd Sub②80系高斯投影反算子过程Public Sub ConPro80()Dim Bf#, bet#, Z#, Nf#, b2#, b3#, b4#, b5#, cos2B#, cos2Bf#bet = X / 6367558.4969cos2B = Cos(B) * Cos(B)Bf = bet + (50221746 + (293622 + (2350 + 22 * cos2B) * cos2B) * cos2B) * 0.0000000001 * Sin(bet) * Cos(bet)cos2Bf = Cos(Bf) * Cos(Bf)Nf = 6399698.902 - (21562.267 - (108.973 - 0.612 * cos2Bf) * cos2Bf) * cos2BfZ = Y / (Nf * Cos(Bf))b2 = (0.5 + 0.00336975 * cos2Bf) * Sin(Bf) * Cos(Bf)b3 = 0.333333 - (0.166667 - 0.001123 * cos2Bf) * cos2Bfb4 = 0.25 + (0.161612 + 0.005617 * cos2Bf) * cos2Bfb5 = 0.2 - (0.16667 - 0.00878 * cos2Bf) * cos2BfB = Bf - (1 - (b4 - 0.147 * Z * Z) * Z * Z) * Z * Z * b2L = DoToHu(L0) + (1 - (b3 - b5 * Z * Z) * Z * Z) * ZEnd Sub5.3程序的操作介绍下面以实例来介绍程序的操作步骤。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 坐标反算流程图 手动输入坐标
计算△X,△Y 的值
若△X,△Y 有为零 的,则直接判断方位 角。
若△X,△Y 不为零, 则计算象限角 R。
由象限角判断方 位角
输出方位角α
坐标反Sub Command3_Click() Dim Xa, Ya, Xb, Yb, M, N, Rab, R, F, R1, R2, R3 As Single pi = 3.1415926 Xa = Text1.Text Ya = Text4.Text Xb = Text2.Text Yb = Text5.Text M = Xb - Xa '求纵坐标增量 N = Yb - Ya '求横坐标增量 Rab = Math.Atn(Abs(N / M)) * 180 / pi '计算象限角 If M > 0 And N > 0 Then F = Rab '由象限角判断方位角 If M < 0 And N > 0 Then F = 180 - Rab If M < 0 And N < 0 Then F = 180 + Rab If M > 0 And N < 0 Then F = 360 - Rab If M = 0 And N > 0 Then F = 90 If M = 0 And N < 0 Then F = 270 If N = 0 And M > 0 Then F = 0 If N = 0 And M < 0 Then F = 180 R1 = Fix(F) '把弧度化为度 R2 = Fix((F - R1) * 60) R3 = Fix((((F - R1) * 60) - R2) * 60) Text3.Text = R1 & "°" & R2 & "′" & R3 & "″" Text6 = Sqr(M ^ 2 + N ^ 2) End Sub Private Sub Command2_Click() Text1 = "" Text2 = "" Text3 = "" Text4 = "" Text5 = "" Text6 = "" End Sub
3.验算算例: (1)A点坐标: (3628.022,6183.764) B点坐标(3680.017,6551.719) ,算出的方位 角为81°57′24″距离为:371.61。
(2)A点坐标(300,200) B点坐标(200,200),算出的方位角为180°00′00″,距离为100。
相关文档
最新文档