關(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

QQ截圖20220214155514.png

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ù)