找到点之间的转换

时间:2009-12-07 20:41:59

标签: language-agnostic math translation coordinates

我有一张美国地图,我在地图上有很多对应于感兴趣地点的像素坐标。这些是在运行时根据各种设置和统计信息在地图上动态绘制的。

我现在需要切换到不同大小的美国地图,并且地图的左上角位于海洋的稍微位置。

所以我手动为每个地图收集了一小组相互对应的坐标。例如,第一个地图上的点(244,312)对应于第二个地图上的点(598,624),第一个地图上的(1323,374)对应于第二个地图上的(2793,545)等。

所以我正在尝试决定X和Y维度的翻译。因此,给定旧地图和新地图的一组点,如何找到x' = A*x + Cy' = B*x + D等式以自动将旧地图中的任何点转换为新地图?

2 个答案:

答案 0 :(得分:3)

两个地图上都有两个点的坐标,(x 1 ,y 1 ),(x' 1 ,y' 1 ),(x 2 ,y 2 )和(x' 2 ,y' 2 )。

A = (x'1 - x'2)/(x1 - x2)
B = (y'1 - y'2)/(y1 - y2)
C = x'1 - A x1
D = y'1 - B y1

P.S。您的等式意味着从一个地图到另一个地图的简单缩放/转换。如果你担心从地球到平面使用不同的投影,方程将会更复杂。

答案 1 :(得分:3)

为了使结果更加强大以防止不准确,更多的两点可能会有所帮助。 在这种情况下,如果您假设只有移位和缩放最小二乘拟合可能会有所帮助:Wikipedia

基本上,您通过选择最佳A,B,C,D来最小化和((A xi + B-xi')^ 2 +(C yi + D-yi')^ 2)。