十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

南方CASS土方计算:方格网、DTM、断面与两期OSGB模型实操

南方CASS土方计算:方格网、DTM、断面与两期OSGB模型实操 简介《南方CASS各种计算土方汇总》是一份面向测绘、土木工程与土方施工技术人员的PDF操作汇总适合已具备CASS基础、需要系统梳理土方量计算流程的读者参考。内容围绕DTM法展开分别讲解根据坐标文件、图上高程点、图上三角网三种建模计算路径并延伸到两期土方计算与断面法土方计算断面部分覆盖道路断面、场地断面和任意断面等常用场景。读者可据此掌握边界线闭合、平场标高、边界采样间隔、边坡设置等参数含义理解填挖方量统计、三角网与分界线绘制以及结果表格输出的过程也可用于道路与场地土方工程中的方案核对与排错。资源为单个PDF文件约3.57MB已有402人学习下载。整体篇幅集中、针对性强便于在CASS操作时快速查阅对应方法。1. 南方CASS土方计算到底有几种算法各自适合什么场地一份原始高程点摆在面前甲方只问一句挖多少、填多少你打开南方CASS菜单里同时躺着方格网法、DTM法、断面法、等高线法、区域土方平衡好几条路。选错方法同一份数据能算出两套相差 10% 的结果而且两份成果表都看着没问题等到结算对量才发现谁也说服不了谁。南方CASS土方计算的分歧点其实只有一个用什么样的几何模型去逼近真实地面。方格网法把场地切成等距方格、逐格取平均高程适合地形平缓、范围规整的厂区与场地平整DTM法按实测点构建不规则三角网能贴合陡坎、边坡和起伏地形断面法只对道路、渠道、管沟这类带状工程友好等高线法直接吃现成等高线适合山地大范围粗算。把这些方法的适用边界弄清楚比背操作步骤重要得多。2. 方格网法与DTM法从高程点生成到土方量出数的完整流程这两条路是南方CASS土方计算里用得最多的组合。方格网法结果直观、甲方容易看懂DTM法更贴近真实地形、在起伏场地上更稳。真正决定成败的往往不是点菜单那几下而是前面的数据清洗和后面的边界处理。2.1 原始数据准备坐标文件格式与高程点清洗CASS 认的高程点数据文件是纯文本常规后缀.dat每行按「点号,编码,Y坐标,X坐标,高程」排列注意是 Y 在前、X 在后这是很多人第一次导入时点跑到另一个半球的原因。下面是两行样例1,,523101.235,3120455.880,48.620 2,,523118.470,3120451.310,48.755实测数据通常是从全站仪或 RTK 导出的会带重复点、编码列、异常高程。直接展点建模DTM 会在这些位置鼓包或者塌陷。我一般先用脚本过一遍# clean_dat.py —— 高程点清洗统一列序、剔除异常高程、按格网去重 import sys SRC, DST sys.argv[1], sys.argv[2] Z_MIN, Z_MAX 30.0, 80.0 # 按场地实际高程范围设置超出即视为异常 GRID 0.5 # 去重格网边长米小于实测点平均间距的一半 kept, seen [], {} with open(SRC, encodingutf-8, errorsignore) as f: idx 0 for idx, line in enumerate(f, 1): line line.strip().replace(, ,) if not line: continue parts [p for p in line.split(,) if p ! ] if len(parts) 3: print(f第{idx}行字段不足跳过{line}) continue try: y, x, h float(parts[-3]), float(parts[-2]), float(parts[-1]) except ValueError: print(f第{idx}行含非数值跳过{line}) continue if not (Z_MIN h Z_MAX): print(f第{idx}行高程 {h} 超范围剔除) continue key (round(x / GRID), round(y / GRID)) # 同格网只留一个点 if key in seen: continue seen[key] True kept.append((x, y, h)) kept.sort() with open(DST, w, encodingutf-8) as out: for i, (x, y, h) in enumerate(kept, 1): out.write(f{i},,{y:.3f},{x:.3f},{h:.3f}\n) print(f读入 {idx} 行输出 {len(kept)} 个高程点 - {DST})脚本的三个参数直接决定成果质量。Z_MIN/Z_MAX用来卡住明显错误的高程比如把 4.862 记成 48.62 的点GRID去重半径不能设得比实测点间距还大否则会把真实的地形变化抹平一般取点间距的 1/3 到 1/2输出时统一按y,x,h排列避免手工改列序时出错。清洗完成后进 CASS 用「绘图处理 → 展高程点」把.dat展到图上先用「等高线 → 建立DTM」看一眼三角网是不是贴合地形再决定走方格网还是 DTM。2.2 方格网法方格宽度、边界与设计面三个必调参数操作路径是「工程应用 → 方格网法土方计算」按提示依次选计算边界线、输入设计面高程或选择设计面文件、输入方格宽度CASS 会在图上自动生成方格网并逐格标注挖填高度最后给出汇总表。三个参数里最容易被忽视的是方格宽度它不只是一个显示精度而是直接决定计算模型的分辨率。场地类型实测点平均间距建议方格宽度说明厂区平整、硬化场地1015 m10 m方格略小于点间距避免一格里只有角落有实测点场地粗平、大开挖2035 m20 m方格过小反而放大地形噪声丘陵、缓坡场地1525 m1020 m坡向变化处应加密实测点而非缩小方格台阶、深基坑510 m5 m陡坎两侧必须分别布点方格跨坎必错设计面的选择同样关键。平面设计面只需一个设计标高斜面设计面要输入坡度和坡向如果已经有设计阶段的三角网文件直接选「三角网文件」作为设计面精度最高。常见的坑是边界线不闭合或者有多段重叠CASS 会提示边界线无效此时用「多段线 → 编辑」检查是否自相交。另外方格网的起算原点按图形范围左下角对齐如果场地边界是斜的方格会大量跨坎这种情况建议先把边界旋转到与坐标轴平行算完再旋转回来或者干脆换成 DTM 法。2.3 DTM法建立三角网、过滤三角形与逐项校验DTM 法的流程是「等高线 → 建立DTM」选「由数据文件生成」或「由图面高程点生成」得到三角网后用「等高线 → 三角网存取 → 写入文件」存成.sjw再走「工程应用 → DTM法土方计算」指定三角网文件和设计面。DTM 的误差几乎全部藏在三角网本身跨越陡坎、跨越水体、跨越堆载区的三角形会把真实的高差拉成一条斜线算出来的体积自然不对。优化三角网有两个动作必须做。一是「等高线 → 三角网 → 重组三角网」把狭长三角形和跨坎三角形删掉重新构网二是用地形特征线陡坎、坡顶、坡脚、道路边线参与构网「等高线 → 建立DTM」时选择添加地性线让三角网的边沿着地形变化走。构完网想快速检查规模可以用一段 AutoLISP 统计选中三维面的数量和表面积;; TINAREA.lsp —— 统计当前图形中 3DFACE 的数量与表面积合计 (defun c:TINAREA ( / ss i e p1 p2 p3 v1 v2 ar sum n) (setq ss (ssget X ((0 . 3DFACE))) i 0 sum 0.0) (if ss (progn (setq n (sslength ss)) (while ( i n) (setq e (entget (ssname ss i))) (setq p1 (cdr (assoc 10 e)) p2 (cdr (assoc 11 e)) p3 (cdr (assoc 12 e))) (setq v1 (mapcar - p2 p1) v2 (mapcar - p3 p1)) ;; 三角形面积 两向量叉积模长的一半 (setq ar (* 0.5 (distance (0 0 0) (list (- (* (cadr v1) (caddr v2)) (* (caddr v1) (cadr v2))) (- (* (caddr v1) (car v2)) (* (car v1) (caddr v2))) (- (* (car v1) (cadr v2)) (* (cadr v1) (car v2))))))) (setq sum ( sum ar) i (1 i))) (princ (strcat \n三角形数 (itoa n) 表面积合计 (rtos sum 2 3)))) (princ \n未找到 3DFACE 实体)) (princ))把命令行敲TINAREA就能出结果。三角形数量应该和实测点数量在同一量级点数的 1.52 倍左右如果成倍偏多说明构网时把不该参与的点也算进去了表面积合计可以和场地边界面积对比山地地形表面积通常是投影面积的 1.051.3 倍超出太多要回去查异常高程点。2.4 方格网法与DTM法的差异与选型对比项方格网法DTM法几何模型等距方格取平均高程不规则三角网适合场地平缓、规整、大面积起伏、有陡坎边坡边界处理需要闭合边界线需要边界线也可用三角网裁切对点间距的敏感度高点太稀结果偏差大相对低靠三角网插值成果表现图上逐格标注直观出统计表需自行配图交叉验证价值作为 DTM 的复核手段作为方格网的复核手段实操中的稳妥做法是两种都算一遍偏差在 3%5% 以内视为一致超过 8% 就必须回去查边界、查三角网、查高程点而不是挑一个好看的结果交出去。3. 断面法与等高线法带状场地和山地土方量的计算步骤道路、渠道、管沟这类线性工程用方格网和 DTM 都别扭断面法才是正解。而大面积山地、还没有实测点只有地形图的阶段等高线法能顶上一阵。这两条路的共同特点是参数少、但每个参数都直接写进体积公式。3.1 断面法断面间距、里程文件与道路断面生成路径是「工程应用 → 断面法土方计算」下面分「道路断面」「场地断面」「任意断面」三个入口。道路断面需要先有设计断面参数路基宽度、边坡坡率、路肩高场地断面只需要一组实测横断面。横断面的组织方式是里程文件.hdm是文本格式基本结构是每个断面一段第一行给里程和断面点数随后是该断面各点相对中线的偏距和高程0.000,5 -10.0,52.310 -5.0,50.120 0.0,49.860 5.0,50.050 10.0,51.780 20.000,5 -10.0,51.960 ...里程文件可以用「工程应用 → 生成里程文件」由图面等高线或高程点自动生成也可以从外业数据整理而来。断面间距是最核心的参数地形与工程类型建议断面间距说明平原区路基、渠道2050 m地形变化平缓间距可放大丘陵区道路20 m与横断面实测间距保持一致山区道路、沟槽1020 m地形突变处必须加测断面基坑、管沟510 m深度大、断面变化剧烈断面法的计算模型是在相邻两个断面之间按棱台或平均断面法求体积所以断面间距越大模型对地形变化的钝感越强。间距从 20 m 放大到 50 m在起伏路段上体积偏差轻松超 5%这是断面法最常见的失真来源。3.2 等高线法用现成等高线扫面计算土方路径是「工程应用 → 等高线法土方计算」按提示框选参与计算的等高线输入设计标高CASS 按相邻等高线围成的面积逐层累加体积。使用前提很硬等高线必须有真实高程Z 值或已附着高程属性必须是闭合的且不能自相交。从地形图上描下来的等高线经常有断口需要先「多段线 → 编辑」合并再用「等高线 → 修改高程」逐条核对。等高线法的精度取决于等高距。1:500 地形图等高距 0.5 m平坦地区可能出现大片区域落在两根等高线之间算法只能按线性插值处理结果偏大偏小都可能。它的定位是方案阶段的估算不适合作为结算依据。3.3 区域土方平衡反算设计标高与挖填平衡「工程应用 → 区域土方平衡」可以按坐标计算、按图上高程点计算输出一个挖填平衡的设计标高以及该标高下的挖方量和填方量。这个功能在场地平整方案比选里非常好用把设计标高上下浮动 0.2 m看挖填量怎么变很快能找到一个运距和土方量都合适的方案。断面法的结果可以用一段脚本交叉验证把每个断面的面积抄进去同时用平均断面公式和棱台公式算两遍# section_check.py —— 平均断面法 vs 棱台公式用于断面法成果复核 secs [(0, 12.50), (20, 15.20), (40, 11.80), (60, 13.40)] # (里程 m, 断面积 m²) def mean_end_area(secs): 平均断面法V Σ (A1A2)/2 * L v 0.0 for i in range(len(secs) - 1): (s0, a0), (s1, a1) secs[i], secs[i 1] v (a0 a1) / 2 * (s1 - s0) return v def frustum(secs): 棱台公式V Σ (A1A2sqrt(A1*A2))/3 * L import math v 0.0 for i in range(len(secs) - 1): (s0, a0), (s1, a1) secs[i], secs[i 1] v (a0 a1 math.sqrt(a0 * a1)) / 3 * (s1 - s0) return v a, b mean_end_area(secs), frustum(secs) print(f平均断面法 {a:.2f} m³ 棱台公式 {b:.2f} m³ 偏差 {(b-a)/a*100:.2f}%)两式结果偏差通常在 1%3%如果超过 5%说明相邻断面的面积变化太剧烈比如某段从挖方突然变填方需要在中间补测断面而不是接受这个偏差。3.4 成果表输出与交叉验证CASS 可以生成土方计算表并直接插入图纸表里包含每段的挖方面积、填方面积和体积。出表之后做三件事换一种方法在同一边界上重算一遍检查挖填分界线是否落在合理位置比如挡墙位置、坡脚位置用平均厚度 × 面积快速估算量级和计算总量对不上就说明有区域被漏算或重复计算。三方对得上成果才敢往外发。4. 两期土方计算南方CASS导入OSGB模型做前后对比两期土方计算解决的是这块地挖了多少、堆了多少的问题典型场景是矿山储量核算、堆场盘料、拆迁场地平整结算。它的原理不复杂把前后两次测量的地面模型相减差值乘以面积就是体积。真正难的是第二期数据从哪来——这两年越来越多项目直接用无人机倾斜摄影生成的 OSGB 模型出高程点。4.1 两期土方计算的三种数据源组合CASS 的「工程应用 → DTM法土方计算 → 两期土方计算」支持多组数据源选哪种决定了流程长短和精度上限数据源组合适用场景精度注意事项第一期三角网 第二期三角网两期都有实测点最常见高两期边界必须完全一致第一期三角网 第二期高程点一期已有模型二期新测中高点数要足够否则构网失真第一期高程点 第二期高程点两期都只有散点中软件自动构网需人工干预三角网边界一致是硬要求。两次测量的范围如果差一圈CASS 会在边界外强行外推高程算出来的土方量凭空多一大截。稳妥的做法是把边界做成一个独立图层上的闭合多段线两期计算都调用同一条线。4.2 OSGB模型导入CASS的常见做法与坐标校正OSGB 是倾斜摄影的空三成果本质是分块的三维瓦片CASS 不具备三维渲染能力所以导入模型在实操中一般不指直接把瓦片挂进 CASS而是先从模型里提取点云或高程点再转成 CASS 的高程点文件。提取环节用第三方点云工具按格网抽稀输出 CSVX,Y,Z接下来就是格式转换# osgb2cass.py —— 点云/CSV 抽稀成 CASS 高程点文件 # 用法: python osgb2cass.py cloud.csv out.dat 2.0 import csv, math, sys SRC, DST, CELL sys.argv[1], sys.argv[2], float(sys.argv[3]) buckets {} with open(SRC, newline, encodingutf-8, errorsignore) as f: for row in csv.reader(f): if len(row) 3: continue try: x, y, z map(float, row[:3]) except ValueError: continue # 跳过表头与非法行 key (math.floor(x / CELL), math.floor(y / CELL)) cur buckets.get(key) # 每格取最低点DSM 会带上植被和堆料顶面取最低更接近地面 if cur is None or z cur[2]: buckets[key] (x, y, z) with open(DST, w, encodingutf-8) as out: for i, (x, y, z) in enumerate(sorted(buckets.values()), 1): out.write(f{i},,{y:.3f},{x:.3f},{z:.3f}\n) print(f抽稀后输出 {len(buckets)} 个点 - {DST})CELL是抽稀格网边长取 2 m 得到的点数适合做场地级别的 DTM取 0.5 m 只适合小范围的精细核算。取最低点还是平均点取决于模型质量如果模型里植被、车辆、临时堆料明显取最低点更接近真实地面如果模型做过滤波处理取平均点更稳。坐标校正是另一个坑。OSGB 的坐标有两种常见情况一种是直接用了当地平面坐标加高程基准可以直接用另一种是模型自带的相对坐标带一个很大的偏移量或者用了不同的椭球参数。判断方法很简单把点云的范围和已知控制点比对一下如果整体偏移一个常数量做平移即可如果既有平移又有旋转说明坐标系不同需要七个参数三个平移、三个旋转、一个尺度用三个以上已知控制点求出来再统一转换。绝对不要在没做坐标校正的情况下直接算两期土方那样的结果没有任何意义。4.3 两期土方计算的详细步骤与实例参数以两期三角网为例完整流程是第一期高程点展点 → 建立三角网 → 删除跨坎三角形 → 三角网存文件一期.sjw第二期数据同样处理存成二期.sjw「工程应用 → DTM法土方计算 → 两期土方计算」依次选择两期三角网文件和计算边界CASS 输出挖方量、填方量和分块统计。在动 CASS 之前先用一条命令核对两期数据的基本特征很多低级错误在这一步就能拦住# 核对两期高程点的数量与高程范围确认没有把设计面当成现状面 for f in 一期.dat 二期.dat; do awk -F, NF3 $NF! { n; s$NF; if (min || $NFmin) min$NF; if ($NFmax) max$NF } END{printf %s: 点数%d 最低%.3f 最高%.3f 平均%.3f\n, FILENAME, n, min, max, s/n} $f done输出的四个数字要符合常识两期的点数不能差一个数量级否则说明有一期的抽稀格网设错了两期的高程范围要和现场情况对得上如果第二期的最高高程比第一期的高出十几米要么是确实堆了料要么是把设计面文件误当现状面导进去了。计算参数上两期土方有三个建议值抽稀格网 12 m和模型分辨率匹配即可不用更细三角网构网时务必加地性线尤其是堆料场的坡顶线和坡脚线计算边界向外留 02 m不要刻意扩大扩得越多外推误差越大。4.4 精度校核三个能立刻发现问题的检查第一个检查是边界一致性。把两期的高程点和边界线叠在一起看看边界外是否还有高程点参与构网。第二个检查是三角网是否跨越了不该跨越的地物比如料堆边坡、挡墙、临时建筑物这些地方的三角网会把竖直面拉成斜面体积必然失真。第三个检查是换算法重算把两期结果和方格网法的结果对比# check_balance.py —— 交叉验证两种算法的挖填总量数值从 CASS 成果表抄入 methods { 方格网法: {cut: 18422.6, fill: 9210.4}, DTM法: {cut: 17985.2, fill: 9603.7}, } base methods[方格网法] for name, v in methods.items(): dc (v[cut] - base[cut]) / base[cut] * 100 df (v[fill] - base[fill]) / base[fill] * 100 flag 需复核 if max(abs(dc), abs(df)) 5 else 一致 print(f{name}: 挖方偏差 {dc:.2f}% 填方偏差 {df:.2f}% {flag})偏差控制在 5% 以内可以认为两种方法互相印证超过 5% 且填方偏差明显大于挖方偏差通常指向同一类问题——地面模型里混进了植被或临时堆料导致现状面被抬高。这时候回到抽稀环节改用最低点取值或者做一次高程滤波往往就顺了。5. 土方成果偏差排查反复出现的坑与固化参数的技巧土方计算里真正的技术含量一半在建模一半在排错。下面这些偏差来源几乎每个项目都会遇到一次。5.1 五个高频偏差来源单位问题排第一。图纸单位是毫米时CASS 建立 DTM 会把高程也当成毫米处理高差被放大 1000 倍算出来的体积离谱到一眼能看出来。做之前先UNITS查一下图形单位再把高程点文件的单位核对一遍。高程基准不一致排第二。一期用 1985 国家高程基准二期用地方独立高程两期相减等于把两个基准的差值当成了土方量。凡是两期数据来自不同队伍必须先统一基准。边界不闭合排第三。CASS 会用直线把首尾点自动连起来如果首尾点离得很远这条补线会切掉一大块区域土方量凭空少一块。点位重复排第四。同一个点被采集两次三角网在那里会形成零面积的狭长三角形一般不影响总量但会让图面很乱用 2.1 里的去重脚本先处理掉。设计面选错排第五。尤其在两期计算里把设计标高和现状地面搞反挖填方向会整体颠倒填方量变挖方量这种错误最容易被忽略因为数值大小看着都合理。5.2 把参数固化成模板一次配置反复复用同一类项目反复做最省事的办法是把参数固化成 CAD 样板和脚本。具体做法把计算边界、设计面、辅助图层做进同一个.dwt样板文件图层名固定为TJ_BOUND边界、TJ_DESIGN设计面、TJ_POINT高程点把常用的方格宽度、断面间距、抽稀格网写成一份配置文件每次计算前用脚本读一遍DTM 的地性线单独放一层命名TJ_FEATURE构网时统一选取。这样做的收益很直接换项目时只要把数据导进来、边界挪到新位置其余参数不用再点一遍菜单也避免了上次那个项目方格宽度是多少来着的返工。土方计算本身没有高深算法把数据源、边界、参数三件事固定下来同一套流程换个场地照样能跑出可复核的结果。本文还有配套的精品资源点击获取
返回列表