\chapter{Verarbeiten von GPS - Daten}
\label{handling_gps_data_de}
\subsubsection{Aufgabenstellung}
GPS steht für Global Positioning System. GPS ist ein System zur 
drei-dimensionalen Positionsbestimmung mittels räumlicher Bogenschläge
 zu mindestens vier Satelliten mit bekannten Positionen.
Die bekanntesten sind die Satelliten-Systeme navstar-gps (USA) 
und glonass (GUS) sowie in Zukunft auch gallileo (EU).
Es gibt mehrere Anbieter für sogenannte Handheld bzw. Handy - 
GPS-Empfänger am Markt, darunter Casio, Garmin,
Magellan, Rand Mc Nelly. Die folgenden Programme wurden in
Verbindung mit einem Garmin GPS II betrieben.
Dieser Empfänger wurde mir freundlicherweise von der Fachhochschule
Oldenburg/Ostfriesland/Wilhelmshaven zur Verfügung gestellt.

\subsubsection{Beispieldaten}
Die in diesem Kapitel benutzten Daten werden durch die GPS Empf"anger
w"ahrend des Gebrauches erzeugt.

%\subsubsection{Weitere Verwendung der Beispieldaten}

\section{Programm gpspoint}
\label{handling_gps_data_de:gpspoint}

Das Programm gpspoint wurde in der Version 1.010708 unter einer Debian GNU/Linux
Installation (woody) verwendet.\\
 

Das Programm gpspoint wird direkt von der Kommandozeile aus
betrieben. Es ermöglicht das Ein- und Auslesen von Waypoints
(vorgegebene oder im Feld erzeugte koordinierte Punkte), Routes (aus
Waypoints zusammengesetzte Routen, deren einzelne Waypoints
nacheinander vor- oder rückwärts abgelaufen werden) oder Tracks
(automatische Wegprotokollierung durch Routen). Weiter können im
NEMA - Modus die aktuell empfangenen GPS-Daten im Roh-Zustand
laufend ausgegeben werden und so von anderen Anwendungen oder
Geräten verwendet werden.

\paragraph{Vorbereitungen}
Der GPS-Empfänger wird per seriellem Kabel
(RS232) mit dem Rechner verbunden. "Ublicherweise gibt es die
sogenannten COM-Schnittstellen oder COM-Ports 1 und 2. In einem
Linux-System k"onnen diese Schnittstellen direkt über
 {\tt /dev/ttyS0} f"ur COM 1 und {\tt /dev/ttyS1} f"ur COM 2
angesprochen werden. 
Am Garmin wird als Interface die Option GRMIN/GRMIN (GPS II)
gew"ahlt.


\paragraph{Tipps}
\begin{itemize}
 \item Um die Kommunikation zwischen Garmin und Rechner auf
 grundlegenste Art und Weise zu "uberpr"ufen, kann man wie folgt
 vorgehen. Das Garmin Interface ist auf NMEA/NMEA zu
 stellen. Hierdurch werden die empfangenen Daten im NMEA Protokoll
 an die Schnittstelle weitergereicht, auch wenn der Garmin keine 
 Satelliten empfängt, werden weiterhin "`leere"'\ Protokollpakete an
 die Schnittstelle gesendet. Um sich diese Pakete am Bildschirm
 anzeigen zu lassen, gibt man an der Kommandozeile den Befehl {\tt 
 cat /dev/ttyS1} für einen an dem COM2-Port angeschlossenen Garmin
 ein. Die auf dem Bildschirm ausgegebenen Datensätze sollten
 "ahnlich den folgenden sein. Hierdurch lässt sich sozusagen die
 elektrische Verbindung zwischen Garmin und Computer testen.
\item Sollte der Aufruf {\tt cat /dev/ttyS1/} mit einem
 {\em bash: /dev/ttyS1: Keine Berechtigung} beschieden werden,
 so sind die Zugriffsrechte für den 
 Benutzer nicht ausreichend, um auf die serielle Schnittstelle
 zuzugreifen. 
