GPS-Daten in Google Earth darstellen

GPS-Daten kann man sehr einfach aufzeichnen, wenn man ein Notebook hat auf dem MS-XP läuft.
Mein Freund, Rudi Schmidt, besitzt so ein edles Teil, und wir haben einen ersten Versuch gemacht.

Zuerst haben wir das u-center von u-blox installiert, um die Empfangsbedingungen auch während der
Fahrt kontrollieren zu können, und den mitgelieferten Treiber. Per Gerätemanager ist COM4 als
verwendete Schnittstelle festzustellen. U-center wird entsprechend konfiguriert und los gehts.

Lt. Conrad Beschreibung ist es völlig ausreichend die GPS-Mouse auf dem Armaturenbrett unter
der Windschutzscheibe zu platzieren. Die Pegelanzeige im u-center zeigt nach wenigen Sekunden 2D-Fix.
Die Sateliten-Übersicht zeigt 8  empfangene aber nur 3 im "grünen" Bereich, d.h. ausreichend für die Berechnung.
Dieser Zustand ändert sich auch auf dem freien Feld, ohne Wald und Häuser nicht.

Also kommt die "Mouse" auf's Dach, beidseitig klebendes Schaumstoffpad sorgt für Halt. Und siehe da,
sofort 3D-Fix und 7 Sat mit brauchbarem Pegel. Die ändert sich auch nicht bei der Fahrt durchs Dorf.

MS-Hyperterminal empfängt auf COM4 mit 4800 Bd die GPS-Telegramme des CR4 und die Aufzeichnung
in Datei "Route1.txt" wird gestartet.  Nach ca. 20 Minuten Fahrt verabschiedet sich die Aufzeichnung aus
nicht ersichtlichem Grund, aber wir haben 564 Kb Textdatei mit sekündlicher Aufzeichnung:

1. Datensatz:
$GPRMC,143903.00,A,4820.79401,N,01100.57693,E,0.007,,201207,,,A*76
$GPVTG,,T,,M,0.007,N,0.012,K,A*27
$GPGGA,143903.00,4820.79401,N,01100.57693,E,1,07,1.09,510.7,M,47.8,M,,*5C
$GPGSA,A,3,03,19,22,14,16,18,11,,,,,,1.68,1.09,1.28*0E
$GPGSV,3,1,12,03,70,165,42,19,71,295,44,22,62,083,45,14,18,126,40*7B
$GPGSV,3,2,12,16,10,186,41,08,03,309,,18,28,050,43,21,01,079,31*79
$GPGSV,3,3,12,11,13,271,34,01,03,151,36,33,29,214,39,28,01,335,*71
$GPGLL,4820.79401,N,01100.57693,E,143903.00,A,A*6E
$GPZDA,143903.00,20,12,2007,00,00*6E
2. Datensatz :
$GPRMC,143904.00,A,4820.79401,N,01100.57701,E,0.016,,201207,,,A*7B
$GPVTG,,T,,M,0.016,N,0.030,K,A*27
$GPGGA,143904.00,4820.79401,N,01100.57701,E,1,07,1.09,510.7,M,47.8,M,,*51
$GPGSA,A,3,03,19,22,14,16,18,11,,,,,,1.68,1.09,1.28*0E
$GPGSV,3,1,12,03,70,165,42,19,71,295,44,22,62,083,45,14,18,126,40*7B
$GPGSV,3,2,12,16,10,186,41,08,03,309,,18,28,050,43,21,01,079,31*79
$GPGSV,3,3,12,11,13,271,33,01,03,151,36,33,29,214,39,28,01,335,*76
$GPGLL,4820.79401,N,01100.57701,E,143904.00,A,A*63
$GPZDA,143904.00,20,12,2007,00,00*69

letzter Datensatz:
$GPRMC,145703.00,A,4820.88521,N,01100.42003,E,18.355,1.50,201207,,,A*5F
$GPVTG,1.50,T,,M,18.355,N,34.012,K,A*37
$GPGGA,145703.00,4820.88521,N,01100.42003,E,1,08,0.96,514.2,M,47.8,M,,*5B
$GPGSA,A,3,03,19,22,14,18,01,11,28,,,,,1.49,0.96,1.14*09
$GPGSV,3,1,12,03,62,162,44,19,78,279,42,22,57,070,45,14,25,120,40*76
$GPGSV,3,2,12,16,03,184,28,18,21,048,40,01,09,147,39,11,20,275,42*7E
$GPGSV,3,3,12,28,07,332,44,37,,,37,39,33,162,35,33,29,214,36*45
$GPGLL,4820.88521,N,01100.42003,E,145703.00,A,A*60
$GPZDA,145703.00,20,12,2007,00,00*66

Startzeit 14:39:03, Ende 14:57:03

Unter dem link
http://code.google.com/apis/kml/documentation/whatiskml.html
Lernt man:
 

KML is a file format used to display geographic data in an earth browser, such as Google Earth, Google Maps, and Google Maps for mobile. A KML file is processed in much the same way that HTML (and XML) files are processed by web browsers. Like HTML, KML has a tag-based structure with names and attributes used for specific display purposes. Thus, Google Earth and Maps act as browsers for KML files.

You can use KML to:

