正反算选择程序:ZS-FS
Deg: //设置角度模式
20→DimZ: //扩展变量
“1LZ=>XY,2XY=>LZ”?U: //正反算选择,正算选1,反算选2
If U=1: ThenProg”ZS-XH”:IfEnd: //进入正算循环主程序
IfU=2:Then Prog”FS-XH”:IfEnd: //进入反算循环主程序
正算循环主体程序ZS-XH
“XL-XZ“?U: //选择线路 1~N
Lbi0:”L=”?L:”Z=”?Z: //输入桩号和边距
Porg”ZS-XH-1“: //运行正算循环子程序
Goto0:
正算循环子程序ZS-XH-1
Prog”PM-XL-XZ”: //进入平面线路选择程序对线路线元进行选择
Prog”CHAOXIAN-CL”: //里程超限处理
Prog”GL-ZS”: //进入坐标正算程序
Prog”GL-BZ-ZS”: //进入公路边桩正算程序
Prog”GC-XL-XZ”: //进入高程线路选择程序对线路线元进行选择
Prog”GC”: //进入高程部分提取中桩高程
Prog”ZS-XS”: //进入正算显示程序,提取正算三维结果
Goto0:
反算循环主体程序FS-XH
0→Z:“XL-XZ”?U: //选择线路 1~N
Lbi0:
“L”?L:“X=”?T:“Y=”?S: //输入起算假定桩号,实测X Y
Prog”GL-FS”: /进入公路反算程序
Prog”GC-XL-XZ”: //进入高程线路选择程序对线路线元进行选择
Prog”GC”: //进入高程部分提取中桩高程
Prog”FS-XS”: //进入反算显示程序
Goto0:
坐标正算程序GL-ZS
.1739274226→I:.3260725774→J:
.0694318442→K:.3300094782→E : //四节点法计算系数录入
1-E→F:1-K→M:
Q+KrO(C+KD) →K: //数据库要用X、Y、Q作为起点坐标方位角
Q+ErO(C+ED) →E: //r是弧度,输入方法FUNCTION 选5
Q+FrO(C+FD) →F:
Q+MrO(C+MD) →M:
X+O(ICos(K)+JCos(E)+JCos(F)+ICos(M)) →X: //计算出X坐标
Y+O(ISin(K)+JSin(E)+JSin(F)+ISin(M)) →Y: //计算出Y坐标
Q+Or(C+D) →Q: //计算出算点方位角,O是字母,r是弧度:
边桩坐标计算程序GL-BZ-ZS
“XJ”?→A:X+Zcos(Q+A) →G: //计算出边桩X坐标
Y+ZSin(Q+A) →M: //计算出边桩Y坐标
公路反算程序GL-FS
Do:Porg”PM-XL-XZ”: //进入平面线路选择程序
Porg”CHAOXIAN-CL”: //里程超限处理程序
Porg”GL-ZS”: //进入公路正算4节点程序
T-X→I:S-Y→J: //试算点与测点X,Y距离差
Pol(I,J):J-Q→J: //方位角转换为接近试算点到测点的值:
Rec(I,J): //计算出X差和Y差(X里程,J边)
L+I→L: //修改后的里程
Abs(I) →I: //修改值的绝对值
LpWhile I>0.001: //小于一毫米通过,大于一毫米循环计算
中桩高程计算程序GC
If I-A<0:Then1→H:IfEnd: //开口向上部分赋值
IfI-A=0:ThenGoto1: IfEnd: //无竖曲线部分赋值
IfI-A>0:Then-1→H:IfEnd: //开口向下时赋值
(L-C)I+K+(L-C)^2/(2E)H→I: //计算得出竖曲线部分中桩高程
Goto2:Lbi1:
K+(L-C)I→I: //计算得出无竖曲线部分中桩高程
Lbi2:
正算显示ZS-XS
“FWJ”:Q◢ //显示计算里程方位角
“ZHONG-X”:X◢ //显示中线X坐标
“ZHONG-Y”: Y◢ //显示中线Y坐标
“ZHONG-GC”:I◢ //显示中桩高程
“B-X”:G◢ //显示边桩X坐标
“B-Y”: M◢ //显示边桩Y坐标
反算显示FS-XS
“L”:L◢ //显示计算里程
“Z”:J◢ //显示计算边距
“ZHONG-GC”:I◢ //显示中桩高程
里程超限CHAOXIAN-CL
If L<A:Then “L-<<<”;Stop:IfEnd: //小于本路线最小里程提示,退出程序
If L>B: Then”L+>>>”:Stop:IfEnd: //大于本路线最大里程提示,退出程序
数据库部分
1、平曲线数据库
平面线路选择程序PM-XL-XZ
U=1=>Prog”QXYS”: //进入假定线路活大线。
U=2=>Prog”X2”: //进入路线2
U=3=>prog”X3”: //进入路线3
(P-R)/(2HPR)→D:
L-O→O: //正算程序需要补充部分
OD→D:
1/P→C:
一号线路QXYS
线路起点里程→A:线路终点里程→B:
If L≤第一线元止点里程:Then 起点X坐标→X:起点Y坐标→Y:
起点半径(左-,右+)→P:止点半径(左-,右+)→R:本线元长度→H:
线元起点桩号→O:起点方位角→Q:Return:IfEnd:
If L≤第二线元止点里程:。。。 。。。Return:
2、高程数据库部分
说明:输入部分:L为计算里程,C为起点里程,,I为纵向前坡坡度,A为纵向后坡坡度,E为半径, K为起点高程,
高程线路选择程序GC-XL-XZ
U=1=>Prog”GC1”: //进入线路高程1
U=2=>Prog”GC2”: //进入线路高程2
U=3=>Prog”GC3”: /进入线路高程3
一号线路高程GC1
If L≤该段止点里程:Then(前坡 例0。01)→I:(后坡 例-0。034)→A:(竖曲线半径)→E:(起点高程)→K:(起点桩号)→C:止点桩号→D:Return:Ifend;
If L≤该段止点里程:。。。 。。。Return:
直线段不需要输入半径,直线段的前后坡度相同,输入本坡值,