我有来自[coordinates1]数据库的x,y数据(GIS - 但这可能是任何数据库)。我的应用程序有自己的坐标系,参考相同的地图。
我已经确定了坐标1(x,y)和坐标2(x,y)之间存在线性关系,因为我已经减去了两个不同的坐标1和坐标2 [将x1与x2和y1除以y2]并且在所有情况下我都得到了它们分别显示0.724或0.141或0.825,即coordinates1 + coordinates2。
我现在需要弄清楚 - 或者你帮忙 - 如果坐标1(100000,200000)和坐标2(0.125,0.255)我如何从coordinates1(x,y)中的数据计算坐标2(x,y) )?
答案 0 :(得分:4)
为了清楚起见,我打算在你的基地调用坐标( x n , y n < / i>),以及目标中的坐标( u n , v n )。
现在,如果我们假设:
在这种情况下,您只需要一组点{( x 1 , y 1 ), (你 1 , v 1 )}来确定( u n的位置 , v n ):
注意:我们必须 x 1 ≠0, y 1 ≠0
另一方面,如果两个坐标系具有不同的原点(但它们仍未相对于彼此旋转),我们将需要两组点{( x 1 , y 1 ),( u 1 , v 1 )}和{( x 2 , y 2 ),(< i>你 2 , v 2 )}:
注意:我们必须有 x 1 ≠ x 2 , y 1 ≠ y 2
现在,如果两个坐标系相对于彼此旋转,则需要(我相信)另一组匹配坐标。但它听起来并不像你需要那样(除非你的一张地图指向北方而不是直线向上),所以我现在不打算算数。 :)
答案 1 :(得分:2)
要进行转换,您需要知道两个坐标系中一个点O
的坐标。
假设O
坐标系1中的坐标为x1O,y1O
,坐标系2中的坐标为x2O,y2O
。
然后系统1中坐标为x1,y1
的点和系统2中的x2,y2
将满足:
(x1O - x1) = Kx * (x2O - x2)
(y1O - y1) = Ky * (y2O - y2)
其中Kx
和Ky
是比例因子。如果你知道两个系统中另一个点M的坐标,那么你将Kx
和Ky
与
Kx = (x1O - x1M) / (x2O - x2M)
Ky = (y1O - y1M) / (y2O - y2M)
然后,您只需要将第一个关系应用于从一个系统到另一个系统,并使用
x1 = x1O - Kx * (x2O - x2)
y1 = y10 - Ky * (y2O - y2)
或
x2 = x2O - (x1O - x1) / Kx
y2 = y2O - (y1O - y1) / Ky
您还需要代码吗?