Für die Umsetzung einer GPS-.log Datei in das KML-Format  findet Rudi per Google
diesen link:
http://www.supervisioncam.com/test/gps2kml.html
 

GPS Log to Google Earth kml Converter

Wählen Sie eine GPS Log Datei, welches Sie von einem GPS Empfänger aufgezeichnet haben.
Starten Sie nun "Convert to kml" und die Log Datei wird in ein kml Format konvertiert, welches
direkt in Google Earth geladen werden kann.
Vorraussetzung: Das Script unterstützt momentan nur GPGGA Datensätze.
Die Log Datei muss also diese Datensätze enthalten. Zum Aufzeichnen von GPS Datensätzen auf einem
PPC parallel zu einem Navigationsprogramm eignet sich zum Beispiel Glopus.
Die Größe der Log Datei sollte nicht größer als 2 MB sein.
Es wird daher empfohlen nur GPGGA Datensätze mitzuprotokollieren,
was auch den Standardeinstellungen von Glopus entspricht.

Es ist eine simple Übung unsere Datei zu konvertieren,  denn die verlangten GPGGA-Datensätze
sind ja vorhanden, z.B.:

$GPGGA,145703.00,4820.88521,N,01100.42003,E,1,08,0.96,514.2,M,47.8,M,,*5B

Sekunden später erhalten wir eine "glopusdata.kml", nur noch 36Kb groß :

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0">
<Placemark>
<name>Route1.TXT</name>
<description>Glopus GPS to Google Earth Konverter</description>
<visibility>1</visibility>
<open>1</open>
<Style>
<LineStyle>
<color>ff0000ff</color>
</LineStyle>
<PolyStyle>
<color>7f00ff00</color>
</PolyStyle>
</Style>
<LineString>
<extrude>1</extrude>
<tessellate>1</tessellate>
<altitudeMode>relativeToGround</altitudeMode>
<coordinates>
11.00961550,48.34656683,0.000000
11.00961683,48.34656683,0.000000
11.00961833,48.34656717,0.000000
11.00961983,48.34656750,0.000000
11.00962100,48.34656700,0.000000
11.00962217,48.34656667,0.000000
11.00962500,48.34656850,0.000000
11.00962783,48.34656983,0.000000
11.00963033,48.34657067,0.000000
11.00963200,48.34657117,0.000000
und so weiter bis:
11.00692533,48.34783717,0.000000
11.00696667,48.34787700,0.000000
11.00699033,48.34793283,0.000000
11.00700100,48.34800350,0.000000
11.00700050,48.34808683,0.000000
</coordinates>
</LineString>
</Placemark>
</kml>

Wenn man diese Datei "doppelclickt", geschieht "Wunderbares"


Um unsere Strecke als rote Linie darzustellen war eine kleine Änderung nötig :

<PolyStyle>
<color>7f00ffff</color>
</PolyStyle>

<PolyStyle>
<color>7f00ff00</color>
</PolyStyle>

Diese Weisheit stammt aus der KML-Referenz unter dem item color:

http://code.google.com/apis/kml/documentation/kml_tags_21.html

<color> (default=ffffffff)
Color and opacity (alpha) values are expressed in hexadecimal notation.
The range of values for any one color is 0 to 255 (00 to ff).
For alpha, 00 is fully transparent and ff is fully opaque.
The order of expression is aabbggrr, where :
    aa=alpha (00 to ff);
    bb=blue (00 to ff);
    gg=green (00 to ff);
    rr=red (00 to ff).
For example, if you want to apply a blue color with 50 percent opacity to an overlay, you would specify the following:
 <color>7fff0000</color>, where alpha=0x7f, blue=0xff, green=0x00, and red=0x00.


diese unter coordinates:

<coordinates> (required)
A single tuple consisting of floating point values for longitude, latitude, and altitude (in that order).
 Longitude and latitude values are in degrees, where
  • longitude ≥ -180 and <= 180
  • latitude ≥ -90 and ≤ 90
  • altitude values (optional) are in meters above sea level

Do not include spaces between the three values that describe a coordinate.

  <coordinates>-90.86948943473118,48.25450093195546</coordinates>
 


Mit dieser Information versteht man auch die Konvertierung der Koordinaten.
Aus GP-GGA Satz :
 
$GPGGA,143903.00,4820.79401,N,01100.57693,E,1,07,1.09,510.7,M,47.8,M,,*5C
wird :
11.00961550,48.34656683,0.000000
in der KML-Datei.

D.h. aus 48 Grad 20.79401 Minuten werden 48.34656683 Grad
bzw.        11 Grad 00.57693 Minuten werden 11.00961550 Grad

der 3. Wert
0.00000 ist hier unbenutzt, könnte aber die Höhe angeben.

Das kann man leicht nachvollziehen wenn man
             0.34656683 mit 60 multipliziert
bzw.     0.00961550 mit 60 multipliziert.

Bleiben die "Preisfragen":
Warum liegt die aufgezeichnete Strecke teilweise neben den Google-Straßen?
zu sehen am Beispiel "Bressuire-Ring"
Wer oder Was ist hier ungenau? Die GPS-Mouse-Daten oder die Google-Straßen?

Jonathan Bohmer im Dezember 2007