Probleme mit Transformationsgleichungen für stereografische Projektionen des Lunar Reconnaissance Orbiter (LRO).

Ich habe versucht, die Koordinatenrahmen herauszufinden, die das Lunar Orbiter Laser Altimeter (LOLA) Team für Daten verwendet.

In ihrer Datei dsmap_polar.cat geben sie an:

X = R Sünde λ , Y = R cos λ ,
Wo λ ist der Längengrad und

R = 2 1737400 bräunen ( 90 θ L ) ,
θ L der Breitengrad sein.

Das Problem hier ist die Bedeutung ihres "Längengrades". Das Standardkugelsystem ist definiert:

X = R Sünde θ cos ϕ , j = R Sünde θ Sünde ϕ , z = R cos θ ,
wobei die Winkel in der Abbildung unten definiert sind. Der von LOLA gewählte Standard ist ungewöhnlich, da er gedreht zu sein scheint (sie verwenden die Arbeit von Snyder , glaube ich). Ein erhebliches Problem tritt auf, wenn man zB in eine gnomonische Karte umwandeln möchte. Wenn ich das obige Standard-Kugelsystem verwende, komme ich von der gnomonischen Karte nicht zum selben Punkt zurück.

Ich suche nach der Motivation und Erklärung, warum jemand den Längensinus für die x-Koordinate und den Kosinus für die y-Koordinate wählen würde, damit ich besser verstehen kann, was ich in meinen Transformationsgleichungen ändern muss.

Wenn man aus dem stereografischen Projektions-Breitengrad-Längengrad-System gemäß ihren Gleichungen umwandelt, endet man dann wirklich damit, dass die x-Achse in Richtung der mittleren Erde zeigt?


Detaillierter Hintergrund

Was ich wirklich brauche, ist, den Fehler in meinen Umrechnungsformeln zu finden. Ich muss in der Lage sein, zwischen stereografischer LOLA-Projektion und gnomonischer Projektion umzuwandeln.

Gnomonisches bis kartesisches planetozentrisches System (C1):

X = X ^ 1 + ( X ^ A ) 2 + ( j ^ A ) 2 , j = j ^ 1 + ( X ^ A ) 2 + ( j ^ A ) 2 , z = A 1 + ( X ^ A ) 2 + ( j ^ A ) 2 ,
wobei Hutwerte die Koordinaten in gnomonischer Projektion sind.

Kartesische planetozentrische bis kartesische stereographische Projektion (C2):

X ~ = 2 A j A + z , j ~ = 2 A X A + z ,
wobei die Tildewerte kartesische Koordinaten in stereographischer Projektion sind und A ist der Bezugsmondradius. Die geschaltet X Und j im Zähler sollte die seltsame Wahl des LOLA-Teams widerspiegeln.

Nun ist die inverse Transformation gegeben durch:

Stereographisches kartesisches System zum Breitengrad-Längengrad-System (bereitgestellt in der LOLA-Katalogdatei für die nördliche Hemisphäre) (C3):

λ = arctan j ~ X ~ , θ L = 90 2 arctan R 2 A ,
Wo
R = X ~ 2 + j ~ 2 .

Von Breitengrad und Längengrad zum gnomonischen kartesischen System (C4):

X ^ = A bräunen ( 90 θ L ) cos λ , j ^ = A bräunen ( 90 θ L ) Sünde λ ,

Von hier Breiten- und Längengrad bis kartesisch planetozentrisch ( X , j , z ) wird mit obigem Standard umgerechnet.

Wenn ich nun die Ergebnisse der Transformation (C1) und (C3) vergleiche, die durch den obigen Standard in das kartesische System konvertiert wurden, sind die x- und y-Achsen vertauscht. Das Problem ist, ich bin mir nicht sicher, welche Transformation richtig ist. Was ich wirklich will, ist, die planetozentrischen Koordinaten mit der x-Achse als mittlere Erdrichtung zu erreichen.


Konkretes Zahlenbeispiel

Der folgende Code verwendet Matlab-Syntax. A steht für den Bezugsradius der Mondkugel. Beginnen wir mit einem bestimmten Punkt in der gnomonischen Projektion:

