南方CASS土方计算:方格网、DTM、断面与两期OSGB模型实操
2026/9/20 4:49:41 网站建设 项目流程

简介:《南方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, encoding="utf-8", errors="ignore") 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", encoding="utf-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 会在图上自动生成方格网并逐格标注挖填高度,最后给出汇总表。三个参数里最容易被忽视的是方格宽度,它不只是一个显示精度,而是直接决定计算模型的分辨率。

场地类型实测点平均间距建议方格宽度说明
厂区平整、硬化场地10~15 m10 m方格略小于点间距,避免一格里只有角落有实测点
场地粗平、大开挖20~35 m20 m方格过小反而放大地形噪声
丘陵、缓坡场地15~25 m10~20 m坡向变化处应加密实测点而非缩小方格
台阶、深基坑5~10 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.5~2 倍左右),如果成倍偏多,说明构网时把不该参与的点也算进去了;表面积合计可以和场地边界面积对比,山地地形表面积通常是投影面积的 1.05~1.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 ...

里程文件可以用「工程应用 → 生成里程文件」由图面等高线或高程点自动生成,也可以从外业数据整理而来。断面间距是最核心的参数:

地形与工程类型建议断面间距说明
平原区路基、渠道20~50 m地形变化平缓,间距可放大
丘陵区道路20 m与横断面实测间距保持一致
山区道路、沟槽10~20 m地形突变处必须加测断面
基坑、管沟5~10 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 = Σ (A1+A2)/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 = Σ (A1+A2+sqrt(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 的高程点文件。提取环节用第三方点云工具按格网抽稀,输出 CSV(X,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="", encoding="utf-8", errors="ignore") 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", encoding="utf-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, 'NF>=3 && $NF!="" { n++; s+=$NF; if (min=="" || $NF<min) min=$NF; if ($NF>max) max=$NF } END{printf "%s: 点数=%d 最低=%.3f 最高=%.3f 平均=%.3f\n", FILENAME, n, min, max, s/n}' "$f" done

输出的四个数字要符合常识:两期的点数不能差一个数量级,否则说明有一期的抽稀格网设错了;两期的高程范围要和现场情况对得上,如果第二期的最高高程比第一期的高出十几米,要么是确实堆了料,要么是把设计面文件误当现状面导进去了。

计算参数上,两期土方有三个建议值:抽稀格网 1~2 m(和模型分辨率匹配即可,不用更细);三角网构网时务必加地性线,尤其是堆料场的坡顶线和坡脚线;计算边界向外留 0~2 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,构网时统一选取。

这样做的收益很直接:换项目时只要把数据导进来、边界挪到新位置,其余参数不用再点一遍菜单,也避免了"上次那个项目方格宽度是多少来着"的返工。土方计算本身没有高深算法,把数据源、边界、参数三件事固定下来,同一套流程换个场地照样能跑出可复核的结果。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询