關(guān)于坐標(biāo)計(jì)算內(nèi)核
1、程序采用數(shù)據(jù)保存在擴(kuò)充存儲(chǔ)的方式,更換或補(bǔ)充數(shù)據(jù)不用修改程序。
2、線路采用線路號(hào)來區(qū)分,程序內(nèi)部和使用時(shí)都用自然里程參加計(jì)算。
3、平曲線不用區(qū)分匝道和主線,所有平曲線都轉(zhuǎn)化成交點(diǎn)資料,此交點(diǎn)可以緩和曲線不對(duì)稱、不完整,主線通常由交點(diǎn)起算、匝道均由曲線起點(diǎn)起算。每條平曲線交點(diǎn)格式為9個(gè)數(shù)據(jù)。
4、直線、圓曲線、緩和曲線分別用數(shù)學(xué)模型不同的計(jì)算子程序,保證了計(jì)算速度。直線、圓曲線子程序?yàn)榫_公式,緩和曲線計(jì)算子程序?yàn)樵瓌?chuàng)的復(fù)化段數(shù)可調(diào)的復(fù)化高斯2節(jié)點(diǎn)公式,計(jì)算精度可自由控制。(現(xiàn)暫改為固定4次復(fù)化)
數(shù)據(jù)庫編制規(guī)則
基本規(guī)則:圓曲線半徑右轉(zhuǎn)為正,坡度上坡為正,角度單位為度,邊樁轉(zhuǎn)角右轉(zhuǎn)為正,線路號(hào)為非負(fù)整數(shù),數(shù)據(jù)庫中的直圓里程應(yīng)該在起點(diǎn)和緩圓各輸入一個(gè)互差0.0001的里程。圓直點(diǎn)同樣處理。
一、目錄部分:
格式為:
起點(diǎn)里程、終點(diǎn)里程、平曲線資料起始位置、豎曲線資料起始位置、坡度資料起始位置
起點(diǎn)里程、終點(diǎn)里程、平曲線資料起始位置、豎曲線資料起始位置、坡度資料起始位置
……
各條線路依次連續(xù)排列。
二、平曲線部分:
格式為:
圓半徑
起點(diǎn)里程、緩圓里程、圓緩里程、終點(diǎn)里程、切線長(zhǎng)、交點(diǎn)X、交點(diǎn)Y、切線方位角、圓半徑
起點(diǎn)里程、緩圓里程、圓緩里程、終點(diǎn)里程、切線長(zhǎng)、交點(diǎn)X、交點(diǎn)Y、切線方位角、圓半徑
……
終點(diǎn)里程、圓半徑
各交點(diǎn)依次連續(xù)排列。
主線按圖紙?jiān)O(shè)計(jì)數(shù)據(jù)整理,匝道的線元數(shù)據(jù)組合成交點(diǎn)組合時(shí),每條曲線由直線、緩和曲線、圓曲線、緩和曲線、直線組成,對(duì)不完整緩曲要對(duì)數(shù)據(jù)進(jìn)行簡(jiǎn)單處理,不完整緩曲可以劃歸任一側(cè),不完整緩曲所在的起(終)點(diǎn)里程改為負(fù),交點(diǎn)坐標(biāo)輸入為起點(diǎn)坐標(biāo),切線長(zhǎng)輸入0即可。
三、豎曲線部分:
格式為:
前坡度、變坡點(diǎn)里程、變坡點(diǎn)高程、豎曲線半徑
前坡度、變坡點(diǎn)里程、變坡點(diǎn)高程、豎曲線半徑
……
后坡度、(0)
各豎曲線依次連續(xù)排列。
注意本程序計(jì)算單位為直坡+豎曲線,如線路最后為直坡,必須在最后一個(gè)變坡點(diǎn)里程位置填一個(gè)0,最后無直坡段可不加0
C-測(cè)量程序使用說明
運(yùn)行C程序
XL0-??選線路號(hào)
JX?輸入儀器X、JY?輸入儀器Y
0-END 1-ZS 1-F?選1正算,選2反算,選0退出
一、正算計(jì)算流程
顯示起點(diǎn)里程、終點(diǎn)里程
①K?輸入K中樁里程,輸出中樁坐標(biāo)、高、放樣數(shù)據(jù)
②L?輸入相對(duì)中樁或上點(diǎn)偏距,按EXE輸入0到①
F?輸入相對(duì)線路前進(jìn)方向右角,輸出坐標(biāo)、放樣數(shù)據(jù),到②
如正算里程輸入超出范圍重新選正反算時(shí)執(zhí)行反算,則反算剛計(jì)算的正算角樁坐標(biāo)
二、反算計(jì)算流程
①X?Y?輸入測(cè)點(diǎn)坐標(biāo),顯示起點(diǎn)里程、終點(diǎn)里程K?輸入近似里程(默認(rèn)是線路中心里程)
②輸出里程、外移距、中樁高到①
反算過程中隨時(shí)顯示里程逼近誤差
計(jì)算過程中右下角顯示的數(shù)字為緩曲計(jì)算時(shí)復(fù)化高斯公式分段數(shù)。
正反算計(jì)算過程輸入里程或任何時(shí)候中間結(jié)果里程超出對(duì)應(yīng)線路里程會(huì)回到程序起點(diǎn)。****************************************************************************************************
C-測(cè)量主程序
Do:Deg:Norm 1:Cls:”XL 0-?”?H: //輸入線路號(hào)
“JX”?V:”JY”?W:”0-END 1-Z 2-F”?U:Fix 3://輸入置儀坐標(biāo),正反算選項(xiàng)
While U=1:Prog “Z”:WhileEnd//循環(huán)正算流程(除非里程超限)
While U=2:Prog “F”:WhileEnd//循環(huán)反算流程(除非里程超限)
LpWhile U≠0:Cls:”END”//里程超限時(shí)返回程序起點(diǎn),選項(xiàng)為0則退出程序
D-讀
Z[G]→L:Z[G+1]→M:Z[G+2]→N:Z[G+3]→O:Z[G+4]→P//從Z[G]起讀5個(gè)擴(kuò)充存儲(chǔ)到L、M、N、O、P
F-三維反算
X→V:Y→W:”X”?V:”X”?W:1.5→U: //輸入測(cè)點(diǎn)坐標(biāo)
Prog “K”:U=3=>Return:2→U://近似里程,里程超限則退出
Do:Prog “P”:V-X→I:W-Y→J:I=0=>0.0001→I:Pol(I,J): //求到假定點(diǎn)斜距及方位角
J-O→J:Rec(I,J):K+I→K://得出偏距和修正后里程
Prog “K”:U=3=>Return:LpWhile Abs(I)>1m//里程超限則退出、修正值大于1mm則重新試算
Prog “W”:Prog “S”:Prog “Y”//計(jì)算里程、位置、求中樁高程
G直線計(jì)算
X+Lcos(O→X:Y+Lsin(O→Y//計(jì)算直線段坐標(biāo)
H緩和曲線計(jì)算
L(P-B)÷2÷D→D://求測(cè)點(diǎn)到起點(diǎn)曲率變化
D÷8→M:L÷8→L:1÷√(3→R:O→A://求拆分后各段曲率差、曲線長(zhǎng)、高斯2節(jié)點(diǎn)系數(shù)
For 1→C To 7 Step 2://循環(huán)4次
A+Lr(C+R)(M(C+R)+B→O:Prog”G”://計(jì)算每段的第一部分
A+Lr(C-R)(M(C-R)+B→O:Prog”G”:Next://計(jì)算每段的第二部分
A+8Lr(D+B→O//求測(cè)點(diǎn)方位角
I圓曲線計(jì)算
LPr÷2→A:2÷P*sin(A)→L:O+A→O:Prog “G”:O+A→O//用弦切角公式計(jì)算圓曲線坐標(biāo)
K里程判斷
5H+2→G:Prog “D”:U=1.5=>(L+M)÷2→K:N→G:O→Z://提取平、縱、橫坡要素要素指針
If Int(U)=1:Then Cls:”QD=”:”ZD=”:Locate 4,1,L:Locate 4,2,M:?K:IfEnd://提示起終點(diǎn)里程
Abs(2K-L-M)>M-L=>3→U//里程超限令正反算選項(xiàng)為3
P-平面
While K>Z[G+9]:G+9→G:WhileEnd://查詢符合要求的交點(diǎn)
G+4→G:Prog “D”:-L→L:M→X:N→Y:Prog “G”:1÷P→P://讀取切線長(zhǎng)、交點(diǎn)坐標(biāo)、方位角、半徑
G-5→G:Z[G+1]→Q:K-Abs Q→L://讀取起點(diǎn)里程、求測(cè)點(diǎn)到起點(diǎn)長(zhǎng)
If L≤0:Then Prog “G”:Return:IfEnd://小于起點(diǎn)計(jì)算直線坐標(biāo),并退出子程序
0→B:Q<0=>1÷Z[G]→B://計(jì)算起終點(diǎn)曲率,起點(diǎn)里程小于0起點(diǎn)曲率為上交點(diǎn)半徑倒數(shù)
Abs(Q→D:Z[G+2]→Q:Q-D→D://讀取緩圓里程、求第一緩曲全長(zhǎng)
If L≤D:Then Prog “H”:Return:IfEnd://如果測(cè)點(diǎn)到起點(diǎn)長(zhǎng)小于緩一長(zhǎng)計(jì)算緩曲坐標(biāo),并退出子程序
D→L:Prog “H”:K-Q→L://令計(jì)算長(zhǎng)等于緩曲長(zhǎng)計(jì)算緩圓坐標(biāo)、求測(cè)點(diǎn)到緩圓長(zhǎng)
Q→D:Z[G+3]→Q:Q-D→D://求圓曲全長(zhǎng),讀取圓緩里程
If L≤D:Then Prog “I”:Return:IfEnd://如果測(cè)點(diǎn)到緩圓長(zhǎng)小于圓曲長(zhǎng)計(jì)算圓曲坐標(biāo),并退出子程序
D→L:Prog “I”:K-Q→L://令計(jì)算長(zhǎng)等于圓曲長(zhǎng)計(jì)算圓緩坐標(biāo)、求測(cè)點(diǎn)到圓緩長(zhǎng)
Q→D:Z[G+4]→Q:Abs(Q)-D→D://求第二緩曲全長(zhǎng),讀取緩直里程
P→B:0→P:Q<0=>1÷Z[G+18]→P:-Q=Z[G+10]=>1÷Z[G+11]→P//緩二起終點(diǎn)曲率
If L≤D:Then Prog “H”:Return:IfEnd://如測(cè)點(diǎn)到圓緩小于緩二全長(zhǎng)計(jì)算緩曲坐標(biāo),并退出子程序
D→L:Prog “H”:K-Abs(Q→L://令計(jì)算長(zhǎng)等于緩二長(zhǎng)計(jì)算緩直坐標(biāo),求測(cè)點(diǎn)到緩直長(zhǎng)
Prog “G”//計(jì)算第二直線坐標(biāo)
S-豎曲線
Z→G:G=0=>Return://讀取豎曲線指針
Do:Prog “D”:P-L→D:Oabs(D)÷D→R://讀前坡、變坡里程、變坡高、半徑、后坡,算坡差、半徑凹凸
RD÷2→T:G+4→G://計(jì)算切線長(zhǎng),完成豎曲要素準(zhǔn)備
LpWhile K>M+T And Z[G+1]≠0://里程大于本豎曲終點(diǎn)且下一變坡里程不為0讀下一曲線
K-M→M:N+LM→Z:M+T→M://計(jì)算測(cè)點(diǎn)到變坡里程長(zhǎng),計(jì)算前坡高,求測(cè)點(diǎn)到豎曲起點(diǎn)長(zhǎng)
If M>0:Then Z+M2÷2÷R→Z:L+MD÷2÷T→L:IfEnd://測(cè)點(diǎn)在豎曲范圍,計(jì)算豎曲線高、測(cè)點(diǎn)坡度
M-T→M:IF M>T:Then N+PM→Z:P→L:IfEnd//里程大于豎曲線終點(diǎn),計(jì)算后坡高,后坡坡度
V-放樣距離角度
Cls:”L=”:”<=”:Pol(X-V,Y-W:Locate 3,1,I://計(jì)算并顯示放樣距離
J<0=>J+360→J:J►DMS▲//顯示放樣方位角
W-位置顯示
Cls:Fix 3:”K=”:”J=”:Locate 3,1,K:Locate 3,2,J//顯示里程、偏移值
X-顯示坐標(biāo)
Cls:”X=”:”Y=”:Locate 3,1,X:Locate 3,2,Y:360Frac((360+O)/360►DMS▲//顯示坐標(biāo),方位角
Y-高程顯示
Locate 1,4,”Z=”:Locate 3,4,Z▲//顯示高程
Z-正算
Prog “K”:U=3=>Return://輸入里程,里程超限則退出
Prog “P”:Prog “X”//顯示中樁坐標(biāo),
Prog “S”:Prog “Y”:Prog “V”://有豎曲數(shù)據(jù)庫時(shí)算中樁高,否則中樁高0,顯示放樣數(shù)據(jù)
0→L:?L:While L≠0:90→F:?F:O+F→O:Prog “G”://外移值不為0時(shí)依次計(jì)算角樁
Prog “X”:Prog “V”:0→L:?L:WhileEnd//顯示角樁坐標(biāo),顯示放樣數(shù)據(jù)