0

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

我现在需要切换到不同大小的美国地图,地图的左上角位于海洋中的某个位置。

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

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

4

2 回答 2

3

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

A = (x' 1 - x' 2 )/(x 1 - x 2 )
B = (y' 1 - y' 2 )/(y 1 - y 2 )
C = x' 1 - A x 1 
D = y' 1 - B y 1

PS您的方程式意味着从一张地图到另一张地图的简单缩放/转换。如果您担心使用从地球到平面的不同投影,则方程式会更加复杂。

于 2009-12-07T20:53:16.497 回答
3

为了使结果对不准确性更加稳健,两点可能会有所帮助。在这种情况下,如果您假设仅移位和缩放最小二乘拟合可能会有所帮助:Wikipedia

基本上,您可以通过选择最优 A、B、C、D 来最小化 sum( (A xi+B-xi')^2 + (C yi+D-yi')^2 )。

于 2009-12-07T21:03:49.887 回答