UTM-Koord. zu GEOGR. Koord. zu GK-Koord. in VB (Geodäsie/Vermessung)

Thomas @, Mainz, Tuesday, 21.12.2010, 14:12 (vor 4868 Tagen)

Hallo alle zusammen,

ich arbeite in einem Vermessungsbüro in Mainz und seitdem wir vom Katasteramt nur noch XML-Dateien mit UTM-Koordinaten erhalten, haben wir ein ziemliches Problem. Normalerweise bereiten wir kleinere Absteckungen in AutoCAD vor. Dadurch, dass die UTM-Strecken alle einen Maßstab haben und AutoCAD diesen nicht beherrscht wird eine leider ziemlich teure Spezialsoftware fällig (GEOgraf + Kivid, etc.). Also habe ich mich daran gemacht ein Tool zu programmieren, welches die XML-Datei in eine einlesbare ASCII-Datei und eine SCRIPT-Datei mit den ganzen Linienverbindungen konvertiert. Soweit klappt auch alles.

Das Problem ist, dass ich die UTM-Koordinaten noch ins GK-System konvertieren muss. Zunächst konvertiere ich die UTM-Koordinaten zu geographischen Koordinaten und diese dann ins Gauß-Krüger-System. Bei letzterer Transformation hapert es noch und ich finde meinen Fehler einfach nicht. Habe ein Beispiel aus meinem Studium genommen. Die Werte für Breitengrad (BB) und Längengrad (LL) gebe ich zum Testen am Anfang der Funktion vor. Hier die Funktion welche ich in VisualBasic 2010 programmiert habe:


 
Public Function GEO2GK(ByVal Geo_Koord As String) As String
        BB = 50.23366911
        LL = 8.458270889
        '-----------------------------------------------------------------------
        'für Bessel-Ellipsoid
        a = 6377397.155
        b = 6356078.963
        'f = 0.0033427731799399793710112964908005
        '-----------------------------------------------------------------------

        g = 111120.619608 * BB - 15988.6383 * Math.Sin(2 * BB / Ro) + 16.73 * Math.Sin(4 * BB / Ro) - 0.0218 * Math.Sin(6 * BB / Ro)
        L0 = CInt((LL + 1.5) / 3)
        l_klein = LL - L0
        lb = l_klein * Math.PI / 180
        t = Math.Tan(BB)
        n2 = 0.0067192188 * Math.Cos(BB) ^ 2
        N = a ^ 2 / (b * (1 + n2) ^ 0.5)
        c = Math.Sin(BB) * l_klein * (1 + Math.Cos(BB) ^ 2 * l_klein ^ 2 / 3 * Ro ^ 2 * (1 + 3 * n2))
        u = Math.Cos(BB) * l_klein / Ro
 
        x = g + (N * Math.Tan(BB) * Math.Cos(BB) ^ 2 * l_klein ^ 2) / 2 * Ro ^ 2 * (1 * (Math.Cos(BB) * l_klein / Ro) ^ 2 * (5 - Math.Tan(BB) ^ 2 + 9 * n2) / 12)
        'x = g + t / 2 * N * Math.Cos(BB) ^ 2 * lb ^ 2 + t / 24 * N * Math.Cos(BB) ^ 4 * (5 - t ^ 2 + 9 * n2 + 4 * n2 ^ 2) * lb ^ 4 + t / 720 * N * Math.Cos(BB) ^ 6 * (61 - 58 * t ^ 2 + t ^ 4 + 270 * n2 - 330 * t ^ 2 * n2) * lb ^ 6 + t / 40320 * N * Math.Cos(BB) ^ 8 * (61 - 479 * t ^ 2 + 179 * t ^ 4 - t ^ 6)

        y = c * u / (1 + n2) ^ 0.5 * (1 + u ^ 2 * ((1 - Math.Tan(BB) ^ 2 + n2) / 6 + u ^ 2 * (5 + Math.Tan(BB) ^ 2 * (Math.Tan(BB) ^ 2 - 18)) / 120))
        'y = N * Math.Cos(BB) * lb + lb ^ 3 / 6 * N * Math.Cos(BB) ^ 3 * (1 - t ^ 2 + n2) + lb ^ 5 / 120 * N * Math.Cos(BB) ^ 5 * (5 - 18 * t ^ 2 + t ^ 4 + 14 * n2 - 58 * t ^ 2 * n2) + lb ^ 7 / 5040 * N * Math.Cos(BB) ^ 7 * (61 - 479 * t ^ 2 + 179 * t ^ 4 - t ^ 6)
        'y = N / Ro * Math.Cos(BB) * l_klein * (1 + Math.Cos(BB) ^ 2 * l_klein ^ 2 / 6 * Ro ^ 2 * (1 - Math.Tan(BB) ^ 2 + n2) + (Math.Cos(BB) * l_klein / Ro) ^ 4 * 5 - 18 * Math.Tan(BB) ^ 2 + Math.Tan(BB) ^ 4 / 120)

        y = L0 * 10 ^ 6 + 500000 + y
 
        GK_Koord = CStr(y) + "/" + CStr(x)
 
        Return GK_Koord
 
    End Function
 

Soll Ergebnisse sind:

G = 5566267,912 (das habe ich auch raus)
x = 5566408,348
y = -38646,286
H = 5566408,348
R = 3461353,714

Hoffe mir kann jemand sagen was ich falsch mache. Im Voraus vielen Dank für Eure Mühen!

Gruß
Tomas


gesamter Thread:

 RSS-Feed dieser Diskussion