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)

?
War es hilfreich?

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:

  1. Die Ursprünge der beiden Koordinatensysteme sind die gleichen.
  2. 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?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top