Höhendaten von GPS-Tracks anpassen

Einklappen

Ankündigung

Einklappen
Keine Ankündigung bisher.
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Juergen
    Fuchs
    • 17.01.2011
    • 2221
    • Privat

    • Meine Reisen

    Höhendaten von GPS-Tracks anpassen

    Bei Trackaufzeichnungen stimmen manchmal die Höhenangaben nicht oder es sind
    Sprünge in der Aufzeichnung (siehe Abbildung, gelber Pfeil).



    Dies kann verschiedene Gründe haben:
    • Die richtige Ausgangshöhe wurde nicht eingestellt.
    • Das GPS-Gerät passt die Höhe während der Wanderung an.
    • Der Anwender korrigiert die Höhe während der Tour.
    • Durch Luftdruckänderungen werden die Höhenwerte verfälscht.

    Als Konsequenz sehen manche Höhenprofile ziemlich häßlich aus und eignen sich insbesondere
    nicht für eine Veröffentlichung. Mit GPS-Babel kann man leider nur einen konstanten Wert zur
    Höhe addieren.

    Ich habe gerade ein kleines Perl-Skript geschrieben zur Korrektur von Höhendaten in GPS-Tracks
    im GPX-Format. Der Programmcode ist unten.

    Das Skript wird mit folgenden Parametern aufgerufen:

    Hoehe.pl Input.gpx Output.gpx n1 n2 H1 H2

    Input.gpx: GPX-Datei, die den Track enthält (und nur diesen !!!), statt "Input.gpx"
    wird der Name der einzulesenden Datei angegeben.

    Output.gpx: GPX-Datei, in die der korrigierte Track geschrieben wird. Dateiname ist
    frei wählbar, Endung sollte .gpx sein.

    n1: Nummer des ersten Trackpunkts, der verändert werden soll.
    n2: Nummer des letzten Trackpunkts, der verändert werden soll.

    H1: Höhe, die Trackpunkt n1 nach der Korrektur haben soll.
    H2: Höhe, die Trackpunkt n2 nach der Korrektur haben soll.

    Nach Aufruf des Skripts passt dieses die Höhenwerte zwischen n1 und n2 (einschließlich)
    an und schreibt das Ergebnis in die Ausgabedatei. Wenn mehrere Segmente eines Tracks
    geändert werden sollen, muss das Skript mehrfach aufgerufen werden und die Ausgabedatei
    muss zur Eingabe verwendet werden.

    Kann sein, dass noch ein paar Fehler im Skript sind, ich habe das noch nicht ausgiebig
    getestet. Fehlermeldungen bitte an mich, ich setze dann eine korrigierte Version hier rein.

    Viel Spaß

    Jürgen

    Code:
    #!/usr/bin/perl -w
    
    if (@ARGV != 6) {
      print "Hoehe.pl Input.gpx Output.gpx n1 n2 H1 H2\n";
      exit 0;
    }
    
    $i = 0;
    ($n1, $n2, $H1, $H2) = ($ARGV[2], $ARGV[3], $ARGV[4], $ARGV[5]);
    
    open IN, $ARGV[0];
    while ( $_ = <IN> ) {
      if (m/<ele>(.+)<\/ele>/i) {
        $i++;
        if ($i == $n1) {
          $h1 = sprintf "%f", $1;    
          $_ = <IN>;
          $_ =~ m/<time>\d{4}-\d{2}-\d{2}T(\d{2}):(\d{2}):(\d{2})Z<\/time>/i;
          $t1 = (($1 * 60 + $2) * 60) + $3;
        } elsif ($i == $n2) {
          $h2 = sprintf "%f", $1;
          $_ = <IN>;
          $_ =~ m/<time>\d{4}-\d{2}-\d{2}T(\d{2}):(\d{2}):(\d{2})Z<\/time>/i;
          $t2 = (($1 * 60 + $2) * 60) + $3;
        }
      }
    }
    print "$i Trackpunkte\n";
    close IN;
    
    $dt = $t2 - $t1;
    $m  = $H2 - $H1 + $h1 - $h2;
    
    $i    = 0;
    $flag = 0;
    open IN, $ARGV[0];
    open OUT, '>' . $ARGV[1];
    while ( $_ = <IN> ) {
      if (m/<ele>(.+)<\/ele>/i) {
        $i++;
        if ($i == $n1) {
          $flag = 1;
        } elsif ($i == $n2 + 1) {
          $flag = 0;
        }
        if ($flag == 1) {
          $h = sprintf "%f", $1;
          $_ = <IN>;
          $_ =~ m/<time>\d{4}-\d{2}-\d{2}T(\d{2}):(\d{2}):(\d{2})Z<\/time>/i;
          $t = (($1 * 60 + $2) * 60) + $3;
          $H = $h + $H1 - $h1 + ($t - $t1)/$dt * $m;
          printf OUT "        <ele>%4.7f</ele>\n", $H;
          print OUT;
        } else {
          print OUT;
        }
      } else {
        print OUT;
      }
    }
    close IN;
    close OUT;

  • Spartaner
    Alter Hase
    • 24.01.2011
    • 4800
    • Privat

    • Meine Reisen

    #2
    Alternative Höhendaten von GPS-Tracks anpassen

    Da die vom GPS aufgezeichneten Höhendaten idR erhebliche Abweichungen vom wahren Wert haben, setze ich stattdessen gerne mal die SRTM-Höhendaten ein. Dazu den gpx-Track mit dem Programm GPS-Track-Analyse.NET öffnen, die entsprechen Bereiche der SRTM-Höhendaten runterladen, und die Werte zuweisen lassen. Klar, da kommt auch nicht immer die reine Wahrheit raus, aber im allgemeinen ist der Fehler erheblich geringer als bei den selbst aufgezeichneten Höhenwerten.

    Gruß Michael

    Kommentar


    • Juergen
      Fuchs
      • 17.01.2011
      • 2221
      • Privat

      • Meine Reisen

      #3
      AW: Höhendaten von GPS-Tracks anpassen

      Bei Garmin Connect kann man wählen, ob man die Höhendaten aus dem GPS
      oder die von Vermessungsdiensten verwenden will. Die Höhendaten von
      Vermessungsdiensten sind hier im Allgemeinen sehr schlecht.

      Mein barometrischer Höhenmesser im eTrex Vista HCx ist schon auf 10 m genau,
      ich kann nicht klagen. Die Verfälschungen kommen bei mir in erster Linie von
      Fehleinstellungen oder Luftdruckveränderungen.

      Kommentar


      • Gast-Avatar

        #4
        AW: Höhendaten von GPS-Tracks anpassen

        Zitat von Juergen Beitrag anzeigen
        Die Höhendaten von
        Vermessungsdiensten sind hier im Allgemeinen sehr schlecht.
        OT:
        Bisschen OT:
        Je nach Anforderung relativ gesehen. Ich bin bezüglich Oruxmaps zusammen mit den Srtm-Daten, sowie auch dem BRouter eigentlich schon gut bedient, würde mich aber diesbezüglich, auch für die Entwickler, über noch genauere Daten freuen. Die 3D-Ansicht in Oruxmaps zusammen mit Vektorkarten ist schon ziemlich brauchbar, um Streckenverläufe optisch gut einschätzen zu können.


        Dieses Jahr soll es bezüglich der SRTM-Daten eine Freischaltung auf ein 30 m Raster auch für Europa geben. Bisher nur 90m Abstände. Sicherlich müssen Softwareentwickler auch dann noch berüchsichtigen, dass da teilweise Baumwipfelhöhen gemessen wurden. Für die Zukunft ist es natürlich wünschenswert, dass es aus vielen Quellen zusammengetragene und verifizierte Daten gibt, die für jedermann frei verfügbar sind.

        Kommentar

        Lädt...
        X