确定性方量计算:为什么同一测量必须得出同一数字

按两次“计算”结果却不同的方量不是测量——而是一场迟早会发生的争议。月度对账、土方计量支付和审计都假定:同一表面、同一边界和同一基准,任何时候、任何电脑上都得出同一个数字。本文说明确定性方量计算必须保证什么,以及 STREAM 的挖填方引擎如何做到。

计算实际做了什么

STREAM 在高程格网上计算挖填方。格网中心落在您绘制的边界内时才计入。对每个计入的格网,在表面应用地形编辑与高程偏移之后,取 Δz = 地面 − 基准;Δz 为正则把 Δz × 格网面积计入挖方,为负则计入填方。无数据的格网被跳过——绝不当作零。

同时给出斜面(三维)面积:每个格网贡献其平面面积 × √(1 + gx² + gy²),坡度取自同一修正表面上的相邻格网。

让结果可重复的规则

确定性不是自然而然的,而是来自几项刻意的选择。每一项都堵住了同一输入可能得出不同数字的一条路径。

保持方量计算确定性的规则
规则防止什么
按固定顺序(行条带、逐行)遍历格网,累加到单一累加器随线程调度变化的浮点求和
采样格网用整数计数,而不是反复累加步长某一行或列这次出现、下次消失
以格网中心是否在边界内决定是否计入含糊的部分格网每次判定不同
NoData 被跳过,绝不读作零空洞变成虚假的填方或挖方
“最低点”基准取自同一修正表面基准取自一个表面而方量取自另一个表面
没有随机采样、没有时钟、不依赖文件顺序结果取决于何时或何地运行

提速而不改变答案

测量一个 40 m 的料堆,不应把 18 GB 的表面从头扫到尾。因此 STREAM 只读取边界周围的一个窗口——外接矩形再加一个格网,让基于相邻格网的坡度仍有相邻格网可用。边界外的格网本来就不贡献任何值,所以窗口改变的是耗时,而不是结果。

同样的原则适用于任何数量计算的优化:更快的路径必须返回完全相同的数字,并在发布前用已知表面做对比。

仍会改变数字——也应该改变——的因素

确定性指相同输入得出相同输出,它并不隐藏输入。基准、边界、地形编辑和表面版本都会改变方量,应在报告中与方量一并注明。由于按格网中心计入,边界的分辨率等于格网尺寸:格网越细,越能贴合曲线边界。

您可以用同样的方法检验任何方量工具:构建一个答案已知的平面测试表面——长 40 m、宽 30 m、沿长度升高 2 m 的平台,相对 101.5 m 净挖 600 m³——运行两次。结果应与解析值一致,两次之间也应完全一致,直到最后一位。

常见问题

什么是确定性方量计算?

指同一表面、边界、基准和设置,无论何时、在哪台电脑上运行,总是得出完全相同的方量。

为什么方量工具运行两次可能得出略有不同的数字?

通常是因为并行浮点求和的顺序随线程调度变化、采样格网通过反复累加步长构建,或使用了随机采样。这些都会让结果依赖于输入以外的因素。

如何检验方量工具是否可重复?

使用答案已知的平面表面,例如沿长度升高 2 m 的 40 m × 30 m 平台(相对 101.5 m 标高净挖 600 m³),运行两次。两次结果应彼此一致,并与解析值一致。

在 STREAM 中计算可重复的挖填方量

原生 Windows · 完全离线 · 免费测试版

填挖方软件