Rolf: Suche Funkt zur Umw. von Breiten-u.Längengrad in Gauss-Krüger

Hallo,

hat jemand eine Funktion die Längen und Breitengrad in die Gauss-Krüger-Notation umwandelt "am Lager"?

Ich würde sie auch gerne selbst schreiben, aber leider finde ich keine Beschreibung des Algorithmus.

Viele Grüße

Rolf

  1. Hallo Rolf,

    hat jemand eine Funktion die Längen und Breitengrad in die Gauss-Krüger-Notation umwandelt "am Lager"?

    Ich würde sie auch gerne selbst schreiben, aber leider finde ich keine Beschreibung des Algorithmus.

    seltsam, sehr seltsam. Eine einfache Google-Suche mit dem Suchbegriff

    Gauß-Krüger,

    der ja nun wirklich naheliegt, zeigt bereits bei den ersten paar Fundstellen sehr vielversprechende Hinweise, auch auf den Algorithmus.

    Freundliche Grüße

    Vinzenz

    1. Hallo Vinzenz,

      seltsam, sehr seltsam. Eine einfache Google-Suche mit dem Suchbegriff

      Gauß-Krüger,

      der ja nun wirklich naheliegt, zeigt bereits bei den ersten paar Fundstellen sehr vielversprechende Hinweise, auch auf den Algorithmus.

      Eben nicht. Die Sache ist um einiges Komplizierter als man auf den ersten Blick glaubt. Falls Du aber wirklich einen Angorithmus gefunden hast, poste doch bitte mal den Link.

      Danke. Viele Grüße

      Rolf

      1. Hallo Rolf,

        der ja nun wirklich naheliegt, zeigt bereits bei den ersten paar Fundstellen sehr vielversprechende Hinweise, auch auf den Algorithmus.

        Eben nicht. Die Sache ist um einiges Komplizierter als man auf den ersten Blick glaubt.

        was hast Du alles bereits verworfen?

        Freundliche Grüße

        Vinzenz

        1. Hallo Vinzenz,

          was hast Du alles bereits verworfen?

          Bis jetzt nur < http://www.delphi-treff.de/tipps/mathematik/wiki/Geographische%20in%20Gau%C3%9F-Kr%C3%BCger-Koordinaten%20umrechnen/> weil es die einzige Quelle für einen Algorithmus ist die ich gefunden habe.
          Es liefert aber im Test falsche Ergebnisse und da ich den Algorithmus dahinter nicht kenne und somit nur aus dem Programm ableiten kann, komme ich nicht so recht weiter. Ich weiß nicht ob, der angegeben Quellcode den mir nicht genau bekannten Algorithmus fehlerhaft umsetzt oder ob der Fehler woanders liegt.

          Bei meiner inzwischen schon stundenlangen Suche (ja, auch mit google) habe ich zahlreiche Leidensgenossen die vergeblich das gleiche suchen getroffen. Auch einige fertige Programme, die nach meinen Test auch richtig arbeiten, nur keine implementierbare Beschreibung eines Algorithmus.

          MfG
          Rolf

          1. Bis jetzt nur http://www.delphi-treff.de/tipps/mathematik/wiki/Geographische in Gauß-Krüger-Koordinaten umrechnen/

            Da steht

            c := 6398786.849;

            das ist aber weder der terrestrische

            Polradius von 6735 km = 6735000 m,
            noch der Äquatorradius von 6378 km = 6378000 m

            Der Wert in der Delphi-Rechnung weicht also mindestens um ca 0.33% vom Realwert ab.

            ---

            Wenn ich das Verfahren richtig deute, wird der Kugelstreifen auf einen Zylinder, und dieser auf eine Ebene (linkshändig x-y) projeziert.

            Ich frag mich grade wo eigentlich der Unterschied zu einer direkten Projektion des Kugelstreifens auf die x-y Ebene ist und seh grade keinen.

            Bei direkter Projektion wären die Formeln einfach:

            Höhenwert y = (sin(Breitengrad))*Radius;
            Rechtswert x = (sin(Längengrad-Längengrad(Mittelmeridian))*Radius

            Vielleicht mal mit Radius = 6378000 m für einen Punkt rund um Greenwich testen.

            ---

            Es mag hilfreich sein, für Überschlagsrechnungen in Radians statt Grad zu rechnen

            rad(degree) = degree/(360°/(2*PI)) = (degree/180°) * PI

            da bei kleinen Winkeln (hier bei den Längengraden L mit |L| <= 1.5°) gilt

            sin(rad) "ungefähr =" rad.

            Grüsse

            Solkar

            1. Ich frag mich grade wo eigentlich der Unterschied zu einer direkten Projektion des Kugelstreifens auf die x-y Ebene ist und seh grade keinen.

              Doch, es gibt einen, fällt mir auf, da der Zylindermantel "links und rechts"
              vom Mittelmedidian weiter als die Erdoberfläche vom Erdmitelpunkt entfernt ist

              Statt

              Rechtswert x = (sin(Längengrad-Längengrad(Mittelmeridian))*Radius

              müsste also gelten

              mit phi := Längengrad-Längengrad(Mittelmeridian)

              Rechtswert x = sin(phi)* Radius/cos(phi) = Radius * tan(phi)

              Grüsse

              Solkar

              1. Moin.

                Ich habe gerade mal das in der Wikipedia verlinkte Paper überflogen. Mit deinem Schnipsel Trigonometrie ist es leider nicht getan, wobei dein Ergebnis übrigens auch nicht mit der Formel für die Mercator-Projektion übereinstimmt.

                In dem Paper wird eine Näherung für Gauss-Krüger-Koordinaten auf beliebigen Ellipsoiden über den Zwischenschritt regulärer komplexer Funktionen, also auf 'eher nicht-trivialem' Weg entwickelt. Der Autor verzichtet darauf, eine abschließende Formel anzugeben, man kann sie sich aber durchaus zusammensuchen:

                Die Reihenentwicklung für die Gauss-Krüger-Koordinaten sind die Gleichungen (5.4.13) und (5.4.14), die Hilffunktion s wird in (5.4.105) genähert und die Taylorkoeffizienten der Funktion g bis zur 8. Ordnung finden sich als Gleichungen (5.4.108,132,136,143,151,159,166,173) wieder.

                Der Exzentrizitätsparameter e wird in (3.4.1) definiert, der Querkrümmungsradius R_N in (5.3.25) und die Hilfsgröße \delta in (5.4.109).

                Alles, was jetzt noch bleibt, ist simples zusammensetzen ;)

                Christoph

                1. Moin.

                  Ich habe gerade mal das in der Wikipedia verlinkte Paper überflogen.

                  Es freut mich, dass Du sowas "überfliegen" kannst, ich muss sowas lesen...

                  Mit deinem Schnipsel Trigonometrie ist es leider nicht getan,

                  Der wertfreie Begriff, den Du sicherlich suchtest, ist "fehlende Längentreue", die sich auch bei Verfeinerung meines Ansatzes nicht einstellen würde.

                  Mein Fehler war übrigens, diesen Absatz aus dem Wikipedia-Artikel zu Gauß-Krüger-Koordinaten

                  "Man liest die Y- und X-Werte wie in jedem kartesischen Koordinatensystem ab, also parallel zu den Achsen und nicht zu den jetzt bogenförmig verlaufenden Linien der Längen- und Breitenkreise."

                  wörtlich zu nehmen
                  Wie Du ja sicherlich erkannt hast.

                  wobei dein Ergebnis übrigens auch nicht mit der Formel für die Mercator-Projektion übereinstimmt.

                  In dem Paper wird eine Näherung für Gauss-Krüger-Koordinaten auf beliebigen Ellipsoiden über den Zwischenschritt regulärer komplexer Funktionen, also auf 'eher nicht-trivialem' Weg entwickelt. Der Autor verzichtet darauf, eine abschließende Formel anzugeben, man kann sie sich aber durchaus zusammensuchen:

                  Es ist löblich, dass Du auf das "Paper" verlinkt hast;

                  Die Reihenentwicklung für die Gauss-Krüger-Koordinaten sind die Gleichungen (5.4.13) und (5.4.14), die Hilffunktion s wird in (5.4.105) genähert und die Taylorkoeffizienten der Funktion g bis zur 8. Ordnung finden sich als Gleichungen (5.4.108,132,136,143,151,159,166,173) wieder.

                  Der Exzentrizitätsparameter e wird in (3.4.1) definiert, der Querkrümmungsradius R_N in (5.3.25) und die Hilfsgröße \delta in (5.4.109).

                  Du hättest es uns nicht vorlesen müssen.

                  Interessant wäre eher eine Transferleistung gewesen, also der Umgang mit den Ergebnissen und die Aufbereitung; ein solche hast Du bislang nicht erbracht.

                  ---

                  Also schauen wir doch mal gemeinsam wie wir den ganzen Formelapparat algorithmisch behandeln können:

                  S.51 - 5.4.105 s(phi)  ist keine "Hilfsfunktion" sondern das Integral des Linienelements für Lambda = const = 0  zwischen 0 und phi; also die Bogenlänge entlang des Mittelmeridians.
                  s lässt sich einfach mit Mitteln von Javascript berechnen.

                  S.39 - 5.4.12 ist eine Gleichung mit einer reellen Veränderlichen und der führende Quotient wird bei zur Potenz einer Variablen, die man bei einer numerischen Lösung, denn diese erfolgt ja bei "festgehaltenem" phi und lambda (!) eingangs einmal nach S.33 - 5.3.24 und 5.3.25 ausrechen.

                  Einzig die n-ten Ableitungen von q(phi), also nach S.36 5.3.58

                  q(phi) = artanh(sin phi) − e artanh(e sin phi)

                  mit artanh(x) = 1/2 ln((1+x))/(1-x)) = 1/2 [ ln(1+x) - ln(1-x) ]

                  (Anhang C fehlt in dem Aufsatz)

                  Es erscheint effizient, nicht die Zahlenkolumnen aus dem Ausatz abzutippen, sondern sich von Maple oder anderen Programmen einmal berechnen zu lassen, da wir für Javascript einfache Ausdrücke brauchen, würde ich die Definitionsgleichung für den artanh verwenden.

                  Da d/dx artanh(x) = 1/(1-x^2); sind die äusseren Ableitungen Potenzen; die inneren werden Produkte aus +/-sin(x) und +/-cos(x) werden.

                  Mit c&p und "Suchen und Ersetzen" (von Klammern) sollten sich die Ableitungen, die Maple erzeugt in Javascript verwenden lassen;

                  Mathematisch interessant wird's nochmal auf S.39 5.4.13 u. 5.4.14.

                  In den Taylortermen tauchen nicht nur die 2n(+1)ten Ableitungen von g auf, sondern auch entsprechende Potenzen von Lamda.

                  Bei Meridianstreifen von von 3°, also  lamda <= 1.5° = 0.026 rad, somit fallen dank der kleinen Lamdas die Taylor-Restglieder um den Faktor (3/100)^(2n) schneller als bei der Abschätzung S. 45; es gilt jetzt zu bestimmen, wie dies beiträgt.

                  Eine solide Hypothese scheint mir, dass man bereits nach dem zweiten oder dritte Taylor-Summanden abbrechen kann.

                  Jetzt Du wieder?

                  Grüsse

                  Solkar

                  1. Moin.

                    Interessant wäre eher eine Transferleistung gewesen, also der Umgang mit den Ergebnissen und die Aufbereitung; ein solche hast Du bislang nicht erbracht.

                    Was hast du an der Formulierung 'überflogen' missverstanden? Alles, was ich getan habe, war, den Formelsalat zu entwirren und einen Weg zur Umrechnung aufzuzeigen, ohne die Mathematik dahinter verstehen zu müssen.

                    Anders, als du, habe ich den Aufsatz bisher nicht 'gelesen', sondern 'Zahlenkolumnen aus dem Ausatz abgetippt'. Kein Grund also, beleidigt zu reagieren - oder interpretiere ich da jetzt zuviel in den von mir wahrgenommenen Tonfall deiner Antwort hinein?

                    Christoph

                    1. @Christoph

                      Moin.
                      [...]
                      Was hast du an der Formulierung 'überflogen' missverstanden? Alles, was ich getan habe, war, den Formelsalat zu entwirren und einen Weg zur Umrechnung aufzuzeigen, ohne die Mathematik dahinter verstehen zu müssen.

                      Anders, als du, habe ich den Aufsatz bisher nicht 'gelesen', sondern 'Zahlenkolumnen aus dem Ausatz abgetippt'.
                      [...]
                      Christoph

                      Dem entnehme ich vor allem, dass Du offenbar nicht wirklich interessiert bist, eine algorithmische Lösung zu entwickeln.

                      Schade, ich hätte das ganz lustig gefunden.

                      @All

                      Die ersten vier Ableitung hiervon

                      q(phi) = atanh(sin (phi)) − e * atanh(e * sin(phi))

                      (nach phi; mit e = const.)

                      wären sehr hilfreich; am besten, wenn atanh gleich im Eingangsterm durch

                      1/2 (ln(1 + x) - ln(1 - x))

                      ersetzt wird.

                      Das kann man zwar auch "zu Fuss" errechnen, aber wenn jemand das kurz "maplen" würde, wäre dies sehr hilfreich!

                      Grüsse

                      Solkar

                      1. Moin.

                        Dem entnehme ich vor allem, dass Du offenbar nicht wirklich interessiert bist, eine algorithmische Lösung zu entwickeln.

                        Dazu fehlt mir momentan die Zeit - die habe ich durch meine JavaScript-Spielerei aufgebraucht ;); am Ergebnis wäre ich aber schon interessiert.

                        Das kann man zwar auch "zu Fuss" errechnen, aber wenn jemand das kurz "maplen" würde, wäre dies sehr hilfreich!

                        Hab's versucht, aber momentan bekomme ich auf dem Uni-Server nur

                        Maple initialization error, Cannot connect to license server
                         The server (lmgrd) has not been started yet, or
                         the wrong port@host or license file is being used, or the
                         port or hostname in the license file has been changed.

                        Christoph

                        1. Maple initialization error, Cannot connect to license server
                          The server (lmgrd) has not been started yet, or
                          the wrong port@host or license file is being used, or the
                          port or hostname in the license file has been changed.

                          Das kommt mir irgendwie bekannt vor...

                          Hast Du mal versucht

                          xhost+ <was_auch_immer>

                          und dann $DISPLAY in einem xterm auf IP-Adresse:0.0 (also grade NICHT auf den UNIX-Domain-Socket!) zu setzen und dann Maple aus der sh zu starten?

                          Grüsse

                          Solkar

                      2. Moin.

                        Dem entnehme ich vor allem, dass Du offenbar nicht wirklich interessiert bist, eine algorithmische Lösung zu entwickeln.

                        Ich habe mich entgegen meiner ursprünglichen Aussage jetzt doch noch etwas weiter mit der Problematik auseinandergesetzt. Aber außer die bereits im Aufsatz bestimmten Ableitungen von g abzutippen sehe ich nur den rein numerischen Ansatz (an dem ich bisher gescheitert bin). Oder willst du alle im Aufsatzt durchgeführten Berechnungen (auf einem anderen Weg) wiederholen?

                        Christoph

                        1. Moin.

                          Dem entnehme ich vor allem, dass Du offenbar nicht wirklich interessiert bist, eine algorithmische Lösung zu entwickeln.

                          Ich habe mich entgegen meiner ursprünglichen Aussage jetzt doch noch etwas weiter mit der Problematik auseinandergesetzt. Aber außer die bereits im Aufsatz bestimmten Ableitungen von g abzutippen sehe ich nur den rein numerischen Ansatz (an dem ich bisher gescheitert bin). Oder willst du alle im Aufsatzt durchgeführten Berechnungen (auf einem anderen Weg) wiederholen?

                          Mich interessiert die Gleichung 5.4.12 auf Seite 39:

                          Der führende Quotient der Krümmungsradien ist einfach zu berechnen.
                          Weiter ist

                          d/d(phi) q(n-te Abl.)(q(phi)) = q(n+1-te Abl.)(q(phi)) q'(phi) | Kettenregel

                          Sowohl das Argument q(phi) als auch den Faktor q'(phi) können wir PRO ABLEITUNG von g herausziehen; die müssen wir später NICHT weiter ableiten sondern nehmen wieder 5.4.12; g taucht rechts in 5.4.12 nämlich gar nicht auf!

                          b := q'(phi) und a := q(phi) sind einfache Terme für die wir jeweils den Zahlenwert ausrechnen und einsetzen können; einzig q(n+1)(a) müssen wir dann noch berechnen und dafür brauch ich die Ableitungen von q(phi).

                          Grüsse

                          Solkar

                          1. Moin.

                            Mich interessiert die Gleichung 5.4.12 auf Seite 39:

                            ...die leider einen Tippfehler enthält: die Gleichung muss lauten:

                            [latex]
                            g^{(n+1)}(q(\phi))= \frac{R_N(\phi)\cos\phi}{R_M(\phi)}\frac{d}{d\phi}g^{(n)}(q(\phi))
                            [/latex]

                            Gegenüber Glg. (5.4.11) wurde nur durch q' geteilt und dessen Definition eingesetzt - und fälschlicherweise ein g durch ein q ersetzt...

                            Christoph

                            1. Moin.

                              Mich interessiert die Gleichung 5.4.12 auf Seite 39:

                              ...die leider einen Tippfehler enthält: die Gleichung muss lauten:

                              [latex]
                              g^{(n+1)}(q(\phi))= \frac{R_N(\phi)\cos\phi}{R_M(\phi)}\frac{d}{d\phi}g^{(n)}(q(\phi))
                              [/latex]

                              Gegenüber Glg. (5.4.11) wurde nur durch q' geteilt und dessen Definition eingesetzt - und fälschlicherweise ein g durch ein q ersetzt...

                              5.4.12 vereinfacht also die Ableitungen nicht und somit auch nicht die maschinelle Verarbeitung.

                              ---

                              Deshalb frag ich mich ob uns der Cauchysche Integralsatz weiterhelfen kann.

                              Wir kennen leider nur Werte entlang einer Linie (des Nullmeridians) auf der reellen Achse und nicht auf dem Rand eines KOMPAKTEN Gebietes.

                              Wir wissen aber, dass Abstände entlang des Nullmeridians in der Bildmenge denen in der Urbildmenge entsprechen müssen und dass Winkel erhalten bleiben.

                              Anschaulich gesprochen will ich versuchen, um den Lotpunkt des zu errechnenden Punktes auf dem Nullmeridian einen Kreis in der komplexen Ebene zu ziehen über dessen Kreislinie wir etwas wissen.

                              Das wird auf eine rekursive Summation hinauslaufen (was informationstechnisch ja begrüßenswert wäre), allerdings kann ich noch nicht übersehn, ob die Rekursion auch abbricht.

                              Grüsse

                              Solkar

                              1. Der Link war der falsche; die Formel für Kreisscheiben war gemeint.

          2. Hallo Rolf,

            Bis jetzt nur http://www.delphi-treff.de/tipps/mathematik/wiki/Geographische in Gauß-Krüger-Koordinaten umrechnen/ weil es die einzige Quelle für einen Algorithmus ist die ich gefunden habe.
            Es liefert aber im Test falsche Ergebnisse und da ich den Algorithmus dahinter nicht kenne

            es ist angegeben, wo er zu finden ist - mit Seitenangabe. Recherchiere bei einer gutsortierten Stadt- oder Unibibliothek. Das war übrigens das, was ich ganz zu Anfang gesehen hatte. Wikipedia verlinkt einen Text zur Mathematik, ich hab' das aber nur überflogen. Eine konkrete Lösung ist mir dort nicht direkt ins Auge gefallen.

            Grundsätzlich denke ich, dass entsprechende Fachbücher (Bereiche Vermessungswesen, Geographie) die beste Ausgangsbasis bieten sollten. Schau' doch einfach mal beim nächstgelegenen Katasteramt vorbei. Vielleicht helfen die Dir sogar gerne.

            Freundliche Grüße

            Vinzenz

      2. @@rolf:

        Falls Du aber wirklich einen Angorithmus gefunden hast, poste doch bitte mal den Link.

        http://google.de

        Live long and prosper,
        Gunnar

        --
        Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
        1. Hallo Gunnar,

          Falls Du aber wirklich einen Angorithmus gefunden hast, poste doch bitte mal den Link.

          http://google.de

          findest Du Deine Antwort wirklich klüger als meine Frage?

          MfG Rolf

          1. @@Rolf:

            Hallo Gunnar,

            Falls Du aber wirklich einen Angorithmus gefunden hast, poste doch bitte mal den Link.

            http://google.de
            findest Du Deine Antwort wirklich klüger als meine Frage?

            Ja. Deine Frage war reichlich unklug.

            Vinzenz hatte dir bereits nahegelegt, nach "Gauß-Krüger" zu googeln, und wenn du darauf fragst „poste doch bitte mal den Link“, kannst du eigentlich nur den Link zu Google gemeint haben.

            Ich hatte einsfixdrei http://www.delphi-treff.de/tipps/mathematik/wiki/Geographische in Gauß-Krüger-Koordinaten umrechnen/ gefunden, wobei ich vorher überhaupt keine Ahnung hatte, was Gauß-Krüger ist.

            Wenn du diese Seite bereits kanntest, der dort vorgestellte Algorithnus aber deinen Ansprüchen nicht genügt, hättest du dies in denem OP, spätestens aber in deinem zweiten erwähnen müssen.

            Live long and prosper,
            Gunnar

            --
            Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
  2. Moin.

    Ich habe meinen Vorschlag mal durchgeführt und die Näherung bis zur 6. Ordnung hoffentlich 1:1 in JavaScript umgesetzt.

    Da ich das Ergebnis aber bisher nicht mit Referenzwerten gefüttert habe und die Formeln auch kein zweites mal durchgegangen bin (einmal tippen hat gereicht ;)), werden sich mit ziemlicher Sicherheit ein paar kleine Käfer und Tippfehler eingeschlichen haben.

    Hier also das Skript nebst Eingabemaske (östliche bzw. nördliche Werte sind positiv einzutragen, westliche und südliche negativ).

    Christoph

    1. Hallo,

      Hier also das Skript nebst Eingabemaske (östliche bzw. nördliche Werte sind positiv einzutragen, westliche und südliche negativ).

      Crazy. Inhaltlich verstehe ich nichts, aber schön strukturiert. Aber will man das wirklich mit JavaScript lösen oder besser gleich eine Sprache verwenden, deren interne Zahlendarstellung nicht schon jede Genauigkeit im Ansatz zerstört? ;)

      Mathias

      1. Moin.

        Crazy. Inhaltlich verstehe ich nichts, aber schön strukturiert.

        Inhaltlich ist's auch eigentlich nicht so spannend: Letztlich steht da nur ein großes Polynom in lambda, wobei die Koeffizienten Funktionen von phi und den Parametern a und e sind. Größtenteils stupide Tipparbeit.

        Aber will man das wirklich mit JavaScript lösen oder besser gleich eine Sprache verwenden, deren interne Zahlendarstellung nicht schon jede Genauigkeit im Ansatz zerstört? ;)

        Javascript arbeitet meines Wissens nach mit double-precision Fließkommazahlen, wie eigentlich alle gängigen Programmiersprachen. Genauer wird's nur mit spezillen Bibliotheken/Programmsystemen mit eigener Zahlendarstellung.

        Die in meinen Augen schönere Lösung wäre eine rein numerische Berechnung. Daran bin ich aber bisher gescheitert, da bei meinem Ansatz, die höheren Ableitungen naiv per Rekursion zu bestimmen, schon die zweite berechnete Ableitung (je nach Argument) bereits zu ungenau ist und sich die Fehler bei höheren Ableitungen zu astronomischen Größen aufblähen.

        Kann natürlich auch sein, dass mein Numerik-Code buggy ist ;)

        Christoph

        1. Moin.

          Ich habe mir jetzt die halbe Nacht um die Ohren geschlagen, und eine funktionstüchtige numerische Approximation auf die Beine gestellt.

          Der Code kann unter anderem:

          • symbolische Differentiation von Produkten nach Leibniz-Regel
          • numerische Differentiation bis zur 4. Ordnung nach 5-point stencil
          • numerische Integration nach adaptiver Simpson-Regel

          Das Ergebnis entspräche einer Approximation der Ordnung 4 meines nicht funktionstüchtigen numerischen Ansatz.

          Löblicherweise stimmen die Ergebnisse meiner funktionierenden Skripte im Rahmen des zu erwartenden Fehlers miteinander überein.

          Christoph,
            der jetzt bestimmt angenehme Träume haben wird ;)

          1. Hallo Christoph,

            Löblicherweise stimmen die Ergebnisse meiner funktionierenden Skripte im Rahmen des zu erwartenden Fehlers miteinander überein.

            Erst einmal alle Achtung und vielen Dank, dass Du (und natürlich die anderen auch) Dich so in die Sache reinkniest.

            Ich haben Deine Lösungen jetzt einmal mit bekannten Wertepaaren getestet:

            Werte eines Gebäudes mit Google Earth "gemessen":
            50° 45' 7.46''N (50.75207400172494)
            12° 34' 1.27" E (12.567019895276681)

            entsprechen in Gauss-Krüger:

            Hochwert: 4540121.72
            Rechtswert: 5624214.37
            (Diese Werte stehen für genau dieses Gebäude im Katasteramt)

            Das ganze habe ich noch mit den Ergebnissen aus < http://calc.gknavigation.de/> verglichen. Dort kommt man in etwas auf das gleiche Ergebnis. Das verwendete Skript eignet sich aber wohl nur für die andere Richtung.

            Wenn ich die o.g. Werte in Deine Eingabemaske eingebe, komme ich auf etwas anderes. Benutze ich Deine Lösung nur falsch oder rechnet sie doch (noch) nicht richtig?

            MfG Rolf

            1. Moin.

              Ich haben Deine Lösungen jetzt einmal mit bekannten Wertepaaren getestet:

              Werte eines Gebäudes mit Google Earth "gemessen":
              50° 45' 7.46''N (50.75207400172494)
              12° 34' 1.27" E (12.567019895276681)

              entsprechen in Gauss-Krüger:

              Hochwert: 4540121.72
              Rechtswert: 5624214.37
              (Diese Werte stehen für genau dieses Gebäude im Katasteramt)

              Wenn ich die o.g. Werte in Deine Eingabemaske eingebe, komme ich auf etwas anderes. Benutze ich Deine Lösung nur falsch oder rechnet sie doch (noch) nicht richtig?

              Da meine beiden Skripte identische Ergebnisse liefern, gehe ich davon aus, dass es sich tatsächlich um eine korrekte Implementierungen des in dem in der Wikipedia verlinkten Papers handelt. Die Frage ist jetzt, ob das dort beschriebene Verfahren auch so in der Praxis eingesetzt wird, oder ob es weitere Modifikatoren gibt. Einen habe ich beim Katasteramt gefunden: Der Rechtswert wird nämlich nicht um einen konstanten Wert von 500km verschoben, sondern "Die Vorgabe leitet sich ab aus der Berechnung Mittelmeridian / 3 * 1 000 000 plus 500 000". Das habe ich jetzt mal hinzugefügt.

              Die Ergebnisse stimmen jetzt besser, es ergeben sich aber immer noch Abweichungen in der Größenordnung 100m :(. Das kann an der Wahl des Referenzellipsoiden liegen, denn zwischen Bessel und WGS84 ändert sich in deinem Beispiel der Hochwert um 600m. Da eerde ich mal noch etwas mit rumspielen und schauen, ob ich auf dein Ergenisse komme...

              Btw: kann es sein, dass du Hoch- und Rechtswert vertauscht hast? Der Hochwert entspricht ja in etwa dem Abstand vom Äquator, sollte also in der Größenordnung von 51/360*40000km = 5670km liegen, was eher deinem Rechtswert entspricht...

              Christoph

              1. Hallo Christoph,

                Btw: kann es sein, dass du Hoch- und Rechtswert vertauscht hast? Der Hochwert entspricht ja in etwa dem Abstand vom Äquator, sollte also in der Größenordnung von 51/360*40000km = 5670km liegen, was eher deinem Rechtswert entspricht...

                Ja, Sorry ich habe tatsächlich bei der _Angabe_ die beiden Werte vertauscht.

                Also:

                50° 45' 7.46''N (50.75207400172494)
                12° 34' 1.27" E (12.567019895276681)
                entsprechen in Gauss-Krüger:
                Rechtswert: 4540121.72
                Hochwert: 5624214.37

                MfG Rolf

                P.S.
                unter < http://www.landesvermessung.sachsen.de/ias/basiskarte4/search/geocode> kann man für alle(?) Adressen in Sachsen die Gaus-Krüger-Koordinaten ermitteln. Adresse eingeben, dann gehjt ein Popup mit einer Karte und einer Markierung in der Mitte auf. Wenn Du den Mauszeiger genau auf diese Markierung bringst, werden rechts unten die Gaus-Krüger-Koordinaten angezeigt.

                Längen- und Breitengrad kann man sich dann über Google holen.

                1. Moin.

                  Eventuell liegt es auch nicht an meinem Skript, sondern den Koordinaten, die Google liefert. Kann auch sein, dass man einfach noch eine Datums-Transformation durchzuführen hat (ich vermute, dass es hieran liegt). Mal sehen, vielleicht werde ich mich heute Abend nochmal damit auseinandersetzen.

                  Ansonsten könnte man natürlich auf einer der vorhandenen Lösungen aufsetzen.

                  Christoph

                  PS: Zwei interessante Links:
                  http://home.arcor.de/ernst_werner/diplom/d3.pdf
                  http://www.ottmarlabonde.de/L1/Datumstransformation.htm

                  PPS: Vielleicht hätte ich vor Schreiben dieser Nachricht die Links selbst etwas genauer anschauen sollen - dort findet sich ein Java-Applet, das die von dir gewünschte Umrechnung durchführt. Es scheint also tatsächlich an der Datums-Transformation WGS84->Potsdam zu liegen!

          2. Moin.

            Ich habe mir jetzt die halbe Nacht um die Ohren geschlagen, und eine funktionstüchtige numerische Approximation auf die Beine gestellt.

            Der Code kann unter anderem:

            • symbolische Differentiation von Produkten nach Leibniz-Regel
            • numerische Differentiation bis zur 4. Ordnung nach 5-point stencil
            • numerische Integration nach adaptiver Simpson-Regel

            Das Ergebnis entspräche einer Approximation der Ordnung 4 meines nicht funktionstüchtigen numerischen Ansatz.

            Löblicherweise stimmen die Ergebnisse meiner funktionierenden Skripte im Rahmen des zu erwartenden Fehlers miteinander überein.

            Schöne Arbeit! Glückwunsch!

            Drr Simpson war ein Geniestreich von Dir; ich hab grade mal g[0] durch die Näherungsformel für s(phi) aus dem Skript (l, m, n...; Sinusterme) und das nähert den Hochwert um ca. 0.1% SCHLECHTER als der Simpson.

            Nochmals: Glückwunsch!

            Grüsse

            Solkar

  3. Moin.

    Ich habe jetzt eine Version, die _theoretisch_ funktionieren sollte, es aber leider _praktisch_ noch nicht tut ;). Ich bezweifle ja, dass jemand anderes viel Erfolg bei der Fehlersuche haben wird, aber wer sich daran versuchen möchte, für den gibt es eine Referenz-Implementierung als Java-Applet und hier (pdf) und hier Beschreibungen der benötigten Mathematik.

    Für's Debugging ist es mit heute zu spät...

    Christoph

    1. Moin.

      Mein alter Gauß-Krüger-Code funktioniert mit den Datums-korrigierten Winkeln einwandfrei: Die korrigierten Koordinaten sind

      12.5686043N
      50.7532669E

      und mein Programm spuckt mir

      Rechtswert 4540120.995332437m
      Hochwert 5624214.825635195m

      aus. Bei meinem neuen Code funktioniert noch gar nichts: die Umrechnung von geographischen zu geozentrischen kartesischen Koordinaten ist buggy, und auch in den reinen Gauß-Krüger-Algorithmus habe ich anscheinend eine Fehler eingebaut...

      Ansonsten würde ich gerne Wissen, ob Interesse an einer kleinen Beschreibung zu dem Programm besteht, die erläutert, welche Schritte zur Umrechnung notwendig sind, und wie diese in JavaScript umgesetzt wurden?

      Christoph

      1. Moin.

        Ich habe den Fehler gefunden: Die Drehmatrix der Helmert-Transformation wird hier gerade mit umgedrehten Vorzeichen gegenüber der Wikipedia-Version definiert. Mein Code war ansonsten korrekt, den Fehler im Gauß-Krüger-Algorithmus habe ich mir allem Anschein nach nur eingebildet.

        Hier also die (fast perfekt) funktionierende Version:
        http://dev.cygx.de/self/gk/final/

        Fast perfekt, da Koordinaten auf der südlichen Halbkugel nicht korrekt umgesetzt werden - aber von solchen Feinheiten lasse ich mir meine Stimmung nicht verderben ;)

        Christoph

        1. Moin Christoph.

          Hier also die (fast perfekt) funktionierende Version:
          http://dev.cygx.de/self/gk/final/

          Ich ziehe den Hut vor Dir!!!

          Recht herzlichen Dank, dass Du dich der Sache so intensiv angenommen hast.

          Viele Grüße

          Rolf