霍纳多项式求值¶
5.0.0 新版功能.
在 9.1.0 版更改: 迭代多正态反演
Alias |
霍纳 |
Domain |
二维与三维 |
输入类型 |
大地坐标和投影坐标 |
输出类型 |
大地坐标和投影坐标 |
霍纳多项式评估方案用于参考帧之间的变换,其中一个或两个不均匀或内部失真。这通常是在引入诸如全球定位系统等空间大地测量技术之前创建的参考框架。
霍纳多项式,或多元回归方程,因为他们也被称为,有他们的力量,能够创建坐标系之间的复杂映射,同时仍然是轻量级的计算成本和磁盘空间使用。
PROJ实现了Horner求值方案的两个版本:实多项式求值和复多项式求值。下面对这两种情况进行简要描述。更多详情请咨询 [Ruffhead2016] 和 [IOGP2018] .
实数空间中的多项式求值由以下等式定义:
在哪里?
和 \(u_{{i,j}}\) 和 \(v_{{i,j}}\) 是组成多项式的系数。
最终坐标确定为
逆变换与上面的相同,但需要不同的系数集。如果只知道系数和原点的正向集合,则可以通过迭代求解一组方程来完成逆变换。通过写作 (1) 作为:
我们可以用初值迭代求解 \(U = 0\) 和 \(V = 0\) 并找到 \(U\) 和 \(V\) 。
备注
这种迭代逆变换是一种更一般的解 N次可逆多项式 如中所示 [IOGP2019] 。当满足某些条件时,这些方法可以在单个步骤中提供令人满意的解决方案。
复多项式的求值由以下等式定义:
哪里 \(n\) 是多项式的次数。 \(U\) 和 \(V\) 定义如下所示 (2) 并且所得到的坐标再次由 (3) 。复多项式可以像实多项式一样迭代求解。
实例¶
使用实数空间中的多项式在丹麦TC32和ETRS89/UTM zone 32之间映射:
+proj=horner
+ellps=intl
+range=500000
+fwd_origin=877605.269066,6125810.306769
+inv_origin=877605.760036,6125811.281773
+deg=4
+fwd_v=6.1258112678e+06,9.9999971567e-01,1.5372750011e-10,5.9300860915e-15,2.2609497633e-19,4.3188227445e-05,2.8225130416e-10,7.8740007114e-16,-1.7453997279e-19,1.6877465415e-10,-1.1234649773e-14,-1.7042333358e-18,-7.9303467953e-15,-5.2906832535e-19,3.9984284847e-19
+fwd_u=8.7760574982e+05,9.9999752475e-01,2.8817299305e-10,5.5641310680e-15,-1.5544700949e-18,-4.1357045890e-05,4.2106213519e-11,2.8525551629e-14,-1.9107771273e-18,3.3615590093e-10,2.4380247154e-14,-2.0241230315e-18,1.2429019719e-15,5.3886155968e-19,-1.0167505000e-18
+inv_v=6.1258103208e+06,1.0000002826e+00,-1.5372762184e-10,-5.9304261011e-15,-2.2612705361e-19,-4.3188331419e-05,-2.8225549995e-10,-7.8529116371e-16,1.7476576773e-19,-1.6875687989e-10,1.1236475299e-14,1.7042518057e-18,7.9300735257e-15,5.2881862699e-19,-3.9990736798e-19
+inv_u=8.7760527928e+05,1.0000024735e+00,-2.8817540032e-10,-5.5627059451e-15,1.5543637570e-18,4.1357152105e-05,-4.2114813612e-11,-2.8523713454e-14,1.9109017837e-18,-3.3616407783e-10,-2.4382678126e-14,2.0245020199e-18,-1.2441377565e-15,-5.3885232238e-19,1.0167203661e-18
使用复数多项式在丹麦System Storebælt和ETRS89/UTM区域32之间映射:
+proj=horner
+ellps=intl
+range=500000
+fwd_origin=4.94690026817276e+05,6.13342113183056e+06
+inv_origin=6.19480258923588e+05,6.13258568148837e+06
+deg=3
+fwd_c=6.13258562111350e+06,6.19480105709997e+05,9.99378966275206e-01,-2.82153291753490e-02,-2.27089979140026e-10,-1.77019590701470e-09,1.08522286274070e-14,2.11430298751604e-15
+inv_c=6.13342118787027e+06,4.94690181709311e+05,9.99824464710368e-01,2.82279070814774e-02,7.66123542220864e-11,1.78425334628927e-09,-1.05584823306400e-14,-3.32554258683744e-15
参数¶
建立Horner多项式需要显式地编写许多系数,即使对于低阶多项式也是如此。因此,建议将多项式定义存储在 init file 便于编写和重用。
要求的¶
下面列出了可以为Horner多项式变换设置的所需参数。如上所述,变换采用实多项式或复多项式的形式。下面将这些内容分为几个单独的部分。这两部分的参数是互斥的,即描述实多项式和复多项式的参数不能混合。
- +deg=<value>¶
多项式次数
- +fwd_origin=<northing,easting>¶
正演映射的原点坐标
实多项式¶
如果变换由实空间中的多项式组成,则必须设置以下参数。每个参数采用逗号分隔的系数列表。系数的数量取决于度数, \(d\) ,多项式的:
复多项式¶
如果变换由复数空间中的多项式组成,则必须设置以下参数。每个参数采用逗号分隔的系数列表。系数的数量取决于度数, \(d\) ,多项式的:
可选的¶
- +inv_origin=<northing,easting>¶
在 9.1.0 版更改.
反向映射的原点坐标。如果没有此选项,则反变换将使用迭代多项式求值。
- +inv_u=<u_11,u_12,...,u_ij,..,u_mn>¶
在 9.1.0 版更改.
逆变换的系数,即纬度到北距,如中所述 (1) 。仅适用于实多项式。如果没有此选项,则反变换将使用迭代多项式求值。
- +inv_v=<v_11,v_12,...,v_ij,..,v_mn>¶
在 9.1.0 版更改.
逆变换的系数,即经度到东经,如中所述 (1) 。仅适用于实多项式。如果没有此选项,则反变换将使用迭代多项式求值。
- +range=<value>¶
有效区域的半径。
- +uneg¶
把纬度表示为向南。只适用于复多项式。
- +vneg¶
将经度表示为westing。只适用于复多项式。