\end{itemize}

\nomenclature{\bf NMEA}{\input{glossary-de/glossary-nmea-de}}

\begin{kommando}
\begin{verbatim}
bash-2.05$ cat /dev/ttyS1
0,334,00*7B
$PGRME,,M,,M,,M*00
$GPGLL,,,,,082435,*58
$PGRMZ,,,*7E
$PGRMM,WGS 84*06
$GPBOD,,T,,M,,*47
$GPRTE,1,1,c,0*07
$GPRMC,082436,V,,,,,,,051001,,*3F
$GPRMB,V,,,,,,,,,,,,V*66
$GPGGA,082436,,,,,0,00,,,M,,M,,*6D
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,3,1,12,03,00,087,00,04,58,252,00,05,00,307,00,06,00,356,00*7F
$GPGSV,3,2,12,07,00,224,00,08,03,190,00,09,00,283,00,22,13,065,00*7A
$GPGSV,3,3,12,23,00,288,00,24,38,304,46,27,28,176,00,30,00,334,00*79
$PGRME,,M,,M,,M*00
$GPGLL,,,,,082437,*5A
$PGRMZ,,,*7E
$PGRMM,WGS 84*06
$GPBOD,,T,,M,,*47
$GPRTE,1,1,c,0*07
$GPRMC,082438,V,,,,,,,051001,,*31
$GPRMB,V,,,,,,,,,,,,V*66
$GPGGA,082438,,,,,0,00,,,M,,M,,*63
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,3,1,10,03,00,087,00,04,58,252,00,06,00,356,00,07,00,224,00*7F
$GPGSV,3,2,10,08,03,190,00,09,00,283,00,10,01,292,00,23,00,288,00*70
\end{verbatim}\\[-\bigskipamount]\begin{verbatim}
$GPGSV,3,3,10,24,38,304,46,30,00,334,00,,,,,,,,*77
$PGRME,,M,,M,,M*00
$GPGLL,,,,,082439,*54
$PGRMZ,,,*7E
\end{verbatim}
\end{kommando}

\paragraph{Programmaufruf}

Der einfache Aufruf {\tt ./gpspoint} an der Kommandozeile
gibt den Hilfe-Bildschirm aus, der auch "uber {\tt ./gpspoint
-h} erzeugt werden kann.

\begin{kommando}
\begin{verbatim}
bash$ ./gpspoint   

*****************************************************************
usage : 

-g               Garmin mode 
-n               NMEA mode 
-d device        Device eg: -d /dev/ttyS0
-s bauds         line Speed; it is save not to use this option,
                 there are defaults

-dw filename     Download Waypoints from gps and
                 write them to filename
-dr filename     Download Routes 
-dt filename     Download Tracks 
-da filename     Download All, Waypoints/Routes/Tracks 
-uw filename     Upload Waypoint to gps
-ur filename     Upload Routes 
-ut filename     Upload Tracks 
-ua filename     Upload All, Waypoints/Routes/Tracks 

-p       display current position 
-o       Turn Off Device 
-h       Help 
-a       about 

 please have a look at the man page, available in german and
                         english !
*****************************************************************
\end{verbatim}
\end{kommando}

\subsection{Verwalten von GPS-Daten}

Das Auslesen von Waypoints geschieht durch den Kommandozeilenaufruf
{\tt ./gpspoint -g -d /dev/ttyS1 -dw /tmp/gpspoint/heiko}.
Dabei bezeichnen die Flaggen (Optionen) {\tt -g}, wie aus dem Startbildschirm
ersichtlich, den Programmablauf im sogenannten Garmin - Modus, {\tt
-d} gibt die COM Schnittstelle an, {\tt -dw} liest die waypoints
aus dem Speicher des Garmin aus und sichert sie in der Datei {\em /tmp/gpspoint/heiko}.

\begin{kommando}
\begin{verbatim}
bash$ ./gpspoint -g -d /dev/ttyS1 -dw /tmp/gpspoint/heiko

