Ich verwende OsmAnd mit einem per Bluetooth angebundenen Garmin GLO-2. Letzteres gibt bereits korrigierte Höhen aus (also nicht die rohen GPS-Höhen, die hier in Schland 40 m zu hoch sind). Dennoch fühlt sich OsmAnd aktuell dazu veranlasst, diese Höhen nochmal zu korrigieren und damit 40 Meter zu wenig anzuzeigen.
Mir ist bekannt, dass man dafür die Karte “Höhenkorrektur weltweit” herunterladen oder rauswerfen kann. Das macht bei mir nur keinen Unterschied. Mit und ohne diese Karte (jeweils komplett beendet und neu gestartet) zeigt OsmAnd den falschen Höhenwert an, 40 m weniger als Bluetooth GPS.
In Bluetooth GPS ist die Höhenkorrektur deaktiviert, aber auch nach Aktivierung ändert sich nur die lokale Anzeige, nicht die in OsmAnd.
Bis vor wenigen Wochen lief das noch tadellos, es kann daher an einem OsmAnd-Update liegen. Bei mir läuft OsmAnd 5.4.6 mit Bluetooth GPS 1.3.7.
Wenn das Smartphone (neue Android Versionen) die Höhenkorrektur auf MSL (also die niedrigere Höhe) bereits selbst durchführen kann, also die Abfrage der MSL-Höhe direkt selbst anbietet, wendet OsmAnd seit kurzem keine eigene Korrektur mehr an. In diesem Fall wird die Höhenkorrektur-Datei ignoriert (unabhängig davon, ob sie vorhanden ist oder nicht). Abgefragt wird dieser Wert über getMslAltitudeMeters().
Es kann jedoch vorkommen, dass Android nicht erkennt/mitgeteilt bekommt, dass dein GPS-Gerät bereits die korrigierte MSL-Höhe liefert, und die Höhe fälschlicherweise noch einmal korrigiert. Vielleicht ist das bei dir der Fall.
Du könntest bei OsmAnd nachfragen, ob sie eine Option anbieten, die Höhe wahlweise wieder (von Android) unkorrigiert per getAltitude() (so wie früher) abzufragen.
Alternativ lässt sich das eventuell in den Einstellungen deiner GPS-Software anpassen, sodass keine bereits korrigierte MSL-Höhe ausgegeben wird?
Interessanter Ansatz. Da andere Apps (hier namentlich “GPS Logger”) auf demselben Gerät zeitgleich die Höhe korrekt anzeigen, muss es weiterhin möglich sein, die nicht vom System korrigierte Höhe bei Android abzufragen. Folglich ließe sich das Problem über einen Schalter in OsmAnd lösen.
Wie gesagt, die Software bietet zwar die Option, aber die ist erstens ausgeschaltet und wirkt sich zweitens nur auf die interne Anzeige der GPS-App selbst aus, nicht auf die ans System übermittelte Höhe, jedenfalls ändert sich die Höhe in OsmAnd dadurch nicht. Ich nehme an, dass das GLO-2 bereits korrigierte Höhe über den Blauzahn schickt, ohne dazuzusagen (oder dazusagen zu können), dass das bereits korrigiert ist. Und da drin lässt sich, soweit ich weiß, nichts korrigieren.
Auf meinem Android Smartfon hat OSMAnd rund 40-50 Höhenmeter zu viel angezeigt. Nachdem ich die Höhenkorrektur runter geladen habe passt die Anzeige der Höhe.
Du kannst deine Höhen nachträglich via hoehendaten.de für einen kompletten Track korrigieren. Dann hast eine absolute Genauigkeit von ±15cm (relativ noch genauer) für alle GPS-Punkte im Track.
Das ist schön für dich, dann liefert deine GPS-Quelle unkorrigierte GPS-Höhen. Ich habe das umgekehrte Problem: Mein GPS-Empfänger liefert bereits korrigierte Daten ans Smartphone, das hält sie aber für unkorrigiert und zieht daher nochmal 40 Meter ab. Und wie gesagt, das bekomme ich ihm nicht abgewöhnt.
Oder mit QMapShack den Versatz einrechnen. Mir gehts aber nicht um den Track, sondern um die Höhenanzeige im Live-OsmAnd.
Nochmal: Ich will den Messwert meines GPS sehen, nicht einen abgefragten Wert aus einer Datenbank. Was macht hoehendaten.de, wenn ich auf einem Aussichtsturm stehe?
Genau, dann verwenden die anderen Apps wahrscheinlich noch das alte getAltitude() (API level 1). Das neue getMslAltitudeMeters() (also mit Korrektur der Höhe auf MSL) gibt es erst seit API level 34.
Was meinst du jetzt mit GPS-Logger zeigt die korrekte Höhe? Die MSL Höhe? Die ellipsoidische Höhe? Korrigiert GPS Logger selber oder bezieht er die korrigierte Höhe von Android?
whb hat ja geschrieben es gibt in Android zwei Funktionen die entweder ellipsoidische (GPS-Höhe) oder die Höher über MSL (Geoid) zurückgeben. Und er hat geschrieben das OSMAndroid das wissen sollte, welche Höhe er abgefragt hat und entsprechend selber entscheiden kann ob er die Korrektur anbringen muss. Scheint bei dir aber schiefzugehen.
Die MSL-Höhe. Und die zeigt er richtig an, weil eben ‘‘keine’’ Korrektur mehr an den empfangenen Daten vorgenommen wird, weder von Android, noch von der App. Im Gegensatz zu OsmAnd, der lässt entweder von Android korrigieren oder korrigiert selbst. Beides führt zu falscher Anzeige, weil der Wert überkorrigiert wird. Genau das ist das Thema dieses Threads hier.
… weil mein GPS-Empfänger bereits korrigierte Höhe liefert, schon in den Wareneingang, und Android sie für unkorrigiert hält. Soweit waren wir bereits
Deshalb wäre es schön, in OsmAnd auswählen zu können, welche der zwei Höhenangaben OsmAnd bei Android abfragt.
Habe eben nachgesehen, die entsprechende Bluetooth-GPS-App (hier “Bluetooth GPS”) hätte die Möglichkeit die MSL-Höhe per setMslAltitudeMeters() in den “Wareneingang” zu schreiben, dann weiß Android, dass es beim Aufruf von getMslAltitudeMeters() nicht nochmals korrigieren soll. Vielleicht gibt es eine Alternative zu “Bluetooth GPS”, welche das schon entsprechend umgesetzt hat?
Wo ich Bluetooth GPS her hatte, weiß ich nicht mehr, vermutlich APKpure.
Jetzt hab ich Bluetooth GNSS installiert, damit läuft alles wunschgemäß. Ich will nicht weiter verfolgen, welche Komponente sich da falsch verhalten hat, und betrachte das als erledigt.