03 Warum gibt es intern den Koordinatenparser?

Der Koordinatenparser ist Teil der Koordinatenfunktionen. Er kommt bei der Einfügen-Funktion der Koordinaten und beim Variable-Koordinate-Tool zum Einsatz. Er hat die Aufgabe, aus einem Text eine sinnvolle Koordinate (Latitude und Longitude) zu interpretieren.

Koordinaten können in unterschiedlichsten Formaten angegeben werden. Viele Formate sind nicht unbedingt eindeutig. So sehen die Werte bspw. für SwissGrid und Gauß-Krüger prinzipiell erst einmal gleich aus. Sie können nicht anhand eines bestimmten Musters so einfach voneinander unterschieden werden.

Bei den verschiedenen Koordinatenformaten gibt es etliche Abweichungen in den Schreibweisen. Nehmen wir nur einmal das “Geocaching-Format” DMM. Man findet es mit und ohne vorangestellte N/E Buchstaben oder mit Minus statt S/W. Mit und und ohne Grad/Minuten/Sekunden Zeichen, mit Komma oder Punkttrenner, mit Leerzeichen und ohne, mit oder ohne führende Nullen…

Hier nur einige Beispiele:

  • N 52° 12.312′ E 20° 12.312′
  • N 52° 12. 312′ E 020° 12. 312′
  • N 52 12,312 E 20 12,312
  • N52 12.312, E20 12.312
  • Nord 52 12.312, Ost 20 12.312
  • 52 06.312 S 20 06.312 W
  • -52 12.312 -20 12.312
  • 52 12.312 20 12.312

Damit der Nutzer vom GCWizard möglichst wenig Probleme bekommt, ist der Parser auf sehr hohe Flexibilität ausgelegt. Allerdings kann es immer mal wieder zu Problemen kommen. Einzelne Zeichen können ausreichen, aus einem scheinbar validen Format, einen nicht interpretierbaren Text zu machen. Auch wenn der Parser eine Vielzahl von Schreibfehlern toleriert, sollte der Nutzer dennoch eine große Sorgfalt walten lassen. Sollte einmal der Parser fehlschlagen, muss genau geschaut werden, welches Zeichen zu einem invaliden Format führen könnte.

Hier noch einige wahllose valide Beispiele:

DEC:

  • 00.12312 S 000.12312 W
  • 52.12312N, 20.12312E
  • 52. 12312 20. 12312
  • 52 n 20 o
  • 92 Westen 0
  • +2.12312 -020.12312

DMM:

  • 52° 12.312′ N 20° 12.312′ E
  • 52 06 S 20 6 W
  • N 051° 39.688′ E 006° 27.336′
  • 52 12 20 12
  • N52 12 E20 12
  • -052 6 -20 06

DMS:

  • 52° 12′ 30.15″ N, 20° 12′ 30.15″ E
  • 52 12 45 S, 20 12 45 W
  • North 52 6 30.15, East 20 06 30.15
  • 52 6 9 20 6 9
  • N52 12 30,15, E20 12 30,15