Filter für GPS Koordinaten

Fragen und Hinweise zu Software, die mit dem Thema GPS zu tun hat. Egal ob PC oder Handheld.

Moderator: Roland

Antworten
Fabian
Beiträge: 4
Registriert: 28.08.2007 - 15:50

Filter für GPS Koordinaten

Beitrag von Fabian » 29.08.2007 - 14:42

Hallo Community,

ich bin dabei einen GPS - Datenlogger für mich zum biken zu realisieren. Der Logger funktioniert auch schon ganz gut. Allerdings habe ich noch Probleme mit der Auswertung am PC.
Nachdem ich die NMEA Datensätze in kml umgewandelt habe, kann ich mir die Tour bei Google Earth anschauen.
Meine Auswertungssoftware macht etwas ähnliches, sie sendet die Daten zu einer Webseite, welche die Punkte dank der Google Maps API anzeigt. Jedoch sind die Unterschiede sehr krass zwischen Google Earth und der eigenen Lösung. Google scheint einen recht guten Filter zu benutzen um die "schlechten" Daten zu entfernen.
Kurz gesagt: Diesen hätte ich auch gern :lol:
Meine bisherigen Versuche:
1. alle Daten die keine Qualitätsmerkmale beinhalten oder von schlechter Qualität sind, laut GGA Protokoll, lasse ich aus -> Ergebnis war eine Tour ohne Stützpunkte
2. Savitzky Golay Filter.

- beides brachte leider keinen Erfolg.

Nun bitte ich hier um einen Rat, was für einen Fitler man nehmen könnte. Ich muss dazu sagen, dass ich in Signalverarbeitung ne Niete bin :roll:

Vielen Dank für eure Hilfe.

mfg

Benutzeravatar
KoenigDickBauch
Beiträge: 303
Registriert: 25.01.2007 - 21:59

Re: Filter für GPS Koordinaten

Beitrag von KoenigDickBauch » 29.08.2007 - 17:47

Fabian hat geschrieben:Nun bitte ich hier um einen Rat, was für einen Fitler man nehmen könnte. Ich muss dazu sagen, dass ich in Signalverarbeitung ne Niete bin :roll:
Das hatten wir schon mal, damals hatte ich mich auch mit Akima-Splines geoutet. Wenn ich mich recht erinnere war aus dem Thread damals auch nix direkt verwertbares gekommen.

Bei einem GIS Projekt wurden die Akima-Splines genommen um die Höhenlinien zu bilden, dabei ging man auch davon aus, das die Punkte nicht so stimmen und man mal ein wenig rundet.

Thomas

Deichgraf
Beiträge: 506
Registriert: 09.02.2006 - 13:22

GE mit Filter?

Beitrag von Deichgraf » 29.08.2007 - 18:40

Hi, Fabinan,
ich kann mir nicht vorstellen, dass GE Logs glättet.

Gerade gestern habe ich einen Ausreisser in meinem Log gesehen - entstand beim Einschalten des GPS nach einem Zwischenstop -, den ich dann in Mapsource gelöscht habe. GE glättet nichts.

Für Deine Zwecke könnte GTA 4 passen; GPS-Track-Analyse ist Freeware, der Programmierer ist im Navi-Board.

Gruß
Günther

Fabian
Beiträge: 4
Registriert: 28.08.2007 - 15:50

Beitrag von Fabian » 30.08.2007 - 09:56

@KoenigDickBauch: leider habe ich über die Suchfunktion nichts gefunden vorher, sorry wenn die Frage trotzdem schon vorkam. Splines habe ich schonmal programmiert, welche im speziellen weiß ich nicht mehr genau. Allerdings weiß ich nicht ob die mir weiterhelfen.

@deichgraf: Die Software habe ich mir gestern mal angeschaut, sie scheint etwas Probleme mit meinen NMEA DAtensätzen zu haben, warum weiß ich nicht. Auf alle Fälle gefällt die Software mir von der Aufmachung her. Trotzdem wäre es mir recht wenn ich eine eigene Software hätte.
Deswegen zeige ich mal zwei Screenshots von Google Earth und meiner Software, der Unterschied ist klar zu erkennen.

Google Earth
Bild

Eigene Software:
Bild

Benutzeravatar
RaGo
Beiträge: 179
Registriert: 15.10.2005 - 11:14
Wohnort: Stuttgart

