Lineare Beziehungen für zwei (x, y) Graphen
-
19-09-2019 - |
Frage
Ich habe Daten kommen aus einer Datenbank x,y
[coordinates1]
(GIS - aber dies könnte eine Datenbank sein). Ich habe meine Bewerbung mit einem eigenen Koordinatensystem der gleiche Karte verweist.
Ich habe festgestellt, dass eine lineare Beziehung zwischen coordinates1 (x, y) existiert, und coordinates2(x,y)
wie ich zwei verschiedene coordinates1 und coordinates2
subtrahiert wurden (Dividieren x1
mit x2
und y1
mit y2
) und in allen Fällen I erhalten sie beide zeigt 0.724 oder 0.141 oder 0.825 bzw. dh coordinates1 + coordinates2.
Was ich jetzt brauche, um herauszufinden - oder Ihnen helfen - ist, dass wenn coordinates1(100000,200000)
und coordinates2(0.125,0.255)
Wie berechne ich coordinates2(x,y)
aus den Daten in coordinates1(x,y)
Lösung
Aus Gründen der Klarheit, ich werde Koordinaten in Ihrer Basis nennen ( x n , y n ) und Koordinaten in dem Ziel ( u Sub <> n v n ).
Wenn wir nun annehmen:
- Die Ursprünge der beiden Koordinatensysteme sind die gleichen.
- Die Ausrichtung der beiden Koordinatensysteme gleich sind (d.h. eine ist in Bezug auf die anderen nicht gedreht).
In diesem Fall brauchen Sie nur einen Satz Punkte {( x 1 , y 1 ), ( u 1 v 1 )} die Position zu bestimmen ( u n , v n ):
- u n = u 1 / x 1 * x n
- v n = v 1 / y 1 * y n
Hinweis: wir müssen x 1 ≠ 0, y 1 ≠ 0
Auf der anderen Seite, wenn die beiden Koordinatensysteme haben unterschiedliche Ursprünge (aber sie sind noch nicht gegeneinander verdreht), werden wir zwei Sätze von Punkten müssen {( x 1 y 1 ), ( u 1 v 1 )} und {( x 2 y 2 ), (< i> u 2 v 2 )}:
- u n = ( u 2 - u 1 ) / ( x 2 - x 1 ) * ( x n - x 1 ) + u 1
- v n = ( v 2 - v 1 ) / ( y 2 - y 1 ) * ( y n - y 1 ) + v 1
Hinweis: Wir müssen haben x 1 ≠ x 2 , y 1 ≠ y 2
Wenn nun die beiden Koordinatensysteme gegeneinander verdreht sind, was Sie brauchen (glaube ich) eine weitere Reihe von passenden Koordinaten. Aber es klingt nicht wie Sie brauchen, dass (es sei denn, eine Ihrer Karten Norden in eine Richtung hat andere deutend als gerade nach oben), so dass ich jetzt nicht die Mathematik gehen zu trainieren. :)
Andere Tipps
die Konvertierung zu tun, müssen Sie die Koordinaten eines Punktes O
in Ihrem zwei Koordinaten-Systeme kennen.
Nehmen wir an, O
hat die Koordinaten x1O,y1O
in Koordinatensystem 1 und x2O,y2O
in Koordinatensystem 2.
Dann wird ein Punkt mit den Koordinaten x1,y1
im System 1 und im System x2,y2
2 befriedigen:
(x1O - x1) = Kx * (x2O - x2)
(y1O - y1) = Ky * (y2O - y2)
wo Kx
und Ky
sind der Skalierungsfaktor. Wenn Sie die Koordinaten eines anderen Punkt M in beiden Systemen kennen, als haben Sie Kx
und Ky
mit
Kx = (x1O - x1M) / (x2O - x2M)
Ky = (y1O - y1M) / (y2O - y2M)
Dann müssen Sie nur die erste Beziehung gelten von einem System auf ein anderes System zu gehen, mit
x1 = x1O - Kx * (x2O - x2)
y1 = y10 - Ky * (y2O - y2)
oder
x2 = x2O - (x1O - x1) / Kx
y2 = y2O - (y1O - y1) / Ky
Sie benötigen auch den Code?