线元法线路坐标正反算程序

线元法线路坐标正反算程序
线元法线路坐标正反算程序

经苦心钻研,奋战多日,终于编写出了代码短,速度快,精度高,功能全的线路坐标正反算程序,欢迎试用并提出宝贵意见。

功能简介及特点:

1、选用高斯-勒让德公式作计算内核,保证精度,模块化设计,便于扩充功能。

2、线元数据可自动从数据库调用,也可手工输入。

3、可管理多条线路,如里程不在线路或线元范围,将警告里程偏大、偏小。

4、边桩计算设计为导线式递推方式,可用于由一个中桩推出结构物所有角点坐标。

5、反算实现了智能化操作,只需输入线路号(或手工输线元资料)、坐标,不需近似里程,即可自动从起点向后开始试算出里程、位置,如对算出里程、位置表示怀疑,还可以让计算器从终点起再向前试算下一个可能的位置(匝道、回头曲线同一坐标可能会有一个以上结果)。第三次及以后试算才要求输入近似里程。

6、程序代码规范简洁,便于阅读、理解。

完整程序清单:

ZFS %正反算主程序

B=.1739274226:C=.5-B:

Lbl 1:U"0 ZS 1 FS"=0=>Prog "ZS":

≠>U=1=>Prog"FS":≠>Goto 1

ZS %正算子程序

{K}:Prog"ZZ":I=0:{I}:I"L"≠0=>"Prog"WY":≠>Prog"ZB"

FS %反算子程序