********************* Garmin Device Info *********
           Garmin Product ID: 73
     Garmin software version: 207
  Garmin Product description: GPS II+ SOFTWARE  2.07 
     Link Protocol: 1
  Command Protocol: 10
 Waypoint Protocol: 100
     Waypoint Data: 103
    Route Protocol: 200
      Route Header: 201
        Route Data: 103
    Track Protocol: 300
      Track Header: 0
        Track Data: 300
      Prx Protocol: 0
          Prx Data: 0
      Alm Protocol: 500
         Alm Data : 501
******************************************
    date: 2001-10-04
    time: 14:56:39
******************************************
serial port: /dev/ttyS1
serial port speed: default
mode : garmin
Getting Waypoints, 10 packets 100% done 
Writing Waypoints to /tmp/gpspoint/heiko, done 
****************************************
 good bye 
\end{verbatim}
\end{kommando}
 
Die so ausgelesenen 10 Punkte werden in einer Datei mit folgender
Form gespeichert. Der "`Lattenzaun \#"'\ zu Beginn der Headerzeilen
kommentiert diese aus, so das sie nicht beachtet werden. 
Zum "`Hochladen"'\ von Waypoints in den Garmin muss die Koordinatenliste
in der gleichen Form vorliegen.
Auf die gleiche Weise verf"ahrt man beim Verwalten der Tracks und
Routes.\\

\begin{kommando}
\begin{verbatim}
#NOTE: the gpd-filestructure has slightly changed 
#if you have gpspoint version < 1.010622 upgrade 
#
#GPSPOINT DATA FILE
#gpspoint version: 1.010708
#http://scampi.physik.uni-konstanz.de/~tschank/gpspoint
\end{verbatim}\\[-\bigskipamount]\begin{verbatim}
#GPS Device : GPS II+ SOFTWARE  2.07 
#download time (local) : Thursday 04 October 2001 15:12 
#waypoints 

type="waypointlist"
type="waypoint" latitude="52.2749"  longitude="8.04706"  name="001   "
comment="02-OCT-01 10:54" symbol="dot" display_option="symbol+name"

type="waypoint" latitude="52.27457"  longitude="8.04646"  name="002   "
comment="02-OCT-01 10:55" symbol="dot" display_option="symbol+name"  

type="waypoint" latitude="52.2749"  longitude="8.04555"  name="003   "
comment="02-OCT-01 10:56" symbol="dot" display_option="symbol+name"  

type="waypoint" latitude="52.27522"  longitude="8.04531"  name="004   "
comment="02-OCT-01 10:56" symbol="dot" display_option="symbol+name"  

type="waypoint" latitude="52.2759"  longitude="8.04475"  name="005   "
comment="02-OCT-01 10:57" symbol="dot" display_option="symbol+name"  

type="waypoint" latitude="52.27597"  longitude="8.0441"  name="006   "
comment="02-OCT-01 10:58" symbol="dot" display_option="symbol+name"  

type="waypoint" latitude="52.27621"  longitude="8.03812"  name="007   "
comment="02-OCT-01 11:12" symbol="dot" display_option="symbol+name"  

type="waypoint" latitude="52.27575"  longitude="8.03741"  name="008   "
comment="02-OCT-01 11:13" symbol="dot" display_option="symbol+name"  

type="waypoint" latitude="52.27517"  longitude="8.0361"  name="009   "
comment="02-OCT-01 11:14" symbol="dot" display_option="symbol+name"  

type="waypoint" latitude="52.27501"  longitude="8.03234"  name="010   "
comment="02-OCT-01 11:17" symbol="dot" display_option="symbol+name" 
\end{verbatim}
\end{kommando}

\subsection{Ausgabe der aktuellen Position}

Für diese Option mu"s der Garmin in das Interface {\em NMEA/NMEA}
geschaltet werden, da sie momentan nur hier für dieses Protokoll
implementiert ist. Der Aufruf an der Kommandozeile ist
{\tt ./gpspoint -n -d /dev/ttyS1 -p}.
Die Ausgabe erfolgt in geographischen Koordinaten.

