[LinuxOB] GPS Daten
Alexander Müller
visus at visusnet.de
Di Feb 5 13:02:36 CET 2008
Michael Gisbers schrieb:
>> Mal ins Blaue geschossen....
>>
>> Reicht nicht ein Terminal-Programm am "seriellen" Anschluss lauschen
>> zu lassen?
>
> Wenn der Garmin in den richtigen Modus geschaltet ist, dann sollte das gehen.
>
> Aber ich kann auch mal meinen Empfänger während einer Autofahrt laufen lassen.
> Das sollte auch einiges an Daten erzeugen.
Ich habe schon eine Alternative gefunden: www.openstreetmap.org
Da gibt es einen Haufen GPX Dumps, die man dann mit GPSBabel in
NMEA-Files uebersetzen kann. Leider kann ich so schlecht testen, ob
meine Distanzberechnung funktioniert. Das ist leider relativ schwer zu
berechnen und ohne eine Teststrecke mit genau X Metern kann ich die
Berechnung nicht genau nachvollziehen und eventuelle Fehler ausmerzen.
Meine aktuelle Berechnung laeuft wie folgt (Java):
-- snip --
class ...
{
static double originLat = 0;
static double originLng = 0;
static double distance;
static int i = 0;
...
public void dataDetectedEvent(NMEAEvent e)
{
if (this.getDevicePrefix() == "GP")
{
GeoPos position = StringParsers.parseGGA(e.getContent());
i++;
if (originLat == 0 && originLng == 0)
{
originLat = Math.toRadians(position.lat);
originLng = Math.toRadians(position.lng);
distance = 0;
}
else
{
distance +=
Math.abs(6371*(Math.acos((Math.sin(originLat)*Math.sin(Math.toRadians(position.lat))+Math.cos(originLat)*Math.cos(Math.toRadians(position.lat))*Math.cos(Math.toRadians(position.lng)-originLng)))));
}
originLat = position.lat;
originLng = position.lng;
if (position != null)
{
System.out.println(i + ". - Latitude: " +
position.getLatInDegMinDec() + " Longitude: " +
position.getLngInDegMinDec() + " Weg: " + Math.round(distance / 1000) +
" km");
}
}
else if (this.getDevicePrefix() == "II")
{
/* Analog fuer Hydra Geraete */
}
}
...
}
-- snip --
Und irgendwie glaube ich nicht, dass die errechneten Werte stimmen. Die
Ergebnisse liegen nach Augenmass ca. 10% daneben.
Alexander
Mehr Informationen über die Mailingliste linux