两个 (x,y) 图的线性关系
-
19-09-2019 - |
题
我有 x,y
数据来自于 [coordinates1]
数据库(GIS - 但这可以是任何数据库)。我的应用程序有自己的坐标系,引用相同的地图。
我已经确定坐标 1 (x,y) 和之间存在线性关系 coordinates2(x,y)
因为我减去了两个不同的坐标1和 coordinates2
(除 x1
和 x2
和 y1
和 y2
)并且在所有情况下我都让它们分别显示 0.724 或 0.141 或 0.825,即坐标 1 + 坐标 2。
我现在需要弄清楚 - 或者你帮忙 - 是如果 coordinates1(100000,200000)
和 coordinates2(0.125,0.255)
我该如何计算 coordinates2(x,y)
从数据中 coordinates1(x,y)
?
解决方案
为了清楚起见,我将调用您基地中的坐标(Xn, yn),以及目标中的坐标(你n, vn).
现在,如果我们假设:
- 两个坐标系的原点相同。
- 两个坐标系的方向相同(即一个不相对于另一个旋转)。
在这种情况下,您只需要一组点{(X1, y1), (你1, v1)} 来确定 (你n, vn):
- 你n = 你1/X1 * Xn
- vn = v1/y1 * yn
笔记:我们必须有 X1 ≠ 0, y1 ≠ 0
另一方面,如果两个坐标系具有不同的原点(但它们仍然没有相对于彼此旋转),我们将需要两组点{(X1, y1), (你1, v1)} 和 {(X2, y2), (你2, v2)}:
- 你n = (你2 - 你1)/(X2 - X1) * (Xn - X1) + 你1
- vn = (v2 - v1)/(y2 - y1) * (yn - y1) + v1
笔记:我们必须有 X1 ≠ X2, y1 ≠ y2
现在,如果两个坐标系相对于彼此旋转,您(我相信)还需要一组匹配坐标。但听起来你并不需要这样(除非你的一张地图的北指向的方向不是笔直向上),所以我现在不打算计算数学。:)
其他提示
要进行转换,你需要知道一点O
的坐标在两个坐标系统。
让我们假设O
具有坐标x1O,y1O
在坐标系统1中,并在x2O,y2O
坐标系2。
然后,在系统2具有坐标x1,y1
在系统1中,并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
你还需要的代码?