{KVW}:V"XC"W"YC":Lbl 2:Prog "ZZ":I=V-S:J=W-T:Pol(I,J: J=J-F:K=K+Rec(I,J:AbsI<1m=>Prog"WZ":≠>Goto 2Δ

M=0:{M}:M"0 NEXT"=0=>U=U+1:Goto 2:≠>U=1

ZZ %高斯法中桩子程序(4节点)

Prog"XL":M=K-L:O=(P-R)÷2PQR:

D=.0694318442:E=.3300094782:F=1:G=1-E:H=1-D:

I=5:Lbl 1:C[I]=A+MrC[I](1÷P+OMC[I]:Dsz I:Goto 1:

S=X+M(BcosD+CcosE+CcosG+BcosH:

T=Y+M(BsinD+CsinE+CsinG+BsinH

WY %外移点计算子程序

Lbl 1:J=90:{J}:J=F+J"<":F=J:S=S+Rec(I,J:T=T+J: Prog"ZB":I=0:{I}:I"L"≠0=>Goto 1

WZ %位置显示子程序

"KJ":K:Pause 1:J◢

ZB %坐标显示子程序

"XY":S:Pause 1:T◢

YC %异常处理子程序

U=1=>K=L:U=2Δ

U=3=>K=M:U=4Δ

U=5=>{K}:U=4Δ

K"<

K>M=>">>!":Z=1

DL %断链处理子程序

"DL":K=L:I>0=>K=L+Q

-------------------------以上为程序运算部分,以下为数据库部分-------------------------------

XL %线路数据库选择子程序

Lbl 1:Z=0:N"0 SD"=0=>Prog"0"△

N=1=>Prog"1"△

N=2=>Prog"2"△

...

有几条线路仿上行格式输几行

Z=1=>{NLXYOPQRK}:Goto 1

0 %手工输入子程序

L"K0"XYAQ"LS"P"R0"R"RN":M=L+Q:Prog"YC"

1 %线路一数据库子程序

①Lbl B:L=线路起点里程:M=线路终点里程:Prog"YC":Z=1=>Goto EΔ

②Q=线元长:P=起点半径:R=终点半径:K≤L+Q=>X=起点X坐标:Y=起点Y坐标:A=起点方位角:Goto EΔL=L+Q:

③......

④Q=短链长:KProg "DL":Goto BΔL=L+Q:

⑤Q=线元长:P=起点半径:R=终点半径:K≤L+Q=>X=起点X坐标:Y=起点Y坐标:A=起点方位角:Goto EΔL=L+Q:

⑥......

⑦Q=线元长:P=起点半径:R=终点半径:X=起点X坐标:Y=起点Y坐标:A=起点方位角:Lbl E

2 %线路二数据库子程序

输入要求和线路一相同。

数据输入要求:

①是线路总体资料格式

②⑤是标准线元资料格式,按里程顺序依次排

④断链资料格式

⑦最后一个线元资料格式

注:1、加下划线的行是程序名及功能说明

2、ZZ程序第三行的r是计算器的弧度转度标志,相当于*180/π。

3、请注意区别数字0及字母O

每个子程序第一行为程序名和功能简介用%隔开,本程序语句在行未统一用冒号分隔,不须再加换行符,除≠>前外所有冒号也可用换行代替。

程序未尾的Δ(一个程序中Δ个数本应和=>的个数相等)、:前的)]、小数点前的0可省略,不影响程序运行结果,省略乘号的连乘运算优先级高于除法。

==================================================== =====================================

程序使用说明:

数据库准备

将各条线路的“线元要素”依次输入各数据库“1”、“2”,注意其中曲线半径右偏为正,直线请输为10^10。

线路起点里程即第一个线元的起点里程,线路终点里程即最后一个线元的终点里程。

如线元起点和上一线元终点半径相同,P=起点里程可简写成P=R,如果线元终点半径和起点半径相同R=终点里程可简写R=P。

如果线元起点半径等于前一线元终点半径,同时本线元是直线或圆,R=P还可省略!!!

新增语句解决断链并考虑反算中间结果在断链处时的处理方式。短链按示例输,长链要把长链后里程前加一位1,转化成短链,如4500.123要输成14500.123。断链长要按调整后的里程推算,运行时长链后里程要输成类似14500.123。

运行程序:

ZFS为主程序运行后首先提示:

0 ZS 1 FS?选0正算,选1反算

正算计算流程

①0 SD?输入线路号,手工输入线元输0,然后依提示输入线元数据;K0?起点里程X?Y?A?起点坐标、方位角LS?线元长R0?

RN?起终点半径(右转为正)

②K?输入K中桩里程;里程在断链显示"DL"到②

③L?输入相对上点偏距;按EXE输入0则输出中桩坐标到②,否则

④再次L?输入相对上点偏距;

反算计算流程

①XC?YC?输入测点坐标;0 SD?(同正算);

②从起点推算输出里程、外移距;

③提示0 NEXT?认为可能还有下个可能选0到④,选其它值到①,除不再提问线路号外其它相同。

④从终点推算输出里程、外移距;

⑤提示0 NEXT?认为可能还有下个可能选0到⑥,选其它值到①,除不再提问线路号外其它相同。

⑥K?输入近似里程,输出里程、外移距到⑤;

如不输绿色部分代码,执行下列流程

①X?Y?输入测点坐标;0 SD?(同正算);

②K?输入近似里程,输出里程、外移距到①,除不再提问线路号外其它相同。

在运行过程时,无论正反算,任何时候发生里程超出线路范围都会

有警告,偏小会提示“<>!”,返回到0SD?重新选择线路、并要求重输里程,此时应该核对数据重算

读者可利用上述警告功能在想转换线路时,有意输入线路外里程或坐标。当然按AC跳出再按光标左、右键重新进入程序也可转换线路,但多了正反算选项。

==================================================== ======================================

关于本程序计算坐标的精度

为了对坐标计算结果精度心中有数,本人通过数据试算,对本程序的坐标计算精度进行了系统分析,并用回归分析得出了线元长和线元平均半径的关系,得出了一个通用的表达式。

直线精度永远是0不再用公式表示。只对圆曲线和缓和曲线进行分析。

式中

R-平均半径,可用2/|1/RA+1/RB|表示,RA、RB分别是起点、测点半径,

LS是起点到测点距离

Y-圆曲线标志,圆曲线为1,为0

精度要求为恰好1mm时:

圆曲线LS=5×R0.9

缓和曲线LS=2×R0.85

如LS不为上述长度则每延长1.565倍将减少一位精度,反之每缩短1.565倍将增加一位精度。

如计算出某半径精度为1mm时LS=100,若实际长156米则精度为1cm。实际长为64米则精度为0.1mm。

以下为相关问题的提问与解答

WY %外移点计算子程序

Lbl 1:J=90:{J}:J=F+J"<":F=J:A=A+Rec(I,J:B=B+J: Prog"ZB":I=0:{I}:I"L"≠0=>Goto 1

FS %反算子程序

Lbl 1:{KVW}:V"X"W"Y":U=2:Lbl 2:Prog "ZZ":I=V-A:J=W-B:Pol(I,J:J=J-F:

I=Rec(I,J:K=K+I:AbsI>1m=>Goto 2△"KJ":K:Pause1:J◢Goto 1

以上两个子程序中:Rec与Pol后面的括号怎么只中有半个?另外半个在哪里呢?请楼主给予明示.谢谢.

另外,该程序可计算不等缓曲(LS1不等于LS2)曲线中边桩坐标吗?线路起点坐标有什么规定,是否一定得是(ZH点或ZY点)?如是前后两曲线相切只有一个公切点(GQ点),而无(ZH或ZY点时),此种不等缓曲曲线起点坐标怎么确定?起点切线方位角怎么确定?这种情况的曲线中边桩坐标如何用您的程序运行?谢谢指导!!

本程序是以线元为单位计算的,无所谓等长和不等长,只要把各线路线元数据依次输入1 2...N等数据子程序就行。

计算器说明书规定了可省略表达式右端的括号及其它一些可省略的符号,本贴的使用说明也有提到。

各主点坐标推算可试试本人的另一个贴子,可以递推主点坐标。

请1楼抽空看看计算器的说明书并通读本贴的说明部分!!!!

又有修改,解决了手动输线元不能计算同一线元第二个点问题。

调整了变量、重写了高斯4节点坐标计算内核。

楼主,调试了,不行啊.运行时一直提示L

你再试试,我的4800计算器没空间了,没有详细测试,也可能上传时录入有问题,刚修改了一下,如还不行请和QQ:448375501

调试成功了,很好用,谢谢楼主的无私奉献.我还有一个问题想请教一下李老师,遇到线路断链应该怎么处理程序?

短链部分在数据子程序里写成

L=L+Q:Q=短链长:K≤L+Q=>"DL":Goto EΔ

就行了

长链要重新整理里程,把长链后部的里程加一个1000米或10000米(就是原来的里程前面加个1)转换成短链

李老师我有个问题,缓和曲线的半径是不是圆半径R+P呀,就是缓和曲线的半径了

你说的缓和曲线是含缓和曲线的整个交点(含两个以上线元),本程序的缓和曲线只是其中的缓和曲线段。

你说的缓和曲线半径是等效半径,是针对整个曲线的,本程序里的半径是指一个线元(曲线段)的两端半径。

L=线路起点里程:M=线路终点里程:Prog"YC":Z=1=>Goto EΔ

Q=线元长:K≤L+Q=>X=起点X坐标:Y=起点Y坐标:A=起点方位角:P=起点半径:R=终点半径:Goto EΔ

L=L+Q:Q=123:K≤L+Q=>X=123:Y=123:A=123:P=123:R=123:Goto EΔ一条线路怎么添加更多线元? 缓和曲线圆曲线段起点半径和终点半径如何输入呀?我试着输入了一个缓和曲线的线元但是计算出来的结果不对呀我不知道是不是我输错了

请看程序里的说明

李老师,你说的断链处理我弄了一天,没弄明白,麻烦你再说详细点好吗?拜托,谢谢!

你可以把断链当成一个线元,但必须断链后里程大于断链前里程(短链),线元长是两里程差,但并无线元资料。

如果是长链,就把断链后的所有里程前加1,如有一个长链,断链前里程4510.123=断链后里程4500.123,断链后里程小于断链前里程要,断链后里程4500.123要当成14500.123,断链长为9990.

运行时,输长链前里程时不变,长链后里程前加1

程序里红色代码为和断链相关的代码。

本程序运行时,输入里程为断链范围任一里程时,输出坐标都是断链

点坐标。

正常线元坐标显示格式

XY

#########.###

#########.###

断链处坐标显示格式为

DL

XY

#########.###

#########.###

各位这个程序我始终没有搞懂我现在在干一条缓和曲线高架桥ZH 100410.137方位角174-07-22.5

ZHx2460751.0862 ZHy501630.5236 缓曲长80 左转角39-54-29.7 HZ 100803.576 麻烦大家谁能帮我把他输进这个程序我反复输了好多遍检查程序也没有输入错误但是得出的结果和设计值相差很多那位哥们这个程序运行成功了的指教小弟一下 qq 283070278

注意:

1、本程序是以线元为单位计算,每个线元需要都线元长、起始坐标、方位角、起、终点半径。

2、数据子程序里的线路起点里程是第一个线元的起点里程,线路终点里程是最后一个线元的终点里程。线路起终点里程差和所有的线元长的和相等。

3、第二个及以后的线元起点里程其实在数据子程序里用L=L+Q 算出来了。

4、角度单位错、或不注意半径正负,或程序里的标点符号没输全等都是以前网友出过的错。

李老师,不好意思,我还有一个问题想问,就是短链部分线元元素要不要输,还有短链所在的那个线元元素Q输什么长度?谢谢!

看说明呀。

断链处实际长度为0,故不用线元要素,但里程又有差值,Q要输,Q输断链前后里程差

DL %断链处理子程序

"DL":K=L:I>0=>K=L+Q

④Q=短链长:K≤L+Q=>Prog "DL":Goto EΔL=L+Q:

短链按示例输,长链要把长链后里程前加一位1,转化成短链,如4500.123要输成14500.123。断链长要按调整后的里程推算,运行时长链后里程要输成类似14500.123。

以上是贴里的原文。

谢谢李老师,终于可以了,但是反算时,在短链后输入任何坐标都显示

DL,这是为什么呀?

是我考虑不周,经过仔细分析,程序改了一下。数据库子程序第一行前加了Lbl B:

第四行断链所在行对应改成Goto B,另外K≤L+Q也改成K< L+Q

请再测试一下

近日在改写以前发布过的一个交点法程序,功能与此程序接近,带中桩高程计算,即将发布。原版为数据全部保存在扩充,现改写成用子程序保存。

故先将本贴改名注明(线元法)。

老师,还有一个问题,反算里程是对了,但在显示里程前还会显示DL 我指的是断链后面的里程还会显示DL

那是我特意设计的,好让用户知道里程在断链附近,而且,如果我没说错的话,应该是坐标在距断链小于断链长才会出现你说的情况,远了就不会显示,反算出来的里程应该是正确的。

你试试,正算时输个断链间的任意里程,显示坐标时也会先显示一个DL再显示断链点坐标

正算时输个断链间的任意里程,是会先显示一个DL

反算出来的里程也是完全正确的,但是我这里有一个长链20多米,把它转化成短链后就是短链9800米,那反算是岂不是9800米范围内的里程都显示DL

祝贺你测试成功!

是的,显示一个DL也不多余呀,很有趣的。这是程序设计结构牢固的要求,我是比较在意这些的,结果正确,提示得当。

如果你不输绿色代码,如果知道坐标在断链后,反算时你输一个断链后的假定里程,一般就不会出现DL提示了。

如果保留绿色代码,在高速公路主线或转折较小的山区公路,点在长链后时,输入坐标,输出第一次会提示DL,KJ里程、位置。然后提示0NEXT?,你按EXE,就会再输出一个KJ里程、位置,两次的里程、位置一般是一样的,但第二次就不提示DL,那是因为第二次是从后往前试探的。

李老师你的程序我运行了,还有一个问题请指教:

正算时,我算出中桩的点后算边桩点后算结构物所有角点坐标。

我发现只有在算正交的边桩点后算垂直于法线的点,并且在右侧算出的角点坐标才正确。

如果算某一里程的斜交边桩后不管是左右往下算都不正确,是否是本人浅薄,没有理解角度的输入,请不吝赐教。

能不能说说你的反算是怎么弄的?Lbl 1:{KVW}:V"X"W"Y":U=2:Lbl 2:Prog "ZZ":I=V-A:J=W-B:Pol(I,J:J=J-F:

I=Rec(I,J:K=K+I:AbsI>1m=>Goto 2△"KJ":K:Pause1:J◢Goto 1

根据测点坐标和假定里程坐标差用Pol()求出的两点斜距I及方位角J 和假定里程切线F的夹角J-F,再用Rec()求出垂距J和垂足到假定点距离I,I为正说明假定里程偏小,为负说明假定里程偏大。假定里程改正后重算,直到误差小1mm.输出结果。

程序里I=Rec(I,J:K=K+I可以简写成K=K+Rec(I,J。这样又省了4个字节(程序已按此更新了)。这是因为Rec()函数的输出结果自动存到I=里程误差,J=测点到中线距离(右正左负)。本程序有意用I、J 做中间变量的用意也就是方便省略步数,

我估计你是在提示

程序里所有?下显示数据和准备输入数据一样时才可按EXE跳过!!!

原来我也搞了一个跟你类似的程序,用的也是您这种方法,我先是10CM步进,然后5,然后1,最后1MM,支距太远的话运算要30秒以上。没有数据库,直接把线元编进去,字节数非常庞大,而且只适合我那一个隧道。看了您的,才知道什么就老师!

李老师,不好意思,还有一个问题请你核一下,就是反算时,在直线上能自动算出里程和边距,但是在缓和曲线及圆曲线上时第一第二次反算里程和边距都差很多,直到第三次输入近似里程时才反算正确.这是为什么呀?

那一定是碰到了类似回头曲线的情况了。你一定是是在计算一个匝道或山区公路,而且存在累计转角超过90度的几个连续曲线,如果凑巧,点就是在直线也可能得出两个不同的结果,但错误的结果偏距一定很大。

只要测点可以向远处的中线某点做垂线就会得出不同的反算结

果,你画个图就明白了。

公路主线上不会出现你说的情况的,这些我在贴上的前言上说过了,你可以再试试基本直伸的公路主线。程序里的不用输近似里程只适合基本直伸的公路上(任意取N个交点转角和不大于90度)。

我这个曲线半径500多米,转角83度多,会不会出现这种情况啊? 刚我说了是几个交点的累计转角大于90度才容易算出两个以上结果,你再看相邻的曲线转向是不是相同。

你画个草图试试呀,看能在图上做几个垂足。

再说明白点,如果你检查一个圆心坐标,圆弧上任一点都是正确结果,如果过圆弧上任一点和圆心连线,延长后会和远处线路相交或接近平行,这条线附近上的有些点明明在远处线路附近,却会得出是刚那个圆上的里程,但偏距很远的点。这就是为什么我强调是某N个交点的累计转角大于90度,而不是说一个曲线。

快画个图试试吧。

这时用近似里程引导一下程序就会直接得出正确结果。

刚讲的有点错,应该是角度加、减180度和距离反号是一样的。

5米,30度和-5米,210度是同一个点。210度又可以写成-150度

和两点连线方向一样距离为正。

李老师我试了一下,还是不太对呀,谢谢,就是在线路前进方向的左侧边桩点后往下算不行,主要是第一个点不行,第二个点及往后算的点都行

还有斜交左右侧边桩点后往下算坐标角度都不好掌握

你不要管什么左右,就看新点和上点连线方向与上两点方向右角是多少就行,就象导线侧量一样,导线长就是距离,右角就是转角。距离永远输正的,角度看右角是多少就输多少,角度输-30度和330度是一样的。

距离的正负表示线的方向,角度的正负表示偏向的左右。这是极坐标的一般规定呀。

再说说把我自己都搞晕了。

请问楼主,该程序是否能用于整条线路(交点大于60个),数据库如何处理?盼指点一下,万分感谢!

线元法线路坐标正反算程序

经苦心钻研,奋战多日,终于编写出了代码短,速度快,精度高,功能全的线路坐标正反算程序,欢迎试用并提出宝贵意见。 功能简介及特点: 1、选用高斯-勒让德公式作计算内核,保证精度,模块化设计,便于扩充功能。 2、线元数据可自动从数据库调用,也可手工输入。 3、可管理多条线路,如里程不在线路或线元范围,将警告里程偏大、偏小。 4、边桩计算设计为导线式递推方式,可用于由一个中桩推出结构物所有角点坐标。 5、反算实现了智能化操作,只需输入线路号(或手工输线元资料)、坐标,不需近似里程,即可自动从起点向后开始试算出里程、位置,如对算出里程、位置表示怀疑,还可以让计算器从终点起再向前试算下一个可能的位置(匝道、回头曲线同一坐标可能会有一个以上结果)。第三次及以后试算才要求输入近似里程。 6、程序代码规范简洁,便于阅读、理解。 完整程序清单: ZFS %正反算主程序 B=.1739274226:C=.5-B: Lbl 1:U"0 ZS 1 FS"=0=>Prog "ZS": ≠>U=1=>Prog"FS":≠>Goto 1

ZS %正算子程序 {K}:Prog"ZZ":I=0:{I}:I"L"≠0=>"Prog"WY":≠>Prog"ZB" FS %反算子程序 {KVW}:V"XC"W"YC":Lbl 2:Prog "ZZ":I=V-S:J=W-T:Pol(I,J: J=J-F:K=K+Rec(I,J:AbsI<1m=>Prog"WZ":≠>Goto 2Δ M=0:{M}:M"0 NEXT"=0=>U=U+1:Goto 2:≠>U=1 ZZ %高斯法中桩子程序(4节点) Prog"XL":M=K-L:O=(P-R)÷2PQR: D=.0694318442:E=.3300094782:F=1:G=1-E:H=1-D: I=5:Lbl 1:C[I]=A+MrC[I](1÷P+OMC[I]:Dsz I:Goto 1: S=X+M(BcosD+CcosE+CcosG+BcosH: T=Y+M(BsinD+CsinE+CsinG+BsinH WY %外移点计算子程序 Lbl 1:J=90:{J}:J=F+J"<":F=J:S=S+Rec(I,J:T=T+J: Prog"ZB":I=0:{I}:I"L"≠0=>Goto 1 WZ %位置显示子程序 "KJ":K:Pause 1:J◢ ZB %坐标显示子程序 "XY":S:Pause 1:T◢ YC %异常处理子程序 U=1=>K=L:U=2Δ U=3=>K=M:U=4Δ

线元法简介

线元法万能曲线正反算简介 我的线元法是把线形分为直线和曲线,直线就不用说了,起止点桩号,坐标和方位角就可以算了;曲线最基本的组合:是由一段缓和曲线+一段圆曲线组成,任意复杂的曲线都可以分解成缓和曲线+圆曲线或者其中之一就可以。 分析最复杂的曲线可以看到: 一般复杂线形由Ls1 ,R1,Ls2, R2组成,相邻的Ls1+R1,一般满足A*A=Ls1*R1,这就是一个线元法单元,即使不满足也可以作为一个线元: 当Ls1= Ls2,且R1= R2时,为单曲线 当Ls1≠ Ls2,或者R1≠R2时,为复合曲线 当Ls1= Ls2=0时,线性为圆曲线, 当圆曲线长度为0时,线性为缓和曲线+缓和曲线, 当A*A≠Ls1*R1时,为卵形曲线,需要计算虚拟起点坐标 综合以上线形,本程序正反算计算全部可以处理。结合目前流行的线元法,本程序也可以,分为缓和曲线和圆曲线录入,方法是一样的,所不同的是起点要注意,复杂曲线,是两边向中间定义数据库,缓和曲线永远是ZH点或HZ点为起点。 曲线要素说明(有9个): 1、起点桩号:(一般为ZH点或HZ点,或ZY点或YZ点,或者卵形公切点GQ) 2~3、起点坐标:(X,Y) 4、起点方位角:FWJ 114°15′24.33″写成:114.152433 5、线性特征:直线,左偏,右偏;三个选一个 6、终点桩号:如果起点为ZH点,终点一边为YH点,QZ点,HY点,都可以,一般为YH点,缓和曲线+圆曲线。如果缓和曲线Ls=0,就是YZ点;大小不一定按路线顺序,如果起点为HZ点,终点根据缓和曲线+圆曲线的特点,和上个线元对接上就可以了。 7、缓和曲线长度Ls: 8、圆曲线半径R: 9、回旋参数A: 一般满足A*A=Ls1*R1,不满足条件的是卵形曲线。 可以处理任意数量断链。 操作流程:1、先编辑线元数据,保存后推出。 2、如果有线元断链的输以下线元断链数据 3、打开线元万能曲线计算单点计算就可以了。 目前,已有一个例子文件在里面,在安装文件目录下“ \dmfx4.0\demo\左线”,有个CAD文件,里面有校核数据,可以看到本软件处理的逐桩表和要素表,可以验证软件的数据,任意数据坐标反算可以得到桩号和距中,任意输入桩号和距中可以正算得坐标。 授权版用户,可以通过运行交点文件编辑,保存后,退出;打开线元法数据编辑,浏览正在使用的主项目文件,就可以看到一个线元数据,点击这个文件确定,保存退出。就完成交点法数据转换线元法数据过程。

线元法万能坐标计算程序

线元法万能坐标计算程序(适用于CASIO fx-9750GⅡ计算器) 论文https://www.360docs.net/doc/0d13274517.html,/:本论文仅供学习交流使用,本站仅作合理转载,原作者可来邮要求删除论 文。 摘要:我国公路建设事业正处于一个高速发展的时期,在公路工程施工过程中,施工技术人员经常要使用全站仪、水准仪进行施工放样、高程测量,在测量过程中,手工计算速度慢,失误率高,工作效率极低。利用CASIO fx-9750GⅡ编程函数计算器强大的内存(可诸存63000个字符)和编程功能,编写各种计算程序,能够在2秒钟内计算出施工放样、桩点坐标等施工过程中的各项数据资料,同时也使我们有更多的时间去挑战更富有创造性的工作。 关键词:坐标放线线元测量程序 1、前言 本程序采用Gauss-Legendre(高斯-勒让德)五节点公式作内核,计算速度(太约2秒)适中,计算精度很高。在此之前,本人曾用过以下公式作内核:①积分公式simpson法②双重循环复化高斯2节点③高斯-勒让德3节点④求和公式复化simpson法⑤双重循环复化simpson法⑥高斯-勒让德4节点,⑦高斯-勒让德5节点,经过测试③计算最快,⑦代码稍长但计算速度只比③⑥稍慢,精度最高,可满足线元长小于1/2πD 的所有线形的精度要求。⑦作内核分别计算圆曲线长1/4πD、1/2πD、3/4πD、πD处的精度,1/4πD时偏差为0.001mm,1/2πD时偏差为0.55m m,3/4πD时偏差为31.63mm,πD时偏差为968mm,偏差按半径倍数增大,如线元长大于1/2πD(1/2圆周长)时,可将其拆分二个或多个线元单位,以确计算保精度。 2、程序特点 事先将所有的平曲线交点的线元要素诸存到计算器内,测量时只输桩号、边距等程序会自动寻找各类要素,一气呵成地完成施工测量任务,中途不需人工转换各类要素数据,本程序可诸存几百条线路的要素数据,计算时可按需选择线路编号进行测量。测量时不需查阅及携带图纸,仅一台CASIO fx-9750GⅡ编程函数计算器即可。 本程序含一个主程序:3XYF,五个子程序:GL(公式内核)、QD(线路选择)、XL(线路要素判断)、GF(坐标反算)、File 1 (要素存放的串列工作簿)。可以根据曲线段——直线、圆曲线、缓和曲线(完整或非完整型)的线元要素(起点坐标、起点里程、起点切线方位角、终点里程、起点曲率半径、止点曲率半径)及里程边距或坐标,对该线元段范围内任意里程中边桩坐标进行正反算。 3、计算公式及原理 如图:BC 间为一曲线元,曲线元上任一点的曲率随至B 点的弧长作线性变化。设起点B 的曲率为KA ,终点C 的曲率为KB ,R 为曲线半径。±表示曲线元的偏向,当曲线元左偏时取负号,当曲线元右偏时取正号,直线段以1的45次方代替(即半径无穷大)。 式中:αΑ=起始方位角l =p 点到B的距离lS=曲线总长αp=p 点切线方位角 R1=R5=0.118463442528095 ,R2 = R4 = 0.239314335249683 , R3 = 0.28444444444444 V1=1-V5= 0.046910070 ,V 2= 1-V4 = 1 0.2307653449 V3= 0.5 利用上面公式及CASIO fx-9750GⅡ编程函数计算器可编写下列计算程序。 4、程序清单 (1)、3XYF(主程序) "1→XY2→FS"?→V:V=1=>Goto 1:V=2=>Goto 2↙(选择计算功能) Lbl 1:File 1:”XLn”?→S:Prog “QD”↙(选择线路)

5800计算器全线坐标计算放样程序(修改第三版)

5800计算器全线坐标计算放样程序(修改第三版) 5800计算器全线坐标计算放样程序(修改版) “XLZBJSCX” ◢ LB1 0 ↙ CLS : FIX 4 : 30→DIM Z ↙ “XHS="?G(后视点X):"YHS="?L(后视点Y):"XZJ="?M(置镜点X):"YZJ="?N(置镜点Y)0l(G-M,L-N):"DH=":I(后视距)◢J<0=>J+360→J:"FH=":J→DMS◢(后视 方位角) LB1 1 ↙ “K=”?K ◢(计算里程) IF K<本段曲线终点里程 AND K≥上段曲线终点里程:THEN 本段终点里程→Z[1] : 上段曲线终点里程→Z[2] :1→0 (注:左偏曲线输入-1→0,右偏曲线输入1→0): 偏角→A:半径→R : 第一缓和曲线→Z[6] : 第二缓和曲线 →Z[7] : 交点X→B :交点Y→C : 小里程向交点方位角→E : 交点向大里程方位角→F : G0T0 2 : IFEND↙ …………(曲线段分段输入) 补充直线段输入如下 IF K<本段直线终点里程 AND K≥本段直线起点里程:THEN 1→0:本段直线终点里程→Z[2]:终点X→Z[16]:终点Y→Z[11]:方位角→E:G0T0 4:IFEND LB1 2 ↙(曲线要素计算) Z[6]/2- Z[6]^3/(240*R^2)+ Z[6]^5/(34560*R^4) →Z[8] ↙(M1) Z[7]/2- Z[6]^3/(240*R^2)+ Z[7]^5/(34560*R^4) →Z[9] ↙(M2) Z[6]^2/(24*R)- Z[6]^4/(2688*R^3) →Z[10] ↙(P1) Z[7]^2/(24*R)- Z[7]^4/(2688*R^3) →Z[11] ↙(P2) π*A*R/180+0.5*( Z[3]+ Z[2])→W ↙(曲线总长) 90* Z[6]/(R*π) →Z[14] ↙(第一缓和曲线总偏角) 90* Z[7]/(R*π) →Z[15] ↙(第二缓和曲线总偏角,可以省略) Z[8]+(R+Z[10])TAN(A/2)-(Z[11]-Z[11] )/SIN A→Z[11]↙ (切线T1) Z[9]+(R+Z[12])TAN(A/2)+(Z[10]-Z[12] )/SIN A→Z[12]↙ (切线T2) B+ Z[12]*C0S (E+180)→ Z[13] ↙(ZH点X) C+ Z[12]*SIN(E+180)→ Z[15] ↙(ZH点Y) Z[1]-S→Z[3] ↙ (ZH点里程) Z[3]+ Z[6]→Z[4] ↙ (HY点里程) Z[1]- Z[7]→Z[5] ↙ (YH点里程) G0T0 3 ↙ LB1 3 ↙(判断里程点与曲线关系) IF K≤Z[3] AND K> Z[2] : THEN G0T0 4 : IFEND ↙ IF K≤Z[4] AND K> Z[3] : THEN G0T0 5 : IFEND ↙ IF K≤Z[5] AND K> Z[4] : THEN G0T0 6 : IFEND ↙

交点法线元法坐标计算

3、交点法、线元法坐标计算 坐标计算是根据图纸中“直线及曲线转角一览表”提供的数据计算道路中桩坐标,然后和图纸提供的“逐桩坐标表”比对,如果一样则说明输入平曲线参数输入正确,可以计算边桩坐标和其他结构物坐标了;如果中桩坐标不一样,一般是平曲线参数输入有误,需要重新检查输入,另一种结果是图纸有错,这种情况少见,但不代表没有。“直线及曲线转角一览表”和“逐桩坐标表”见附件1、附件2。 线元法是以路线的起点坐标、方位角、起终点桩号等节点元素来计算出要求的坐标;交点法是以路线的交点要素和路线的主要要素来求得坐标。 ①交点法 交点:路线的转折点,路线改变方向是相邻两直线的延长线相交的点。用JD表示, 有些图 纸上用 IP表示。 看下图: 交 点是针对曲线的(包含圆曲线和缓和曲线),一段曲线就有一个交点。交点参数有:坐标(X,Y)、交点桩号、转角值、圆曲线半径R、缓和曲线长度。 教学提供软件(轻松测量、双心软件、测量工具)交点法曲线要素输入说明: 1、QD起点坐标: 起点坐标必须在直线段上,或填写前一交点的坐标。

2、JD交点曲线要素: (1)交点桩号 (2)交点坐标(X,Y) (3)曲线半径R 始点的话,起始里程有时候需要校正,当然,并不是每个图纸给出的起点里程都需要校正,大多数图纸的起点里程已经被设计院校正过,我们输入平曲线的时候需要验证一下。如果我们按照图纸给出的起点里程输入,发现后面的交点里程都和图纸相差一个相同的值,这就表明我们输入的起点里程需要校正。 起始点里程正常输入,第二、三个交点输入完成后,检查第二个交点的切线长和交点

里程是否和图纸一样,如果切线长正确,交点里程不正确,说明起点里程需要校正,将第二个交点的里程与正确里程的差值,应用到起点里程中,从而使第二个交点里程和后面交点的里程与图纸吻合。 注意:交点法计算坐标适用的平曲线为对称或不对称缓和曲线、圆曲线。对于非普通的三单元曲线,交点法不适用。非普通的三单曲线例如下页的JD18及JD19处的平曲线, 的输入是否正确,有的图纸给的方位角数据较少,需要每隔几个线元才能检验方位角。

5800简单全线坐标计算程序

5800全线任意坐标计算程序 1. 正算主程序(ZHCX) (不运行) 8→DimZ 1÷P→Z[4 ]:(P-R)÷(2HPR)→D: 180÷π→E “Z=”?Z:”YJJ=”?A:Abs(S-O)→W 0.26→Z[1 ]: 0.74→B: 0.02→K: 0.82→Z[3 ]: 1-Z[3 ]→F:1-K→Z[2 ] U+W(Z[1 ]cos(G+QEKW(Z[4 ]+KWD))+Bcos(G+Z[3 ]QEW(Z[4 ]+ Z[3 ]WD))+Bcos(G+QEFW (Z[4 ]+FWD))+ Z[1 ]cos(G+ Z[2 ]QEW(Z[4 ]+ Z[2 ]WD)))→X: V+W(Z[1 ] sin (G+QEKW(Z[4 ]+KWD))+B sin(G+ Z[3 ]QEW(Z[4 ]+ Z[3 ]WD))+B sin(G+QEFW (Z[4 ]+FWD))+ Z[1 ] sin(G+ Z[2 ]QEW(Z[4 ]+ Z[2 ]WD)))→Y: G+QEW(Z[4 ]+WD)→F:X+Zcos(F+A)→X:Y+Zsin(F+A)→Y:If F≧360:Then F-360→F:IfEnd ”X=”:X→X◢ ”Y=”:Y→Y◢ If F﹤0:Then F+360→F:IfEnd ”QX FWJ=”:F▼DMS◢ “C=1=>XX: C=2=>XZ”: ”C=”?C: ”QHJU=”?L: If C=1:Then Goto 1:Else Goto 2: IfEnd 可以计算斜交斜做或斜交正做的桥涵坐标 Lbi 1 X+L cos(F)→X:Y+Lsin(F)→Y: Goto 3 Lbi 2 X+L cos(F+A-90)→X:Y+Lsin(F+A-90)→Y: Goto 3 Lbi 3 “QH-X=”: X →X◢ “QH-Y=”: Y →Y◢ Prog “FY” 2 . 参数子程序(直接运行) M(主线) 一条线路一个名称 “S=”?S If S≦线元终点:Then 线元起点X值→U: 线元起点Y值→V:线元起点切线方位角→G:线元起点桩号→O:线元长度→H:线元起点半径→P:线元终点半径→R:(左偏-1,或右偏 1)→Q:Goto 1:IfEnd … … If S≦线元终点:Then 线元起点X值→U: 线元起点Y值→V:线元起点切线方位角→G:线元起点桩号→O:线元长度→H:线元起点半径→P:线元终点半径→R:(左偏-1,或右偏 1)→Q:Goto 1:IfEnd Lbi 1 Prog “ZBJS” 3. 放样程序(FY)(不运行) “X0=”?M:“Y0=”?N Pol((X-M, Y-N)

公路坐标计算公式

一、缓和曲线上的点坐标计算 已知:①缓和曲线上任一点离ZH点的长度:l ②圆曲线的半径:R ③缓和曲线的长度:l0 ④转向角系数:K(1或-1) ⑤过ZH点的切线方位角:α ⑥点ZH的坐标:x Z,y Z 计算过程: 说明:当曲线为左转向时,K=1,为右转向时,K=-1,公式中n的取值如下: 当计算第二缓和曲线上的点坐标时,则: l为到点HZ的长度

α为过点HZ的切线方位角再加上180°K值与计算第一缓和曲线时相反 x Z,y Z为点HZ的坐标 切线角计算公式: 二、圆曲线上的点坐标计算 已知:①圆曲线上任一点离ZH点的长度:l ②圆曲线的半径:R ③缓和曲线的长度:l0 ④转向角系数:K(1或-1) ⑤过ZH点的切线方位角:α ⑥点ZH的坐标:x Z,y Z 计算过程:

说明:当曲线为左转向时,K=1,为右转向时,K=-1,公式中n的取值如下: 当只知道HZ点的坐标时,则: l为到点HZ的长度 α为过点HZ的切线方位角再加上180° K值与知道ZH点坐标时相反 x Z,y Z为点HZ的坐标 三、曲线要素计算公式

公式中各符号说明: l——任意点到起点的曲线长度(或缓曲上任意点到缓曲起点的长度)l1——第一缓和曲线长度 l2——第二缓和曲线长度 l0——对应的缓和曲线长度 R——圆曲线半径 R1——曲线起点处的半径 R2——曲线终点处的半径

P1——曲线起点处的曲率 P2——曲线终点处的曲率 α——曲线转角值 四、竖曲线上高程计算 已知:①第一坡度:i1(上坡为“+”,下坡为“-”) ②第二坡度:i2(上坡为“+”,下坡为“-”) ③变坡点桩号:S Z ④变坡点高程:H Z ⑤竖曲线的切线长度:T ⑥待求点桩号:S 计算过程: 五、超高缓和过渡段的横坡计算

卡西欧FX5800线路曲线坐标计算程序

卡西欧FX5800---辛普森公式(万能公式) 复化辛普森公式 1.Lbl 0:“XA=”?A:“YA=”?B: “CA=”?C:“1/RA=”?D:“1/RB=”?E:“DKA=”?F:“DKB=”?G 2.Lbl 1:“DKI=”?H:“DL=”?O:“DR=”?R:IF H>G:THEN Goto0 IFEND 3.(E-D)/Abs(G-F)→P:Abs(H-F) →Q: P×Q→I:D+I→T 4.C+(I+2D)×Q×90/π→J 5. C+(I/4+2D)Q×45/(2π) →M: C+(3I/4+2D)Q×135/(2π) →N 6. C+(I/2+2D)Q×45/π→K 7. A+Q(cosC+4(cosM+cosN)+2cosK+cosJ)/12 →X 8.B+Q(sinC+4(sinM+sinN)+2sinK+sinJ)/12 →Y 9.”FW=”:J▲DMS ▲ 10. “X=”:X▲ 11. “Y=”:Y▲ 12.“XL=”: X+Ocos(J-90) →U ▲ 13.“YL=”: Y+Osin(J-90) →V▲

14.“XR=”:X+Rcos(J+90)→ W▲ 15.“YR=”:Y+Rsin(J+90)→ Z▲ 16.Goto 1 程序结束 程序说明: A- 曲线元起点A的坐标; B- 曲线元起点B的坐标; C- 曲线元起点A的切线坐标方位角; F- 曲线元起点A的里程; G- 曲线元起点B的里程; H- 曲线上待求点i的里程; D- 曲线元起点A的曲率; E- 曲线元终点B的曲率; XL-左边线点位X坐标; YL-左边线点位Y坐标; XR-右边线点位X坐标; YR-右边线点位Y坐标; X- 中线点位纵坐标; Y- 中线点位横坐标; DL-左边线距中线平距; DR-右边线距中线平距; 该程序需要输入的数据为: (1).曲线元起点A的坐标及切线坐标方位角,计算器上用“XA”,“YA”,“CA”显示; (2).曲线元起点A和B的曲率,计算器上用I÷RA,I÷RB显示(曲线左偏时取“-”); (3).曲线元起点A和终点B的里程,计算器上用“DKA”,“DKB”显示;(4).输入待求点里程和该点距左右的水平距离,计算器上用“DKI”,“DL”,“DR”显示; 每算完一个待求点的中线及边线坐标,程序又让输入下一点的“DKI”,“DL”,“DR” 当输入的“DKI”大于“DKB”时,此时输入下一个曲线元起点的曲率和里程,即可计算下一个曲线中线及边线点位坐标。 使用该程序应注意事项; 该程序以前进方向为有意识,不可倒退计算;缓和段和圆曲线段应分开计算在计算圆曲线时应记下缓和 曲线尾的坐标方位角即“J”的角度;在计算第一段缓和曲线时曲率“1÷RA”输入0;在计算第二段缓和曲 线时“1÷RB” 输入0 。 (5)第一个0为零。

卡西欧5800坐标计算程序(通俗易懂版)

卡西欧5800道路坐标测量程序(通俗易懂版) 主程序(自己给取个名吧) 2→Dimz “1.SZ=﹥XY 2.XY=﹥SZ”◢ “N=”?N If N=1:Then Goto 1:Else Goto 2:IfEnd Lbl 1 “S=”?S “Z=”?Z “J=”?T If S﹤0:Then Prog “SYL”:Else Prog “SYR”:IfEnd(可拿掉) 1÷P→C:(P-R) ÷(2HPR)→D:180÷∏→E:Abs(Abs(S)-O)→W:Prog “SUB1” “QJ=”:Z[1]◣DMS◢ “X=”:X◢ “Y=”:Y◢ Goto 1 Lbl 2

“S=”?S If S<0:Then Prog “SYL”:Else Prog “SYR”:IfEnd(可拿掉) 90→T 1÷P→C:(P-R) ÷(2HPR)→D:180÷∏→E “X=”?X “Y=”?Y X→I:Y→J Prog “SUB2” O+W→S(红色加粗加下画线为字母,常规为零) “S=”:S◢ Z→Z “Z=”:Z◢ Goto 2 子程序(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+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+F WD))+Asin(G+QEMW(C+MWD))) →Y G+QEW(C+WD)→Z[1]

交点法与线元法

本人一直以来想找一个交点法与线元法相结合的坐标正反算程序,在网上找了很久很久,没能找到一个较为满意的,有幸在测量空间看到大歪哥的《Casio5800交点法程序》与《线元法(积木法)匝道坐标正反算放样程序》,根据歪哥意见“需要的自行修改结合XY框架自己修改为数据库反算程序等”,本人不才,采用最笨的办法将两个程序综合了一下,使之能既能进行交点法正反算,又能进行线元法正反算。在此特别感谢大歪哥!将程序发上来,愿与大家一同交流学习欢迎大家吐口水,只要能进步就行! 程序由一个主程序ZBZFS和8个子程序(JS、XY-A、XY-B、JDYS、1、2、3、4)构成,运行时只需运行主程序即可! 本程序适用于单交点对称型、不对称型、无缓和曲线单圆曲线型一个交点范围内(含交点前后有直线段时)的曲线要素核对和坐标正反算,手工输入要素,对设计图纸的“直线、曲线转角表”中交点数据进行复核验证,并能对单一线元进行坐标正反算。 1主程序名:ZBZFS(功能:进入计算主程序) 65→Dimz↙ Deg:Fix 3↙ "1.JD ZFS 2. ZHADAO ZFS"? I: I→Z[61]: "1.ZHONG SHU JS 2. JS"? I↙ If I=1: Then Goto1: Else Goto2:IfEnd↙ LbI 1 :If Z[61]=1: Then Prog"JDYS":Else Cls:"K0"?A:"KN"?L :"X0"?U :"Y0"?V :"F0"?W :"R0"?P :"RN"?Q:"ZX:-1,+1,0"?G:IfEnd↙ LbI 2 :Prog"JS" 2子程序名:JS(功能:选择正算或反算模式) Cls:"XC"?H:"YC"?Z↙ Cls:"1.ZS 2.FS"? I: I=2=>Goto 3↙ LbI 1 : Cls: If Z[61]=1: Then"JD ZS KX+XXX"?K :Prog"4": Else "ZHADAO ZS KX+XXX"?K :IfEnd↙ LbI 2: Cls:90→B: Cls:"RJ Or 0 To K"?B:B=0 =>Goto 1:"Z"?T↙ Prog "XY-A"↙ X+Tcos(M+B)→X↙ Y+Tsin(M+B)→Y↙ 360Frac((M+360)÷360→M↙ Pol(X-H,Y-Z : 360Frac((J+360)÷360→J↙ 2→O: Prog "XY-B":Goto 2↙ LbI 3 : Cls: If Z[61]=1: Then"JD FS KN+"?K:"X"?C:"Y"?D:Prog"4":Else Cls: "ZHADAO FS":"X"?C:"Y"?D:IfEnd↙ LbI 4 :Prog "XY-A"↙ (D-Y)sin(M)+(C-X)cos(M)→H↙ If Abs(H)>X10-3 :Then K+H→K:Goto 4:IfEnd↙ (D-Y)÷cos(M)→T↙ 3→O: Prog "XY-B":Goto 3↙ 3子程序名:XY-A(功能:坐标计算程序) 5→N: G(Q-1-P-1)÷Abs(L-A)→F: Abs(K-A)÷N→R: 90R÷π→S:

5800线元法程序

1. 主程序 Lbl 4:"1.SZ => XY":"2.XY => SZ":?N:?S:Prog“SUB0”↙ 1÷P→C: (P-R)÷(2HPR) →D:180÷∏→E:N=1 => Goto1:Goto2↙ Lbl 1:? Z:Abs(S-O) →W:Prog "SUB1":"XS=":X◢ "YS=":Y◢F-90→F:“FS=”:F▲DMS◢:Goto4↙ Lbl 2:?X:?Y:X→I:Y→J:Prog“SUB2”:O+W→S:“S=”:S◢“Z=”:Z◢Goto4↙ 2. 正算子程序(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+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 +MWD))) →Y: G+QEW(C+WD)+90→F:X+Zcos(F)→X:Y+Zsin(F)→Y 2. 反算子程序(SUB2) G-90→T:Abs((Y-V)cosT-(X-U)sinT) →W:0→Z:Lbl 0:Prog "SUB1": T+QEW(C+WD) →L:(J-Y)cos(L)-(I-X)sin(L)→Z:Abs(Z)<1E-6=>Goto1:W=W+Z:Goto 0←┘Lbl 1:Z=0:Prog "SUB1":(J-Y)÷sin(F)→Z SUB0 数据库子程序 Goto1↙同时保存多个曲线时的指针 Lbl 1:IF S<***(线元终点里程):Then***→G(线元起点方位角):***→O(线元起点里程):***→U(线元起点X):***→V(线元起点Y):***→P(线元起点曲率半径):***→R(线元终点曲率半径): ***→H(线元起点至终点长度):0或1、-1→Q:Return:IfEnd↙ Lbl 1:IF S<***(线元终点里程):Then***→G(线元起点方位角):***→O(线元起点里程):***→U(线元起点X):***→V(线元起点Y):***→P(线元起点曲率半径):***→R(线元终点曲率半径): ***→H(线元起点至终点长度):0或1、-1→Q:Return:IfEnd ……………………….. 为了便于解读,每增加一个线元增加一行语句,每增加一条曲线增加一个Lbl,每增加一个工程增加一个文件。 三、使用说明 1、规定 (1) 以道路中线的前进方向(即里程增大的方向)区分左右;当线元往左偏时,

线路任意点坐标计算、及任意点对应桩号,左右偏距计算程序.tmp

线路任意点坐标计算、及任意点对应桩号,左右偏距计算程序卡西欧4800、4850系列计算器测量计算程序 一、字母含义; K: 表示拟计算位置的线路桩号; H: 表示计算位置距路线中心线的偏距,左偏为正,右偏为负。 T: 各段线路上作为起算点处的切线方位角。 S: 拟计算点到起算点的曲线长。 L: 在圆曲线上表示曲线长,在缓和曲线上表示缓和段长度,在直线上为零。 R: 表示曲线半径,左偏为正,右偏为负 E、F: 起算点的坐标值。 M”X1”N”Y1”: 已知点坐标,求其对应位置桩号及左右偏距。 二、程序 1、坐标计算(COORD) {K,H}:KH“L+,R-”:Prog “DATA”:”(X,Y)=”: X=X+HSinW :Pause 1:Y=Y-HcosW: 2、坐标反算线路桩号(FS ZH) Fix 4:M”X1”N”Y1”:LbI 1:Prog “DATA”:PoI (M-X,N-Y):Fixm:J<0=>J=J+360:≠>J=J⊿ Abs(Sin(W-J ))=1=>”K=”:K: Pause 1 : “L+,R- =”: H=ISin(W-J):≠>K=K+Icos(W-J): Goto 1 3、子程序Prog “DATA” K<(第1段与第2段线路分界处的路线桩号)=> T=(第1段起算点处的切线方位角值):S=K-(第1段起算点处的路线桩号):L=(在圆曲线上等于S;在缓和曲线上等于缓和段长度;在直线上为零。):R=(曲线半径):E=(第1段起算点的X坐标值):F=(第1段起算点的Y 坐标值) ≠ >K<(第2段与第3段线路分界处的路线桩号):=>T=(第2段起算点处的切线方向角值):S=K-(第2段起算点处的路线桩号):L=(在圆曲线上等于S;在缓和曲线上等于缓和段长度;在直线上为零。):R=(曲线半径):E=(第2段起算点的X坐标值)F=(第2段起算点的Y坐标值)≠ >K<(第3段与第4段线路分界处的路线桩号):=>T=(第3段起算点处的切线方向角值):S=K-(第3段起算点处的路线桩号):L=(在圆曲线上等于S;在缓和曲线上等于缓和段长度;在直线上为零。):R=(曲线半径):E=(第3段起算点的X坐标值)F=(第3段起算点的Y坐标值)…… ≠ >K<(第n-1段与第n段线路分界处的路线桩号):=>T=(第n-1段起算点处的切线方向角值):S=K-(第n-1段起算点处的路线桩号):L=(在圆曲线上等于S;在缓和曲线上等于缓和段长度;在直线上为零。):R=(曲线半径):E=(第n-1段起算点的X坐标值)F=(第n-1段起算点的Y坐标值) ≠>T=(第n段起算点处的切线方向角值):S=K-(第n段起算点处的路线桩号):L=(在圆曲线上等于S;在缓和曲线上等于缓和段长度;在直线上为零。):R=(曲线半径):E=(第n段起算点的X坐标值)F=(第n段起算点的Y坐标值)⊿⊿⊿⊿⊿⊿⊿⊿(⊿共n-1个) L ≠ 0 = > C =90S^2/ЛRL :≠> C=0:⊿ L=S => V=2RsinC : Q=T-C : W=T-2C ≠> L=0 =>V=S : Q=T : W=T :≠> Pol(S-S^5/40R^2L^2+S^9/3456R^4L^4,S^3/6RL-S^7/336R^3L^3+S^11/42240R^5L^5):Fixm: V=I:Q=T-J:W=T-CΔΔ X=E+VcosQ:

线元法

5800 计算程序 主程序 QXJS Fix 3:Deg:Lbl 4:“1.SZ=>XY”:“2.XY=>SZ”:? Q Lbl 4: “LICHENG= ” ?S:Prog“SUB0” ↙ Lbl 0:If Q=1:Then Goto1:IfEnd IfQ=2:ThenGoto2:IfEnd ↙ Lbl 1:”-B,0,B=”? Z: “J J右交角=”?G:Prog“SUB1”: Fix 4:Cls “X=”:N →N ◢“X=”: Locate3,1,N◢ “Y=”:E →E ◢“Y=”: Locate3,1,E◢ Prog“JI”:Goto4 “QXFWJ=”:F →F:F ▲ DMS ◢ Goto4 ↙ Lbl 2: “X=”? B: “Y=”? C:B→N: C→E:Prog“SUB2”: “LICHENG=”:S◢ “OUT JL=”:Z◢ Goto4 ↙ 说明: Q: 代表正反算,其中 1 为正算, 2 为反算; S: 代表里程; Z :代表偏移距离; G :代表偏移角度(以线路前进方向为 X 方向,顺时针转为正; N : X 坐标; E : Y 坐标; F :切线方位角; JI Clstat Pol(N-G,-E-H):Cls If S<0:Then J+360→Y:Ease J→Y:Ifend “F W J=”:Y▲ DMS ◢黄色为计算机程序

SUB0 ( 数据库 ) Goto1 ↙ Lbl 1 IF S<157687.528:THEN 2884169.2517→U:471475.6573→V:157547.528→O:98 ° 32 ′ 43.08 ″ →A:140→L:10^45→P:10000→R: Return:IfEnd ↙ IF S<163781.879:THEN 2883008.7030→U:477458.2815→V:163641.879→O:101 ° 6 ′ 4.08 ″ →A:140→L:10^45→P:10000→R: Return:IfEnd ↙ IF S<164195.661:THEN 2882981.4268→U:477595.5984→V:163781.879→O:101 ° 30 ′ 7.93 ″ →A:413.7833→L:10000→P:10000→R: Return:IfEnd ↙ IF S<164335.661:THEN 2882890.5519→U:477999.2492→V:164195.6623→O:103 ° 52 ′ 22.82 ″ →A:140→L:10000→P:10^45→R: Return:IfEnd ↙ IF S<171831.142:THEN 2882856.3502→U:478135.0069→V:164335.6623→O:104 ° 16 ′ 26.67 ″ 说明: S :里程;157547.528→O 为线元终点里程; 2884169.2517→U 为线元起点 X 坐标;471475.6573→V 为线元起点 Y 坐标;98 ° 32 ′ 43.08 ″ →A 线元起点切线方位角;0^45→P 线元起点半径(左转为负右转为正);10000→R 线元终点半径(左转为负右转为正) SUB1 正算子程序 0.5 (1÷R-1÷P)÷L→D:S-O→X ↙ U+∫(cos(A+(X÷P+DX2)×180÷π,0,X)→N ↙ V+∫( sin(A+(X÷P+DX2)×180÷π,0,X)→E ↙ A+(X÷P+DX2)×180÷π→F ↙ N+Zcos(F+G) →N:E+Zsin(F+G) →E Return SUB2 反算子程序 Lbl 1:0→Z :1→Q :Prog“SUB0”: 0.5 (1÷R-1÷P )÷L→D:S-O→X ↙ U+∫(cos(A+(X÷P+DX2)×180÷π,0,X)→N ↙ V+∫( sin(A+(X÷P+DX2)×180÷π,0,X)→E ↙ A+(X÷P+DX2)×180÷π→F ↙ N+Zcos(F+90) →N:E+Zsin(F+90) →E : Pol(N-B+10^(-46), E-C+10^(-46)):Isin(F-90-J) →W:S+W→S ↙

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

教你如何通过Excel VBA编写测量坐标计算程序 发布日期: 摘要:认识VBA、理解VBA,并利用Office Excel VBA编写测量坐标计算程序。 关键词:Excel VBA程序坐标编写 了解:VBA是什么?简单的说就是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案。可以用Excel的宏语言来使Excel自动化运行等……Microsoft让它开发出来的应用程序共享一种通用的自动化语言——Visual Basic For Application(V BA),可以认为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的过程、变量、属性、方法、事件、语句等。 Excel VBA程序可以分为“录制宏、自定义函数”,由于录制宏编写计算类程序它限制了计算涵式过程,而无法达到自定义数据直接运算的目的,所以大家可以通过按钮式点击进行自定义函数过程(还可以通过窗体定义过程)。 基本常识:

交点法和线元法曲线要素输入简介

测量坐标计算程序V5 输入简介 本程序运用Office Excel 软件VBE标准模块编写,其功能基本全面集成了以往所更新的Excel程序,程序适用于公路、铁路等线路坐标计算,程序主要包括(交点法、线元法、直线坐标正反算,竖曲线计算,平面控制网“导线、高程”平差,隧道超欠挖,超高加宽,测量工具箱等,还可以全自动生成卡西欧5800、9750程序数据库,其中包括:隧道超欠挖、交点法、线元法、竖曲线一系列数据库),已知数据输入明确,操作简单易懂,是工程测量人员的好帮手! 交点法曲线要素输入简介 一、适用平曲线类型 交点法计算坐标适用的平曲线为对称或不对称缓和曲线、圆曲线。 注意:对于非普通的三单元曲线,本程序交点法不适用。非普通的三单元曲线 体现在本程序中的《直线、曲线及转角表》内,点击“生成要素”之后,计算 值与设计图纸《直线、曲线及转角表》上的切线长和曲线主点位置等不一致, 此时只能采用线元法进行坐标计算。 例如:下表的JD18及JD19处的平曲线,经本程序交点法计算之后发现,为非普通的三单元曲线,交点法不适用该类曲线的坐标计算,故只能采用线元法进行坐标计算。

二、交点法曲线要素输入说明 本程序交点法输入的要素有7个(程序不限制输入行数): 1、QD起点坐标: 起点坐标必须在直线段上,或填写前一交点的坐标。 2、JD交点曲线要素: (1)交点桩号K,注意:当起始平曲线上的ZH点(缓和曲线)或ZY点(圆曲线)的桩号为负数时,交点桩号K统一加上100000(即增加100Km),以避免坐标正算时出现桩号计算范围错误(但是,线元法计算坐标时可以输入负坐标,坐标正算与反算都不会出现错误)。 (2)交点桩号(X,Y) (3)曲线半径R (4)第一缓和曲线长度LS1,若为0,输入0,不能为空。 (5)第二缓和曲线长度LS2,若为0,输入0,不能为空。 3、ZD终点坐标: 终点坐标也必须在直线段上,或填写后一交点的坐标。 三、操作流程: 1、根据设计图纸《直线、曲线及转角表》输入第一个交点坐标,作为QD起点坐标。 2、依次输入各交点的曲线要素。 3、输入最后一个交点坐标,作为ZD终点坐标。 4、点击“点击进入直曲表”,然后点击“生成要素”,根据计算的转角值、曲线要素、曲线主点位置、直线长度及方向与设计图纸《直线、曲线及转角表》上的设计值进行核对,看各要素输入是否正确。 注意:交点法与线元法在计算坐标时,线元法可能存在mm毫米 级以内的计算误差,坐标计算值与设计值也可能存在mm毫米级以内

曲线坐标计算程序

曲线坐标计算程序

曲线坐标计算程序 关键词: 曲线坐标计算 EXCEL编程坐标曲线坐标实例 摘要: 利用EXCEL强大的函数功能通过曲线坐标计算的知识编制成曲线计算坐标的计算程序。简单的输入曲线的里程桩号,通过坐标旋转、平移结合可以快速的计算完成与线路成任意角度的曲线上各中桩、边桩以及任意点坐标的计算。 1、概述 一般计算圆曲线可用坐标正算直接进行计算,具体思路和求解步骤,这里不再阐述。若计算带有缓和曲线的圆曲线时,将测量中所学的支距法与坐标旋转、平移结合在一起,利用EXCEL表中强大的函数自动计算功能,准确快速的完成对缓和曲线的坐标计算。比一般的手工计算快10~20倍,比CAD绘图计算快5~10倍。并可以应用来指导工程施工、施工放样、审核图纸等工作。 2、计算过程分段 在计算带有缓和曲线的圆曲线或圆曲线时,只要输入待求点的里程,程序将会自动会计算线路中桩的坐标、与中桩有一定夹角、距离的边桩坐标,与边桩中心线任意夹角的垂直桩基坐标。若要计算其他的距离和夹角的坐标,相应的修改待求点里程、夹角和距离。 2.1、程序初始化:

输入每个曲线所对应交点的半径、缓和曲线长、线路转角、连续三交点的里程和坐标、交点连线的坐标方位角,顺便计算出各个曲线要素以及曲线各主点的里程。 2.2、初直线H Z i-1~ZH i段: (1)X ZHi-1和Y ZHi-1的计算 X ZHi-1= X JDi-1+T i-1×cos(A i-1,i) Y ZHi-1= Y JDi-1+ T i-1×sin(A i-1,i) 其中:T i-1——JD i-1曲线的切线长; A i-1,i——JD i-1与JD i直线的坐标方位角; X JDi-1、Y JDi-1——JD i-1的坐标; X ZHi-1、Y ZHi-1——JD i-1对应的ZH点坐标。 (2)中桩计算公式: X中=L A×cos(A i-1,i)+ X ZHi-1 Y中= L A× sin(A i-1,i)+ Y ZHi-1 其中:L A——待求点与ZH i的里程差; A i-1,i——JD i-1与JD i直线的坐标方位角; X中、Y中——待求点里程的中桩坐标; 其余符号同上。 (3)边桩计算公式: X边=L A’×cosα’+ X中 Y边= L A’×sinα’+ Y中

相关文档
最新文档