mikrocontroller.net

Forum: Offtopic GPS Daten darstellen


Autor: Blubb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wo kann ich nachschauen, wie ich aus den aufgezeichneten GPS Daten eine 
Bewegungskarte erstellen kann. Mir gehts nicht darum, die Daten in 
Google oder ähnliches zu importieren, sondern diese so auszuwerten, dass 
diese auf eine Grafik übertragen werden können.

Danke!

Autor: aha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein Koordinatensystem genuegt. Dann eine Koorinatentransformation und 
einzeichnen. Wo ist das Problem ?

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe zu dem Zweck die NMEA-Daten in das Overlay-Format der 
TOP25-Meßtischblatt-CD umgewandelt. Damit kann man den Track dann ins 
Meßtischblatt einbelenden.

Autor: Blubb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich finde keinen Ansatzpunkt, wie man die Koordinaten transformiert und 
wie die Höhe mit den Breiten- und Längsgraden zusammenhängt.

Autor: aha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Hoehe ist auch unabhaengig von Laenge und Breite.

Autor: aha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Koordinatentransformation ist im Wesentlichen eine Multiplikation. 
Must vielleicht etwas probieren wenn die Grundlagen fehlen.

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Koordinaten sind im NMEA-Format etwas komisch codiert.

Wenn du die Daten mit GPSBabel z.B. ins GPX-Format unwandeln läßt, dann 
hast du sie in der üblichen Fom.

Die folgend C#-Funktion wandelt die Stringdarstellung von NMEA in 
Dezimal-Grad um:
private string NmeaDegree2DecimalDegree(string Tok)
{
    char DecSep = ',';
    if (System.Globalization.CultureInfo.CurrentUICulture.NumberFormat.NumberDecimalSeparator == ".")
        DecSep = '.';
    Tok = Tok.Replace('.', DecSep);
    int DecPos = Tok.IndexOf(DecSep);
    double Pos = System.Convert.ToDouble(Tok.Substring(0, DecPos - 2)) + 
        System.Convert.ToDouble(Tok.Substring(DecPos - 2)) / 60;
    return Math.Round(Pos, 4).ToString().Replace(',', '.');
}

Autor: Blubb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danach kann ich die Daten ganz normal in einem passenden 
Koordinatensystem einzeichnen? Sprich der Längengrad entsprich der 
X-Achse, die Breite der Y-Achse?

Danke!

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja.

Autor: Jürgen W. (lovos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein nicht ganz. Auf dem Aequator wuerde es schon so passen, aber nicht 
in unseren Breiten ( ca. 50 Grad Nord).
In unseren Breiten sind die Abstaende der Laengengrade geringer als die 
der Breitengrade. (Die Breitengrade sind ueberall aequidistant, die 
Laengengrade laufen zu den Polen zusammen.)
Also sollte man die x-Werte mit dem Faktor cos(Breitengrad) 
multiplizieren.

Autor: Blubb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke!

Müssen die y-Werte auch entsprechend umgerechnet werden?

Autor: oha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In hinreichend kleinem Massstab kann das Koordinatensystem hierzulande 
als rechtwinklig angesehen werden.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Blubb schrieb:
> Danke!
>
> Müssen die y-Werte auch entsprechend umgerechnet werden?

Nein.
Und im übrigen hängt es von der Karte ab, die du unter deine Daten legen 
willst, ob und welche Korrekturen du bei der Umrechnung von 
Breiten/Längen Graden in kartesiche Koordinaten anbringen musst. Du 
brauchst dieselben Umrechnungen, die auch bei der zugrundeliegenden 
Karte gemacht wurden. Kartografie ist nicht so einfach, wie sich 
Lieschen Müller das so vorstellt.

Autor: Blubb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

es soll keine konkrete Karte drunter gelegt werden. Die aufgezeichnete 
Strecke soll einfach in einer Grafik als eine Menge von Punkten 
abgebildet werden.

Grüße
Alex

Autor: Jürgen W. (lovos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich wuerde die Achsen beschriften.
Der Erdradius ist zwar nicht konstant (wird zu den Polen geringer), kann 
in unseren Breiten mit r=6378km verwendet werden.
Damit lassen sich die y-Werte schnell von Breitengrade in 
(Bogen-)Laengen umrechnen. Bei den x-werten muss der Faktor 
'cos(Breitengrad)' beruecksichtigt werden.
Bei den sin()/cos() muss man aufpassen, dass sie meist Bogenmasse 
verlangen, das GPS/NMEA-String aber Grad-Windel hat.

Autor: Blubb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jürgen,

kannst du mir noch auf die Sprünge helfen, wie jetzt die y-Werte mit dem 
Radius konkret umgerechnet werden? X-Achse und Umrechnung Bogenmaß ist 
klar.

Danke
Alex

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Blubb schrieb:
> Hallo Jürgen,
>
> kannst du mir noch auf die Sprünge helfen, wie jetzt die y-Werte mit dem
> Radius konkret umgerechnet werden? X-Achse und Umrechnung Bogenmaß ist
> klar.

Denk dir die Erde von Pol zu Pol durchgeschnitten. Die Schnittfläche ist 
dann ein Kreis. Der Breitengrad ist ein Radiusvektor von einem Punkt am 
Radius zum Kreismittelpunkt, wobei der Breitengrad der Winkel zwischen 
Radiusvektor und der Horizontalen (dem Äquator) ist. Der Radiusvektor 
kann 360 Grad überstreichen. Dies entspricht am Umfang des Kreises einer 
Distanz von 2*r*PI ( r = 6378km)

wenn 360° einer Distanz am Umfang von 2*6378km entsprechen, wie gross 
ist dann die Distanz in Kilometer für 1°. Wie gross für 0.5°? etc.

Einfach mal auf dem Papier eine Kugel skizzieren und Breitenkreise bzw. 
Längenkreise einzeichnen und überlegen was denn die Winkelangaben 
bedeuten und wie sie angegeben werden. Dann wird vieles klarer.

Autor: Blubb (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank!

Grüße
Alex

Autor: Jürgen W. (lovos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wenn 360° einer Distanz am Umfang von 2*6378km entsprechen, wie gross
>ist dann ...
Du meinst wahrscheinlich 2*pi*6378km?

Etwas schwieriger sind die x-Werte.
Laeuft man am 50.Breitengrad um die Erde, dann ist der "Umfang" nicht 
mehr 40000km, sondern r*cos(50Gr)*2*pi.
r*cos(50Gr) ist der Abstand von der Erdoberflaeche am 50.Breitengrad zur 
Pol-Achse (lotrecht).

Autor: lm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jürgen,

na ich brauche die Darstellung nur für unsere Breitengrade :)

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um einen Track in einer kleinen Umgebung in Deutschland darzustellen, 
muß man wirklich keine Klimmzüge machen - die fallen sowieso der Rundung 
auf Pixel zum Opfer...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail, Yahoo oder Facebook? Keine Anmeldung erforderlich!
Mit Google-Account einloggen | Mit Yahoo-Account einloggen | Mit Facebook-Account einloggen
Noch kein Account? Hier anmelden.