a   =  1737400;
x_g = -411141.107140;
y_g = -411325.894877;

Konvertieren Sie nun diesen Punkt von gnomonischen Koordinaten in kartesische planetozentrische Koordinaten, die unter Verwendung der obigen Standard-Kugelkoordinaten abgeleitet werden:

x = x_g/sqrt( 1 + (x_g/a)^2 + (y_g/a)^2 );
y = y_g/sqrt( 1 + (x_g/a)^2 + (y_g/a)^2 );
z =   a/sqrt( 1 + (x_g/a)^2 + (y_g/a)^2 );

Das gibt:

(x,y,z) = (-389878.216487,-390053.447599,1647547.281362)

Ich konvertiere weiterhin mit (beachten Sie die Austausche) in die stereografische Projektion X Und j im Zähler auf der rechten Seite, was einen zum System des LOLA-Teams bringen sollte - hoffentlich):

x_s = 2*a*y/(a + z);
y_s = 2*a*x/(a + z);

was ergibt:

(x_s,y_s) = (-400407.334903,-400227.452318)

Um die Konsistenz zu überprüfen, führe ich die inverse Transformation durch, um sicherzustellen, dass ich im gnomonischen System denselben Punkt erhalte. Ich nehme diesen (x_s,y_s)-Punkt als Ausgangspunkt und konvertiere ihn mithilfe der offiziellen Formeln des LOLA-Teams aus der obigen Katalogdatei wieder in das Breiten-, Längengradsystem:

r   = sqrt(x_s^2 + y_s^2);
lon = atan2d(y_s,x_s);
lat = 90 - 2*atand(0.5*r/a);

und das ergibt:

(lat,lon) = (71.492702,-135.012873)

Konvertieren Sie nun in das kartesische System mit:

theta = 90-lat;
phi   = lon;
x = a*sind(theta)*cosd(phi);
y = a*sind(theta)*sind(phi);
z = a*cosd(theta);

ergibt:

(x,y,z) = (-390053.447599,-389878.216487,1647547.281362)

Sie können jetzt sehen, dass im Vergleich zu dem vorherigen Ergebnis, das ich beim Konvertieren von der Gnomonic erhalten habe, hier bereits die x- und y-Achsen vertauscht sind. Ich fahre also nicht mit den endgültigen Transformationen zum gnomonischen System fort. Beachten Sie auch, dass dies ein bestimmter Punkt ist, daher bin ich mir nicht sicher, ob ich im Allgemeinen nur ausgetauscht werde X Und j Achsen oder für andere Punkte ergeben sich andere Probleme wie unterschiedliche Vorzeichen.


Geben Sie hier die Bildbeschreibung ein

Was ist ein „LOLA-Team“? Es ist nicht hilfreich, bestimmte Akronyme zu verwenden, die viele Leser nicht erkennen werden, und es ist immer eine gute Praxis, den Ausdruck beim ersten Mal vollständig auszuschreiben, bevor Sie später sein Akronym verwenden. Können Sie Ihren Beitrag aktualisieren, um ihn zu buchstabieren, und vielleicht einen Link hinzufügen? Danke!
Ich denke, wir brauchen ein numerisches Beispiel, um die Art von Fehler zu sehen und zu verstehen, die Sie erhalten.
@Uwe Ich habe ein numerisches Beispiel mit Matlab-Code hinzugefügt, um das Problem zu reproduzieren.

Antworten (1)

Ich habe versucht, dasselbe mit Python zu tun:

import numpy as np

a   =  1737400
x_g = -411141.107140
y_g = -411325.894877

x = x_g/np.sqrt( 1 + np.square(x_g/a) + np.square(y_g/a) )
y = y_g/np.sqrt( 1 + np.square(x_g/a) + np.square(y_g/a) )
z =   a/np.sqrt( 1 + np.square(x_g/a) + np.square(y_g/a) )

print('(x, y, z) = ', (x, y, z))

x_s = 2*a*y/(a + z)
y_s = 2*a*x/(a + z)

print('(x_s, y_s) = ', (x_s, y_s))