\begin{kommando}
\begin{verbatim}
bash-2.05$ ./gpspoint -n -d /dev/ttyS1 -p
 
***************** NMEA Interface *******
serial port: /dev/ttyS1
\end{verbatim}\\[-\bigskipamount]\begin{verbatim}
serial port speed: default
mode : nmea
latitude 52.2747   longitude 8.0475
****************************************
 good bye
\end{verbatim}
\end{kommando}

\section{Programm GPSMan}\label{handling_gps_data_de:gpsman}

Dieses Programm zum Verwaltung und Bearbeitung von GPS-Daten
verfügt über eine GUI und unterst"utzt laut
Homepage\footnote{http://www.ncc.up.pt/~mig/gpsman.html}
Empf"anger von Garmin und Lowrance. Das Tutorial stützt sich auf
Erfahrungen, die mit den Garmin-Empfänger GPS II+ gemacht wurden.

Es wurde GPSMan Version 5.4 unter
einer Debian GNU/Linux Installation (woody) verwendet.

\subsection{Benutzung des Programmes}
Ist eine Verbindung mit dem Programm gpspoint zustande gekommen, so
sollte GPSMan (GPSManager) relativ problemlos zum Laufen zu bringen
sein. Nachdem man GPSMan in das gew"unschte Verzeichniss entpackt hat,
mu"s das Startskript {\em gpsman.tcl} angepasst werden. Dies erfolgt mit
einem Editor nach Wahl (im Beispiel {\em vim}). Die folgenden Zeilen sind auf die eigene
Installation abzustimmen:

\begin{kommando}
\begin{verbatim}
bash-2.05$ vim gpsman.tcl

set LANG deutsch

# otherwise the default is
set DEFSPORT /dev/ttyS1

# path to directory containing user data
set USERDIR /spare/gisdata/gps/gpsman/gpsman-5.4/.gpsman-dir

# path to directory containing program files
set SRCDIR /spare/gisdata/gps/gpsman/gpsman-5.4/gmsrc
\end{verbatim}
\end{kommando}

Eine deutschsprachige Nutzerumgebung w"ahlt man mit {\em set LANG deutsch}.
Die Zeile {\em set DEFSPORT /dev/ttyS1} bezeichnet die vorgew"ahlte
serielle Schnittstelle, in diesem Fall COM2. Diese Einstellung kann
im Programm ge"andert werden.
Durch {\em set USERDIR /spare/gisdata/gps/gpsman/gpsman-5.4/.gpsman-dir}
wird der Pfad deklariert, in dem GPSMan ein Verzeichniss mit Nutzerdaten
anlegen kann.\newline
In {\em set SRCDIR /spare/gisdata/gps/gpsman/gpsman-5.4/gmsrc}
schlie"slich wird der Pfad angegeben, in dem sich das 
Verzeichniss {\em gmsrc} befindet.
Dies ist "ublicherweise das Verzeichniss, in das GPSMan
entpackt wurde. Sind diese Einstellungen gemacht, so kann das
Startskript {\em gpsman.tcl} im GPSMan Installationsverzeichniss
durch Eingabe von {\tt ./gpsman.tcl} an der Kommandozeile
aufgerufen werden. Jetzt sollten drei Fenster erzeugt werden, mit denen
GPSMan im folgenden bedient wird.

\paragraph{Prüfen der Verbindung}
Im Fenster {\em GPS Empf"anger} (Abb. \thechapter.\ref{gpsman_empfaenger}) kann
die Verbindung zwischen Rechner und Garmin "uberpr"uft werden, indem
man zuerst das Protokoll {\em Garmin} im Protokollmen"u ausw"ahlt.
Ein weiterer Mausklick auf die Schaltfl"ache {\em offline}
"uberpr"uft nun die Verbindung und sollte als Ergebnis ein kleines
Fenster mit der Meldung {\em Verbindung ok} erzeugen.
Die gerade benutzte Schaltfläche ist nun mit einem gr"unen
Schriftzug {\em online} belegt.\\

\begin{centering}
\Fig{
\includegraphics[width=0.8\textwidth]{gps-data/gpsman-empfaenger.eps}}
{Screenshot GPSMan Empf"anger}
{GPSMan GPS Empf"anger mit "uberpr"ufter Verbindung zum Garmin GPS II+}\label{gpsman_empfaenger}
\end{centering}

\subsection{Verwalten von Daten}
Sind im Garmin Wegpunkte, Routen, Tracks oder Gruppen gespeichert, so
können sie im Bildschirm {\em GPS Empf"anger} unter der "Uberschrift
{\em Empfangen} aus dem Garmin abgerufen werden. Hat man den
Checkbutton {\em Zeige Elemente in der Karte} gesetzt, so werden die
importierten Elemente in dem Hauptfenster angezeigt (Abb. \thechapter.\ref{gpsman_hauptfenster}). Eine Listenansicht wird in {\em GPSManager: Listen}
ausgegeben (Abb. \thechapter.\ref{gpsman_listen}). 
 
\begin{centering}
\Fig{
\includegraphics[width=0.8\textwidth]{gps-data/gpsman-listen.eps}}
{Screenshot GPSMan Listen}
{GPSMan GPS Listen mit importierten Wegpunkten}\label{gpsman_listen} 
\end{centering}\\

\begin{centering}
\Fig{
\includegraphics[width=0.8\textwidth]{gps-data/gpsman-hauptfenster.eps}}
{Screenshot GPSMan Hauptfenster}
{GPSMan GPS Hauptfenster mit importierten Wegpunkten}\label{gpsman_hauptfenster}
\end{centering} 

\subsection{Anzeigen und Speichern von Echtzeitdaten}

Mit GPSMan hat man die M"oglichkeit in Echtzeit die ermittelten
Koordinaten in einem propriet"aren Garmin-Format
(Abb. \thechapter.\ref{gpsman_echtzeit}) oder im NMEA-GPS-Datenformat
(Abb. \thechapter.\ref{gpsman_echtzeitnmea}) direkt in den Computer zu "ubernehmen.
Nachdem am Garmin und im GPS Manager ein "ubereinstimmendes Protokoll
ausgew"ahlt wurde, wird unter der "Uberschrift {\em Echtzeitdaten} die
Aufzeichnung begonnen. Mit {\em Aufzeichnung laden} wird die
Visualisierung gestartet. In dem Fenster {\em Echtzeitdaten} kann
per Schieberegler das Aufzeichnungsintervall ver"andert werden. Ist
der Empf"anger in Bewegung, k"onnen mit einem Mausklick auf Animation
die bisher aufgezeichneten Datens"atze der Reihe nach im
Hauptfenster angezeigt werden.\\

\begin{centering}
\Fig{
\includegraphics[width=0.8\textwidth]{gps-data/gpsman-echtzeitdaten.eps}}
{Screenshot GPSMan Echtzeitdatenerfassung Garmin}
{GPSMan Echtzeitdatenerfassung im Garmin Format}\label{gpsman_echtzeit}
\end{centering}\\

\begin{centering}
\Fig{
\includegraphics[width=0.8\textwidth]{gps-data/gpsman-echtzeitdatennmea.eps}}
{Screenshot GPSMan Echtzeitdatenerfassung NMEA}
{GPSMan Echtzeitdatenerfassung im NMEA\label{gpsman_echtzeitnmea}
Format}
\end{centering}

\subsection{Erstellen von Routen}
Im Fenster {\em GPS Manager: Listen} k"onnen Wegpunkte, Routen,
Tracks und Gruppen geladen und gesichert werden. Weiter k"onnen aus
Wegpunkten Routen zusammengestellt werden oder aus Tracks Routen
ausgeschnitten werden.
Wird im Hauptfenster eine georeferenzierte Karte angezeigt, so können
in ihr Wegpunkte markiert und diese im {\em GPS Manager: Listen} zu einer
Route zusammengestellt werden die dann in den Garmin importiert
werden kann.


