Koordinatenumrechnung (Geodäsie/Vermessung)

Michael Brandt @, Friday, 04.05.2007, 22:09 (vor 6201 Tagen) @ philipp

Hi

So, ich bin einen riesigen Schritt weiter.
Der Linkhinweis von MichaeL opengeodb war der entscheidende Tipp, da hier schon Umrechnungen in einer Basic-Sprache vorliegen. :-D

Das heißt nicht, das ich nicht versucht habe den Quellcode des TR-Programms von Philipp zu übersetzen. Aber ich bin trotzdem gescheitert, was wohl an der Zuweisung der Variablen lag. :-( Ich hab folgende genommen:

Y = Rechtswert
X = Hochwert
D = Y (wofür auch immer das gut sein mag)
A = 6377397.155 (große Halbachse des Bessel-Ellipsoid)
B = 0.003342773154 (kleine Halbachse oder Abplattung des Bessel-Ellipsoid)
Pi = 3.14159265358979 (das ist wohl klar)

Was nicht klar ist:

1. wofür stehen die Fälle W=1 und W=2
2. was ist die Variable F
3. In der Zeile "A/(1-E²(sin Q)²)^(1/2)->N" wird da nach dem "1-E²" multipliziert?
4. Mit den letzten drei Formeln ab "lambda=":L kann ich in Visual Basic nichts anfangen. Was wird da gemacht?
5. Wie erfolgt die Ausgabe bzw. in welchen Variablen stehen die geographischen Koordinaten?


So, nun aber wieder zurück zu den oben angesprochenen Quelltext in Basic-Sprache. Die beiden Funktionen "transf_GKKdhdn_to_Geo" und transf_UTMwgs84_to_Geo funktionieren einwandfrei. Man gibt einfach Rechts- & Hochwert bzw. X und Y ein und bekommt unten Länge und Breite raus.

Erstmal war ich einfach nur begeistert. :respekt:
Aber dann kam die Ernüchterung. Wie ich leider feststellen mußte (was ich bis Dato nicht wußte) ist, das das von mir erwünschte Overlay-Format nur geographische Koordinaten akzeptiert, die sich auf das WGS84-Ellipsoid beziehen.
Folgerichtig funktioniert die Umrechnung meiner UTM-Koordinaten exakt richtig. Bei den Gauß-Krüger Koordinaten sieht das allerdings schon wieder anders aus. Die Funktion rechnet geographische Koordinaten aus, die sich auf das Bessel-Ellipsoid mit Podsdam-Datum beziehen.
Wenn ich die so erzeugten Koordinaten über das Overlay-Format in die Karten der TOP50 einlese lande ich 100-200 Meter daneben, was nicht ganz meiner eigenen Anforderung von ca. 1 Meter Genauigkeit entspricht.

Ich hab hier mal den Quelltext der Gauß-Krüger Umrechnung:

Public Function transf_GKKdhdn_to_Geo()

Const Pi = 3.14159265358979
KZ = Int(R / 1000000)
S = H / 6366742.521
CosQ = (1 + Cos(2 * S)) / 2
F = S + Sin(2 * S) / 2 * (0.0050078755 + CosQ * (0.0000291954 + CosQ * (0.000000233 + CosQ * 0.0000000022)))
CosF = Cos(F)
SinF = Sin(F)
TanF = SinF / CosF
TanF2 = TanF * TanF
NY = 0.006719218741582 * CosF * CosF
N = 6377397.155/ Sqr(1 - 0.006674372174975 * SinF * SinF)
Y = R - (KZ + 0.5) * 1000000
YN2 = (Y / N) * (Y / N)
BB = F - TanF / 2 * YN2 * (1 + NY - ((5 + 3 * TanF2 + 6 * NY * NY * (1 - TanF2)) * YN2) / 12)
LL = KZ * Pi / 60 + Y / (N * CosF) * (1 - YN2 / 6 * (1 + NY + 2 * TanF2 - (5 + TanF2 * (28 + 24 * TanF2)) / 20 * YN2))
BB = BB * 180 / Pi
LL = LL * 180 / Pi

End Function

N = 6377397.155/ Sqr(1 - 0.006674372174975 * SinF * SinF)

die Variablen R und H (Rechts- & Hochwert) werden an die Funktion übergeben.
Die Fett markierte Zahl ist wohl die große Halbachse im Bessel-Ellipsoid, allerdings kann man die nicht einfach durch die des WGS84-Ellipsoids ersetzen. Irgendwas muß noch geändert werden, doch ich komme einfach nicht drauf was das ist. Ich rätsel die ganze Zeit was das in der vierten Zeile für eine Zahl 6366742.521 ist. Sieht ja ganz nach einer großen Halbachse aus.

Ich weiß einfach nicht mehr weiter. Könnt Ihr mir vielleicht noch mal auf die Sprünge helfen? :confused:

Schönes Wochenende
Michael

Edit by DieGeodaeten Code-Block erzeugt für Basic-Quellcode. Die im Kontext erwähnte Stelle, ist darunter nochmals aufgeführt!


gesamter Thread:

 RSS-Feed dieser Diskussion