Excel竖曲线计算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
利用Excel表格进行全线线路竖曲线的统一计算
高速公路纵断面线型比较复杂,竖曲线数量比较多。由于相当多的竖曲线分段造成了设计高程计算的相对困难,为了方便直接根据里程桩号计算设计高程,遂编制此计算程序。
程序原理:
1、根据设计图建立竖曲线参数库;
2、根据输入里程智能判断该里程位于何段竖曲线上;
3、根据得到的竖曲线分段标志调取该分段的曲线参数到计算表格中;
4、把各曲线参数带入公式进行竖曲线高程的计算;
5、对程序进行优化和简化,去掉中间环节,进行直接计算;
6、防止计算过程中的误操作,对计算表进行相应的保护。
竖曲线的高程计算原理公式:
H=G+B*A+(-1)^J*X2÷(2R)
H: 计算里程的设计高程
K: 计算点里程
D: 竖曲线交点里程
G: 竖曲线交点的高程
R: 竖曲线半径
T: 切线长
M: 前坡度I1
P: 后坡度I2
A: A=Abs(K-D)
X: A>T => X=0; A
J: M-P<0 => J=0; M-P>=0 => J=1
B: K<=D =>B=-M ; K>D => B=P
程序特色:
1、可以无限添加竖曲线,竖曲线数据库不限制竖曲线条数;
2、直接输入里程就可以计算设计高程,不需考虑该里程所处的竖曲线分段;
3、对计算公式进行保护,表格中不显示公式,不会导致公式被错误修改或恶意编辑。
程序的具体编制步骤:
1、新建Excel工作薄,对第一第二工作表重新命名为“参数库”和“计算程序”,根据设计图建立本标段线路竖曲线的参数库,需要以下条目:
(1)、竖曲线编号;
(2)、竖曲线的前后坡度(I1、I2)不需要把坡度转换为小数;
(3)、竖曲线半径、切线长(不需要考虑是凸型或凹型);
(4)、竖曲线交点里程、交点高程;
(5)、竖曲线起点里程、终点里程(终点里程不是必要参数,只作为复核检测用);
如图1所示:
图1
2、进行计算准备:
(1)、根据输入里程判断该里程所处的曲线编号:
需要使用lookup函数,函数公式为“LOOKUP(A2,参数库!H3:H25,参数库!A3:A25)”。
如图2所示:
里程为K15+631的桩号位于第11个编号的竖曲线处,可以参照图1 进行对照
(2)、在工作表“程序计算”中对应“参数库”相应的格式建立表格
根据判断得出的竖曲线编号,把相应编号的各参数调入工作表“程序计算”,需要使用vlookup 函数,例如:第四列调取坡度I1函数公式为“VLOOKUP(C2,参数库!A1:I25,2)”调取交点高程的函数公式为“VLOOKUP(C2,参数库!A1:I25,7)”结果出来可以参照图1进行对照。
如图3所示:
(3)、现在计算该里程设计高程所需要的参数已经具备,可以编制公式进行计算了,根据竖曲线高程计算的原理公式,把单元格数据套入公式:
公式为:H=G+B*A+(-1)^J*X2÷(2R)
其中B的函数公式为:IF(K<=D,-M,P) 转化为表格编号就是IF(A2<=H2,-1*D2/100,E2/100) A 的函数公式为ABS(A2-H2)
X的函数公式位IF(ABS(A2-H2)>G2,0,(G2-ABS(A2-H2)))
图2
图3
J的函数公式为IF(D2/100-E2/100<0,0,1)
H=G+B*A+(-1)^J*X2÷(2R)
=I2+ IF(A2<=H2,-1*D2/100,E2/100)* ABS(A2-H2)+POWER((-1),
IF(D2/100-E2/100<0,0,1))*POWER(IF(ABS(A2-H2)>G2,0,(G2-ABS(A2-H2))),2)/2/F2
现在把H的计算函数输入B2单元格,看看结果是不是出来了,这时候可以把这个结果和
计算器计算出来的结果进行对照。
如图4 所示:
图4
万事俱备,现在开始计算,下拉B2单元格,竟然出错,如图5
图5
解决办法就是同时选择B2直到后面的K2,然后再下拉,下拉前一定要把引用的“参数库”中的单元格进行锁定,如图6、7。
这样就显得复杂了点,现在开始简化计算程序,C2 到K2单元格都是其中间作用的,可以直接套用到高程的计算公式中,分别把C2 到K2单元格所对应的公式替换到单元格B2,得到最终公式:
=VLOOKUP(C2,参数库!$A$1:$I$25,7)+ IF(A2<=VLOOKUP(C2,参数库!$A$1:$I$25,6),-1*VLOOKUP(C2,参数库!$A$1:$I$25,2)/100,VLOOKUP(C2,参数
库!$A$1:$I$25,3)/100)* ABS(A2-VLOOKUP(C2,参数库!$A$1:$I$25,6))+POWER((-1), IF(VLOOKUP(C2,参数库!$A$1:$I$25,2)/100-VLOOKUP(C2,参数库!$A$1:$I$25,3)/100<0,0,1))*POWER(IF(ABS(A2-VLOOKUP(C2,参数库!$A$1:$I$25,6))>VLOOKUP(C2,参数库!$A$1:$I$25,5),0,(VLOOKUP(C2,参数库!$A$1:$I$25,5)-ABS(A2-VLOOKUP(C2,参数库!$A$1:$I$25,6)))),2)/2/VLOOKUP(C2,参数库!$A$1:$I$25,4)
图6
图7