So, nun tun wa nochmal richtig Butter bei die Fische.
1. Es gibt ein Programm für Android, das die vom GPS-System gelieferten Daten im NMEA-Format über die serielle Bluetooth-Schnittstelle ausgibt! Es heißt "BlueNMEA" und funktioniert perfekt. Ist im Marketplace runterzuladen.
2. Ich habe meinem Nokia Empfänger unrecht getan. Er gibt auch einwandfreie Höhendaten aus. Warum er früher mal 110 Meter angezeigt hat, weiß ich nicht. Jetzt zeigt er korrekte 63 Meter an (58 Meter Niveau plus 5 Meter für die 1. Etage im Haus).
3. Im folgenden habe ich eben mal drei NMEA-Datensätze aus meinem Fenster aufgezeichnet:
a) Garmin:
$PGRMZ,207,f,3*1E
$PGRMM,WGS 84*06
$GPRTE,1,1,c,*37
$GPRMC,175014,A,5222.8946,N,00949.4113,E,0.0,0.0,190310,0.7,E,A*17
$GPRMB,A,,,,,,,,,,,,A,A*0B
$GPGGA,175014,5222.8946,N,00949.4113,E,1,07,1.5,63.1,M,46.3,M,,*75
$GPGSA,A,3,05,,08,09,10,15,,,,,27,28,2.9,1.5,2.0*31
$GPGSV,3,1,12,05,36,203,51,07,10,070,00,08,46,065,42,09,11,254,45*78
$GPGSV,3,2,12,10,19,183,46,15,56,293,45,18,12,323,00,19,10,027,00*70
$GPGSV,3,3,12,21,09,304,00,24,11,296,00,27,22,256,46,28,59,107,46*78
$GPGLL,5222.8946,N,00949.4113,E,175014,A,A*46
$GPBOD,,T,,M,,*47
$PGRME,6.3,M,11.3,M,12.9,M*22
b) Nokia:
$GPGGA,180435.000,5222.8969,N,00949.4106,E,1,06,1.6,63.3,M,47.0,M,,0000*6D
$GPGSA,A,3,27,05,28,08,15,09,,,,,,,2.9,1.6,2.5*36
$GPGSV,3,1,12,15,63,289,35,28,59,093,43,08,38,068,33,05,28,199,36*71
$GPGSV,3,2,12,27,28,259,42,18,26,306,,17,25,067,,09,16,257,41*7F
$GPGSV,3,3,12,10,11,181,32,19,07,021,,25,07,077,,21,06,298,*78
$GPRMC,180435.000,A,5222.8969,N,00949.4106,E,0.14,156.02,190310,,,A*64
c) Android:
$GPGSA,A,3,,9,12,15,17,18,,,27,28,,,,,,*0e
$GPGSV,3,1,10,8,8.0,85.0,24.0,9,48.0,277.0,27.0,12,6.0,219.0,23.0,15,69.0,190.0,36.0*4b
$GPGSV,3,2,10,17,30.0,113.0,43.0,18,30.0,290.0,28.0,22,14.0,323.0,21.0,26,28.0,307.0,21.0*7e
$GPGSV,3,3,10,27,58.0,280.0,28.0,28,37.0,56.0,26.0*49
$GPGGA,192137,5222.8921,N,00949.4122,E,1,,9.487171,109.0,M,,,,*27
$GPGLL,5222.8921,N,00949.4122,E,192137,A*21
$GPRMC,192137,A,5222.8921,N,00949.4122,E,0.0,true,190310,,*24
Interessant sind jeweils nur die $GPGGA Datensätze, die die Höhe beinhalten. Siehe auch
Das NMEA-0183 Datenformat
Garmin: $GPGGA,175014,5222.8946,N,00949.4113,E,1,07,1.5,63.1,M,46.3,M,,*75
Nokia: $GPGGA,180435.000,5222.8969,N,00949.4106,E,1,06,1.6,63.3,M,47.0,M,,0000*6D
Android: $GPGGA,192137,5222.8921,N,00949.4122,E,1,,9.487171,109.0,M,,,,*27
Sowohl Garmin als auch Nokia liefern hier neben der 'Höhe über Geoid' (also dem theoretischen Meeresspiegel) von 63.1 bzw. 63.3 Metern noch die 'Höhe Geoid minus Höhe Ellipsoid' (nach WGS84) von 46.3 bzw. 47 Metern. Eigentlich sollten diese Werte identisch sein. Vermutlich benutzen die beiden Empfänger unterschiedliche Geoid-Interpolationsverfahren und kommen daher auf leicht unterschiedliche Werte.
Android fällt nun total aus der Reihe. Es liefert einen um 46 Meter falschen Höhenwert und auch keinen Korrekturwert ('Höhe Geoid minus Höhe Ellipsoid'). Offenbar findet im Android keine Geoidkorrektur statt, sondern es wird einfach der Wert des WGS84-Referenzellipsoids ausgegeben. Na super! :-( Was ist denn das für ein Murks-GPS!? Höhenmäßig kann man das Gerät also in die Tonne treten. Es sei denn, man weiß immer, wie gerade die Geoid-Korrekturwerte an der aktuellen Position sind. Da ist also dringend etwas zu tun und es sollte schleunigst eine Geoidkorrektur eingebaut werden...
Gruß, Volker