5800通用線路測量程序及編程原理

5800通用線路測量程序及編程原理

關于坐標計算內核

1、程序采用數據保存在擴充存儲的方式,更換或補充數據不用修改程序。

2、線路采用線路號來區分,程序內部和使用時都用自然里程參加計算。

3、平曲線不用區分匝道和主線,所有平曲線都轉化成交點資料,此交點可以緩和曲線不對稱、不完整,主線通常由交點起算、匝道均由曲線起點起算。每條平曲線交點格式為9個數據。

4、直線、圓曲線、緩和曲線分別用數學模型不同的計算子程序,保證了計算速度。直線、圓曲線子程序為精確公式,緩和曲線計算子程序為原創的復化段數可調的復化高斯2節點公式,計算精度可自由控制。(現暫改為固定4次復化)

***************************************************************************************************

數據庫編制規則

基本規則:圓曲線半徑右轉為正,坡度上坡為正,角度單位為度,邊樁轉角右轉為正,線路號為非負整數,數據庫中的直圓里程應該在起點和緩圓各輸入一個互差0.0001的里程。圓直點同樣處理。

一、目錄部分:

格式為:

起點里程、終點里程、平曲線資料起始位置、豎曲線資料起始位置、坡度資料起始位置

起點里程、終點里程、平曲線資料起始位置、豎曲線資料起始位置、坡度資料起始位置

……

各條線路依次連續排列。

二、平曲線部分:

格式為:

?????????????????????????????????????????????????????????????????????圓半徑

起點里程、緩圓里程、圓緩里程、終點里程、切線長、交點X、交點Y、切線方位角、圓半徑

起點里程、緩圓里程、圓緩里程、終點里程、切線長、交點X、交點Y、切線方位角、圓半徑

……

終點里程、圓半徑?????????????????????????????????????????????????????????????????

各交點依次連續排列。

主線按圖紙設計數據整理,匝道的線元數據組合成交點組合時,每條曲線由直線、緩和曲線、圓曲線、緩和曲線、直線組成,對不完整緩曲要對數據進行簡單處理,不完整緩曲可以劃歸任一側,不完整緩曲所在的起(終)點里程改為負,交點坐標輸入為起點坐標,切線長輸入0即可。

三、豎曲線部分: ?

格式為:

前坡度、變坡點里程、變坡點高程、豎曲線半徑

前坡度、變坡點里程、變坡點高程、豎曲線半徑

……

后坡度、(0)

各豎曲線依次連續排列。

注意本程序計算單位為直坡+豎曲線,如線路最后為直坡,必須在最后一個變坡點里程位置填一個0,最后無直坡段可不加0

C-測量程序使用說明

運行C程序

XL0-??選線路號

JX?輸入儀器X、JY?輸入儀器Y

0-END 1-ZS 1-F?選1正算,選2反算,選0退出

一、正算計算流程
顯示起點里程、終點里程

①K?輸入K中樁里程,輸出中樁坐標、高、放樣數據
②L?輸入相對中樁或上點偏距,按EXE輸入0到①

F?輸入相對線路前進方向右角,輸出坐標、放樣數據,到②

如正算里程輸入超出范圍重新選正反算時執行反算,則反算剛計算的正算角樁坐標

二、反算計算流程
①X?Y?輸入測點坐標,顯示起點里程、終點里程K?輸入近似里程(默認是線路中心里程)
②輸出里程、外移距、中樁高到①

反算過程中隨時顯示里程逼近誤差

計算過程中右下角顯示的數字為緩曲計算時復化高斯公式分段數。

正反算計算過程輸入里程或任何時候中間結果里程超出對應線路里程會回到程序起點??!****************************************************************************************************

C-測量主程序

Do:Deg:Norm 1:Cls:”XL 0-?”?H:?//輸入線路號

“JX”?V:”JY”?W:”0-END 1-Z 2-F”?U:Fix 3://輸入置儀坐標,正反算選項

While U=1:Prog “Z”:WhileEnd//循環正算流程(除非里程超限)

While U=2:Prog “F”:WhileEnd//循環反算流程(除非里程超限)

LpWhile U≠0:Cls:”END”//里程超限時返回程序起點,選項為0則退出程序

D-讀

Z[G]→L:Z[G+1]→M:Z[G+2]→N:Z[G+3]→O:Z[G+4]→P//從Z[G]起讀5個擴充存儲到L、M、N、O、P

F-三維反算

X→V:Y→W:”X”?V:”X”?W:1.5→U:?//輸入測點坐標

Prog “K”:U=3=>Return:2→U://近似里程,里程超限則退出

Do:Prog “P”:V-X→I:W-Y→J:I=0=>0.0001→I:Pol(I,J):?//求到假定點斜距及方位角

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”//計算里程、位置、求中樁高程

G直線計算