r   = np.sqrt(np.square(x_s) + np.square(y_s));
lon = np.arctan2(y_s,x_s);
lat = np.deg2rad(90.0) - 2.0*np.arctan(0.5*r/a);

print('(lat, lon) = ', (lat, lon))

x_d = a * np.tan(np.deg2rad(90.0)-lat) * np.sin(lon)
y_d = a * np.tan(np.deg2rad(90.0)-lat) * np.cos(lon)

print('(x_d, y_d) = ', (x_d, y_d))

Ergebnis :

(x, y, z) =  (-389878.2164872003, -390053.4475990476, 1647547.281362467)
(x_s, y_s) =  (-400407.3349029025, -400227.4523177882)
(lat, lon) =  (1.247783033129123, -2.356419165143969)
(x_d, y_d) =  (-411141.10714000027, -411325.8948770001)

Geben Sie hier die Bildbeschreibung ein

Vergleichen Sie Ihre obigen Gleichungen mit:

X = R SIN( LONPI/180)

Y = R COS(LONPI /180)

Sie haben cos für x und sin für y verwendet, aber in LOLA wird sin für x und cos für y verwendet.

x- und y-Werte werden jetzt nicht vertauscht und

x_g = -411141,107140

y_g = -411325,894877

(x_d, y_d) = (-411141,10714000027, -411325,8948770001)

sind jetzt gleich.

Also ich glaube den Fehler endlich gefunden zu haben. Ich habe einige zusätzliche Fehler gemacht, als ich nach Ihrem Fehler gesucht habe. Hoffentlich sind keine Fehler mehr in meiner Antwort.

In Matlab verwende ich sindet al (dessen Argument ist in Grad, nicht in Radiant) und ich glaube, mein Code verwendet konsequent Funktionen, die Grade akzeptieren. Wenn Sie sich Ihre Ergebnisse ansehen (x,y,z), haben sie auch die x- und y-Koordinaten vertauscht. Ich bin mir ziemlich sicher, das ist nicht das Problem. Ich glaube, das Problem ist wirklich diese ungewöhnliche Wahl, wo gemessen werden soll ϕ oder Azimutwinkel.
Ok, ich werde es mir ansehen, aber auf diese Weise bekomme ich das gleiche "durcheinandergebrachte" Koordinatensystem in der gnomonischen Projektion, dh den Azimut von der y-Achse. Ich denke, die gleiche Lösung würde erreicht werden, wenn man das Lat-Lon-System auf sphärische Koordinaten mit vertauschtem Sinus und Cosinus des Azimuts umrechnen würde. Außerdem stellt sich immer noch die Frage, was im planetozentrischen Rahmen auf die mittlere Erdrichtung zeigt, ist es x oder y? Das ist eigentlich das Entscheidende, denn das gibt die Orientierung im Raum.
Dies ist, was die Koordinatenspezifikation für LRO sagt ( lunar.gsfc.nasa.gov/library/451-SCI-000958.pdf ): „Dies sind rechtshändige Kugelkoordinaten, bei denen die z-Achse die mittlere Rotationsachse und die x -Achse ist der Schnittpunkt des Äquators und des Nullmeridians. ... Die y-Achse ist orthogonal zur x- und z-Achse. ... Die Länge ist der Winkel zwischen diesem Vektor und der Ebene des Nullmeridians, gemessen in eine östliche Richtung." und in Teil 6.1 "Der Nullmeridian (0 ̊ Längengrad) wird durch die mittlere Erdrichtung definiert"
Basierend auf dem oben Gesagten zeigt die x-Achse im planetozentrischen, kartesischen System in die mittlere Erdrichtung, aber basierend auf ihren Transformationsgleichungen ist es die y-Achse. Oder liege ich falsch? (weil der Azimut sich auf die y-Achse bezieht)
@leosenko "Basierend auf dem Obigen zeigt die x-Achse im planetozentrischen, kartesischen System auf die mittlere Erdrichtung, aber basierend auf ihren Transformationsgleichungen ist es die y-Achse." Kann dieses Problem darauf zurückzuführen sein, dass Sie zwischen x- und y-Achse umgeschaltet haben, indem Sie sin und cos umgeschaltet haben?