声明
出于工作需要写这么一篇文章。本人不是专业搞地理和数学的,文章中有不对或不准确的地方请指正,勿喷。
个人认为,在几个明确定义的坐标系之间,坐标应该有明确的转换方法(可能为近似),而不是使用这种拟合的方法。但有时一些临时使用的,或定义不明确的,或小范围的坐标系,这种拟合也不失为一种好的方法。
问题
有两个不同的地理坐标系,世界上某一点α在坐标系1上的坐标值为A,在坐标系2上的坐标值为B,如果知道A的坐标如何求B的坐标(或反之)呢,这就需要我们去找出坐标系1和坐标系2之间的映射关系。
原理
取一定数量的样本,在样本上使用拟合的方法,找出(方程)映射关系。
求解过程
我们先用数学语言表达整理一下问题和条件,有集合A{(x,y)|x属于坐标系1的经度,y属于坐标系1的纬度},集合B{(m,n)|m属于坐标系2的经度,n属于坐标系2的纬度},求从集合A到集合B的映射关系f,使f((x,y))=(m,n),(x,y)属于A。
根据经验,A=>B有如下关系
m = A * x + B * y + C * x * x + D * y * y + E * x * y + F
n = G * x + H * y + I * x * x + J * y * y + K * x * y + L
而且,我们已经有了一些点的映射
(x1,y1) => (m1,n1)
(x2,y2) => (m2,n2)
...
分割线——————————————————————
这样我们就可以建立一个矩阵
| x1 y1 x1*x1 y1*y1 x1*y1 1 0 0 0 0 0 0 | | m1 |
| 0 0 0 0 0 0 x1 y1 x1*x1 y1*y1 x1*y1 1 | = | n1 |
| x2 y2 x2*x2 y2*y2 x2*y2 1 0 0 0 0 0 0 | | m2 |
| 0 0 0 0 0 0 x2 y2 x2*x2 y2*y2 x2*y2 1 | | n2 |
...
然后最小二乘拟合求解即可。
上面的经验关系和拟合方法都可以根据不同情况进行调整。
打字困难,数学表达式难敲,凑合看。
0 条评论