赫尔默特变换¶
5.0.0 新版功能.
Helmert变换通过3、4和7参数位移,或其6、8和14参数运动学对应项之一,将坐标从一个参考坐标系更改为另一个参考坐标系。
Alias |
赫尔默特 |
Domain |
2D、3D和4D |
输入类型 |
笛卡尔坐标(空间),小数年(时间)。 |
输出类型 |
笛卡尔坐标(空间),小数年(时间)。 |
输入类型 |
笛卡尔坐标 |
输出类型 |
笛卡尔坐标 |
Helmert变换在其所有不同的化身中,用于执行参考帧移动。变换在笛卡尔空间中进行。它可以用来将平面坐标从一个基准转换到另一个基准,将三维笛卡尔坐标从一个静态坐标系转换到另一个静态坐标系,也可以用来完成从全局坐标系到局部静态坐标系的完全运动学转换。
上表中描述的所有参数都标记为可选。只要在转换的设置中至少定义了一个参数,这是正确的。转换的行为取决于设置中使用的参数。例如,如果指定了“变化率”参数,则使用变换的运动学版本。
运动学变换需要坐标的观测时间,以及变换的中心历元。后者通常与给定变换的其余变换参数一起记录。中心历元由参数控制 t_epoch . 当使用PROJ的4D功能时,观察时间作为坐标的一部分给出。
实例¶
使用4参数2D Helmert将坐标从NAD72转换为NAD83:
proj=helmert convention=coordinate_frame x=-9597.3572 y=.6112 s=0.304794780637 theta=-1.244048
使用7个参数简化从ITRF2008/IGS08到ETRS89的转换:
proj=helmert convention=coordinate_frame x=0.67678 y=0.65495 z=-0.52827
rx=-0.022742 ry=0.012667 rz=0.022704 s=-0.01070
从 ITRF2000 到 ITRF93 使用15个参数:
proj=helmert convention=position_vector
x=0.0127 y=0.0065 z=-0.0209 s=0.00195
dx=-0.0029 dy=-0.0002 dz=-0.0006 ds=0.00001
rx=-0.00039 ry=0.00080 rz=-0.00114
drx=-0.00011 dry=-0.00019 drz=0.00007
t_epoch=1988.0
参数¶
备注
所有参数都是可选的,但至少应使用一个,否则操作将返回不变的坐标。
- +convention=coordinate_frame/position_vector¶
5.2.0 新版功能.
表示当涉及3D Helmert/7参数more变换时表示旋转项的约定。一旦指定了旋转参数(其中一个
rx
,ry
,rz
,drx
,dry
,drz
)convention
是必需的。这两个公约同样受欢迎,经常引起混淆。坐标系约定也被描述为坐标系的顺时针旋转。它对应于EPSG方法代码1032(在地心域中)或9607(在地理域中)。位置向量约定也被描述为坐标帧的逆时针(逆时针)旋转。它对应于EPSG方法代码1033(在地心域中)或9606(在地理域中)。
当只有3参数(仅翻译术语:
x
,y
,z
),4参数(3参数和theta
)或使用6参数(3参数及其导数项)。用给定的约定中指定的参数得到的结果可以在另一约定中通过对旋转参数求反得到 (
rx
,ry
,rz
,drx
,dry
,drz
)备注
这个参数过时了
transpose
这在项目5.0和5.1中都有,从项目5.2开始是禁止的
- +x=<value>¶
x轴的平移以米为单位。
- +y=<value>¶
y轴的平移以米为单位。
- +z=<value>¶
z轴的平移以米为单位。
- +s=<value>¶
比例因子,单位为ppm。
- +rx=<value>¶
X轴在3D Helmert中旋转给定弧秒。
- +ry=<value>¶
三维头盔中的Y轴旋转,以弧秒为单位。
- +rz=<value>¶
三维头盔中的Z轴旋转以弧秒为单位。
- +theta=<value>¶
二维赫尔默特中的旋转角以弧秒为单位。
- +dx=<value>¶
x轴的平移率,单位为m/年。
- +dy=<value>¶
y轴的平移率,单位为m/年。
- +dz=<value>¶
z轴的平移率,单位为m/年。
- +ds=<value>¶
标度率系数,单位为ppm/年。
- +drx=<value>¶
x轴的旋转速度以弧秒/年为单位。
- +dry=<value>¶
y轴的旋转速度,单位为弧秒/年。
- +drz=<value>¶
y轴的旋转速度,单位为弧秒/年。
- +t_epoch=<value>¶
以小数年表示的变换的中心纪元。只使用时空变换。
- +transpose¶
5.2.0 版后已移除: (已删除)
转置旋转矩阵并遵循 位置矢量 轮换惯例。如果
+transpose
未添加 坐标系 使用旋转约定。
数学描述¶
在下面使用的符号中, \(\hat{{P}}\) 是给定变换参数的变化率 \(P\) . \(\dot{{P}}\) 是运动调整版本的 \(P\) ,描述者
在哪里? \(t\) 是坐标的观测时间 \(t_{{central}}\) 是变革的中心时代。方程式 (1) 可用于及时传播所有变换参数。
矢量的上标表示矢量中的坐标所属的参考坐标系。
二维赫尔默特¶
Helmert变换的最简单版本是2D情况。在二维情况下,只有水平坐标改变。坐标可以平移、旋转和缩放。翻译由 x 和 y 参数。旋转由 theta 并用计算机控制刻度 s 参数。
备注
缩放参数 s 对于2D Helmert是无单位的,与3D版本不同,3D版本的缩放参数以ppm为单位。
在数学上,2D Helmert描述为:
(2) 可通过调整参数扩展到时变运动学版本 (1) 到 (2) ,从而生成运动学二维赫尔默特变换:
中的所有参数 (3) 是由使用 (1) ,它将在给定的时间间隔内对每个单独的参数应用更改率 \(t\) 和 \(t_{{central}}\) .
三维赫尔默特¶
3D-Helmert的一般形式是
哪里 \(T\) 是由三个平移参数组成的矢量, \(s\) 是比例因子,并且 \(\mathbf{{R}}\) 是一个旋转矩阵。 \(V^A\) 和 \(V^B\) 是坐标向量,带有 \(V^A\) 作为输入坐标,并且 \(V^B\) 是输出坐标。
在 位置矢量 约定,我们定义 \(R_x = radians \left( rx \right)\) , \(R_z = radians \left( ry \right)\) 和 \(R_z = radians \left( rz \right)\)
在 坐标系 惯例, \(R_x = - radians \left( rx \right)\) , \(R_z = - radians \left( ry \right)\) 和 \(R_z = - radians \left( rz \right)\)
旋转矩阵由三个旋转矩阵组成,每个轴一个。
三个旋转矩阵可以组合为一个:
为了 \(\mathbf{{R}}\) ,这将产生:
使用小角度近似,旋转矩阵可以简化为
我们可以用近似旋转矩阵来表示最常见的Helmert变换:
如果旋转矩阵被转置,或者旋转项的符号被取反,则变换的旋转部分被有效地反转。这就是在两个约定之间切换时发生的情况 position_vector
和 coordinate_frame
应用 (1) 我们得到了近似3D Helmert的运动学版本:
可以应用Helmert变换而不使用旋转参数,在这种情况下,它变成坐标系原点的简单平移。在这个方程中使用赫尔默特时 (4) 简化为:
在应用 (1) 具有以下运动学对应项: