3. 坐标转换数学原理
钻孔点位坐标批量转换的核心,是把一个坐标参照系下的点位,换算到另一个参照系下。无论批量脚本写得多简洁,真正决定结果正确与否的,是背后选用的转换模型以及参数是否与测区匹配。本节从数学原理出发,说明三参数、四参数、七参数三类模型的公式结构、布尔莎与莫洛琴斯基两种七参数解法的差异,以及它们各自适用的工程条件。
一、先明确参照约定:旋转角的正负号
在展开公式前必须先固定符号约定,否则同一组参数在不同软件中会得到相反的结果。本课程统一采用右手坐标系、逆时针旋转为正的约定:绕 Z 轴旋转角 εZ 为正,表示从 Z 轴正向俯视时 X 轴向 Y 轴方向转动。布尔莎模型与莫洛琴斯基模型在本课程中均使用这一约定。若从其他资料获取参数,必须先核对其旋转角符号定义,必要时对 εX、εY、εZ 同时取反,再代入计算。
二、三参数模型:只做平移
三参数模型假设两个坐标系之间只有原点平移,坐标轴方向完全一致,尺度也相同。设源坐标为 (X, Y, Z),目标坐标为 (X′, Y′, Z′),平移量为 (ΔX, ΔY, ΔZ),则:
X′ = X + ΔX
Y′ = Y + ΔY
Z′ = Z + ΔZ
三参数模型只有 3 个未知量,最少 1 个公共点即可求解,但实际应使用 2~3 个点做检核。它适用于两套坐标系定向一致、测区范围小、旋转与尺度差异可忽略的情形,例如同一椭球下不同原点定义的局部坐标系之间的粗略换算。若两坐标系存在明显的轴向偏差或尺度差,三参数会引入系统性误差,且误差随点位远离原点而增大。
三、四参数模型:平面内的平移、旋转与尺度
四参数模型用于平面直角坐标之间的转换,常见于地方独立坐标系与 CGCS2000 高斯投影坐标之间的换算。四个参数为两个平移量 (Δx, Δy)、一个旋转角 α 和一个尺度因子 k(或尺度比 m = 1 + k)。公式为:
x′ = Δx + k·(x·cosα − y·sinα)
y′ = Δy + k·(x·sinα + y·cosα)
四参数模型不含高程转换,高程需另行处理。它最少需要 2 个公共点求解,工程上通常用 3~6 个均匀分布的控制点做最小二乘平差,并检查残差。四参数适用于测区范围较小(一般数十公里以内)、投影变形不大、两坐标系椭球差异可忽略的平面坐标转换。若测区跨越较大经度范围,高斯投影的变形不可忽略,四参数会残留明显的尺度与方向误差。
四、七参数模型:三维空间中的完整相似变换
七参数模型在三维空间中同时处理三个平移、三个旋转和一个尺度,是 GNSS 大地坐标与地方坐标系、不同椭球基准之间转换的主力模型。其一般形式为:
X′ = ΔX + k·(X + εZ·Y − εY·Z)
Y′ = ΔY + k·(−εZ·X + Y + εX·Z)
Z′ = ΔZ + k·(εY·X − εX·Y + Z)
式中 (ΔX, ΔY, ΔZ) 为平移参数,εX、εY、εZ 为旋转参数(弧度),k 为尺度因子。由于旋转角通常很小(角秒级),上式采用了小角度近似,这也是布尔莎模型与莫洛琴斯基模型共同的基础。七参数最少需要 3 个公共点求解,工程上建议使用 4 个以上分布合理的公共点做最小二乘平差,并保留 1~2 个点作为检核。
五、布尔莎模型与莫洛琴斯基模型的差异
两者都是七参数相似变换,差别在于旋转中心的选取。布尔莎模型以目标坐标系原点为旋转中心,旋转作用于源坐标向量本身;莫洛琴斯基模型以测区重心为旋转中心,先把源坐标平移到重心,旋转后再平移回去。当旋转角很小时,两者在数学上近似等价,参数可以互相换算;但当测区远离坐标原点、旋转角较大或公共点分布不均时,两者的参数数值会明显不同,混用会导致点位偏差。
实际作业中的判断依据是:若参数由测绘主管部门或项目技术文件提供,必须确认其所属模型与旋转中心;若自行解算,建议统一采用布尔莎模型,并在参数文件中注明旋转中心与符号约定。批量转换脚本中应把模型类型、旋转中心、角度单位作为显式配置项,而不是隐含在代码里。
六、模型选择与参数核验的实操要点
在批量转换钻孔点位前,建议按以下顺序确定模型:先看两套坐标系的椭球基准是否相同,不同则必须用七参数;再看是否只需平面坐标,若高程另有来源且测区较小,可用四参数;只有当两坐标系轴向一致、范围很小且精度要求不高时,才用三参数。选定模型后,用公共点做平差,检查单位权中误差与各点残差,残差超限的点应排查是否为粗差或点位标识错误。
参数核验时重点看三处:旋转角单位是弧度还是角秒(1 角秒 ≈ 4.848×10⁻⁶ 弧度);尺度因子是 k 还是 m = 1 + k;旋转中心是原点还是重心。批量脚本中应把这三项写成显式字段,并在转换前后各抽 1~2 个已知点比对,确认点位偏差在允许范围内再全量执行。钻孔点位通常成片分布,若发现偏差随距测区重心距离增大而线性增大,多半是旋转中心或尺度因子用错,应回到参数文件重新核对,而不是靠调整单个点来掩盖。