\title{QLandkarte}
\author{by Oliver Eichler}
\maketitle

There are many great open source tools like GPSBabel\footnote{\url{http://www.gpsbabel.org}}
and GPSMan\footnote{\url{http://www.ncc.up.pt/gpsman/}} to manage
and manipulate your private geo data, but none of them
makes use of Garmin's proprietary vectorized maps. QLandkarte fills
in the gap and lets you visualize these maps together with the geo
data from your Garmin GPS receiver. It uses Troll Tech's Qt 4.2 library as the
GUI toolkit and the Proj4 library for all 2D projections. 

\begin{figure}[h]
	\includegraphics[width=.8\columnwidth]{project_spotlight/eichler/shot1}
	\caption{\label{fig:QLandkarte-after-startup}QLandkarte after start-up}
\end{figure}



\section{Features}
\begin{itemize}
	\item Supported devices:
	\begin{itemize}
		\item GPSMap 60CS, 60Cx, 60CSx
		\item eTrex Legend C
	\end{itemize}
	\item Import map collections (needs {*}.tdb file, basemap and map tiles)
	\item Load single map tiles ({*}.img Format)
	\item Display map and object information close to cursor
	\item Search for places via Google Maps
	\item Search for geocaches via www.opencaching.de
	\item Maps:
	\begin{itemize}
		\item Upload maps to device
		\item Download map selection from device
		\item Load / save map selection from / to GPX files
	\end{itemize}
	\item Waypoints:
	\begin{itemize}
		\item Upload / download waypoints 
		\item Create / move / edit waypoints
		\item Load / save waypoints from / to GPX files
	\end{itemize}
	\item Tracks:
	\begin{itemize}
		\item Download tracks
		\item View track information and elevation profile
		\item Combine / split tracks
		\item Purge / remove track points
		\item Load / save tracks from / to GPX files
	\end{itemize}
	\item Print maps to PDF or paper
\end{itemize}

\section{Overview}



Figure \ref{fig:QLandkarte-after-startup} shows QLandkarte right
after program start. Function and cursor modes can be switched by
keyboard or mouse selection in the top left menu. User data will be
listed in the tabs below. 

There are three main function modes: maps, waypoints and tracks.
The key assignment in each of these modes is displayed in Figure \ref{fig:Function-Modes}.
Keys F1 to F4 have static functions assigned that let you navigate
your map. A dynamic zoom is done by scrolling the mouse wheel.

Each main mode has its own dialog in the tab widget, listing the
available user data. Selected data can be removed with the DEL key
as a general rule.

\begin{figure}[h]
	\includegraphics[width=1\columnwidth]{project_spotlight/eichler/shot2_1-3}
	\caption{\label{fig:Function-Modes}Function Modes}
\end{figure}

\subsection{Map Mode}

In 'Map Mode' the current map collection can be selected from the
combo box at the tab widget's top. To upload map tiles to the device
they have to be selected by point-and-click in the map view area.
Selected tiles from all collections are listed in the tree widget.

\subsection{Waypoint Mode}

Figure \ref{fig:Waypoint-Properties} presents the waypoint properties
dialog. Next to the usual fields like symbol, name and position, a
distance for proximity alarms and a link to a web page can be given.
The link is active and will open a browser. 

\begin{figure}[h]
	\includegraphics[width=1\columnwidth]{project_spotlight/eichler/shot3}
	\caption{\label{fig:Waypoint-Properties}Waypoint Properties}
\end{figure}

A double click in the waypoint list will center the map around the
selected waypoint. The 'Move Waypoint' mode is quite complex and should
get special attention. A left button click on a waypoint will glue
it to the cursor. Additionally a rubber band will span between the
initial position and the current one, displaying the distance together
with the forward and backward azimuths. See Figure \ref{fig:Moving-a-Waypoint}.
In this state it is possible to switch the mode to the map navigation
functions, allowing the user to move the map to the desired destination
area. Once back in the 'Move Waypoint' mode the waypoint can be dropped
by a second left button click or the operation is escaped by a right
button click.

\begin{figure}[h]
	\includegraphics[width=1\columnwidth]{project_spotlight/eichler/shot4}
	\caption{\label{fig:Moving-a-Waypoint}Moving a Waypoint}
\end{figure}

\subsection{Track Mode}

In Figure \ref{fig:Track-Info-View} QLandkarte operates in 'Track
Mode' . The track info view has been raised. A double click in the
track list will zoom the map view to fit the selected track. The track
is displayed as bread crumbs on the map, as elevation profile and
as table. All three views are linked together, thus if a track point
is selected in one of them, it will get highlighted in the other ones,
too. The visibility of track points can be toggled with the DEL key
in the table view. This will gray shade the points in the table and
prevent them from adding to the the track. 

Multiple selected tracks can be combined into a new one. The current
selected track can be split at any point. QLandkarte will not destroy
the original data. It will create two new tracks as copy of the original
one.

\begin{figure}[h]
	\includegraphics[width=1\columnwidth]{project_spotlight/eichler/shot5}
	\caption{\label{fig:Track-Info-View}Track Info View}
\end{figure}

\section{Development}

The project has reached a stage satisfying the original itches of
the author. This does not necessarily imply that it is a mature and
full featured application. 

QLandkarte still misses support for many Garmin devices. It provides
a plug-in system for devices to allow a decentralized development
by several unit owners. Writing a driver is easier than it sounds.
There is a small tutorial on QLandkarte's homepage. 

Another vacant task would be porting QLandkarte to other platforms
like Windows or Mac. It shouldn't be too much of a problem for any
little endian platform. However there has to be much work done for
big endian platforms as the IMG data is stored in little endian format
and the decoder addresses the data directly for performance sake.
Thus a big endian port should compensate the performance penalty for
byte shifting by optimizing the decoder code.

Interested developers are welcome to discuss all this and send their
patches on the QLandkarte's user mailing list.\footnote{\url{http://sourceforge.net/mail/?group\_id=183501}}

\address{Dipl.-Ing. (FH) Oliver Eichler\\
  The author studied Electronic Engineering \\
in Regenburg and since 1997 has worked\\
as a freelancer mainly focused on digital subscriber lines.\\
 \url{http://qlandkarte.sourceforge.net}\\
  \email{oliver.eichler AT gmx.de}
}

%%% Local Variables:
%%% mode: latex
%%% TeX-master: main_document.tex
%%% End:

