GPS Koordinaten umrechnen

  • Moin,


    verzweifel hier ein wenig :/


    Ich möchte auf einem Bild, welches die Weltkarte darstellt, einen beliebigen Koordinatenpunkt darstellen.


    Als bild hab ich erstmal zum test ein abbild von der Google Map genommen -> Siehe hier
    (Schwarzes Kreuz Mittelpunkt des Bildes, grüner der des Koordinatensystems)


    Mein Versuch war bis jetzt folgender:
    https://codepen.io/MarcelL/pen/VPoXRe?editors=1111


    Bei diesem wurden auch der Nullpunkt des Koordinatensystems (Achtung ich meine nicht den Mittelpunkt des Bildes) bzw. die oberen/unteren (-90/0 | 90/0) und rechten/linken (-180/0 | 180/0) Koordinaten richtig anzeigt.
    Allerdings stimmen die die anderen Koordinaten nicht. Die Abweichung ist bei diesen Ziemlich groß. Dies liegt, soweit ich weis, daran das solche Karten halt nicht Rund, sondern immer etwas gestreckt bzw. gestraucht sind.


    Stichwort -> sphärische Trigonometrie


    Aber trotzdem komme ich nicht auf die richtige Umrechnungsformel :wallbash: :wallbash:
    Muss ja gehen denn bei Google & Co geht's ja :D


    Eventuell kann mir ja jemand helfen :thumbs1:


    Gruß Swoopo

  • Hallo,


    Quote

    Dies liegt, soweit ich weis, daran das solche Karten halt nicht Rund, sondern immer etwas gestreckt bzw. gestraucht sind.


    Es gibt für Karten verschiedene Arten der Projektion (bei Wikipedia: https://de.wikipedia.org/wiki/Kartennetzentwurf). Die musst du mindestens kennen, damit die Koordinaten halbwegs brauchbar / genau berechnet werden können.


    Gibt es eigentlich eine Grund, warum du das so "von Hand" machen willst und nicht über die z.B. Google Maps API oder mit leaflet.js und OSM Daten?


    Gruß, noisefloor

  • Hallo,


    Quote

    Warum ich das "von Hand" mache. hat eigentlich nur den Grund das ich nicht auf externe Anbieter zurückgreifen möchte.


    Gut, das ist ein Grund. Wobei das, was du vor hast, alles andere als trivial ist. Grundvoraussetzung ist halt, dass die eine _verläßliche_ Kartenquelle mit _bekannter_ Projektion hast.


    Welche Genauigkeit schwebt dir den vor? Bei einer pixel-basieren (also nicht vektorisierten Karte) ist die mögliche Genauigkeit ja noch von der Größe / Auflösung der Karte abhängig.


    Gruß, noisefloor

  • Hallo,


    Quote

    Ist dann nicht
    xmitte = xlen
    ymitte = ylen


    Ja - steht aber auch wörtlich im PDF drin :-)


    Ansonsten beschreibt dir das Dokument doch die Lösung. Wenn du jetzt noch die im PDF genannten Karte als JPG-Datei runterladen kannst hast du alles, was du brauchst.


    Gruß, noisefloor

  • Sieht wie folgt aus:

  • Und wenn Du ygrenz wie folgt berechnest?


    Code
    ygrenz = Math.asinh(Math.tan(85));


    Falls Du dann immer noch falsche Werte bekommst: Dem Tip mit Bogenmaß vs. Grad mal nachgegangen?

  • Hallo zusammen,


    ich würde mal den Ausdruck innerhalb tan() mit dem Faktor pi / 180.0 multiplizieren. Dadurch werden aus Grad-Angaben solche im Bogenmaß = Vielfache von pi. Damit rechnen üblicherweise die trigonometrischen Funktionen sin(), cos(), tan(), cot() und deren Umkehrfunktionen arc...().
    (360 ° = 2 pi, 180 ° = pi)


    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Ich kann leider kein Javascript, aber mit dem folgenden Python-Code:



    komme ich auf die selben Ergebnisse wie das PDF:


    Code
    $ python coord.py
     13.29  52.56 1289  785
    -73.78  40.64  708  902
      8.69  50.11 1258  812
    -80.22  25.79  665 1021
     13.74  51.05 1292  802
      2.35  48.86 1216  824


    Wo weicht Dein Code ab?

    Edited once, last by Manul ().