GIS资讯 GIS技术 GIS产品 GIS书籍 GIS下载 GIS知识 GIS论文 GIS考研 GIS人物 GIS企业 GIS招聘 GPS相关 RS 相关 3D 相关 测绘相关 GIS博客 招标信息
您当前的位置:GIS资讯小组资讯中心GIS论文 → 资讯内容
Google
精简4800坐标正反算程序-多线贯通-可手动输(线元法)
作者:佚名  来源:不详  更新时间:2008-4-2 2:06:15

减小字体 增大字体

  

功能简介及特点:
 1、选用高斯-勒让德公式作计算内核,保证精度,模块化设计,便于扩充功能。
 2、线元数据可自动从数据库调用,也可手工输入。
 3、可管理多条线路,如里程不在线路或线元范围,将警告里程偏大、偏小。
 4、边桩计算设计为导线式递推方式,可用于由一个中桩推出结构物所有角点坐标。
 5、反算实现了智能化操作,只需输入线路号(或手工输线元资料)、坐标,不需近似里程,即可自动从起点向后开始试算出里程、位置,如对算出里程、位置表示怀疑,还可以让计算器从终点起再向前试算下一个可能的位置(匝道、回头曲线同一坐标可能会有一个以上结果)。第三次及以后试算才要求输入近似里程。
 6、程序代码规范简洁,便于阅读、理解。
   完整程序清单:
ZFS %正反算主程序
Lbl 1:B=.1739274226:C=.5-B: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:I=Rec(I,J:K=K+I: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<L=>"<<!":Z=1Δ
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=线元长:K≤L+Q=>X=起点X坐标:Y=起点Y坐标:A=起点方位角:P=起点半径:R=终点半径:Goto EΔL=L+Q:
③......
④Q=短链长:K<L+Q=>Prog "DL":Goto BΔL=L+Q:
⑤Q=线元长:K≤L+Q=>X=起点X坐标:Y=起点Y坐标:A=起点方位角:P=起点半径:R=终点半径:Goto EΔL=L+Q:
⑥......
⑦Q=线元长:X=起点X坐标:Y=起点Y坐标:A=起点方位角:P=起点半径:R=终点半径:Lbl E
2 %线路二数据库子程序
输入要求和线路一相同。
数据输入要求:
①是线路总体资料格式
②⑤是标准线元资料格式,按里程顺序依次排
④断链资料格式
⑦最后一个线元资料格式
  缓和曲线两端的半径和两端接的线元半径一样,注意直线、反向曲线的公切点为10^10,圆曲线右转为正。新增语句解决断链并考虑反算中间结果在断链处时的处理方式
注:1、加下划线的行是程序名及功能说明
  2、ZZ程序第三行的r是计算器的弧度转度标志,相当于*180/π。
    3、请注意区别数字0及字母O
  每个子程序第一行为程序名和功能简介用 %隔开,本程序语句在行未统一用冒号分隔,不须再加换行符,除≠>前外所有冒号也可用换行代替。
  程序未尾的Δ(一个程序中Δ个数本应和=>的个数相等)、:前的)]、小数点前的0可省略,不影响程序运行结果,省略乘号的连乘运算优先级高于除法。
程序使用说明:
   数据库准备
  将各条线路的“线元要素”依次输入各数据库“1”、“2”,注意其中曲线半径右偏为正,直线请输为10^10。线路起点里程即第一个线元的起点里程,线路终点里程即最后一个线元的终点里程。
  短链按示例输,长链要把长链后里程前加一位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?输入相对上点偏距;<?输入相对上两点连线前进方向右角,输出坐标到④。任何时候L?按EXE输入0到②。

反算计算流程
①XC?YC?输入测点坐标;0 SD?(同正算);
②从起点推算输出里程、外移距;
③提示0 NEXT?认为可能还有下个可能选0到④,选其它值到①,除不再提问线路号外其它相同。
④从终点推算输出里程、外移距;
⑤提示0 NEXT?认为可能还有下个可能选0到⑥,选其它值到①,除不再提问线路号外其它相同。
⑥K?输入近似里程,输出里程、外移距到⑤;
如不输绿色部分代码,执行下列流程
①X?Y?输入测点坐标;0 SD?(同正算);
②K?输入近似里程,输出里程、外移距到①,除不再提问线路号外其它相同。
  在运行过程时,无论正反算,任何时候发生里程超出线路范围都会有警告,偏小会提示“<<!”偏大会提示“>>!”,返回到0 SD?重新选择线路、并要求重输里程,此时应该核对数据重算
  读者可利用上述警告功能在想转换线路时,有意输入线路外里程或坐标。当然按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。



[] [返回上一页] [打 印]
资讯评论 (评论内容只代表 GISTM 网友观点,与本站立场无关!)

用户名: * 查看 GISTM 更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         ( 注意“*”必填,请自觉遵守法律法规!) 验证码: 验证码,看不清楚?请点击刷新验证码

推荐文章/热门文章
相关文章/相关下载
关于本站 - 免责声明 - 帮助(?) - 友情连接 - 网站地图 - 网站留言