Hi,
das Resümme ist, das dieses Thema durch die sehr starke Themenbeteiligung von Roland, immer wieder meine Fragen verbessert hat, ist es ermöglicht worden die Transformation von WGS84 GPS Koordinaten nach Gauss Krüger Koordinaten selber programmiertechnisch umzusetzen.
Darum würde ich gerne den von mir umgesetzten Code von Roland in VBA Code hier vorzeigen.
Dieser Code wurde eingehend überprüft mit folgenden Links
---------------------------------------------------------------------------
http://www.tim-online.nrw.de/tim-online ... index.html
http://www.deutschlandviewer.de/deutsch ... index.html
Codebeginn:
-------------------------------------------------------------------------
-------------------------------------------------------------------------
Function NMEA_to_GK(Breite, Länge, Höhe) As Variant
' ---------------------------------------------------------------------------
'
' Geogr. Laenge und Breite von WGS84 in Gauss-Krueger umwandeln
' (Datumsuebergang)
'
' Basierend auf dem Skript der TU Muenchen
'
http://tau.fesg.tu-muenchen.de/~iapg/we ... ift_LV.pdf
'
' 20.09.2006
' ---------------------------------------------------------------------------
phi = CDbl(Breite)
lam = CDbl(Länge)
m = CDbl(Höhe)
rho = 180 / Pi_
'--- WGS84-Ellipsoid
a = 6378137#
b = 6356752.31425
e2 = (a * a - b * b) / a / a
phi = phi / rho
lam = lam / rho
'--- Phi und Lambda in XYZ
N = Sqr(1 - e2 * sIn(phi) * sIn(phi))
N = a / N
X = (N + H) * Cos(phi) * Cos(lam)
Y = (N + H) * Cos(phi) * sIn(lam)
Z = (b / a * b / a * N + H) * sIn(phi)
'--- Datumsuebergang WGS84 -> Bessel
'-----------------------------------
'--- Die Variabeln dX_ , dY_ , dZ_ , rX_ , rY_ , rZ_ , sC_ sind
'--- Transformationsparameter
'--- Diese Transformationsparameter müssen für die jeweilige
'--- Region wo eine MEssung durchgeführt
'--- durch die Landesvermessung ermittelt und hier
'--- angegeben werden
' dX_= ???
' dY_ = ???
' dZ_ = ???
' rX_ = ???
' rY_ = ???
' rZ_ = ???
' sC_ = ???
rotx = rX_ / 3600 / rho
roty = rY_ / 3600 / rho
rotz = rZ_ / 3600 / rho
m = 1 + sC_ / 1000000
Xd = m * (X + rotz * Y - roty * Z) + dX_
Yd = m * (Y - rotz * X + rotx * Z) + dY_
zd = m * (roty * X - rotx * Y + Z) + dZ_
'--- XYZ Bessel in Laenge und Breite
'-----------------------------------
'--- Bessel-Ellipsoid
a = 6377397.155
b = 6356078.963
e2 = (a * a - b * b) / a / a
X = Xd
Y = Yd
Z = zd
'--- Geschlossene Formel
'--------------------------
'--- Die Iteration waere alternativ zu pruefen
P = Sqr(X * X + Y * Y)
theta = Atn(Z / P * a / b)
es2 = (a * a - b * b) / b / b
lam = Atn(Y / X)
phi = Atn((Z + es2 * b * (sIn(theta)) ^ 3) / (P - e2 * a * (Cos(theta)) ^ 3))
N = Sqr(1 - e2 * sIn(phi) * sIn(phi))
N = a / N
H = P / Cos(phi) - N
'--- Entwicklung der GK-Koordinaten
'----------------------------------
'--- Hier waere an den Koeffizienten noch Feinarbeit zu leisten
lkz = lam * rho
If Abs(lkz - 3) < 1.5 Then
LAM0 = 3
ElseIf Abs(lkz - 6) < 1.5 Then
LAM0 = 6
ElseIf Abs(lkz - 9) < 1.5 Then
LAM0 = 9
ElseIf Abs(lkz - 12) < 1.5 Then
LAM0 = 12
ElseIf Abs(lkz - 15) < 1.5 Then
LAM0 = 15
End If
i = (lam - LAM0 / rho)
B3 = phi
N = a * a / Sqr(a * a * Cos(phi) * Cos(phi) + b * b * sIn(phi) * sIn(phi))
h1 = Sqr(es2 * Cos(phi) * Cos(phi))
t = Tan(B3)
nab = (a - b) / (a + b)
c = a / (1 + nab)
G0 = 1 + nab * nab / 4 + nab ^ 4 / 64
g1 = 3 * nab / 2 * (1 - nab * nab /

g2 = 15 * nab * nab / 16 * (1 - nab * nab / 2)
G3 = 35 / 48 * nab * nab * nab
G4 = 315 / 512 * nab ^ 4
BL = c * (G0 * B3 - g1 * sIn(2 * B3) + g2 * sIn(4 * B3) - G3 * sIn(6 * B3) + G4 * sIn(8 * B3))
BL1 = t / 2 * N * Cos(B3) ^ 2 * i ^ 2
BL2 = t / 24 * N * Cos(B3) ^ 4 * (5 - t ^ 2 + 9 * h1 ^ 2) * i ^ 4
BL3 = t / 720 * N * Cos(B3) ^ 6 * (61 - 58 * t ^ 2 + t ^ 4 - 330 * t ^ 2 * h1 ^ 2) * i ^ 6
BL4 = t / 40320 * N * Cos(B3) ^ 8 * (1385 - 3111 * t ^ 2 + 543 * t ^ 4 - t ^ 6) * i ^ 8
Hochwert = BL + BL1 + BL2 + BL3 + BL4
RW1 = N * Cos(B3) * i
RW2 = N / 6 * Cos(B3) ^ 3 * (1 - t ^ 2 + h1 ^ 2) * i ^ 3
RW3 = N / 120 * Cos(B3) ^ 5 * (5 - 18 * t ^ 2 + t ^ 4 + 14 * h1 ^ 2 - 58 * t ^ 2 * h1 ^ 2) * i ^ 5
RW4 = N / 5040 * Cos(B3) ^ 7 * (61 - 479 * t ^ 2 + 179 * t ^ 4 + t ^ 6) * i ^ 7
Rechtswert = RW1 + RW2 + RW3 + RW4 + 500000 + LAM0 / 3 * 1000000
phi = phi * rho
lam = lam * rho
NMEA_to_GK = Array(Rechtswert, Hochwert, H)
End Function
-------------------------------------------------------------------------
-------------------------------------------------------------------------
Code Ende
mfg
MacToolz