Beitrag von RaGo » 30.08.2007 - 11:09

Hallo Fabian,
das sieht allerdings nicht nach "Ausreisser" aus! Dal liegen ja nicht einzelne Punkte außerhalb einer Line, sondern sind Verschiebungen drin. Ich meine, da stimmt was anderes nicht.

Rainer

Fabian
Beiträge: 4
Registriert: 28.08.2007 - 15:50

Beitrag von Fabian » 30.08.2007 - 12:38

Hallo Rainer,

ja das stimmt, so richtig passt das an keiner Stelle, das hat bisher etwas getäuscht, da hatte ich die Bilder nnicht nebeneinander.
Ich habe nochmal in meinem SourceCode nachgeschaut, die einzige Stelle an der potentieller Pfusch entstehen kann ist die Umwandlung der Koordinaten von den Grad Minuten Sekunden Format in das DezimalFormat von Google Maps. So rechne ich das um:

Code: Alles auswählen

private double TransformCoord(double coord, char direction)
{
            int ganzZahl = ((int)(coord / 100));
            int hundertstel = (int)((coord / 100 - ganzZahl) * 100);
            int zehnTausendstel = (int)((coord - (100 * ganzZahl + hundertstel)) * 100);
            double retVal = ganzZahl + hundertstel / 60.0 + zehnTausendstel / 3600.0;
            if(direction == 'W' || direction == 'w' || direction == 's' || direction == 'S')
                retVal *= -1.0;
            return retVal;
}
Die Methode erwartet eine Koordinate (Längen- oder Breitengrad im Format Grad Minute Sekunde) und eine Himmelsrichtung. Die Koordinate wird dann in eine Kommazahl des Grades umgerechnet. Seht ihr da einen Fehler?

Gruß Fabian

Fabian
Beiträge: 4
Registriert: 28.08.2007 - 15:50

Beitrag von Fabian » 30.08.2007 - 14:27

Ich weiß jetzt wie das Heinzelmännchen heißt :lol:
Und zwar habe ich euch einen Zwischenschritt verschwiegen, oder zumindest nicht ausführlich beschrieben. Um meinen Track in Google Earth anzeigen zu lassen habe ich mit GPSBabel die NMEA Sätze in kml umgewandelt. Das Programm kommt auf andere Werte bei der Umrechnung. Jetzt muss ich nur noch die Formel von denen herauskriegen.

mfg Fabian

EDIT: habe es hinbekommen, lag wirklich an der Formel. Falsch war sie nicht, nur ungünstig ;-)
Das ist die von GPSBabel:

Code: Alles auswählen

...
            int deg = (int)(coord / 100.0);
            double minutes = (((coord / 100.0) - deg) * 100.0) / 60.0;
            return (double) deg + minutes;
...
Danke für eure Hilfe, jetzt gehe ich erstmal in den Urlaub (mit GPS in Liechtenstein). Naja eine Stunde noch arbeiten.

Benutzeravatar
Roland
Beiträge: 2055
Registriert: 18.02.2004 - 22:33
Wohnort: Wusterhausen(Dosse)

Beitrag von Roland » 30.08.2007 - 20:36

Hallo Fabian,

jetzt will ich meine Gedanken nicht alle in den Papierkorb werfen.
Aufgrund der ursprünglichen Anfrage nochmal zur Klarstellung.

NMEA liefert GGMM.mmm = Grad-Minuten-Minutendezimale
KML nutzt GG.gggggg = Grad-Graddezimale

Wenn man das beachtet, vermeidet man ungünstige Code-Zeilen *hüstel*

Grüße Roland

Benutzeravatar
Hartmut
Beiträge: 815
Registriert: 25.05.2004 - 18:56
Wohnort: Prachuab Khiri Khan 11°44'37"N 99°47'17"E
Kontaktdaten:

Beitrag von Hartmut » 07.09.2007 - 10:14

moin,
mir fehlt da irgendwie die angabe welche strecke denn nun die real zurückgegebene fehlerfrei darstellt.

bis denn
:mrgreen: :mrgreen: :mrgreen:
ich bin zwar verantwortlich, für das was ich sage, aber nicht dafür, wie du es verstehst.

rechtschreibfehler sind gewollt und deswegen mit voller Absicht erstellt. wer welche findet, darf sie behalten, verschenken oder auch versteigern.

Antworten