3. 爆心距计算与测点坐标校核
为什么爆心距必须单独校核
PPV 回归中,爆心距 R 是分母项,萨道夫斯基公式 V = K·(Q^(1/3)/R)^α 对 R 的误差非常敏感。现场记录里 R 常由“爆区中心坐标 + 测点坐标”事后计算,一旦坐标录入错位(经纬度顺序颠倒、东/北坐标互换、漏掉小数点、测点编号与坐标错配),R 会出现数量级偏差,直接污染回归样本。因此本例把 R 作为独立字段重新计算,并与原始记录比对,形成规范化距离列。
坐标与距离的计算约定
采用平面直角坐标(矿山常用本地坐标系,单位 m),爆区中心取各爆区代表点坐标 (E0, N0),测点坐标 (Ei, Ni),则:
R_i = √[(E_i − E_0)² + (N_i − N_0)²]
约定:E 为东坐标(横轴),N 为北坐标(纵轴);若原始数据为经纬度,需先投影到平面坐标再计算,不可直接用经纬度差求欧氏距离。R 保留 1 位小数(m),并同时保留“斜距/平距”标识——本例统一用平距,若测点高程差大于 30 m 需另行说明。
用示例数据完成一次校核
下表为某爆次 4 个测点的原始记录与重算结果(示例数据,非实测)。爆区中心取 (E₀, N₀) = (1000.0, 2000.0) m。
| 测点 | E (m) | N (m) | R_记录 (m) | R_重算 (m) | 相对偏差 | 判定 |
|---|---|---|---|---|---|---|
| #1 | 1060.0 | 2080.0 | 100.0 | 100.0 | 0.0% | 通过 |
| #2 | 1150.0 | 2000.0 | 150.0 | 150.0 | 0.0% | 通过 |
| #3 | 2000.0 | 1150.0 | 150.0 | 1250.0 | 733% | E/N 互换,修正 |
| #4 | 1090.0 | 2120.0 | 12.0 | 120.0 | −90% | 漏小数点,修正 |
#3 的 E、N 明显互换(E 远大于 N 且与爆区方位不符),修正为 (1150.0, 2000.0) 后 R=150.0 m;#4 记录 R=12.0 m 与坐标算出的 120.0 m 相差 10 倍,判定为漏小数点,按重算值 120.0 m 写入。修正后 4 个样本 R 分别为 100.0、150.0、150.0、120.0 m。
可执行的校核脚本
下面脚本读入原始记录(含坐标与手记 R),重算 R、计算相对偏差、按 5% 阈值标记可疑样本,并输出规范化距离列。示例数据内嵌,可直接运行。
import math
# 原始记录:测点编号, E, N, R_记录
records = [
("#1", 1060.0, 2080.0, 100.0),
("#2", 1150.0, 2000.0, 150.0),
("#3", 2000.0, 1150.0, 150.0),
("#4", 1090.0, 2120.0, 12.0),
]
E0, N0 = 1000.0, 2000.0
TOL = 0.05 # 相对偏差阈值 5%
def dist(e, n):
return math.hypot(e - E0, n - N0)
rows = []
for pid, e, n, r_rec in records:
r_calc = dist(e, n)
rel = (r_calc - r_rec) / r_rec if r_rec else float("inf")
flag = "OK" if abs(rel) <= TOL else "CHECK"
rows.append((pid, e, n, r_rec, round(r_calc, 1), round(rel * 100, 1), flag))
print(f"{'测点':<4}{'E':>8}{'N':>8}{'R记录':>8}{'R重算':>8}{'偏差%':>8} 判定")
for pid, e, n, r_rec, r_calc, rel, flag in rows:
print(f"{pid:<4}{e:>8.1f}{n:>8.1f}{r_rec:>8.1f}{r_calc:>8.1f}{rel:>8.1f} {flag}")
# 规范化距离列(可疑样本按重算值写入,并保留原值备查)
norm = [(pid, r_calc) for pid, _, _, _, r_calc, _, _ in rows]
print("\n规范化 R 列:", norm)
预期输出中 #1、#2 判定 OK,#3、#4 判定 CHECK;规范化 R 列为 100.0、150.0、1250.0、120.0 m——注意 #3 在未修正坐标前重算值仍是 1250.0 m,说明脚本只能“发现”偏差,坐标本身仍需人工回查修正。修正 #3 坐标后重跑,R 变为 150.0 m,全部样本通过。
规范化距离字段的落地要求
- 字段命名统一为
R_m,单位 m,保留 1 位小数,禁止混用 km 或斜距。 - 同时保留
R_record与R_calc两列,便于追溯;回归只使用R_m。 - 每个样本标注
coord_flag(OK / CHECK / FIXED),CHECK 样本在修正前不得进入回归。 - 爆区中心坐标按爆次记录,同一爆次所有测点共用同一 (E₀, N₀),不得逐点更换。
完成以上步骤后,距离字段即可与后续的最大单响药量、PPV 按爆次正确配对,进入比例距离计算与散点绘制环节。