Excel_中边桩坐标计算程序(原件勿改)
利用EXCEL表格计算线路中边桩坐标
利用EXCEL表格计算线路中边桩坐标高速公路施工中,桥梁、隧道施工以及路沿石施工时对测量要求相当严格,要求总体宽度误差在1cm以内。
这就要求测量工程师必须把线路边桩都计算出来,每隔10米(曲线段)或者20米(直线段)放样线路边桩,以便指导施工。
如果采用常规的计算器计算,不仅繁琐、费力而且容易出现差错。
本人在计算中边桩坐标时,试着利用EXCEL表格功能,编辑函数大批量计算线路中边桩坐标,达到了高效、准确的目的。
由于直线部分相对简单,复曲线又特别繁琐。
现就圆曲线举例计算如下:例:在浙江省龙丽一级公路施工中,左线圆曲线起点里程为K86+966.6,曲线半径为1500m,曲线左偏,起始方位角为147°43 ′58.2″,线路中心和隧道中心偏差15cm。
计算隧道中心线和衬砌边线(半径5.1m)。
1.在B4方格中输入:=$B$3+3000*SIN((A4-$A$3)/3000)*COS(2.5784244-(A4-$A$3)/3000)+ 0.15*COS(4.149220679-2*(A4-$A$3)/3000)按回车键确认即可以计算出该里程隧道中心线X轴坐标。
2.在C4方格中输入:=$C$3+3000*SIN((A4-$A$3)/3000)*SIN(2.5784244-(A4-$A$3)/3000)+0.15*SIN(4.149220679-2*(A4-$A$3)/3000)按回车键确认即可以计算出该里程隧道中心线Y轴坐标。
同理在3.D4方格中输入:=$B$3+3000*SIN((A4-$A$3)/3000)*COS(2.5784244-(A4-$A$3)/3000)+ COS(4.149220679-2*(A4-$A$3)/3000) *(0.15+5.1)4.在E4方格中输入:=$C$3+3000*SIN((A4-$A$3)/3000)*SIN(2.5784244-(A4-$A$3)/3000)+SIN(4.149220679-2*(A4-$A$3)/3000)*(0.15+5.1)其中 2.5784244为方位角147°43 ′58.2″的弧度表达方式,4.149220679为起始方位角147°43 ′58.2″加90°后的弧度值。
道路中边桩坐标计算EXCEL程
道路中边桩坐标计算EXCEL程
道路中边桩坐标计算EXCEL程是一种用于快速计算道路中边桩的相对位置及其坐标的Excel程序。
它使用一个小工具来帮助用户将边桩定义在数学坐标系(X-Y坐标系)中。
EXCEL程是一个Excel表格,用户可以在表格中输入边桩数据,并根据输入的边桩数据计算出边桩的位置和坐标。
具体而言,用户需要首先输入各个边桩的起始位置(X0, Y0)、方向(角度)和距离(L),然后点击Excel 程中的计算按钮,Excel程就会按照输入的数据计算出边桩的位置和坐标,并显示在Excel表格中。
用户可以通过Excel程来计算出边桩的位置和坐标,这有助于道路工程的施工计划等的制定。
此外,用户可以根据施工计划进行边桩安装,确保道路的安全性和可靠性。
Excel程的使用非常简单,可以帮助用户更快更准确的计算出边桩的位置和坐标。
因此,Excel程可以大大提高道路施工的效率。
Excel程还提供了一些其他的功能,比如用户可以将边桩位置和坐标可视化,以便更好的理解边桩的位置。
此
外,用户还可以利用Excel程对边桩的位置和坐标进行校验,以确保边桩的准确性。
总之,道路中边桩坐标计算EXCEL程是一款十分有用的小工具,可以大大提高道路施工的效率,保证边桩的准确性,并且可视化边桩的位置和坐标,有助于更好的理解边桩的位置。
EXCEL电子表格在公路测量施工中的应用——海滨大道路基、桥梁中桩坐标计算及放样
为i 点
求 出 i 的路 线 坐 标 后 ,根 据 o 在 线 路 坐 标 系 中 的 方 点 轴 位角 T 和 Z 。 Y点 的坐 标 对 、y进 行 平 移 、旋 转 , 即 : )iX + i o T +y ×sn 0 ( 转取 上 面 符号 ) ; ( 。 x Xc s o i iT 右 = Y= ox iT ±y ×c s 0 ( 转 取 下 面符 号 ) 。 iY + i sn o X i ot 左
徐 刚 , 王 继 刚
( 中交 一航 局 第 一 工 程 有 限 公 司 , 天 津 3 0 5 0 4 6)
摘
要:以海滨大道路基 、桥梁施工为范例 ,通过计算机的应用简化施 工放样计 算的方法 。
文献 标 识 码 :A 文章 编 号 : 10 — 9 3 ( 0 2 4 0 2— 2 0 6 7 7 2 1 )0 — 2 3 0 方 法 二 :用 积 分 坐 标 方 程直 接 求 圆 曲线 上 任 意 i点 的 线 路坐标 ,即:
x=i 1/ R )+ ( 1 0 il i 6 。 一(3 1 / R ); i 2
Y= (2 2 i 1/ R)一 ( 2 R ) + (i 7 0 5 ; i 1/ 4 3 i 1/ 2 R ) 6
坐标 系下 的坐标 ,转换公式与 圆曲线类 同。
缓 和 曲线 上任 意 一 点 i 的切 线 方 位 角 可 用 下 式 求 得 : T= 0 ( / RL ) × ( 8 ) , iT + 1 2 o 2 1 O/
式中:, _ 特定坐标系 x轴 的方 位角。 r_ 0一
同 上 ,可 根 据 T 求 得 任 意 一 点 i的法 线 方 向上 的 距 离 点 i 的坐 标 。
EXCEL计算坐标方法
计算坐标需要"桥型布置图"、"桥台结构图"、"桥墩结构图"、"点位图"、"纵断面".
先点开"桥型布置图","纵断面",找出台帽前墙位置与纵断线上已知一点的距离,例:
量取已知点距台帽前墙距离,如:1.978m
再点开"点位图",找到已知点投影到拟定桥梁中线的位置.
再在该位置向路线方向移动1.978m.
以该点为基点,并在CAD中点出该点的坐标,记录下来.
但是注意CAD的坐标和测量的坐标X、Y是相反的.记下坐标X:6645.8554 ;Y:4103.3546.
再查看桥型布置图,查看两台帽前墙间的距离,13.04m
再在点位图中把之前的基点移动13.04m,并记录下在CAD中的坐标.
如:X:6658.8019,Y:4101.7962
再打开设计完的"桥台结构图",算出台帽至基础前点的平面距离2.7m,并记录下来.
再查看基础的侧面长度,如6.7m,和基础的横向宽度7.0m,并记录下来.
OK有这些记录下来的数据就可以通过EXCEL计算基础坐标了.
方法:
打开excel并把记录下的数据填如表中:
黄色的框是要填入的数据.
注意:EXCEL计算1#台填入的"间距"等于13.04减去1#台台帽前墙距基础前点的平面距离. 如果是斜交的桥梁,输入的交角是路线方向逆时针旋转至桥台前墙的角度.如图中斜交60度,就输入60度.
1 / 1。
Excel批量反算桩号
新建一个Excel表,按ALT+F11进入Excel VB编辑器。
依次点击——插入——模块,将下面的内容全部复制到右边的空白窗口里面(曲线元素请自行修改,下面有说明)。
保存后就可以在这个新建的Excel表里用了(如果出现#NAME?请百度“Excel启用宏”)。
中桩X =XPS(DKI,1)中桩Y =XPS(DKI,2)中桩方位角=XPS(DKI,3)中桩高程=SHU(DKI)坐标反算桩号=ZHUANG(X,Y,1)坐标反算距中桩距离=ZHUANG(X,Y,2)从下面开始复制到结束***************************Function XPS(DKI, Z)'辛普森公式,5800程序改编Dim QX As VariantDim A, B, C, D, E, F, G As DoubleDim P, Q, I, J, M, N, K As Double'曲线元素,请自行更改'ElseIf DKI<终点桩号THEN' QX=Array(起点桩号,终点桩号,起点X,起点Y,起点方位角(弧度),起点半径,终点半径)If DKI < 20058.839 ThenQX = Array(0, 0, 0, 0, 0, 0, 0)ElseIf DKI < 20238.839 ThenQX = Array(20058.839, 20238.839, 4201152.834, 465521.276, 5.65395484192746, 0, 1500)ElseIf DKI < 20816.464 ThenQX = Array(20238.839, 20816.464, 4201300.426, 465418.29, 5.71395484980653, 1500, 1500)ElseIf DKI < 20996.464 ThenQX = Array(20816.464, 20996.464, 4201834.24, 465207.124, 6.09903818731417, 1500, 0)ElseIf DKI < 21116.464 ThenQX = Array(20996.464, 21116.464, 4202012.345, 465181.272, 6.15903858304419, 0, -1244.01)ElseIf DKI < 21538.232 ThenQX = Array(21116.464, 21538.232, 4202131.155, 465164.502, 6.11080747575542, -1244.01, -1244.01)ElseIf DKI < 21658.232 ThenQX = Array(21538.232, 21658.232, 4202526.61, 465023.77, 5.77176839646516, -1244.01, 0)ElseIf DKI < 21850.133 ThenQX = Array(21658.232, 21850.133, 4202629.304, 464961.713, 5.72353724069503, 0, 0) ElseIf DKI < 21970.133 ThenQX = Array(21850.133, 21970.133, 4202791.929, 464859.835, 5.72353724069503, 0, 1252.482)ElseIf DKI < 22050.81 ThenQX = Array(21970.133, 22050.81, 4202894.615, 464797.767, 5.77144211685777, 1252.482, 1252.482)ElseIf DKI < 22310.81 ThenQX = Array(22050.81, 22310.81, 4202966.18, 464760.552, 5.83585582000829, 1252.482, 2900)ElseIf DKI < 23162.892 ThenQX = Array(22310.81, 23162.892, 4203208.994, 464668.271, 5.98447753865125, 2900, 2900)ElseIf DKI < 23418.664 ThenQX = Array(23162.892, 23418.664, 4204048.252, 464539.886, 6.27829891856905, 0, 0) ElseIf DKI < 23843.077 ThenQX = Array(23418.664, 23843.077, 4204304.021, 464538.637, 6.27829887008768, -3000, -3000)ElseIf DKI < 24987.311 ThenQX = Array(23843.077, 24987.311, 4204726.868, 464506.599, 6.13682786235288, 0, 0) ElseIf DKI < 25107.311 ThenQX = Array(24987.311, 25107.311, 4205858.869, 464339.73, 6.1368282986852, 0, -1000)ElseIf DKI < 25597.197 ThenQX = Array(25107.311, 25597.197, 4205977.194, 464319.862, 6.07682829080613, -1000, -1000)ElseIf DKI < 25717.197 ThenQX = Array(25597.197, 25717.197, 4206413.637, 464108.336, 5.58694229503935, -1000, 0)ElseIf DKI < 26198.491 ThenQX = Array(25717.197, 26198.491, 4206502.543, 464027.767, 5.52694228716029, 0, 0) ElseIf DKI < 26318.491 ThenQX = Array(26198.491, 26318.491, 4206852.646, 463697.506, 5.5269428689367, 0, -1250)ElseIf DKI < 26668.593 ThenQX = Array(26318.491, 26668.593, 4206938.599, 463613.786, 5.47894287232972, -1250, -1250)ElseIf DKI < 26788.593 ThenQX = Array(26668.593, 26788.593, 4207143.201, 463331.103, 5.19886125757867, -1250, 0)ElseIf DKI < 27337.747 ThenQX = Array(26788.593, 27337.747, 4207195.875, 463223.295, 5.15086126097169, 0, 0) ElseIf DKI < 27487.747 ThenQX = Array(27337.747, 27487.747, 4207429.022, 462726.09, 5.15086174578537, 0, 1000)Else: QX = Array(0, 0, 0, 0, 0, 0, 0)End If'以下不用更改A = QX(2)B = QX(3)C = QX(4)If QX(5) <> 0 Then D = 1 / QX(5) Else D = 0 'D = QX(5)If QX(6) <> 0 Then E = 1 / QX(6) Else E = 0 'E = QX(6)F = QX(0)G = QX(1)P = (E - D) / Abs(G - F)Q = Abs(DKI - F)I = P * QJ = C + (I + 2 * D) * Q / 2M = C + (I / 4 + 2 * D) * Q / 8N = C + 3 * (3 * I / 4 + 2 * D) * Q / 8K = C + (I / 2 + 2 * D) * Q / 4If Z = 1 Then XPS = A + Q * (Cos(C) + 4 * (Cos(M) + Cos(N)) + 2 * Cos(K) + Cos(J)) / 12If Z = 2 Then XPS = B + Q * (Sin(C) + 4 * (Sin(M) + Sin(N)) + 2 * Sin(K) + Sin(J)) / 12If Z = 3 Then XPS = JEnd FunctionFunction shu(L)Dim SQX As VariantDim A, B, C, D, R, T, E, F, H, X, Y As Double'曲线元素,请自行更改'ElseIf L<终点桩号THEN' SQX=Array(变坡点,H,R,T,E,I1,I2)If L < 20483 ThenSQX = Array(0, 0, 0, 0, 0, 0, 0)ElseIf L <= 21225 ThenSQX = Array(20740, 785.679, 12000, 129, 0.693, 0.0035, 0.025)ElseIf L <= 22009.19 ThenSQX = Array(21360, 801.179, 30000, 135, 0.304, 0.025, 0.034)ElseIf L <= 22797.109 ThenSQX = Array(22160, 828.379, 14160.563, 150.81, 0.803, 0.034, 0.0127) ElseIf L <= 23636.923 ThenSQX = Array(22980, 838.793, 7075.103, 182.891, 2.364, 0.0127, -0.039) ElseIf L <= 24692.69 ThenSQX = Array(23740, 809.153, 12884.625, 103.077, 0.412, -0.039, -0.023) ElseIf L <= 25717.197 ThenSQX = Array(24840, 783.853, 6137.917, 147.31, 1.768, -0.023, 0.025) ElseIf L <= 26467.197 ThenSQX = Array(25820, 808.353, 14686.143, 102.803, 0.36, 0.025, 0.039) ElseIf L <= 27320 ThenSQX = Array(26570, 837.603, 5860.362, 218.591, 4.077, 0.039, -0.0356) Else: SQX = Array(0, 0, 0, 0, 0, 0, 0)End If'以下不用更改A = SQX(1)B = SQX(0)C = SQX(5)D = SQX(6)R = SQX(2)T = SQX(3)E = SQX(4)If (C - D) >= 0 Then F = 1 Else F = -1 'F=ABS(C-D)/(C-D)X = B - TY = B + TIf L < X ThenH = A - (B - L) * CElseIf L < B ThenH = A - (B - L) * C - F * (L - X) ^ 2 / (2 * R)ElseIf L = B ThenH = A - F * EElseIf L < Y ThenH = A - (B - L) * C - F * (L - X) ^ 2 / (2 * R)ElseIf L > Y ThenH = A - (B - L) * DEnd Ifshu = HEnd FunctionFunction ZHUANG(X, Y, Z)Dim W, L, J, DKI As Double'坐标反算,只需更改DKI=路线起点桩号DKI = 20058.839'以下不用更改DoL = ((XPS(DKI, 1) - X) ^ 2 + (XPS(DKI, 2) - Y) ^ 2) ^ 0.5If L = 0 Then Exit DoJ = Sin(XPS(DKI, 3) - 1.5707963267949 - Application.WorksheetFunction.Atan2((XPS(DKI, 1) - X), (XPS(DKI, 2) - Y)))If Application.WorksheetFunction.IsErr(W) Then Exit DoW = L * JIf Abs(W) < 10 ^ (-8) Then Exit DoIf Application.WorksheetFunction.IsErr(W) Then Exit DoDKI = DKI + WLoopIf Z = 1 Then ZHUANG = DKI Else ZHUANG = LEnd Function。
EXCEL辅助计算公路中桩及边桩参数的应用
EXCEL辅助计算公路中桩与边桩参数的应用晓凌摘要:在现今的道路桥梁建立中,全站仪以其高精度、高效率的特点,在测量放样中得到广泛的应用,它将传统的二维测量提升到了三维测量的高度。
但大量的坐标计算加重了测量人员的工作强度,也影响了全站仪的使用效率。
本人根据?公路工程施工测量?提供的FX-4500程序,利用EXCEL函数与逻辑循环语来计算公路中桩及边桩参数,大大提高了计算的可靠性和速度。
关键词:EXCEL 计算公路中桩公路边桩一、前言在当前的高速公路施工中,全站仪以其高精度、使用简便的特点在施工测量放样中得到广泛的应用。
它的使用还有一个意义,它将测量从传统的二维测量提升到三维测量的高度,使测量效率大为提高。
全站仪使用时需计算大量的坐标,坐标的正确和精度直接关系到测量结果的准确度;另外,对于现场计算的坐标,能否迅速的得出结果也会影响全站仪的使用效率,所以准确、快速的坐标计算也是全站仪使用中的关键一环。
坐标的计算涉及到大量的数据和公式,计算时极易出错。
测量中使用最多、计算最为复杂的是公路中桩、边桩坐标和方位角,其他的施工测量都是以此作为参照,经过简单运算即可得结果。
现测量员普遍采用可编程计算器帮助计算,使用前需根据不同的计算器特性输入程序,计算时根据不同的路段选择不同的程序输入参数,逐个得到坐标或方位角,还得反复校核。
这对于大批量计算来说是一个不小的工程。
现在,电脑在施工单位已得到使用普及,在工程量及数测量数据处理过程中,Office中EXCEL经常是测量技术人员利用的工具。
本人根据本人从2002年至2005年的利用电脑处理测量资料的经历结合EXCEL的强大功能,总结出了用电脑计算公路中桩、左侧、右侧坐标的可行方法,并利用EXCEL的逻辑语句编制了一个小的应用程序。
希望能把测量人员从重复性的劳动中解脱出来。
二、工作原理1.应用程序的目标上文已讲到施工测量中使用最多、计算最为复杂的是公路中线逐点坐标和切线方位角,既中桩的X值、Y值。
立交匝道中桩坐标计算EXCEL程序
一、名称:立交匝道中桩坐标计算EXCEL程序二、运行平台:计算机中,安装有EXCEL2003/2007软件三、程序功能:1.输入较少的匝道参数即可计算匝道全部主点参数,且易于同设计文件比照校对;2.能批量生成指定间距的中桩,避免手工输入的麻烦;3.瞬间计算完成指定桩号的中桩坐标和切线方位角,计算结果便于进一步制作报表输出;4.可生成匝道线型绘制数据,简单操作即可在AUTOCAD中生成匝道线型。
四、使用步骤:1.工程实例介绍一个立交匝道实例,并以此为例介绍程序使用步骤。
实例还是来源于《CASIO fx-5800P计算与道路坐标放样计算》中的立交匝道(见教材第6章,139页)匝道整体图:把其中的A匝道提取出来:A匝道相关的参数表也提取出来:.2.打开EXCEL计算程序,输入A匝道的相关参数图中浅绿色部分是输入的原始数据部分。
这里原始数据的输入是难点和关键,一定要准确验证,否则后面的工作全是无用功。
这里就数据输入作详细解读如下:(1)第一行,“匝道”后面的单元格可输入匝道编号,这个不参与计算,仅作提示,使界面清晰明了。
(2)数据第一列,是节点栏,“节点”是我起的名字,含义是两种不同线元交界的点,如ZH、ZY、HZ、GQ、YZ等特征点都是节点,匝道的起、终点也是节点,注意QZ不是节点。
这一栏就填节点的名称,注意不要漏了。
(3)节点桩号栏。
这个在设计文件上可以找到,需要强调的是输入时按数字输入,如输入153.194,回车后会自动显示为K0+153.194格式,千万不可按桩号格式K**+***的格式输入,否则会出错。
(4)半径1、半径2两栏。
节点除匝道起、终点外,都是对前后两个线元起承接作用的点,一般情况下,其曲率半径是连续的,但也有例外,如ZY点,节点前承直线终点,半径无穷大,后接圆曲线,半径为R。
因此,在节点处曲率半径连续的情况下,就在半径1中填写半径值,半径2中空着就行(当然填一个与半径1一样的值也没事),而当节点出曲率半径不连续的情况下,就分别在半径1和半径2中相应填写两个不同的半径值。
EXCEL快速计算任何难度的道路中线、边线坐标
EXCEL快速计算任何难度的道路中线、边线坐标主程序Public i As IntegerPublic pi As DoubleSub TP()Dim ii As IntegerDim k(1000) As DoubleDim xzq, yzq, kq, xzh, yzh, kzh, xjd, yjd, kjd, khy, kyh As Double'直线区域pi = 3.14159265358979xzq = 71862.642yzq = 63474.651kq = 0 '因为直线连接终点为ZH点,与圆曲线起点为同一点,所以在直线区域不定义ZH点参数'直线区域'曲线区域xzh = 71858.3267yzh = 63375.2684kzh = 99.4763xhz = 71909.3687yhz = 63283.8076 '曲线区域定义内容有:ZH(坐标、里程)、HZ(坐标、里程)、JD(坐标、里程)khz = 212.3392 'R(半径)、LS(缓和曲线长度)、HY(里程)、YH(里程)xjd = 71855.658yjd = 63313.806kjd = 160.9966ls = 30r = 75khy = 129.4763kyh = 182.3385'曲线区域i = 2 '从第二格开始读取数据所以定义I=2ii = 1 '桩号从第一个开始启用,所以定义II=2Dok(ii) = Workbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 1) '定义桩号等于读取数据If Workbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 1) = "" Then Exit Do '当没有数据读取时退出循环If k(ii) < kq Then '若计算点超过计算起点给予提示并退出程序MsgBox ("猪啊!!你的输入的桩号居然超过计算起点桩号")Exit SubElseIf k(ii) <= kzh Then '若计算点在ZH点前,则进入直线程序Call zx(xzq, yzq, kq, xzh, yzh, kzh, k(ii))ElseIf kzh < k(ii) And k(ii) <= khy Then '若计算点在ZH和HY之间则调入前段缓和曲线程序Call qhhqx(xzh, yzh, kzh, xhz, yhz, khz, xjd, yjd, kjd, ls, r, k(ii))ElseIf khy < k(ii) And k(ii) <= kyh Then '若计算点在HY和YH之间则调入圆曲线程序Call yqx(xzh, yzh, kzh, xhz, yhz, khz, xjd, yjd, kjd, ls, r, k(ii))ElseIf kyh < k(ii) And k(ii) <= khz Then '若计算点在YH和HZ之间则调入后段缓和曲线程序Call hhhqx(xzh, yzh, kzh, xhz, yhz, khz, xjd, yjd, kjd, ls, r, k(ii))ElseMsgBox ("笨啊!!数据已超出计算范围了") '若出现超出范围的桩号则给与提示并退出程序Exit SubEnd Ifi = i + 1ii = ii + 1LoopEnd Sub直线模块Sub zx(ByV al xzq As Double, ByV al yzq As Double, ByV al kq As Double, ByV al xzh As Double, ByV al yzh As Double, ByV al kzh As Double, ParamArray k())fw = fwj(xzh, xzq, yzh, yzq) '首先调入方位角程序计算直线方位角x = xzq + (k(ii) - kq) * Cos(fw) '然后根据桩号和长度计算出坐标值y = yzq + (k(ii) - kq) * Sin(fw)zdfm = dfm(fw) '将弧度形式的前进方位角转换度分秒形式'输出坐标值以弧度和度分秒形式的前进方位角Workbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 2) = xWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 3) = yWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 4) = fwWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 5) = zdfmEnd Sub圆曲线模块Sub yqx(ByV al xzh As Double, ByV al yzh As Double, ByV al kzh As Double, ByV al xhz As Double, ByV al yhz As Double, ByV al khz As Double, ByV al xjd As Double, ByV al yjd As Double, ByV al kjd As Double, ByV al ls As Double, ByV al r As Double, ParamArray k())l = Abs(k(ii) - kzh) '计算ZH点(因为以直缓点起算)到待求桩号的弧度长度ly = l - ls / 2 '计算圆弧长度p = ls ^ 2 / 24 / r - ls ^ 4 / 2688 / r ^ 3 '曲线内移值m = ls / 2 - ls ^ 3 / 240 / r ^ 2 '曲线切线长增量u = r * Sin(ly / r) + m '偏量坐标计算v = r * (1 - Cos(ly / r)) + p'调入方位角fwq = fwj(xjd, xzh, yjd, yzh) '计算ZH点方位角fwh = fwj(xhz, xjd, yhz, yjd) '计算HZ点方位角(此角作用是用来推算曲线是左偏还是右偏)'调入偏角判定nq = n(fwq, fwh) '计算偏角方向,左偏为-1右偏为1'计算坐标x = u * Cos(fwq) - nq * v * Sin(fwq) + xzhy = u * Sin(fwq) + nq * v * Cos(fwq) + yzhd = (90 * (2 * l - ls) / pi / r) * pi / 180 '计算圆曲线上的偏角(此句要点为角度必须转换为弧度即:pi/180)fw = fwq + d * nq '计算前进方位角zdfm = dfm(fw) '将弧度形式的前进方位角转换度分秒形式'输出坐标值以弧度和度分秒形式的前进方位角Workbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 2) = xWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 3) = yWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 4) = fwWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 5) = zdfmEnd Sub前缓和段Sub qhhqx(ByV al xzh As Double, ByV al yzh As Double, ByV al kzh As Double, ByV al xhz As Double, ByV al yhz As Double, ByV al khz As Double, ByV al xjd As Double, ByV al yjd As Double, ByV al kjd As Double, ByV al ls As Double, ByV al r As Double, ParamArray k())l = Abs(k(ii) - kzh) '计算测点到ZH点的距离u = l - l ^ 5 / 40 / r ^ 2 / ls ^ 2 + l ^ 9 / r ^ 4 / ls ^ 4 / 3456 '计算偏量v = l ^ 3 / 6 / r / ls - l ^ 7 / 336 / r ^ 3 / ls ^ 3'用公式二则以下两计算可省略(圆曲线和后缓和曲线也同理)Rem t = Atn(v / u)Rem s = Sqr(u ^ 2 + v ^ 2)'调入方位角计算fwq = fwj(xjd, xzh, yjd, yzh) '计算ZH点方位角fwh = fwj(xhz, xjd, yhz, yjd) '计算HZ点方位角(此角作用是用来推算曲线是左偏还是右偏)'调入偏角判定nq = n(fwq, fwh) '计算偏角方向,左偏为-1右偏为1'结果计算Rem x = xzh + s * Cos(fwq + nq * t)Rem y = yzh + s * Sin(fwq + nq * t)x = u * Cos(fwq) - nq * v * Sin(fwq) + xzh '经过测试,计算结果中的两种公式计算结果是一样的y = u * Sin(fwq) + nq * v * Cos(fwq) + yzhd = (90 * l * l / pi / r / ls) * pi / 180 '计算缓和曲线上的偏角(此句要点为角度必须转换为弧度即:pi/180)fw = fwq + d * nq '计算前进方位角zdfm = dfm(fw) '将弧度形式的前进方位角转换度分秒形式'输出坐标值以弧度和度分秒形式的前进方位角Workbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 2) = xWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 3) = yWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 4) = fwWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 5) = zdfmEnd Sub后缓和段模块Sub hhhqx(ByV al xzh As Double, ByV al yzh As Double, ByV al kzh As Double, ByV al xhz As Double, ByV al yhz As Double, ByV al khz As Double, ByV al xjd As Double, ByV al yjd As Double, ByV al kjd As Double, ByV al ls As Double, ByV al r As Double, ParamArray k())l = Abs(k(ii) - khz) '计算测点到HZ点的距离(后缓和曲线是以HZ点为起点)u = l - l ^ 5 / 40 / r ^ 2 / ls ^ 2 + l ^ 9 / r ^ 4 / ls ^ 4 / 3456 '计算偏量v = l ^ 3 / 6 / r / ls - l ^ 7 / 336 / r ^ 3 / ls ^ 3Rem t = Atn(v / u)Rem s = Sqr(u ^ 2 + v ^ 2)'调入方位角计算fwq = fwj(xjd, xzh, yjd, yzh) '计算ZH点方位角fwh = fwj(xhz, xjd, yhz, yjd) '计算HZ点方位角(此角作用是用来推算曲线是左偏还是右偏)'调入偏角判定nh = n(fwh, fwq) '计算偏角方向,左偏为-1右偏为1(注意:因为是从后HZ点起算,所以必须将HZ点方位角放在前ZH放在后)'结果计算Rem x = xzh + s * Cos(fwq + nq * t)Rem y = yzh + s * Sin(fwq + nq * t)x = xhz - (u * Cos(fwh) - nh * v * Sin(fwh)) '经过测试,计算结果中的两种公式计算结果是一样的y = yhz - (u * Sin(fwh) + nh * v * Cos(fwh))d = (90 * l * l / pi / r / ls) * pi / 180 '计算缓和曲线上的偏角(此句要点为角度必须转换为弧度即:pi/180)fw = fwh + d * nh '计算前进方位角zdfm = dfm(fw) '将弧度形式的前进方位角转换度分秒形式'输出坐标值以弧度和度分秒形式的前进方位角Workbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 2) = xWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 3) = yWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 4) = fwWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 5) = zdfmEnd Sub偏角模块Function n(ByV al fw1 As Double, ByV al fw2 As Double) As Doublepj = fw1 + pi - fw2 '前进的右角pjIf pj - pi > 0 Then '当右角pj-pi 〉0时为左偏否则为右偏n = -1Else: n = 1End IfEnd Function方位角模块Function fwj(ByV al x1 As Double, ByV al x2 As Double, ByV al y1 As Double, ByV al y2 As Double) As Double'计算增量x0 = x1 - x2y0 = y1 - y2'由增量判断方位角所在象限,不同象限取不同的值If x0 = 0 And y0 > 0 Thenfwj = pi / 2 '当在大地坐标中偏量在X轴上的值时ElseIf x0 = 0 And y0 < 0 Thenfwj = 3 * pi / 2 '当在大地坐标中偏量在负X轴上的值时ElseIf x0 < 0 Thenfwj = Atn(y0 / x0) + pi '当在大地坐标中偏量在第二第三象限上的值时ElseIf x0 > 0 And y0 < 0 Thenfwj = Atn(y0 / x0) + 2 * pi '当在大地坐标中偏量在第四象限上的值时Elsefwj = Atn(y0 / x0) '当在大地坐标中偏量在第一象限上的值时End IfEnd Function度分秒模块Function dfm(ByV al ao As Double) As V ariantao = ao * 180 / pi '将弧度转化为度jd = Int(ao) '计算度jf = Int(ao * 60 - jd * 60) '计算分jmx = (ao - jd - jf / 60) * 3600 '计算秒jm = Left(jmx, 8) '因为拆分出来的秒数经常占到十多位,所以只取秒数的前八位dfm = jd & "°" & jf & "′" & jm & "″" '连接度分秒End Function边桩公式(此公式在电子表格中直接输入):=B2+J2*COS(D2+RADIANS(L2)+PI()) =C2+J2*SIN(D2+RADIANS(L2)+PI()) =B2+K2*COS(D2+RADIANS(M2)) =C2+K2*SIN(D2+RADIANS(M2))=B3+J3*COS(D3+RADIANS(L3)+PI()) =C3+J3*SIN(D3+RADIANS(L3)+PI()) =B3+K3*COS(D3+RADIANS(M3)) =C3+K3*SIN(D3+RADIANS(M3))=B4+J4*COS(D4+RADIANS(L4)+PI()) =C4+J4*SIN(D4+RADIANS(L4)+PI()) =B4+K4*COS(D4+RADIANS(M4)) =C4+K4*SIN(D4+RADIANS(M4))=B5+J5*COS(D5+RADIANS(L5)+PI()) =C5+J5*SIN(D5+RADIANS(L5)+PI()) =B5+K5*COS(D5+RADIANS(M5)) =C5+K5*SIN(D5+RADIANS(M5))=B6+J6*COS(D6+RADIANS(L6)+PI()) =C6+J6*SIN(D6+RADIANS(L6)+PI()) =B6+K6*COS(D6+RADIANS(M6)) =C6+K6*SIN(D6+RADIANS(M6))=B7+J7*COS(D7+RADIANS(L7)+PI()) =C7+J7*SIN(D7+RADIANS(L7)+PI()) =B7+K7*COS(D7+RADIANS(M7)) =C7+K7*SIN(D7+RADIANS(M7))=B8+J8*COS(D8+RADIANS(L8)+PI()) =C8+J8*SIN(D8+RADIANS(L8)+PI()) =B8+K8*COS(D8+RADIANS(M8)) =C8+K8*SIN(D8+RADIANS(M8))=B9+J9*COS(D9+RADIANS(L9)+PI()) =C9+J9*SIN(D9+RADIANS(L9)+PI()) =B9+K9*COS(D9+RADIANS(M9)) =C9+K9*SIN(D9+RADIANS(M9))=B10+J10*COS(D10+RADIANS(L10)+PI()) =C10+J10*SIN(D10+RADIANS(L10)+PI()) =B10+K10*COS(D10+RADIANS(M10)) =C10+K10*SIN(D10+RADIANS(M10))=B11+J11*COS(D11+RADIANS(L11)+PI()) =C11+J11*SIN(D11+RADIANS(L11)+PI()) =B11+K11*COS(D11+RADIANS(M11)) =C11+K11*SIN(D11+RADIANS(M11))=B12+J12*COS(D12+RADIANS(L12)+PI()) =C12+J12*SIN(D12+RADIANS(L12)+PI()) =B12+K12*COS(D12+RADIANS(M12)) =C12+K12*SIN(D12+RADIANS(M12))=B13+J13*COS(D13+RADIANS(L13)+PI()) =C13+J13*SIN(D13+RADIANS(L13)+PI()) =B13+K13*COS(D13+RADIANS(M13)) =C13+K13*SIN(D13+RADIANS(M13))=B14+J14*COS(D14+RADIANS(L14)+PI()) =C14+J14*SIN(D14+RADIANS(L14)+PI()) =B14+K14*COS(D14+RADIANS(M14)) =C14+K14*SIN(D14+RADIANS(M14))=B15+J15*COS(D15+RADIANS(L15)+PI()) =C15+J15*SIN(D15+RADIANS(L15)+PI()) =B15+K15*COS(D15+RADIANS(M15)) =C15+K15*SIN(D15+RADIANS(M15))=B16+J16*COS(D16+RADIANS(L16)+PI()) =C16+J16*SIN(D16+RADIANS(L16)+PI()) =B16+K16*COS(D16+RADIANS(M16)) =C16+K16*SIN(D16+RADIANS(M16))=B17+J17*COS(D17+RADIANS(L17)+PI()) =C17+J17*SIN(D17+RADIANS(L17)+PI()) =B17+K17*COS(D17+RADIANS(M17)) =C17+K17*SIN(D17+RADIANS(M17))=B18+J18*COS(D18+RADIANS(L18)+PI()) =C18+J18*SIN(D18+RADIANS(L18)+PI()) =B18+K18*COS(D18+RADIANS(M18)) =C18+K18*SIN(D18+RADIANS(M18))=B19+J19*COS(D19+RADIANS(L19)+PI()) =C19+J19*SIN(D19+RADIANS(L19)+PI()) =B19+K19*COS(D19+RADIANS(M19)) =C19+K19*SIN(D19+RADIANS(M19))=B20+J20*COS(D20+RADIANS(L20)+PI()) =C20+J20*SIN(D20+RADIANS(L20)+PI()) =B20+K20*COS(D20+RADIANS(M20)) =C20+K20*SIN(D20+RADIANS(M20))=B21+J21*COS(D21+RADIANS(L21)+PI()) =C21+J21*SIN(D21+RADIANS(L21)+PI()) =B21+K21*COS(D21+RADIANS(M21)) =C21+K21*SIN(D21+RADIANS(M21))=B22+J22*COS(D22+RADIANS(L22)+PI()) =C22+J22*SIN(D22+RADIANS(L22)+PI()) =B22+K22*COS(D22+RADIANS(M22)) =C22+K22*SIN(D22+RADIANS(M22))=B23+J23*COS(D23+RADIANS(L23)+PI()) =C23+J23*SIN(D23+RADIANS(L23)+PI()) =B23+K23*COS(D23+RADIANS(M23)) =C23+K23*SIN(D23+RADIANS(M23))呵呵,这个就是传说已久的EXCEL自动计算曲线坐标.给大家研究研究.欢迎在此基础上开发增加新模块。
道路中边桩坐标计算EXCEL程序(120424版)
路线坐标计算软件
ROAD COORDINATE CALCULATING SOFTWARE
Copyright © 2001
版权所有 All Rights Reserved
1.本计算软件基于EXCEL开发,使用VBA编程,为保证顺利使用,请将宏安全性设为“中”;2.本软件适用于基本型曲线的道路的计算,但不适用于卵形曲线、立交匝道的计算;
3.作者开发有适用于卵形曲线、立交匝道计算的计算软件,需要者请与作者联系;
4.本软件供工程一线技术人员免费使用,但版权和改编权属于作者;
5.本软件使用简单,使用者有任何问题,可与作者联系,作者尽可能提供帮助;
6.用户若有支助意向,请与作者联系。
Excel 公路中线 坐标计算
:Excel 公路中线坐标计算现阶段我国公路工程中已普遍使用大地坐标进行线型的控制及测设,在施工中经常要对中线坐标进行复核、加密,才能满足公路工程施工的需要。
本文是结合公路工程的实际需要,利用Exce电子表格制作的用于由直线、圆曲线、缓和曲线组成的一般公路线型中桩、边桩等计算的通用模版,用于减轻计算工作的劳动强度和提高计算结果的准确度。
一、采用公式1 直线段1.1 中桩坐标计算公式1.2 边桩坐标计算公式2 缓和曲线段2.1 中桩坐标计算公式当P点位于顺时针方向时,其方位角为αE→p=αA→B+90°;当P点位于逆时针方向时,其方位角为αE→p=αA→B-90°。
2.2 边桩坐标计算公式3 圆曲线段3.1 中桩坐标计算公式当E点位于顺时针方向时取“+”,当E点位于逆时针方向时取“-”。
3.2 边桩坐标计算公式XP、YP——未知点P的坐标X1、Y1——各线型起点的坐标(第二曲线段为终点)XA、YA、XB、YB——P点边桩A点、B点的坐标(A为左侧、B为右侧)α1→2——直线段起点的方位角αA→B——各线形起点的切线方位角(第二曲线段为终点)L——P点距各线形起点的长度LS——缓和曲线段缓和曲线长R——各曲线段的半径β——P点的切线角(曲线左转时取“-”、曲线右转时取“+”)T1、T2——P点至边桩A、B的距离(A为T1、B为T2)二、计算模板的建立步骤表1-1表1-21.新建一个工作薄,在其中输入如表1所示的内容;2. 选中工作表A列,打开格式菜单,选中“单元格”,在单元格菜单中选中“数字”栏,自定义单元格格式为“K000+000.000”。
按此方法分别将其他列设置为如表1所示单元格格式;3. 将“4”行做为路线起点数据行,在“5”行中进行公式编辑;4.在“J5”单元格中输入“=IF(C5=4,RADIANS(IF((G5+H5/60+I5/60/60)<180,(G5+H5/60+I5/60/60)+180,(G5+H5/60+I5/60/60)-18 0)),IF(C5=5,RADIANS(IF(B5=0,G5+H5/60+I5/60/60-E5/2/D5*180/PI(),G5+H5/60+I5/60/60+E5/2/D5*180 /PI())),RADIANS(G5+H5/60+I5/60/60)))”;5.在“K5”单元格中输入“=A5-$A$4”;6.在“L5”单元格中输入“=$L$4+IF(C5=1,K5*COS(J5),IF(C5=2,2*D5*SIN(K5/2/D5)*IF(B5=0,COS(J5-K5/2/D5),COS(J5+K5/2/D5) ),IF(C5=3,(K5-K5^5/40/D5^2/E5^2)*COS(J5)+(K5^3/6/D5/E5-K5^7/336/D5^3/E5^3)*IF(B5=0,COS(J5-90 *PI()/180),COS(J5+90*PI()/180)),IF(C5=4,(K5-K5^5/40/D5^2/E5^2)*COS(J5)+(K5^3/6/D5/E5-K5^7/33 6/D5^3/E5^3)*IF(B5=0,COS(J5-90*PI()/180),COS(J5+90*PI()/180)),2*D5*SIN(K5/2/D5)*IF(B5=0,COS( J5-K5/2/D5),COS(J5+K5/2/D5))))))”;7.在“M5”单元格中输入“=$M$4+IF(C5=1,K5*SIN(J5),IF(C5=2,2*D5*SIN(K5/2/D5)*IF(B5=0,SIN(J5-K5/2/D5),SIN(J5+K5/2/D5) ),IF(C5=3,(K5-K5^5/40/D5^2/E5^2)*SIN(J5)+(K5^3/6/D5/E5-K5^7/336/D5^3/E5^3)*IF(B5=0,SIN(J5-90 *PI()/180),SIN(J5+90*PI()/180)),IF(C5=4,(K5-K5^5/40/D5^2/E5^2)*SIN(J5)+(K5^3/6/D5/E5-K5^7/33 6/D5^3/E5^3)*IF(B5=0,SIN(J5-90*PI()/180),SIN(J5+90*PI()/180)),2*D5*SIN(K5/2/D5)*IF(B5=0,SIN( J5-K5/2/D5),SIN(J5+K5/2/D5))))))”;8.在“N5”单元格中输入“=IF(B5=0,J5-RADIANS(IF(C5=2,K5/D5*180/PI(),IF(C5=3,K5^2/2/D5/E5*180/PI(),IF(C5=4,K5^2/2/D5 /E5*180/PI(),IF(C5=5,K5/D5*180/PI()))))),J5+RADIANS(IF(C5=2,K5/D5*180/PI(),IF(C5=3,K5^2/2/D5 /E5*180/PI(),IF(C5=4,K5^2/2/D5/E5*180/PI(),IF(C5=5,K5/D5*180/PI()))))))”;9.在“P5”单元格中输入“=IF(C5=4,L5+O5*COS(N5+90*PI()/180),L5+O5*COS(N5-90*PI()/180))”;10.在“Q5”单元格中输入“=IF(C5=4,M5+O5*SIN(N5+90*PI()/180),M5+O5*SIN(N5-90*PI()/180))”;11.在“S5”单元格中输入“=IF(C5=4,L5+O5*COS(N5-90*PI()/180),L5+O5*COS(N5+90*PI()/180))”;12.在“T5”单元格中输入“=IF(C5=4,M5+O5*SIN(N5-90*PI()/180),M5+O5*SIN(N5+90*PI()/180))”;13.选定“5行”向下复制到表格最后一行;14.点击“文件”菜单中的“另存为”选项,输入文件名为“坐标计算”在文件类型中选择为“模版”并点击“保存”。
EXCEL进行中桩坐标、高程计算
用EXCEL进行中桩坐标、高程计算(铜汤高速第一合同段)测量计算、平差软件种类繁多,但无论什么软件都不能包罗万象,无法满足众多数据处理的需要,即使某种计算软件的功能非常齐全,但此类软件一般都是针对性开发的,而像小件坐标计算,例如承台坐标,则显得非常烦琐。
本文结合本项目介绍了应用EXCEL进行测量计算的方法和思路,并提供了一些常用的计算公式。
1、 EXCEL基本计算方法打开EXCEL后显示的表格,将相关数据依次输入到相应的表格上中。
当原始数据输入完毕后,再在需要显示结果的相应单元格内输入计算公式,EXCEL则会按照公式自动计算出结果,下面以两点坐标计算距离为例,简单说明下:第一步:在相应位置输入表头、序号、坐标后,图示1所示。
第二步在显示距离格内输入计算公式=SQRT((B4-D4)^2+(C4-E4)^2)并按回车,距离的结算结果就显示出来。
2、在测量计算中,最常见的是三角函数的处理。
EXCEL中备用的三角函数很齐全,但计算中是以弧度为单位来处理的,在计算中角度(度、分、秒)需要转换成弧度后,即可进行三角函数的计算了。
3、结合本项目分别介绍了直线、圆曲线、竖曲线的计算事例铜汤高速公路第一合同段,起点里程K78+060.618,终点里程K82+825,全长4764.4米,其中包括朱家畈大桥,水桥湖一桥、二桥三座桥梁。
全线平面首尾为直线段,中间由三段圆曲线连接,(后附全线平面图),计算原始数据取自设计文件第一册《直线、曲线及转角表》(图号为S3-4);全线包括6段竖曲线,其中凹、凸曲线各3段,计算原始数据采用设计文件第一册《路线纵断面图》(图号为S3-3)。
在表格中,桩号栏中的ZJF8、SQA7、SQB6分别代表朱家畈大桥8号墩中心,水桥湖一桥7号墩中心和水桥湖二桥6号墩中心。
坐标和高程的单位均为m,角度单位为弧度。
一、坐标计算方法:a、直线段:坐标增量法例如:第一段直线范围K78+060.618~K78+773.787坐标计算已知:BP点里程为K78+060.618,坐标(3412768.816,484851.623)起始方位角a=140°45′46.1″=2.456774421(弧度)计算直线范围内的K78+200坐标如下:在EXCEL表格中输入相应的表头和需要计算的里程后在C36格内输入公式=3412768.816+(B21-78060.618)* COS(2.456774421)在D36格内输入公式=484851.623+(B21-78060.618)* SIN(2.456774421)X=3412768.816+(78200-78060.618)×COS2.456774421=3412660.860Y=484851.623+(78200-78060.618)×SIN2.456774421=484939.787 图示:b、曲线段:偏角法第一段圆曲线K78+773.787~K79+524.582上坐标计算:起点(即ZY点)里程为K78+773.787,同时位于第一段直线上,可通过坐标增量法算出ZY点坐标为(3412216.442,485302.725);始方位角a=140°45′46.1″=2.456774421(弧度);曲线圆心在线路右侧,曲线半径R=4500m。
不对称缓和曲线中、边桩及放样计算程序(Excel格式)
路的经典综合计算程序。
@
QQ: 137063541
电活:08178197709
号,高程等数据即可计 号均化为米的单位。 、I2为公路纵坡度。R为竖曲线半径。 只有纵坡时,应输入I1=I2=纵坡度值
的里程桩号、边桩与轴线的夹角W、P1及P2与中桩P0的距离,曲线 方位角。非常方便。 的特征点桩号及坐标,为自动计算输入的。其余为计结果。 右转时,转角及曲线半径R均为正值输入。
存后再计算另一座。
浅黄底色的单元格区内输入。 数据,不用先删除后输入方法。 在C4单元格直接输入直缓点的里程桩号。而直缓点的里程桩号 校核。本表计算例题见说明。 计算程序使用说明”。 、交点距离设置为公路宽度一半时,计算出的坐标为 序用途很多,使用者举一反三,可进行复。
高等级公路中、边桩综合计箅程序 不对称缓和曲线中、边桩坐标计箅程序
⑴本程序专门为不对称缓和曲线中、边桩坐标计箅放样计算而设计,只需输入中桩的里程桩号、边桩与轴线的 的有关元素(计算中桩坐标所需),即可计算中、边桩P1、P2的坐标,与测站的平距、方位角。非常方便。 ⑵桩号为自动输入的,当不能满足要求时,用手工输入。有绿颜色的单元格为曲线的特征点桩号及坐标,为自 ⑶当路线左转时,转角的度、分、秒输入时均加负号,曲线半径亦加负号;当路线右转时,转角及曲线半径R
跨线建筑物分段进行,一段只能计算一座跨线建筑物,当有两座建筑物时,可先计算一座,保存后再计算另一座。
前进方向
P1(XP1,YP1) T W 公路中线 P0(XP0,YP0) T P2(XP2,YP2)Z 桥涵轴线 高速公路跨线建筑物轴线平面图
⑷输入数据时应在有浅黄底色的单元格区内输入 输入数据直接覆盖原有数据,不用先删除后输入方 ⑸当无直线起点时,在C4单元格直接输入直缓点 为自动计算出的,可以校核。本表计算例题见说明 详見“高等级公路测量计算程序使用说明”。 ⑹当交角设置为90度、交点距离设置为公路宽度 公路的边桩坐标。此程序用途很多,使用者举一反 方便。在工地上此类计算繁琐,许多技术人员计算
EXCEL快速计算任何难度的道路中线、边线坐标
EXCEL快速计算任何难度的道路中线、边线坐标主程序Public i As IntegerPublic pi As DoubleSub TP()Dim ii As IntegerDim k(1000) As DoubleDim xzq, yzq, kq, xzh, yzh, kzh, xjd, yjd, kjd, khy, kyh As Double'直线区域pi = 3.14159265358979xzq = 71862.642yzq = 63474.651kq = 0 '因为直线连接终点为ZH点,与圆曲线起点为同一点,所以在直线区域不定义ZH点参数'直线区域'曲线区域xzh = 71858.3267yzh = 63375.2684kzh = 99.4763xhz = 71909.3687yhz = 63283.8076 '曲线区域定义内容有:ZH(坐标、里程)、HZ(坐标、里程)、JD(坐标、里程)khz = 212.3392 'R(半径)、LS(缓和曲线长度)、HY(里程)、YH(里程)xjd = 71855.658yjd = 63313.806kjd = 160.9966ls = 30r = 75khy = 129.4763kyh = 182.3385'曲线区域i = 2 '从第二格开始读取数据所以定义I=2ii = 1 '桩号从第一个开始启用,所以定义II=2Dok(ii) = Workbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 1) '定义桩号等于读取数据If Workbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 1) = "" Then Exit Do '当没有数据读取时退出循环If k(ii) < kq Then '若计算点超过计算起点给予提示并退出程序MsgBox ("猪啊!!你的输入的桩号居然超过计算起点桩号")Exit SubElseIf k(ii) <= kzh Then '若计算点在ZH点前,则进入直线程序Call zx(xzq, yzq, kq, xzh, yzh, kzh, k(ii))ElseIf kzh < k(ii) And k(ii) <= khy Then '若计算点在ZH和HY之间则调入前段缓和曲线程序Call qhhqx(xzh, yzh, kzh, xhz, yhz, khz, xjd, yjd, kjd, ls, r, k(ii))ElseIf khy < k(ii) And k(ii) <= kyh Then '若计算点在HY和YH之间则调入圆曲线程序Call yqx(xzh, yzh, kzh, xhz, yhz, khz, xjd, yjd, kjd, ls, r, k(ii))ElseIf kyh < k(ii) And k(ii) <= khz Then '若计算点在YH和HZ之间则调入后段缓和曲线程序Call hhhqx(xzh, yzh, kzh, xhz, yhz, khz, xjd, yjd, kjd, ls, r, k(ii))ElseMsgBox ("笨啊!!数据已超出计算范围了") '若出现超出范围的桩号则给与提示并退出程序Exit SubEnd Ifi = i + 1ii = ii + 1LoopEnd Sub直线模块Sub zx(ByV al xzq As Double, ByV al yzq As Double, ByV al kq As Double, ByV al xzh As Double, ByV al yzh As Double, ByV al kzh As Double, ParamArray k())fw = fwj(xzh, xzq, yzh, yzq) '首先调入方位角程序计算直线方位角x = xzq + (k(ii) - kq) * Cos(fw) '然后根据桩号和长度计算出坐标值y = yzq + (k(ii) - kq) * Sin(fw)zdfm = dfm(fw) '将弧度形式的前进方位角转换度分秒形式'输出坐标值以弧度和度分秒形式的前进方位角Workbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 2) = xWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 3) = yWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 4) = fwWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 5) = zdfmEnd Sub圆曲线模块Sub yqx(ByV al xzh As Double, ByV al yzh As Double, ByV al kzh As Double, ByV al xhz As Double, ByV al yhz As Double, ByV al khz As Double, ByV al xjd As Double, ByV al yjd As Double, ByV al kjd As Double, ByV al ls As Double, ByV al r As Double, ParamArray k())l = Abs(k(ii) - kzh) '计算ZH点(因为以直缓点起算)到待求桩号的弧度长度ly = l - ls / 2 '计算圆弧长度p = ls ^ 2 / 24 / r - ls ^ 4 / 2688 / r ^ 3 '曲线内移值m = ls / 2 - ls ^ 3 / 240 / r ^ 2 '曲线切线长增量u = r * Sin(ly / r) + m '偏量坐标计算v = r * (1 - Cos(ly / r)) + p'调入方位角fwq = fwj(xjd, xzh, yjd, yzh) '计算ZH点方位角fwh = fwj(xhz, xjd, yhz, yjd) '计算HZ点方位角(此角作用是用来推算曲线是左偏还是右偏)'调入偏角判定nq = n(fwq, fwh) '计算偏角方向,左偏为-1右偏为1'计算坐标x = u * Cos(fwq) - nq * v * Sin(fwq) + xzhy = u * Sin(fwq) + nq * v * Cos(fwq) + yzhd = (90 * (2 * l - ls) / pi / r) * pi / 180 '计算圆曲线上的偏角(此句要点为角度必须转换为弧度即:pi/180)fw = fwq + d * nq '计算前进方位角zdfm = dfm(fw) '将弧度形式的前进方位角转换度分秒形式'输出坐标值以弧度和度分秒形式的前进方位角Workbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 2) = xWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 3) = yWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 4) = fwWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 5) = zdfmEnd Sub前缓和段Sub qhhqx(ByV al xzh As Double, ByV al yzh As Double, ByV al kzh As Double, ByV al xhz As Double, ByV al yhz As Double, ByV al khz As Double, ByV al xjd As Double, ByV al yjd As Double, ByV al kjd As Double, ByV al ls As Double, ByV al r As Double, ParamArray k())l = Abs(k(ii) - kzh) '计算测点到ZH点的距离u = l - l ^ 5 / 40 / r ^ 2 / ls ^ 2 + l ^ 9 / r ^ 4 / ls ^ 4 / 3456 '计算偏量v = l ^ 3 / 6 / r / ls - l ^ 7 / 336 / r ^ 3 / ls ^ 3'用公式二则以下两计算可省略(圆曲线和后缓和曲线也同理)Rem t = Atn(v / u)Rem s = Sqr(u ^ 2 + v ^ 2)'调入方位角计算fwq = fwj(xjd, xzh, yjd, yzh) '计算ZH点方位角fwh = fwj(xhz, xjd, yhz, yjd) '计算HZ点方位角(此角作用是用来推算曲线是左偏还是右偏)'调入偏角判定nq = n(fwq, fwh) '计算偏角方向,左偏为-1右偏为1'结果计算Rem x = xzh + s * Cos(fwq + nq * t)Rem y = yzh + s * Sin(fwq + nq * t)x = u * Cos(fwq) - nq * v * Sin(fwq) + xzh '经过测试,计算结果中的两种公式计算结果是一样的y = u * Sin(fwq) + nq * v * Cos(fwq) + yzhd = (90 * l * l / pi / r / ls) * pi / 180 '计算缓和曲线上的偏角(此句要点为角度必须转换为弧度即:pi/180)fw = fwq + d * nq '计算前进方位角zdfm = dfm(fw) '将弧度形式的前进方位角转换度分秒形式'输出坐标值以弧度和度分秒形式的前进方位角Workbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 2) = xWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 3) = yWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 4) = fwWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 5) = zdfmEnd Sub后缓和段模块Sub hhhqx(ByV al xzh As Double, ByV al yzh As Double, ByV al kzh As Double, ByV al xhz As Double, ByV al yhz As Double, ByV al khz As Double, ByV al xjd As Double, ByV al yjd As Double, ByV al kjd As Double, ByV al ls As Double, ByV al r As Double, ParamArray k())l = Abs(k(ii) - khz) '计算测点到HZ点的距离(后缓和曲线是以HZ点为起点)u = l - l ^ 5 / 40 / r ^ 2 / ls ^ 2 + l ^ 9 / r ^ 4 / ls ^ 4 / 3456 '计算偏量v = l ^ 3 / 6 / r / ls - l ^ 7 / 336 / r ^ 3 / ls ^ 3Rem t = Atn(v / u)Rem s = Sqr(u ^ 2 + v ^ 2)'调入方位角计算fwq = fwj(xjd, xzh, yjd, yzh) '计算ZH点方位角fwh = fwj(xhz, xjd, yhz, yjd) '计算HZ点方位角(此角作用是用来推算曲线是左偏还是右偏)'调入偏角判定nh = n(fwh, fwq) '计算偏角方向,左偏为-1右偏为1(注意:因为是从后HZ点起算,所以必须将HZ点方位角放在前ZH放在后)'结果计算Rem x = xzh + s * Cos(fwq + nq * t)Rem y = yzh + s * Sin(fwq + nq * t)x = xhz - (u * Cos(fwh) - nh * v * Sin(fwh)) '经过测试,计算结果中的两种公式计算结果是一样的y = yhz - (u * Sin(fwh) + nh * v * Cos(fwh))d = (90 * l * l / pi / r / ls) * pi / 180 '计算缓和曲线上的偏角(此句要点为角度必须转换为弧度即:pi/180)fw = fwh + d * nh '计算前进方位角zdfm = dfm(fw) '将弧度形式的前进方位角转换度分秒形式'输出坐标值以弧度和度分秒形式的前进方位角Workbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 2) = xWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 3) = yWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 4) = fwWorkbooks("单交点平曲线.xls").Worksheets("sheet1").Cells(i, 5) = zdfmEnd Sub偏角模块Function n(ByV al fw1 As Double, ByV al fw2 As Double) As Doublepj = fw1 + pi - fw2 '前进的右角pjIf pj - pi > 0 Then '当右角pj-pi 〉0时为左偏否则为右偏n = -1Else: n = 1End IfEnd Function方位角模块Function fwj(ByV al x1 As Double, ByV al x2 As Double, ByV al y1 As Double, ByV al y2 As Double) As Double'计算增量x0 = x1 - x2y0 = y1 - y2'由增量判断方位角所在象限,不同象限取不同的值If x0 = 0 And y0 > 0 Thenfwj = pi / 2 '当在大地坐标中偏量在X轴上的值时ElseIf x0 = 0 And y0 < 0 Thenfwj = 3 * pi / 2 '当在大地坐标中偏量在负X轴上的值时ElseIf x0 < 0 Thenfwj = Atn(y0 / x0) + pi '当在大地坐标中偏量在第二第三象限上的值时ElseIf x0 > 0 And y0 < 0 Thenfwj = Atn(y0 / x0) + 2 * pi '当在大地坐标中偏量在第四象限上的值时Elsefwj = Atn(y0 / x0) '当在大地坐标中偏量在第一象限上的值时End IfEnd Function度分秒模块Function dfm(ByV al ao As Double) As V ariantao = ao * 180 / pi '将弧度转化为度jd = Int(ao) '计算度jf = Int(ao * 60 - jd * 60) '计算分jmx = (ao - jd - jf / 60) * 3600 '计算秒jm = Left(jmx, 8) '因为拆分出来的秒数经常占到十多位,所以只取秒数的前八位dfm = jd & "°" & jf & "′" & jm & "″" '连接度分秒End Function边桩公式(此公式在电子表格中直接输入):=B2+J2*COS(D2+RADIANS(L2)+PI()) =C2+J2*SIN(D2+RADIANS(L2)+PI()) =B2+K2*COS(D2+RADIANS(M2)) =C2+K2*SIN(D2+RADIANS(M2))=B3+J3*COS(D3+RADIANS(L3)+PI()) =C3+J3*SIN(D3+RADIANS(L3)+PI()) =B3+K3*COS(D3+RADIANS(M3)) =C3+K3*SIN(D3+RADIANS(M3))=B4+J4*COS(D4+RADIANS(L4)+PI()) =C4+J4*SIN(D4+RADIANS(L4)+PI()) =B4+K4*COS(D4+RADIANS(M4)) =C4+K4*SIN(D4+RADIANS(M4))=B5+J5*COS(D5+RADIANS(L5)+PI()) =C5+J5*SIN(D5+RADIANS(L5)+PI()) =B5+K5*COS(D5+RADIANS(M5)) =C5+K5*SIN(D5+RADIANS(M5))=B6+J6*COS(D6+RADIANS(L6)+PI()) =C6+J6*SIN(D6+RADIANS(L6)+PI()) =B6+K6*COS(D6+RADIANS(M6)) =C6+K6*SIN(D6+RADIANS(M6))=B7+J7*COS(D7+RADIANS(L7)+PI()) =C7+J7*SIN(D7+RADIANS(L7)+PI()) =B7+K7*COS(D7+RADIANS(M7)) =C7+K7*SIN(D7+RADIANS(M7))=B8+J8*COS(D8+RADIANS(L8)+PI()) =C8+J8*SIN(D8+RADIANS(L8)+PI()) =B8+K8*COS(D8+RADIANS(M8)) =C8+K8*SIN(D8+RADIANS(M8))=B9+J9*COS(D9+RADIANS(L9)+PI()) =C9+J9*SIN(D9+RADIANS(L9)+PI()) =B9+K9*COS(D9+RADIANS(M9)) =C9+K9*SIN(D9+RADIANS(M9))=B10+J10*COS(D10+RADIANS(L10)+PI()) =C10+J10*SIN(D10+RADIANS(L10)+PI()) =B10+K10*COS(D10+RADIANS(M10)) =C10+K10*SIN(D10+RADIANS(M10))=B11+J11*COS(D11+RADIANS(L11)+PI()) =C11+J11*SIN(D11+RADIANS(L11)+PI()) =B11+K11*COS(D11+RADIANS(M11)) =C11+K11*SIN(D11+RADIANS(M11))=B12+J12*COS(D12+RADIANS(L12)+PI()) =C12+J12*SIN(D12+RADIANS(L12)+PI()) =B12+K12*COS(D12+RADIANS(M12)) =C12+K12*SIN(D12+RADIANS(M12))=B13+J13*COS(D13+RADIANS(L13)+PI()) =C13+J13*SIN(D13+RADIANS(L13)+PI()) =B13+K13*COS(D13+RADIANS(M13)) =C13+K13*SIN(D13+RADIANS(M13))=B14+J14*COS(D14+RADIANS(L14)+PI()) =C14+J14*SIN(D14+RADIANS(L14)+PI()) =B14+K14*COS(D14+RADIANS(M14)) =C14+K14*SIN(D14+RADIANS(M14))=B15+J15*COS(D15+RADIANS(L15)+PI()) =C15+J15*SIN(D15+RADIANS(L15)+PI()) =B15+K15*COS(D15+RADIANS(M15)) =C15+K15*SIN(D15+RADIANS(M15))=B16+J16*COS(D16+RADIANS(L16)+PI()) =C16+J16*SIN(D16+RADIANS(L16)+PI()) =B16+K16*COS(D16+RADIANS(M16)) =C16+K16*SIN(D16+RADIANS(M16))=B17+J17*COS(D17+RADIANS(L17)+PI()) =C17+J17*SIN(D17+RADIANS(L17)+PI()) =B17+K17*COS(D17+RADIANS(M17)) =C17+K17*SIN(D17+RADIANS(M17))=B18+J18*COS(D18+RADIANS(L18)+PI()) =C18+J18*SIN(D18+RADIANS(L18)+PI()) =B18+K18*COS(D18+RADIANS(M18)) =C18+K18*SIN(D18+RADIANS(M18))=B19+J19*COS(D19+RADIANS(L19)+PI()) =C19+J19*SIN(D19+RADIANS(L19)+PI()) =B19+K19*COS(D19+RADIANS(M19)) =C19+K19*SIN(D19+RADIANS(M19))=B20+J20*COS(D20+RADIANS(L20)+PI()) =C20+J20*SIN(D20+RADIANS(L20)+PI()) =B20+K20*COS(D20+RADIANS(M20)) =C20+K20*SIN(D20+RADIANS(M20))=B21+J21*COS(D21+RADIANS(L21)+PI()) =C21+J21*SIN(D21+RADIANS(L21)+PI()) =B21+K21*COS(D21+RADIANS(M21)) =C21+K21*SIN(D21+RADIANS(M21))=B22+J22*COS(D22+RADIANS(L22)+PI()) =C22+J22*SIN(D22+RADIANS(L22)+PI()) =B22+K22*COS(D22+RADIANS(M22)) =C22+K22*SIN(D22+RADIANS(M22))=B23+J23*COS(D23+RADIANS(L23)+PI()) =C23+J23*SIN(D23+RADIANS(L23)+PI()) =B23+K23*COS(D23+RADIANS(M23)) =C23+K23*SIN(D23+RADIANS(M23))呵呵,这个就是传说已久的EXCEL自动计算曲线坐标.给大家研究研究.欢迎在此基础上开发增加新模块。
Excel测量坐标计算程序(附带计算器程序)
缓和曲线角 β2
0.056
切线长ቤተ መጻሕፍቲ ባይዱT1
476.548
JD至HZ方位 角
(弧度)
(弧度)
HZ至JD方位角 (度)
(度)
HY至JD方位角 (弧度)
3.63453181 0.49293916 28.24333333 28°14′36″ 3.322837339
桩号、坐标结果表
QZ桩号
YH桩号
HZ桩号
40306.803
GotoA LblD(第二缓和曲线) Abs(M-(N+T+L+V))→W W-W5÷(40R2V2)+W9÷(3456R4V4)→C-------------------------------支距X坐标 W3÷(6RV)-W7÷(336R3V3)+W11÷(42240R5V5)→D------------支距Y坐标 90W2÷(πRV)→O-----------------------------------------------------------------缓和曲线角 E+CcosQ-BDsinQ+Scos(Q+BO+90)→X◢ F+CsinQ+BDcosQ+Ssin(Q+BO+90)→Y◢ Pol((X-P),(Y-Z)):Cls----------------------------------------------------方位角和距离程序 IfJ<0:ThenJ+360 →J:ElseJ →J:Ifend:I◢J ►DMS◢
204.408414 1.42360245 204.413372 0.02089324
164.414334 0.74077489 164.416002 0.013516541
利用EXCEL进行道路中边线逐桩坐标计算
利用EXCE L 进行道路中边线逐桩坐标计算张宝利1,薛志勤2(1.西北农林科技大学资源与环境学院,陕西杨凌 712100;2.华南农业大学信息与软件学院,广州 510642)摘要:利用坐标增量的基本思想,将道路曲线坐标的计算归结为3种最基本的形式———直线段、圆曲线段、缓和曲线段,直接计算出中、边线的测量坐标,省去了切线支距法坐标向测量坐标的转换过程,简化了计算思路,节约了计算量。
并利用办公软件Excel 的强大计算功能进行实例计算。
关键词:Excel;道路边线;道路中线;逐桩坐标;圆曲线;缓和曲线中图分类号:U452.1文献标志码:B文章编号:1672-741X (2008)03-0302-03Calcul ati on of Coordi n ates of St akes on Centerli n e and Si deli n e Usi n g ExcelZHANG Baoli 1,XUE Zhiqin2(1.College of R esou rces and Environm en t,N orthw est A &F U niversity,Yangling 712100,Shanxi,Ch ina;2.College of Infor m ation and S oft w are,S outh China A gricultural U n iversity,Guangzhou 510642,China )Abstract:The coordinate calculati on of the high way curves is divided int o three basic types,i .e .,straight secti on,cir 2cular curve and transiti on curve,on basis of the coordinate incre ment p rinci p le .W ithout coordinate transf or mati on,the survey coordinates of the stakes on the alignment of the centerline and sideline are directly worked out,which si m p lifies the calculati on p rinci p le and reduces the calculati on quantity .Further more,coordinate calculati on is made f or p r oject cases by using the str ong calculati on functi ons of Excel .Key words:Excel;high way sideline;highway centerline;coordinates of stakes;circular curve;transiti on curve不论是在铁路还是公路的设计和建设中都不可避免地遇到大量的曲线计算。