Question

J'ai une carte des États-Unis, et j'ai beaucoup de coordonnées en pixels sur cette carte qui correspondent aux lieux d'intérêt. Ceux-ci sont dynamiquement tracées sur la carte lors de l'exécution en fonction de différents paramètres et statistiques.

Je dois maintenant passer à une autre carte des États-Unis qui est de taille différente, et le coin supérieur gauche de la carte est un peu placer dans l'océan.

J'ai recueilli manuellement un petit ensemble de coordonnées pour chaque carte qui correspondent les uns aux autres. Par exemple, le point (244 312) sur la première carte correspond au point (598 624) sur la seconde carte, et (1323,374) sur le premier plan correspond à (2793,545) sur la seconde carte, etc.

Je suis en train de décider de la traduction pour les dimensions X et Y. Ainsi, étant donné un ensemble de points pour les anciens et les nouvelles cartes, comment puis-je trouver les équations x' = A*x + C et y' = B*x + D de traduire automatiquement tout point de l'ancienne carte à la nouvelle?

Était-ce utile?

La solution

Vous avez les coordonnées de deux points sur les deux cartes, (x 1 , y 1 ), (x ' 1 , y' 1 ), (x 2 , y 2 ) et (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. Vos équations impliquent d'une simple mise à l'échelle / traduction d'une carte à une autre. Si vous êtes inquiet sur l'utilisation de différentes projections du monde au plan, les équations seront plus compliquées.

Autres conseils

Pour obtenir un résultat plus robuste contre des inexactitudes plus que deux points peuvent aider. Dans ce cas, si vous assumez que déplacer et mise à l'échelle des moindres carrés en forme peut aider à: Wikipedia

Fondamentalement vous minimiser la somme ((A xi + B-xi ') ^ 2 + (C yi + D-yi') ^ 2) en sélectionnant optimale A, B, C, D.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top