Vertical Curve Check —— 纵坡竖曲线表纵面指标 JTG D20-2017 符合性核查
Overview
读取公路"纵坡、竖曲线表"文件,自动提取全部变坡点的桩号、高程、纵坡、坡长、坡差、竖曲线半径(凸/凹)、竖曲线长度、竖曲线起终点、直坡段长,按 JTG D20-2017 逐项判定规范符合性,生成 Excel 核查报告(纵面核查汇总、不合格与提示清单、最小纵坡统计表、视距要求、规范依据五个工作表)。
规范阈值已逐表对照交通运输部官方公开的 JTG D20-2017 正式文本核实,见 references/jtg_d20_2017_vertical_tables.md;脚本内置数值与该文件一致。判定口径:"应"级条文不满足判"不符合","宜"级条文不满足但高于极限值/最小值判"宜改善"。
工作流程
- 确认设计速度分段(必需输入)。向用户询问或从既有上下文确定:全段统一速度,或分段(如 "K10+000=80,K12+000=60" 表示该桩号起按对应速度)。用户未提供时必须先询问,不得臆测——不同速度下阈值差异极大(如 60km/h 与 40km/h 的凸形竖曲线一般值相差 2000m 与 700m)。同时确认视距口径:二、三、四级公路用会车视距(meeting,默认);高速公路、一级公路用停车视距(parking)。
- 运行核查脚本:
bash
python scripts/vertical_curve_check.py "<纵坡竖曲线表文件>" \
--speed "K10+000=80,K12+000=60" \
[--default-speed 60] [--sight meeting|parking] \
[--min-grade-ratio 0.3] [--out "<结果.xlsx>"]
- 依赖:
.xlsx需 openpyxl,.xls需 xlrd(缺失时脚本会给出安装提示)。用当前会话可用的 Python 解释器运行;若环境中 site-packages 与解释器分离,可在命令前加PYTHONPATH="<site-packages 路径>"指定依赖位置。 - 脚本自动识别表式并提示是"双行制"还是"单行制",同时打印表头行号与列映射,便于核对识别是否正确。
- 列匹配关键字:变坡点/桩号/高程/坡差/半径(凸)/半径(凹)/纵坡/坡长/直坡段长/曲线长/切线长/竖曲线起点/竖曲线终点。识别失败时脚本报错退出,此时用 openpyxl/xlrd 先人工确认列结构,必要时按该表头特点微调
detect_profile_columns。
3. 核对并呈现结果:脚本输出控制台摘要(不符合项逐条列出、最小纵坡处数、需验算视距处数)+ 结果 xlsx。将控制台摘要、不符合项、宜改善项、最小纵坡清单向用户完整转述,并用 present_files 呈现结果文件。引用结论时注明条款号(如"表8.6.1 一般值""表8.3.2")。
兼容表式
| 表式 | 特征 | 处理方式 |
|---|---|---|
| 单行制 | 每行一个变坡点,坡度、坡长、半径同排 | 凸凹由前后坡度代数差判定(ω=i后−i前,ω>0 凹、ω<0 凸);坡长缺失时按相邻变坡点桩号差补全 |
| 双行制(EICAD 常见) | 变坡点行与坡段行交替;半径分「半径(凸)」「半径(凹)」两列,含坡差、竖曲线起点/终点、直坡段长 | 坡段行归属其前一个变坡点作"后坡段";凸凹由半径列直接判定,并与坡差符号交叉校验;跨页重复表头自动忽略 |
核查项与判定(详见 references/jtg_d20_2017_vertical_tables.md)
| 检查项 | 依据 | 判定逻辑 |
|---|---|---|
| 最大纵坡 | 表8.2.1 | |i|≤限值→满足;超限→不符合(备注提示改扩建+1%、高原折减表8.2.2需人工判断) |
| 最小纵坡 | 8.2.3 | |i|<0.3% 或平坡→宜改善(边沟纵向排水设计提示) |
| 最小坡长 | 表8.3.1 | 坡长≥限值→满足;<限值→不符合 |
| 最大坡长 | 表8.3.2 | 坡度按不小于实际值绝对值的最小整档取值;坡长≤限值→满足;超限→不符合 |
| 凸形竖曲线半径 | 表8.6.1 | ≥一般值→满足;[极限值,一般值)→宜改善并标记验算视距;<极限值→不符合(视距不能满足) |
| 凹形竖曲线半径 | 表8.6.1 | 同上口径(无视距标记) |
| 竖曲线长度 | 表8.6.1 | ≥一般值→满足;[极限值,一般值)→宜改善;<极限值→不符合 |
| 视距规定值 | 7.9(表7.9.1~7.9.5) | 输出按设计速度分段的规定值清单;需验算路段在备注标记(定量验算需视距台数据,7.9.6) |
| 最小纵坡统计 | 8.2.3 | 输出 |i|<0.3% 坡段清单(起讫桩号、长度、坡度),可直接用于报告"最小纵坡不满足规定值统计表" |
| 数据校核(备注提示) | — | 竖曲线要素自洽(L≈R×|坡差|,偏差>max(0.5m,1%)提示核对源表);半径列与坡差符号不一致提示;直坡段长≤0(竖曲线重叠)、<3s行程(过渡短)提示——均为非规范强制项 |
注意事项
- 设计速度分段必须与用户确认,结果文件中"设计速度"列即按分段取值,写入报告前抽查若干变坡点的速度归属是否正确。
- 纵坡带符号(如
-4.0、+2.5%);单行制下本行坡度按"该变坡点后坡段坡度"解读,若实际表格为"前坡"口径,凸凹判定会全部反转——核对报告"竖曲线类型"列与纵断面图是否一致即可发现;双行制(EICAD)由半径(凸)/(凹)列直接判定,无此风险。 - 起点行(仅有高程、无坡度坡长)的判定列显示"—",属正常;其"后坡段"数据在双行制下取自紧随的坡段行。
- 缓和坡段(8.3.3)与越岭线平均纵坡(8.3.4/8.3.5)属连续坡段序列指标,脚本不自动判定,报告中已注需人工复核。
- 视距定量验算(视距台、横净距、超车视距路段布设)需横断面与行车轨迹数据,脚本不做定量判定,仅在报告中输出规定值与需验算路段;对外表述时不得声称"已完成视距检验"。
- 结果中"宜改善"项写入报告时表述为"低于规范一般值,受地形条件限制时采用",不得写成"不满足规范要求";"不符合"项才可用"不满足"表述。最小纵坡属 8.2.3"不宜"级,报告措辞用"不满足规定值(宜值)",不要写成"不满足规范强制性要求"。
- 规范修订(如新版 JTG D20 发布)时,先更新
references/jtg_d20_2017_vertical_tables.md与脚本内置表,并重新对照官方文本核实。