Koordinatentransformation kartesisch/geographisch (Geodäsie/Vermessung)
Matthias, Thursday, 02.04.2009, 14:21 (vor 5717 Tagen)
Hallo Leute,
ich habe ein kleines Problem zu Lösen und wende mich mal an Euch, da ich mit Geodäsie bisher noch nie in Berührung gekommen bin.
In einem 3D Projekt werden ausschließlich kartesische Koordinaten verwendet. Wobei z=Höhe, x=Ost/West y=Nord/Süd. Die Einheit ist Meter.
Nun soll in diesem Koordinatensystem die Erdoberfläche gerendert werden. Die Höhendaten liegen als Rasterdaten vor mit WGS84 als Referenzellipsoid und ein Rasterpunkt entspricht einer Winkelminute. ( Weitere Informationen)
Meine Idee ist es nun, die kartesischen Koordinaten als Weg auf der Erdoberfläche, ausgehend von 0°/0°, zu interpretieren. Dabei würde dann der Breitengrad über den Sinus Amplitudinis der y-Koordinate berechnet(Ellipse da Erdabplattung) und der Längengrad über die Bogenlänge(Kreis) auf dem entspr. Breitengrad.
Dazu nun meine Fragen:
1. Ist diese Interpretation "richtig"?
2. Ist die Berechnung richtig?
3. Treten dabei Verzerrungen auf? Wenn ja, welche?
4. Geht das ganze vllt. viel einfacher, z.B. indem man die Rasterdaten vorher in eine andere Projektion umwandelt?
Vielen Dank im Voraus
Matthias
Umrechnung zwischen kartesischen & geographisch Koordianten
AWO, Nussbaumen AG, Thursday, 02.04.2009, 15:33 (vor 5717 Tagen) @ Matthias
Hallo,
du kannst WGS84 Koordinaten in kartesische Koordinaten umrechnen:
Da das noch keine Transformation ist, sollte das ganze noch verzerrungsfrei sein.
Tags:
Koordinatentransformation, WGS84, Formeln
Umrechnung zwischen kartesischen & geographisch Koordinaten
MichaeL , Bad Vilbel, Thursday, 02.04.2009, 16:18 (vor 5717 Tagen) @ Matthias
Hallo Matthias,
In einem 3D Projekt werden ausschließlich kartesische Koordinaten verwendet. Wobei z=Höhe, x=Ost/West y=Nord/Süd. Die Einheit ist Meter.
Was für welche? Lokale oder bezogen aufs World Geodetic System 1984 (WGS84)?
Ich gehe mal von lokalen Daten aus. In dem Fall benötigst Du Passpunkte. Das sind Punkte, die Du sowohl im lokalen System als auch im globalen (WGS84) zur Verfügung hast.
Die WGS84 Koordinaten, die Du im Moment hast (B,L,h), wandelst Du in XYZ um. Andy hat Dir die Formeln gezeigt, die ich mal in Matlab implementiert hatte und hier reinstelle.
Von Deinen Passpunkten hast Du nun kart. Koordinaten im lokalen 3D System und im WGS84. Das lokale System transformierst Du nun mit diesen Passpunkten ins globale System - Stichwort Helmerttransformation. Im Servicebereich der Hauptseite findest Du dazu auch ein Tool.
Solltest Du nun wieder geog. Koordinaten haben wollen, musst Du diese wiederum umrechnen. Auch hierzu ein File im Anhang.
%% Kartesische X,Y,Z -> Ellipsoidische B,L,h % % @param <Double>X ..... X-Komponente % @param <Double>Y ..... Y-Komponente % @param <Double>Z ..... Z-Komponente % @param <String>ell ... Name des Referenzellipsoid % % @return <Double>B .... Breite % @return <Double>L .... Länge % @return <Double>h .... Höhe % % @version 1.0 vom 30.10.2007 [XYZ2BLh.m] % @author Michael Loesler - http://derletztekick.com function [B L h] = XYZ2BLh(X, Y, Z, ell) if nargin==3 ell = 'WGS84'; elseif nargin<3 error('Zu wenig Eingangsargumente!'); end if strcmp(upper(ell),'WGS84') || strcmp(upper(ell),'GRS80') a = 6378137.0; alpha = 1.0/298.257222101; elseif strcmp(upper(ell), 'BESSEL') a = 6377397.155; alpha = 1.0/299.15281285; elseif strcmp(upper(ell), 'KRASSOWSKI') a = 6378245.0; alpha = 1.0/298.3; elseif strcmp(upper(ell), 'HAYFORD') a = 6378388.0; alpha = 1.0/297.0; else error('Ellpsoid unbekannt!') end roh = 180/pi; b = a*(1-alpha); c = a^2/b; e1 = sqrt((a^2-b^2)/a^2); e2 = sqrt((a^2-b^2)/b^2); p = sqrt(X^2+Y^2); Theta = atan((Z*a)/(p*b)); L = atan(Y/X)*roh; B = atan((Z+ e2^2*b*(sin(Theta))^3) / (p-e1^2*a*(cos(Theta))^3)); eta2 = e2^2*(cos(B))^2; V = sqrt(1 + eta2); N = c/V; h = p/cos(B) - N; B = B*roh; return;
und
%% Ellipsoidische B,L,h -> Kartesische X,Y,Z % % @param <Double>B ..... Breite % @param <Double>L ..... Länge % @param <Double>h ..... Höhe % @param <String>ell ... Name des Referenzellipsoid % % @return <Double>X .... X-Komponente % @return <Double>Y .... Y-Komponente % @return <Double>Z .... Z-Komponente % % @notice Die Eingabe der ellipsoidischen Breite und Länge kann sowohl als % dezimaler Wert als auch als [°,',"]-Matrix erfolgen. % % @version 1.0 vom 30.10.2007 [BLh2XYZ.m] % @author Michael Loesler - http://derletztekick.com function [X Y Z] = BLh2XYZ(B, L, h, ell) if nargin==3 ell = 'WGS84'; elseif nargin<3 error('Zu wenig Eingangsargumente!'); end if length(B)==3 B = B(1) + B(2)/60 + B(3)/3600; end if length(L)==3 L = L(1) + L(2)/60 + L(3)/3600; end if strcmp(upper(ell),'WGS84') || strcmp(upper(ell),'GRS80') a = 6378137.0; alpha = 1.0/298.257222101; elseif strcmp(upper(ell), 'BESSEL') a = 6377397.155; alpha = 1.0/299.15281285; elseif strcmp(upper(ell), 'KRASSOWSKI') a = 6378245.0; alpha = 1.0/298.3; elseif strcmp(upper(ell), 'HAYFORD') a = 6378388.0; alpha = 1.0/297.0; else error('Ellpsoid unbekannt!') end roh = pi/180; b = a*(1-alpha); c = a^2/b; e2 = sqrt((a^2-b^2)/b^2); B = B*roh; L = L*roh; eta2 = e2^2*(cos(B))^2; V = sqrt(1 + eta2); N = c/V; X = (N+h)*cos(B)*cos(L); Y = (N+h)*cos(B)*sin(L); Z = ((b/a)^2*N+h)*sin(B); return;
Gruß Micha
--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences
Tags:
Koordinatentransformation, WGS84, Länge, Matlab, Formeln, Breite
Koordinatentransformation kartesisch/geographisch
Matthias, Thursday, 02.04.2009, 17:19 (vor 5717 Tagen) @ MichaeL
Wow,
danke Ihr beiden.
Allerdings macht mir die ellipsoidische Höhe etwas zu schaffen.
Wenn ich mich direkt auf der Oberfläche des Referenzellipsoides befinde, ist diese doch 0, oder?
Koordinatentransformation kartesisch/geographisch
Matthias, Thursday, 02.04.2009, 17:35 (vor 5717 Tagen) @ Matthias
Diese Frage bitte ignorieren, sie war äußerst dumm
Die Höhe ist natürlich nicht und niemals 0.
Aber wie kann ich h, bzw. bei gegebenen x und y ermitteln? Es soll ja die zweidimensionalen kartesische Koordinate (x,y) in die zeidimensionale Koordinate (B,L) der Rasterdaten überführt werden.
Ist h dann einach immer der Erdradius?
MfG
Matthias
Koordinatentransformation kartesisch/geographisch
MichaeL , Bad Vilbel, Thursday, 02.04.2009, 17:47 (vor 5717 Tagen) @ Matthias
Hallo,
Wenn ich mich direkt auf der Oberfläche des Referenzellipsoides befinde, ist diese doch 0, oder?
Schaus Dir an:
Die Höhe, bezogen aus Ellipsoid, ist h im Bild und diese ist definiert zwischen dem Punkt P und seinem Lotfußpunkt P' (auf dem Ellipsoid).
Gruß Micha
--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences
Tags:
Koordinatentransformation, WGS84
Koordinatentransformation kartesisch/geographisch
Matthias, Thursday, 02.04.2009, 18:15 (vor 5717 Tagen) @ MichaeL
Hmm, wenn ich mir das Bild so anschaue, gehe ich mal davon aus, wir reden von zwei verschiedenen Koordinatensystemen.
Die Erdoberfläche soll ja in einem kartesischen System gerendert werden(bzw. wird schon), also es sollen Höhenwerte Z zu der Ebene (X,Y) abgetragen werden. Dazu ist die Überlegung, die X,Y Koordinaten als Strecken auf der Erdoberfläche, ausgehend von 0°/0° zu betrachten.
Bei der von Euch angegebenen Formel sehe ich das Problem, dass das Terrain mit größerem Abstand vom Ursprung immer mehr gestaucht wird.
Zur Veranschaulichung habe ich mal schnell folgende Skizze gefertigt:
MfG
Matthias
Koordinatentransformation kartesisch/geographisch
AWO, Nussbaumen AG, Thursday, 02.04.2009, 18:26 (vor 5717 Tagen) @ Matthias
Ich würde an deiner Stelle das geozentrische Koordinatensystem WGS84 benutzen, da solche Koordinatensysteme für Berechnungen auf der Erde geeigneter sind.
Was Du mit Stauchung meinst, ist mir im Moment allerdings nicht klar, dass es keine Verzerrungen gibt, solange nur umgerechnet wird.
Koordinatentransformation kartesisch/geographisch
MichaeL , Bad Vilbel, Thursday, 02.04.2009, 19:54 (vor 5716 Tagen) @ AWO
Hi Andy,
auch ich kann dem letzten Posting nicht viel entnehmen?! Das Bild hilft mir auch nicht weiter...
Grundsätzlich würde ich auch Vorschlagen, dass er das WGS gleich nutzen soll
So, weiter machen
Micha
--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences
Koordinatentransformation kartesisch/geographisch
Matthias, Saturday, 04.04.2009, 11:05 (vor 5715 Tagen) @ MichaeL
Hallöle zusammen,
also ich beschreib einfach nochmal bildlich was ich meine:
Gehen wir davon aus, der Betrachter befindet sich in dem Projekt genau im Schnittpunkt Nullmeridian/Äquator, also 0°/0°.
Der Betrachter bewegt sich nun nach Norden und will über den Nordpol genau auf die entgegengesetzte Erdseite gelangen, die Y-Koordinate in diesem Koordinatensystem vergrößert sich also.
Schaue ich mir nun das Bild von Michael an, dann ist die Ausgangsposition(im Bild) in kartesischen Koordinaten (x,y,z) = (6378137,0,0) oder geographisch 0°/0°.
Nun kann ich doch nicht aber einfach die Bewegung auf der Y-Achse des Projektes auf die X-Achse im Bild abtragen, da ich mich ja dann durch die Erde bewegen würde und sich dadurch der nötige Weg drastisch verkleinert. (Das meinte ich auch mit Stauchung)
Ahoi
Matthias
Koordinatentransformation kartesisch/geographisch
MichaeL , Bad Vilbel, Saturday, 04.04.2009, 12:22 (vor 5715 Tagen) @ Matthias
Moin Matthias,
bleiben wir bei dem bereits gezeigten Bild und den Formeln zur Umrechnung zwischen geographischen und kartesischen Koordinaten, die Dir Andy gezeigt hat und ich lediglich durch die beiden Matlab-Files BLh2XYZ und XYZ2BLh ergänzt habe. Mit diesen Formeln werde ich nun Dein Szenarium durchspielen.
Gehen wir davon aus, der Betrachter befindet sich in dem Projekt genau im Schnittpunkt Nullmeridian/Äquator, also 0°/0°.
Er befindet sich also bei B=0°
, L=0°
und h=0m
(über dem Ellispsoid). Seine kart Koordinaten auf dem WGS84 lauten demnach X=6378137
, Y=Z=0
.
Das Matlab-Script liefert:
[X Y Z] = BLh2XYZ(0, 0, 0, 'WGS84') X = 6378137 Y = 0 Z = 0
Der Betrachter bewegt sich nun nach Norden und will über den Nordpol genau auf die entgegengesetzte Erdseite gelangen, die Y-Koordinate in diesem Koordinatensystem vergrößert sich also.
Wieso Y? Die X-Koordinate tut dies - siehe Abbildung und diese wird auch nicht größer, sodern kleiner - sie ist bereits maximal. Wenn der Betrachter nun auf der anderen Seite ist, ist er somit an der Stelle B=0°
, L=180°
und h=0m
(über dem Ellispsoid). Diese Position entspricht: X=-6378137
, Y=Z=0
.
Das Matlab-Script liefert korrekterweise:
[X Y Z] = BLh2XYZ(0, 180, 0, 'WGS84') X = -6378137 Y = 7.8110e-010 Z = 0
Sollte der Betrachter auf dem Äquator entlang laufen auf die andere Erdseite, dann sind seine Koordinaten B=180°
, L=0°
und h=0m
(über dem Ellispsoid). Auch diese Position ist natürlich X=-6378137
, Y=Z=0
.
[X Y Z] = BLh2XYZ(180, 0, 0, 'WGS84') X = -6378137 Y = 0 Z = 7.7587e-010
Konntest Du das (rechnerisch) nachvollziehen?
(Das meinte ich auch mit Stauchung)
Das habe ich nicht verstanden.
Schöne Grüße
Micha
--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences
Tags:
Koordinatentransformation, WGS84
Koordinatentransformation kartesisch/geographisch
Matthias, Saturday, 04.04.2009, 12:42 (vor 5715 Tagen) @ MichaeL
Mensch super, das geht ja Ruck-Zuck hier ^^
Bei der Aussage
die Y-Koordinate in diesem Koordinatensystem vergrößert sich also
habe ich mich auf die Y-Achse im Projekt bezogen. Dort sind die Achsen etwas anders. Gehen wir von den Achsen im Bild aus ist es dann natürlich die X-Achse.
Also bleiben wir bei den Achsbezeichnungen im Bild.
Das Problem ist folgendes:
Der Betrachter steht bei 0°/0° und geht einen Meter in Richtung Norden. Da er sich ja aber auf der Oberfläche eines Ellipsoides und nicht auf einer Ebene bewegt, nimmt durch diesen Meter die X-Koordinate etwas ab und die Z-Koordinate etwas zu(jeweils anteilig).
Nun der Unterschied im Projekt: Dort bewegt sich der Betrachter nicht auf einem Ellipsoid sondern auf einer Ebene(!). Es ist zwar keine Ebene, aber man kann es sich so vorstellen, da die "Nullinie" plan ist und nicht elliptisch gekrümmt.
Geht er also einen Meter in Richtung Norden, dann nimmt die X-Koordinate um genau einen Meter ab und die Z-Koordinate bleibt gleich.
Eigentlich müsste man ja im Projekt ein ellipsoides Weltkoordinatensystem verwenden, bzw. zumindest die Bewegungen so transformieren, dass sie auf der Oberfläche des Ellipsoides stattfinden. Dies ist jedoch derzeit (noch) nicht möglich.
Koordinatentransformation kartesisch/geographisch
Matthias, Saturday, 04.04.2009, 12:55 (vor 5715 Tagen) @ MichaeL
Um die Aussage zum Projekt nochmal zu ergänzen:
Es handelt sich dabei ja im Prinzip um eine Landkarte, da Z immer 0 ist solange ich mich auf der "Nullinie" befinde.
Es stellt sich nun also die Frage, wie ich die zweidimensionalen Koordinaten der "Karte" in die dreidimensionalen Koordinaten nach WGS84 umwandeln kann.
Meine Idee ist/war es ja, den zurückgelegten Weg ausgehend von (0,0) als Strecken auf dem Ellipsoid zu interpretieren. Die Koordinate (1850,0) müsste ja dann so Pi mal Daumen 0°1'/0° entsprechen.
Richtig?
Koordinatentransformation kartesisch/geographisch
MichaeL , Bad Vilbel, Saturday, 04.04.2009, 13:31 (vor 5715 Tagen) @ Matthias
Hallo,
Es handelt sich dabei ja im Prinzip um eine Landkarte, da Z immer 0 ist solange ich mich auf der "Nullinie" befinde.
Was ist die "Nulllinie"? Die Höhe ist nicht Null, sondern idR durch eine andere Farbewahl dargestellt (bspw. blau -> grün -> braun). Grundsätzlich aber liegt eine Projektion vor zB die Mercator-Projektion, die dann natürlich auch eine Verzerrung mitbringt. Formeln für diese Projektion findest Du bei WIKI.
Die aus der Karte abgegriffenen Höhen werden sich vermutlich nicht auf ein Bezugssystem wie das WGS84 beziehen (Stichwort: Undulation).
Es stellt sich nun also die Frage, wie ich die zweidimensionalen Koordinaten der "Karte" in die dreidimensionalen Koordinaten nach WGS84 umwandeln kann.
Meiner Meinung nach gar nicht. Aus 2D Positionen kannst Du keine 3D Positionen machen. Wo soll diese Information denn her kommen? Du benötigst die dritte Dimension - zB auch aus der Karte (Farben) oder einem Geländemodell oder ?!?
Meine Idee ist/war es ja, den zurückgelegten Weg ausgehend von (0,0) als Strecken auf dem Ellipsoid zu interpretieren.
Was machst Du an einem steilen Berg? Du stehst unten und willst rauf. In der Karte sind das vll ein paar mm-Weg, die auf den Maßstab umgerechnet wenige Meter wären. In wirklichkeit sind es aber km, weil Du da hoch musst und nicht durchlaufen kannst.
Die Koordinate (1850,0) müsste ja dann so Pi mal Daumen 0°1'/0° entsprechen.
Richtig?
Wenn ich mich nicht verrechnet habe, ist b:
b alpha
- = ----- => b = 1853m (r = 6370km)
r rho
Wobei b die Bodenlänge ist.
Gruß Micha
P.S. Aus Interesse: darf ich fragen, wie Du dieses Forum gefunden hast?
--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences
Koordinatentransformation kartesisch/geographisch
MichaeL , Bad Vilbel, Saturday, 04.04.2009, 14:19 (vor 5715 Tagen) @ Matthias
Hi,
vll noch etwas zum nachlesen: http://www.uni-koblenz.de/~siggi/geo2gk.pdf. Wie Du siehst, kannst Du aus 3D Positionen 2D Koordinaten machen aber nicht, wie Du es vor hast, andersherum.
Gruß Micha
--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences
Koordinatentransformation kartesisch/geographisch
Wallraff, Wednesday, 15.04.2009, 22:07 (vor 5703 Tagen) @ MichaeL
Hallo,
wollte mich schon früher einschalten, zögerte aber immer wieder.
Reden wir denn hier nicht um eine mit einer Höhenkomponente versehene Mercator-Projektion herum ??
Grüße Wallraff
Koordinatentransformation kartesisch/geographisch
MichaeL , Bad Vilbel, Saturday, 18.04.2009, 21:19 (vor 5700 Tagen) @ Wallraff
Hallo Wallraff,
wollte mich schon früher einschalten, zögerte aber immer wieder.
Warum? Das hilft dem Fragenden ja letztlich auch nicht weiter.
Reden wir denn hier nicht um eine mit einer Höhenkomponente versehene Mercator-Projektion herum ??
Aus den Angaben konnte ich noch nicht mal entnehmen, dass überhaupt eine Mercator-Projektion vorliegt. Wenn wir, Andy und ich, was übersehen haben, nur zu, korrigiere es bitte.
Schöne Grüße
Micha
--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences
Koordinatentransformation kartesisch/geographisch
Wallraff, Monday, 20.04.2009, 09:25 (vor 5699 Tagen) @ MichaeL
Hallo Micha,
ich zögerte, weil ich das Problem und damit die folgenden Antworten nicht richtig verstand; und immer noch unsicher bin.
Aber dazu müsste sich der Fragesteller äußern.
Grüße Wallraff