X+Lcos(O→X:Y+Lsin(O→Y//計算直線段坐標

H緩和曲線計算

L(P-B)÷2÷D→D://求測點到起點曲率變化

D÷8→M:L÷8→L:1÷√(3→R:O→A://求拆分后各段曲率差、曲線長、高斯2節點系數

For 1→C To 7 Step 2://循環4次

A+Lr(C+R)(M(C+R)+B→O:Prog”G”://計算每段的第一部分

A+Lr(C-R)(M(C-R)+B→O:Prog”G”:Next://計算每段的第二部分

A+8Lr(D+B→O//求測點方位角

I圓曲線計算

LPr÷2→A:2÷P*sin(A)→L:O+A→O:Prog “G”:O+A→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://提示起終點里程

Abs(2K-L-M)>M-L=>3→U//里程超限令正反算選項為3

P-平面

While K>Z[G+9]:G+9→G:WhileEnd://查詢符合要求的交點

G+4→G:Prog “D”:-L→L:M→X:N→Y:Prog “G”:1÷P→P://讀取切線長、交點坐標、方位角、半徑

G-5→G:Z[G+1]→Q:K-Abs Q→L://讀取起點里程、求測點到起點長

If L≤0:Then Prog “G”:Return:IfEnd://小于起點計算直線坐標,并退出子程序

0→B:Q<0=>1÷Z[G]→B://計算起終點曲率,起點里程小于0起點曲率為上交點半徑倒數

Abs(Q→D:Z[G+2]→Q:Q-D→D://讀取緩圓里程、求第一緩曲全長

If L≤D:Then Prog “H”:Return:IfEnd://如果測點到起點長小于緩一長計算緩曲坐標,并退出子程序

D→L:Prog “H”:K-Q→L://令計算長等于緩曲長計算緩圓坐標、求測點到緩圓長

Q→D:Z[G+3]→Q:Q-D→D://求圓曲全長,讀取圓緩里程

If L≤D:Then Prog “I”:Return:IfEnd://如果測點到緩圓長小于圓曲長計算圓曲坐標,并退出子程序

D→L:Prog “I”:K-Q→L://令計算長等于圓曲長計算圓緩坐標、求測點到圓緩長

Q→D:Z[G+4]→Q:Abs(Q)-D→D://求第二緩曲全長,讀取緩直里程

P→B:0→P:Q<0=>1÷Z[G+18]→P:-Q=Z[G+10]=>1÷Z[G+11]→P//緩二起終點曲率

If L≤D:Then Prog “H”:Return:IfEnd://如測點到圓緩小于緩二全長計算緩曲坐標,并退出子程序

D→L:Prog “H”:K-Abs(Q→L://令計算長等于緩二長計算緩直坐標,求測點到緩直長

Prog “G”//計算第二直線坐標

S-豎曲線

Z→G:G=0=>Return://讀取豎曲線指針

Do:Prog “D”:P-L→D:Oabs(D)÷D→R://讀前坡、變坡里程、變坡高、半徑、后坡,算坡差、半徑凹凸

RD÷2→T:G+4→G://計算切線長,完成豎曲要素準備

LpWhile K>M+T And Z[G+1]≠0://里程大于本豎曲終點且下一變坡里程不為0讀下一曲線

K-M→M:N+LM→Z:M+T→M://計算測點到變坡里程長,計算前坡高,求測點到豎曲起點長

If M>0:Then Z+M2÷2÷R→Z:L+MD÷2÷T→L:IfEnd://測點在豎曲范圍,計算豎曲線高、測點坡度

M-T→M:IF M>T:Then N+PM→Z:P→L:IfEnd//里程大于豎曲線終點,計算后坡高,后坡坡度

V-放樣距離角度

Cls:”L=”:”<=”:Pol(X-V,Y-W:Locate 3,1,I://計算并顯示放樣距離

J<0=>J+360→J:J?DMS//顯示放樣方位角

W-位置顯示
Cls:Fix 3:”K=”:”J=”:Locate 3,1,K:Locate 3,2,J//顯示里程、偏移值

X-顯示坐標
Cls:”X=”:”Y=”:Locate 3,1,X:Locate 3,2,Y:360Frac((360+O)/360?DMS//顯示坐標,方位角

?Y-高程顯示
Locate 1,4,”Z=”:Locate 3,4,Z//顯示高程

Z-正算
Prog “K”:U=3=>Return://輸入里程,里程超限則退出

Prog “P”:Prog “X”//顯示中樁坐標,

Prog “S”:Prog “Y”:Prog “V”://有豎曲數據庫時算中樁高,否則中樁高0,顯示放樣數據

0→L:?L:While L≠0:90→F:?F:O+F→O:Prog “G”://外移值不為0時依次計算角樁

Prog “X”:Prog “V”:0→L:?L:WhileEnd//顯示角樁坐標,顯示放樣數據

分享到 :