311 |
andreas |
1 |
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
2 |
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
|
283 |
andreas |
3 |
<!ENTITY sportwatcher "<application>SportWatcher 0.7</application>">
|
261 |
andreas |
4 |
<!ENTITY kappname "&sportwatcher;"><!-- Do *not* replace kappname-->
|
|
|
5 |
<!ENTITY package "kde-module"><!-- kdebase, kdeadmin, etc -->
|
|
|
6 |
<!ENTITY % addindex "IGNORE">
|
|
|
7 |
<!ENTITY % German "INCLUDE"><!-- change language only here -->
|
|
|
8 |
|
|
|
9 |
]>
|
|
|
10 |
|
|
|
11 |
<!-- XML file was created by LyX 1.6.3
|
|
|
12 |
See http://www.lyx.org/ for more information -->
|
|
|
13 |
<book lang="&language;">
|
|
|
14 |
<bookinfo>
|
|
|
15 |
<title>Das Handbuch zu &sportwatcher;</title>
|
|
|
16 |
|
|
|
17 |
<authorgroup>
|
|
|
18 |
<author>
|
|
|
19 |
<firstname>Andreas</firstname>
|
|
|
20 |
<othername></othername>
|
|
|
21 |
<surname>Theofilu</surname>
|
|
|
22 |
<affiliation>
|
|
|
23 |
<address><email>andreas@theosys.at</email></address>
|
|
|
24 |
</affiliation>
|
|
|
25 |
</author>
|
|
|
26 |
</authorgroup>
|
272 |
andreas |
27 |
|
261 |
andreas |
28 |
<copyright>
|
|
|
29 |
<year>2007</year>
|
|
|
30 |
<year>2008</year>
|
|
|
31 |
<year>2009</year>
|
|
|
32 |
<holder>Andreas Theofilu</holder>
|
|
|
33 |
</copyright>
|
|
|
34 |
<!-- Translators: put here the copyright notice of the translation -->
|
|
|
35 |
<!-- Put here the FDL notice. Read the explanation in fdl-notice.docbook
|
|
|
36 |
and in the FDL itself on how to use it. -->
|
|
|
37 |
<legalnotice>&FDLNotice;</legalnotice>
|
|
|
38 |
|
283 |
andreas |
39 |
<date>2009-09-18</date>
|
|
|
40 |
<releaseinfo>0.7</releaseinfo>
|
261 |
andreas |
41 |
|
|
|
42 |
<abstract>
|
|
|
43 |
<para>&sportwatcher; ist ein Programm zum Auslesen der Daten aus einem Garmin Forerunner. Unterstützt werden alle GPS-Sportuhren, die über einen USB-Anschluß verfügen, wie der Garmin Forerunner 305.</para>
|
|
|
44 |
</abstract>
|
|
|
45 |
|
|
|
46 |
<keywordset>
|
|
|
47 |
<keyword>KDE</keyword>
|
|
|
48 |
<keyword>SportWatcher</keyword>
|
|
|
49 |
<keyword>Garmin</keyword>
|
|
|
50 |
<keyword>GDAL</keyword>
|
283 |
andreas |
51 |
<keyword>Mapnik</keyword>
|
261 |
andreas |
52 |
</keywordset>
|
|
|
53 |
|
|
|
54 |
</bookinfo>
|
272 |
andreas |
55 |
<chapter id='cha.Einleitung' >
|
|
|
56 |
<title>Einleitung<!-- anchor id="cha.Einleitung" --></title>
|
|
|
57 |
<para>&sportwatcher; ist in erster Linie ein Programm zum Auslesen von diversen GPS-Empfängern. Ich habe das Programm entwickelt als ich festgestellt habe, dass es für den von mir erworbenen Garmin Forerunner305 keine unter Linux lauffähige Software gibt. Da ich ausschließlich Linux verwende, kam das einzige unterstützte Betriebssystem Windows natürlich nicht in Frage. Also habe ich mich mit diesem, speziell für sportliches Training geeigneten GPS-Empfänger, etwas näher beschäftigt. Wie die meisten GPS-Empfänger von Garmin, verwendet auch dieser das NMEA-Protokoll zur Datenübertragung. Zu dem fand ich (eher zufällig) eine Bibliothek von "Dave Bailey" (<dave <at> daveb <dot> net>), welche einen Forerunner305 auslesen konnte. Den Sourcecode habe ich, mit freudlicher Genehmigung von Dave, als Basis für &sportwatcher; verwendet. Dadurch ist &sportwatcher; nun in der Lage, speziell den Garmin Forerunner305 und alle mit ihm kompatiblen GPS-Empfänger auszulesen.</para><sect1 id='sec.Untersttzte-GPS-Empfnger' >
|
|
|
58 |
<title>Unterstützte GPS-Empfänger<!-- anchor id="sec.Untersttzte-GPS-Empfnger" --></title>
|
283 |
andreas |
59 |
<para>Grundsätzlich wird jeder GPS-Empfänger unterstützt, welcher über das NMEA-Protokoll verfügt und über eine USB-Schnittstelle verfügt. Derzeit getestet sind jedoch nur folgende Geräte:</para><itemizedlist>
|
|
|
60 |
<listitem><para>Garmin Forerunner305</para></listitem><listitem><para>Garmin Forerunner205</para></listitem></itemizedlist><para>Wenn Sie ein anderes Gerät haben, welches mit &sportwatcher; funktioniert, dann senden Sie bitte ein E-Mail an: andreas <at> theosys <dot> at.</para>
|
|
|
61 |
<note><para>Derzeit nicht unterstützt werden Geräte, welche einen ANT-Stick zur drahtlosen Datenübertragung verwenden. Leider hat Garmin das dafür verwendete Protokoll bisher nicht freigegeben, weshalb, bis auf Weiteres, keine Unterstützung möglich ist.</para></note></sect1></chapter><chapter id='cha.Installation' >
|
272 |
andreas |
62 |
<title>Installation<!-- anchor id="cha.Installation" --></title>
|
|
|
63 |
<para>&sportwatcher; ist in C++ für die Desktopoberfläche KDE geschrieben. Die Entwicklung fand ausschließlich unter Linux statt, wodurch die GNU Utilities ausgiebig verwendet wurden. <emphasis>SportWatcher ist open source!</emphasis> Das bedeutet, dass der Quellcode des Programms frei zugänglich ist. Der Quellcode, und damit das gesamte Programm, steht unter der <emphasis>GNU General Public License Version 3</emphasis>.</para><sect1 id='sec.Download' >
|
|
|
64 |
<title>Download<!-- anchor id="sec.Download" --></title>
|
|
|
65 |
<para>&sportwatcher; ist sowohl als Quellcode, wie auch als Binärpaket für einige wenige Linuxdistributionen verfügbar. Wenn Sie den Sourcecode herunter geladen haben, benötigen Sie neben Linux oder einem anderen *NIX-System, einen C++-Compiler! Laden Sie den stabilen Quellcode oder ein Binärpaket von einem der folgenden Server:</para><itemizedlist>
|
261 |
andreas |
66 |
<listitem><para>Sourceforge: <ulink url="http://sourceforge.net/projects/sportwatcher/">Sourceforge</ulink></para></listitem><listitem><para>TheoSys: <ulink url="http://www.theosys.at/download">TheoSys</ulink></para></listitem></itemizedlist><para>Wenn Sie an der Entwicklung von SportWatcher mitwirken wollen, oder auch nur den garantiert neuesten Quellcode haben wollen um auch die allerletzten, nicht getesteten Funktionen, zur Verfügung zu haben, dann können Sie den Quellcode auch aus einem der <ulink url="http://subversion.tigris.org/">Subversion</ulink>Archive herunterladen. Beim Quellcode in den Subversion-Archiven, handelt es sich um Entwicklerversionen! Es gibt keine Garantie, dass sich der Quellcode überhaupt übersetzen läßt! Geben Sie auf der Kommandozeile (Shell) einen der folgenden Befehle ein:</para><screen>
|
|
|
67 |
<![CDATA[# svn checkout https://sportwatcher.svn.sourceforge.net/svnroot/sportwatcher
|
|
|
68 |
]]></screen><para>oder</para><screen>
|
|
|
69 |
<![CDATA[# svn checkout svn://www.theosys.at/sportwatcher/trunk
|
272 |
andreas |
70 |
]]></screen><para>Sie können auf das <ulink url="http://www.theosys.at/websvn/listing.php?repname=repos+1&path=/sportwatcher/trunk/&rev=0&sc=0">Repository</ulink> mit dem garantiert aktuellsten Quellcode auch mit Ihrem Browser zugreifen.</para><sect2 id='sec.Bentigte-Komponenten' >
|
|
|
71 |
<title>Benötigte Komponenten<!-- anchor id="sec.Bentigte-Komponenten" --></title>
|
261 |
andreas |
72 |
<para>Um &sportwatcher; erfolgreich übersetzen zu können, benötigen Sie einige Softwarekomponenten, welche zuerst installiert werden müssen:</para><itemizedlist>
|
283 |
andreas |
73 |
<listitem><para><ulink url="http://www.kde.org">KDE 4.1.x</ulink></para></listitem><listitem><para><ulink url="http://www.gdal.org">GDAL 1.5.x</ulink> (optional)</para></listitem></itemizedlist><sect3 id='sec.KDE-4.1.x' >
|
|
|
74 |
<title>KDE 4.1.x<!-- anchor id="sec.KDE-4.1.x" --></title>
|
|
|
75 |
<para>Ab der Version 0.6 benötigt SportWatcher mindestens die Version 4.1.0 von KDE. Mit älteren KDE-Versionen kann der Code nicht mehr übersetzt werden!</para></sect3><sect3 id='sec.GDAL-1.5.x' >
|
|
|
76 |
<title>GDAL 1.5.x<!-- anchor id="sec.GDAL-1.5.x" --></title>
|
272 |
andreas |
77 |
<para>&sportwatcher; ist in der Lage, einen Track mit einer Landkarte zu unterlegen. Diese Funktion wird über die Bibliothek GDAL realisiert. Die Verwendung von GDAL ist jedoch optional. &sportwatcher; kann auch ohne GDAL erfolgreich übersetzt werden. Allerdings fehlt dann die Möglichkeit, Landkarten zu verwenden. Unter Debian testing steht derzeit die Version 1.5.4 von GDAL zur Verfügung (Debian Squeeze im Juli 2009), welche für die Entwicklung von &sportwatcher; verwendet wurde. Unter Ubuntu ist bis einschließlich Version 8.04 LTS (Hardy Heron) nur die Version 1.4.x von GDAL enthalten. Diese und ältere Versionen sind nicht für &sportwatcher; geeignet. Ab Ubuntu 9.04 ist jedoch GDAL 1.5.x enthalten.</para>
|
261 |
andreas |
78 |
<para>Es ist jedoch kein Problem, die neuere Version 1.6.0 zu verwenden. Falls Ihre Distribution bereits über diese neuere Version verfügt, sollte das Übersetzen problemlos möglich sein. </para>
|
|
|
79 |
<para>openSUSE 11.0 stellt GDAL leider gar nicht zur Verfügung. Zwar findet man GDAL als fertiges RPM dafür leicht im Netz, aber es ist nicht leicht die benötigten Abhängigkeiten zu erfüllen. Aus diesem Grund habe ich bei der Version 0.5 von SportWatcher auf die Einbindung von GDAL für openSUSE verzichtet.</para>
|
|
|
80 |
<para>Auch openSUSE 11.1 stellt GDAL nicht zur Verfügung. Dennoch habe ich &sportwatcher; mit GDAL übersetzt. Die von mir verwendeten Versionen können über folgende Links herunter geladen werden: </para><itemizedlist>
|
272 |
andreas |
81 |
<listitem><para><ulink url="http://www.theosys.at/download/gdal-1.6.1-0.pm.1.i586.rpm">gdal-1.6.1-0.pm.1.i586.rpm</ulink></para></listitem><listitem><para><ulink url="http://www.theosys.at/download/geotiff-1.2.5-0.pm.1.i586.rpm">geotiff-1.2.5-0.pm.1.i586.rpm</ulink></para></listitem><listitem><para><ulink url="http://www.theosys.at/download/libgdal1-1.6.1-0.pm.1.i586.rpm">libgdal1-1.6.1-0.pm.1.i586.rpm</ulink></para></listitem><listitem><para><ulink url="http://www.theosys.at/download/libgdal-devel-1.6.1-0.pm.1.i586.rpm">libgdal-devel-1.6.1-0.pm.1.i586.rpm</ulink></para></listitem><listitem><para><ulink url="http://www.theosys.at/download/libgeos1-3.1.0-0.pm.1.i586.rpm">libgeos1-3.1.0-0.pm.1.i586.rpm</ulink></para></listitem><listitem><para><ulink url="http://www.theosys.at/download/libgeos-devel-3.1.0-0.pm.1.i586.rpm">libgeos-devel-3.1.0-0.pm.1.i586.rpm</ulink></para></listitem><listitem><para><ulink url="http://www.theosys.at/download/libgeotiff1-1.2.5-0.pm.1.i586.rpm">libgeotiff1-1.2.5-0.pm.1.i586.rpm</ulink></para></listitem><listitem><para><ulink url="http://www.theosys.at/download/libgeotiff-devel-1.2.5-0.pm.1.i586.rpm">libgeotiff-devel-1.2.5-0.pm.1.i586.rpm</ulink></para></listitem></itemizedlist></sect3></sect2></sect1><sect1 id='sec.CompilierenInstallieren' >
|
|
|
82 |
<title>Compilieren / Installieren<!-- anchor id="sec.CompilierenInstallieren" --></title>
|
|
|
83 |
<sect2 id='sec.Installieren-der-Binrdistribution' >
|
|
|
84 |
<title>Installieren der Binärdistribution<!-- anchor id="sec.Installieren-der-Binrdistribution" --></title>
|
261 |
andreas |
85 |
<para>Nach dem Herunterladen des Pakets, öffnen Sie eine Shell und werden Sie root. Dann tippen Sie folgenden Befehl ein:</para><screen>
|
|
|
86 |
<![CDATA[]]># dpkg -i sportwatcher_<emphasis>X.X-x</emphasis>.i386.deb
|
|
|
87 |
<![CDATA[]]></screen><para>oder</para><screen>
|
|
|
88 |
<![CDATA[]]># dpkg -i sportwatcher_<emphasis>X.X-x</emphasis>.amd64.deb
|
|
|
89 |
<![CDATA[]]></screen><para>oder </para><screen>
|
|
|
90 |
<![CDATA[]]># dpkg -i sportwatcher_<emphasis>X.X-x</emphasis>_ubuntu_i386.deb
|
|
|
91 |
<![CDATA[]]></screen><para>oder </para><screen>
|
|
|
92 |
<![CDATA[]]># rpm -ivh sportwatcher-<emphasis>X.X-x</emphasis>.i586.rpm
|
272 |
andreas |
93 |
<![CDATA[]]></screen><para>Wobei <emphasis>X.X-x</emphasis> für die Versionsnummer steht und in etwa wie 0.6-1 aussehen kann. Nach der erfolgreichen Installation, können Sie das Programm sofort verwenden.</para></sect2><sect2 id='sec.Compilieren' >
|
|
|
94 |
<title>Compilieren<!-- anchor id="sec.Compilieren" --></title>
|
261 |
andreas |
95 |
<para>Nach dem Sie den Source heruntergeladen haben und in ein Verzeichnis entpackt haben, wechseln Sie in dieses Verzeichnis. Tippen Sie folgenden Befehl auf der Kommandozeile ein: </para><screen>
|
|
|
96 |
<![CDATA[$ mkdir build
|
|
|
97 |
$ cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
|
272 |
andreas |
98 |
]]></screen><para>Dieses Programm prüft nun, ob alle benötigten Komponenten installiert sind. Wenn etwas fehlt, bricht das Programm ab und zeigt eine Fehlermeldung an. Die häufigste Ursache für Fehler ist, dass etwas nicht installiert ist, oder die Entwicklerversion eines Softwarepakets nicht installiert ist. Unter Debian sind die Entwicklerversionen mit <paket-<emphasis>dev</emphasis>> gekennzeichnet. Gegebenenfalls müssen Sie ein solches Entwicklerpaket nachinstallieren. </para>
|
261 |
andreas |
99 |
<para>Mit folgendem Befehl starten Sie die Übersetzung des Programms: </para><screen>
|
|
|
100 |
<![CDATA[$ make
|
272 |
andreas |
101 |
]]></screen><para>Auch hier kann noch etwas schief gehen! Auch das liegt zumeist an nicht installierten Softwarepaketen, oder an Paketen mit einer nicht unterstützten Version. Prüfen Sie nach, welche Version <emphasis>Debian Squeeze</emphasis> unterstützt und installieren Sie gegebenenfalls die notwendige Version.</para><sect3 id='sec.Installation-des-Sourcecodes' >
|
|
|
102 |
<title>Installation des Sourcecodes<!-- anchor id="sec.Installation-des-Sourcecodes" --></title>
|
261 |
andreas |
103 |
<para>Soll SportWatcher für alle Benutzer installiert werden, dann sind unbedingt Administratorrechte (root) notwendig. Andernfalls kann das Programm auch in das lokale Verzeichnis installiert werden. Mit &sportwatcher; wird auch eine Datei Namens INSTALL mitgeliefert, in der sich die genaue Beschreibung des Installationsprozesses befindet. Unter Anderem finden Sie dort auch die Beschreibung für die Installation in ein anderes, als das Standardverzeichnis. Um &sportwatcher; für alle Benutzer zu installieren, melden Sie sich als Superuser root an und geben Sie folgenden Befehl auf der Kommandozeile ein:</para><screen>
|
|
|
104 |
<![CDATA[# make install
|
283 |
andreas |
105 |
]]></screen><para>Nach der Installation können Sie das Programm mit <emphasis><command>sportwatcher</command></emphasis> von der Kommandozeile aus aufrufen, oder über das Menü <emphasis><guimenu>Dienstprogramme</guimenu>--><guimenuitem>Sportwatcher</guimenuitem></emphasis> aufrufen (gilt nur für KDE!).</para></sect3></sect2></sect1><sect1 id='sec.Einstellungen-unter-Linux' >
|
272 |
andreas |
106 |
<title>Einstellungen unter Linux<!-- anchor id="sec.Einstellungen-unter-Linux" --></title>
|
283 |
andreas |
107 |
<para>&sportwatcher; greift direkt auf das USB-Port zu, an dem Sie Ihren <hardware>Forerunner 305</hardware> angeschlossen haben. Allerdings fehlen einem normalen Anwender dafür in der Regel die Berechtigungen, so das beim Versuch die Daten aus der Uhr auszulesen, eine Fehlermeldung erscheint. Startet man das Programm jedoch als Benutzer root, funktioniert das Auslesen von Daten einwandfrei. Diesem Problem kann man nun auf zwei Arten begegnen. Man kann SportWatcher immer als <emphasis>root</emphasis> ausführen, wovon ich jedoch dringend abrate, oder man manipuliert einmal die Einstellungen von <emphasis>udev</emphasis> und vergibt die notwendigen Berechtigungen. Im Folgenden wird Schritt für Schritt erklärt, wie man die benötigten Berechtigungen einstellt. </para><sect2 id='sec.Fr-Debian-und' >
|
272 |
andreas |
108 |
<title>Für Debian und (K)Ubuntu<!-- anchor id="sec.Fr-Debian-und" --></title>
|
261 |
andreas |
109 |
<para>Öffnen Sie eine Kommandozeile (Shell) und werden Sie root. Dann tippen Sie ein: </para><screen>
|
|
|
110 |
<![CDATA[# cd /etc/udev/rules.d
|
272 |
andreas |
111 |
# vi z60-garmin.rules
|
283 |
andreas |
112 |
]]></screen><para>Statt <emphasis><command>vi</command></emphasis> können Sie natürlich jeden beliebigen Texteditor verwenden. Tippen Sie nun folgende Zeilen in die neue Datei ein:</para><screen>
|
261 |
andreas |
113 |
<![CDATA[SYSFS{idVendor}=="091e", SYSFS{idProduct}=="0003", MODE="0666"
|
|
|
114 |
ATTRS{idVendor}=="091e", ATTRS{idProduct}=="0003", MODE="0666"
|
272 |
andreas |
115 |
]]></screen><para>Speichern Sie die Datei und starten Sie UDEV mit folgendem Befehl neu:</para><screen>
|
261 |
andreas |
116 |
<![CDATA[# /etc/init.d/udev restart
|
272 |
andreas |
117 |
]]></screen><para>Ab jetzt sollte der direkte Zugriff auf jenes <hardware>USB-Port</hardware> erlaubt sein, an dem Sie Ihren <hardware>Forerunner305</hardware> angeschlossen haben.</para></sect2><sect2 id='sec.Andere-Distributionen' >
|
|
|
118 |
<title>Andere Distributionen<!-- anchor id="sec.Andere-Distributionen" --></title>
|
283 |
andreas |
119 |
<para>Wenn Ihre Linuxdistribution UDEV verwendet, sollte die Beschreibung unter <xref linkend="sec.Fr-Debian-und" /> gelten. Andernfalls fragen Sie Ihren Systemadministrator, oder lesen Sie die Dokumentation über das Berechtigungssystem für Schnittstellen, speziell <hardware>USB-Ports</hardware>.</para></sect2><sect2 id='sec.Es-funktioniert-immer' >
|
272 |
andreas |
120 |
<title>Es funktioniert immer noch nicht<!-- anchor id="sec.Es-funktioniert-immer" --></title>
|
261 |
andreas |
121 |
<para>Falls die obigen Anweisungen keinen Erfolg bringen, prüfen Sie die Vendor- und Produktnummer Ihres <hardware>GPS−Empfängers</hardware>. Falls diese nicht den oben angegebenen entsprechen, setzen Sie die korrekten Nummern ein. Um die Nummern heraus zu bekommen, stecken Sie Ihren <hardware>GPS-Empfänger</hardware> an und tippen Sie folgenden Befehl auf der Befehlszeile ein:</para><screen>
|
|
|
122 |
<![CDATA[$ lsusb
|
272 |
andreas |
123 |
]]></screen></sect2></sect1></chapter><chapter id='cha.Umgang-mit' >
|
|
|
124 |
<title>Umgang mit &sportwatcher;<!-- anchor id="cha.Umgang-mit" --></title>
|
|
|
125 |
<sect1 id='sec.Das-Men-Datei' >
|
|
|
126 |
<title>Das Menü <guimenu>Datei</guimenu><!-- anchor id="sec.Das-Men-Datei" --></title>
|
|
|
127 |
<sect2 id='sec.Daten-einlesen' >
|
|
|
128 |
<title>Daten einlesen<!-- anchor id="sec.Daten-einlesen" --></title>
|
261 |
andreas |
129 |
<para>Bevor &sportwatcher; Ergebnise visulisieren kann, müssen Daten von einem GPS-Empfänger, oder einer Datei, eingelesen werden. SportWatcher stellt zu diesem Zweck, einige Menüpunkte zur Verfügung.</para>
|
|
|
130 |
<screenshot>
|
|
|
131 |
<screeninfo>Darstellung des Dateimenüs</screeninfo>
|
|
|
132 |
<mediaobject>
|
|
|
133 |
<imageobject>
|
|
|
134 |
<imagedata fileref="menuDatei.png" format="PNG"></imagedata>
|
|
|
135 |
</imageobject>
|
|
|
136 |
<textobject>
|
|
|
137 |
<phrase>Menü: Datei</phrase>
|
|
|
138 |
</textobject>
|
|
|
139 |
</mediaobject>
|
272 |
andreas |
140 |
</screenshot><sect3 id='sec.Das-Men-Lese' >
|
|
|
141 |
<title>Der Menüpunkt <guimenuitem>Lese Daten</guimenuitem><!-- anchor id="sec.Das-Men-Lese" --></title>
|
261 |
andreas |
142 |
<para>Der Menüpunkt <guimenuitem>Lese Daten</guimenuitem> dient dazu, die Daten von der Uhr einzulesen. Nach dem Klick auf diesen Menüpunkt, erscheint ein Statusfenster, in dem der Fortschritt des Lesens angezeigt wird.</para>
|
|
|
143 |
<screenshot>
|
|
|
144 |
<screeninfo></screeninfo>
|
|
|
145 |
<mediaobject>
|
|
|
146 |
<imageobject>
|
|
|
147 |
<imagedata fileref="Fortschritsbalken.png" format="PNG"></imagedata>
|
|
|
148 |
</imageobject>
|
|
|
149 |
<textobject>
|
|
|
150 |
<phrase>Fortschrittsbalken</phrase>
|
|
|
151 |
</textobject>
|
|
|
152 |
</mediaobject>
|
|
|
153 |
</screenshot>
|
|
|
154 |
<para>Je nach dem, wieviele Daten in Ihrer Uhr gespeichert sind, kann dieser Vorgang bis zu einigen Minuten dauern. Sobald die Daten eingelesen wurden verschwindet die Fortschrittsanzeige und die Daten werden automatisch gespeichert. SportWatcher liest immer alle Daten aus der Uhr aus. Gespeichert werden aber nur jene Aktivitäten, welche sich noch nicht auf der Festplatte befinden. Dadurch wird garantiert, dass bereits bestehende Dateien nicht überschrieben werden. Zumindest der <hardware>Forerunner 305</hardware> komprimiert die Daten, wenn der Speicher voll ist. Dann werden bei den einzelnen Aktivitäten die Messpunkte herausgelöscht, so das nur die Runden übrig bleiben. Würden die Dateien überschrieben werden, würden die Messpunkte verloren gehen.</para>
|
272 |
andreas |
155 |
<para>Sollten die Daten nicht eingelesen werden können und eine Fehlermeldung erscheinen, prüfen Sie die Berechtigungen für das <hardware>USB-Port</hardware> (siehe <xref linkend="sec.Einstellungen-unter-Linux" />).</para></sect3><sect3 id='sec.Das-Men-ffnen' >
|
|
|
156 |
<title>Der Menüpunkt <guimenu>Öffnen</guimenu><!-- anchor id="sec.Das-Men-ffnen" --></title>
|
|
|
157 |
<para>Nach dem Klick auf diesen Menüpunkt öffnet sich ein Dateidialogfenster. Es werden alle Dateien mit der Endung <literal role="extension">.gmn</literal> angezeigt, sofern welche vorhanden sind. Bei diesen Dateien handelt es sich um das von &sportwatcher; intern verwendete Dateiformat. Haben Sie Dateien in diesem Format vorliegen, können Sie diese einlesen und Ihren Aufzeichnungen hinzufügen.</para></sect3><sect3>
|
261 |
andreas |
158 |
<title>Der Menüpunkt <guimenuitem>Importieren</guimenuitem></title>
|
283 |
andreas |
159 |
<para>&sportwatcher; ist in der Lage, Dateien im Format <literal role="extension">.tcx</literal> einzulesen. Dieses Format wird vom Programm <emphasis><command>Traningcenter</command></emphasis>, jener Software die von Garmin mit den Sportuhren mitgeliefert wird, erzeugt. Allerdings können auch andere Programme dieses Format ausgeben.</para>
|
272 |
andreas |
160 |
<para>Es öffnet sich ein Dateidialog. Wählen Sie die gewünschte Datei aus. &sportwatcher; liest die Datei ein und fügt sie den bestehenden Aktivitäten hinzu.</para></sect3></sect2><sect2 id='sec.Daten-exportieren' >
|
|
|
161 |
<title>Daten exportieren<!-- anchor id="sec.Daten-exportieren" --></title>
|
261 |
andreas |
162 |
<para>SportWatcher ist in der Lage, die gespeicherten Daten in verschiedene Formate zu exportieren. Dadurch können die Daten in verschiedenen anderen Programmen verarbeitet werden und dort nach weiteren, vielleicht für das entsprechende Programm einzigartigen Methoden, Arten visualisiert werden.</para><sect3>
|
|
|
163 |
<title>Der Menüpunkt <guimenuitem>Puls speichern</guimenuitem></title>
|
|
|
164 |
<para>SportWatcher unterstützt derzeit folgende Formate:</para><itemizedlist>
|
|
|
165 |
<listitem><para>TCX - Garmin Trainig Center</para></listitem><listitem><para>GPX - GPS Exchange Format</para></listitem><listitem><para>OSM - Open Street Map Format</para></listitem><listitem><para>HRM - Polar Heart Rate Monitor Format</para></listitem></itemizedlist><para>Das Format GPX kann von diversen Programmen zum Bearbeiten und Darstellen von Landkarten verwendet werden.</para>
|
|
|
166 |
<para>OSM wird von <ulink url="http://www.openstreetmap.org">Open Street Map</ulink> verwendet, um Landkarten in Form von Vektordaten zu speichern.</para>
|
283 |
andreas |
167 |
<para>Die mit den Pulsuhren von Polar mitgelieferten Programme erzeugen das Format HRM und können es auch einlesen. SportWatcher kann dieses Format zwar exportieren, jedoch nicht einlesen. Da dieses Format keine Geodaten enthält, würde auch keinen Sinn ergeben, dieses Format importieren zu wollen. Wählen Sie den Menüpunkt <guimenuitem>Puls speichern</guimenuitem>, um die Pulsdaten im HRM-Format zu speichern.</para></sect3><sect3 id='sec.Menpunkt.-Speichern-unter-1' >
|
|
|
168 |
<title>Das Menü <guimenuitem>Speichern als ...</guimenuitem><!-- anchor id="sec.Menpunkt.-Speichern-unter-1" --></title>
|
261 |
andreas |
169 |
<para>Unter diesem Menüpunkt öffnet sich ein Dateidialog, welcher eine Datei unter den Formaten TCX (Standard), GPX, oder OSM speichert.</para>
|
|
|
170 |
<screenshot>
|
|
|
171 |
<screeninfo>Speichern unter</screeninfo>
|
|
|
172 |
<mediaobject>
|
|
|
173 |
<imageobject>
|
|
|
174 |
<imagedata fileref="Speichern_unter.png" format="PNG"></imagedata>
|
|
|
175 |
</imageobject>
|
|
|
176 |
<textobject>
|
|
|
177 |
<phrase>Speichern unter</phrase>
|
|
|
178 |
</textobject>
|
|
|
179 |
</mediaobject>
|
|
|
180 |
</screenshot>
|
272 |
andreas |
181 |
<para>Wählen Sie das gewünschte Verzeichnis und geben sie einen Dateinamen ein. Es ist nicht notwendig die Dateiendung einzugeben, wenn Sie diese aus der Auswahlbox (Filter), ganz unten im Dialogfenster, entsprechend auswählen. Klicken Sie dann auf die Schaltfläche <keycombo action="click"><mousebutton>Save</mousebutton></keycombo> um die Daten im TCX-Format zu speichern. Falls die Datei bereits existiert, weist Sie SportWatcher darauf hin und fragt, ob die Datei überschrieben werden soll.</para></sect3></sect2><sect2 id='sec.Der-Menpunkt-Drucken' >
|
|
|
182 |
<title>Der Menüpunkt <guimenuitem>Drucken</guimenuitem><!-- anchor id="sec.Der-Menpunkt-Drucken" --></title>
|
261 |
andreas |
183 |
<para>Nach Wahl wieses Menüpunktes, werden die Daten der aktuel geladenen Aktivität gedruckt. Sofern möglich, wird alles auf eine Seite gedruckt.</para>
|
272 |
andreas |
184 |
<para>Der Kopf enthält die einzelnen Runden. Darauf folgt der Track, optional mit einer Landkarte unterlegt, und zum Schluß die drei Grafiken Pulskurve, Höhenprofil und Geschwindigkeit. Während die Grafiken fixe größen haben, ist die Anzahl der Runden variabel. Die Anzahl der Seiten hängt also von der Anzahl der Runden ab.</para></sect2></sect1><sect1 id='sec.Das-Men-Bearbeiten' >
|
|
|
185 |
<title>Das Menü <guimenu>Bearbeiten</guimenu><!-- anchor id="sec.Das-Men-Bearbeiten" --></title>
|
|
|
186 |
<sect2 id='sec.Aktivitt-umbenennen' >
|
|
|
187 |
<title>Der Menüpunkt <guimenuitem>Umbenennen</guimenuitem><!-- anchor id="sec.Aktivitt-umbenennen" --></title>
|
261 |
andreas |
188 |
<screenshot>
|
|
|
189 |
<screeninfo>Menü Bearbeiten</screeninfo>
|
|
|
190 |
<mediaobject>
|
|
|
191 |
<imageobject>
|
|
|
192 |
<imagedata fileref="menuBearbeiten.png" format="PNG"></imagedata>
|
|
|
193 |
</imageobject>
|
|
|
194 |
<textobject>
|
|
|
195 |
<phrase>Menü Bearbeiten</phrase>
|
|
|
196 |
</textobject>
|
|
|
197 |
</mediaobject>
|
|
|
198 |
</screenshot>
|
272 |
andreas |
199 |
<para>Mit Hilfe des Menüpunktes <guimenuitem>Umbenennen</guimenuitem>, kann der Name einer Aktivität geändert werden. Es öffnet sich ein Dialogfenster, in dem der aktuelle Name erscheint. Da ein individueller Name lediglich 15 Zeichen lang sein kann, erscheint der generierte Name, bestehend aus Datum und Uhrzeit, gekürzt. Tippen Sie den gewünschten Namen ein und klicken Sie auf den Button <keycombo action="click"><mousebutton>Ok</mousebutton></keycombo>. Der neue Name erscheint sofort im Verzeichnisbaum und ist automatisch permanent gespeichert.</para></sect2></sect1><sect1 id='sec.Eventuell-notwendige-Einstellungen' >
|
|
|
200 |
<title>Das Menü <guimenu>Einstellungen</guimenu><!-- anchor id="sec.Eventuell-notwendige-Einstellungen" --></title>
|
283 |
andreas |
201 |
<para>&sportwatcher; muss nicht extra eingestellt werden um sinnvoll verwendet werden zu können. Es kann jedoch notwendig sein, den Pfad in dem SportWatcher seine Daten ablegt, einzustellen. Zum Beispiel, wenn mehrere Benutzer mit einer Uhr Trainieren und es eine gemeinsame Datenbasis geben soll. Auch um eine Landkarte darzustellen, sind sehr wahrscheinlich einige Einstellungen notwendig. Das hängt ganz davon ab, welche Art von Landkarte Sie verwenden wollen. Die folgenden Punkte zeigen Schritt für Schritt, welche Einstellungen in &sportwatcher; möglich sind und wie Sie damit umgehen.</para>
|
261 |
andreas |
202 |
<screenshot>
|
|
|
203 |
<screeninfo>Menü Einstellungen</screeninfo>
|
|
|
204 |
<mediaobject>
|
|
|
205 |
<imageobject>
|
|
|
206 |
<imagedata fileref="menuEinstellungen.png" format="PNG"></imagedata>
|
|
|
207 |
</imageobject>
|
|
|
208 |
<textobject>
|
|
|
209 |
<phrase>Menü Einstellungen</phrase>
|
|
|
210 |
</textobject>
|
|
|
211 |
</mediaobject>
|
272 |
andreas |
212 |
</screenshot><sect2 id='sec.Der-Menpunkt-SportWatcher' >
|
|
|
213 |
<title>Der Menüpunkt <guimenuitem>SportWatcher Einstellungen</guimenuitem><!-- anchor id="sec.Der-Menpunkt-SportWatcher" --></title>
|
261 |
andreas |
214 |
<para>Mit Hilfe des Menüpunktes <guimenuitem>SportWatcher Einstellungen</guimenuitem> im Menü <guimenu>Einstellungen</guimenu>, öffnet sich ein Dialog, in dem Verschiedene Dinge eingestellt werden können. Im Folgenden wird jede Einstellungsmöglichkeit im Detail erklärt.</para>
|
|
|
215 |
<screenshot>
|
|
|
216 |
<screeninfo>SportWatcher Einstellungen</screeninfo>
|
|
|
217 |
<mediaobject>
|
|
|
218 |
<imageobject>
|
|
|
219 |
<imagedata fileref="SportWatcherEinstellungen.png" format="PNG"></imagedata>
|
|
|
220 |
</imageobject>
|
|
|
221 |
<textobject>
|
|
|
222 |
<phrase>SportWatcher Einstellungen</phrase>
|
|
|
223 |
</textobject>
|
|
|
224 |
</mediaobject>
|
272 |
andreas |
225 |
</screenshot><sect3 id='sec.Puls-Limits' >
|
|
|
226 |
<title>Puls Limits<!-- anchor id="sec.Puls-Limits" --></title>
|
261 |
andreas |
227 |
<para>Dieser Abschnitt enthält die Limits des persönlichen Pulsbereichs. Diese Bereiche können mit einer teueren Laktatmessung ermittelt werden, wobei mehrere Messungen in bestimmten Abständen durchgeführt werden müssen, um verlässliche Ergebnise zu bekommen. Wenn Sie das möchten, fragen Sie am Besten den Sportmediziner Ihrer Wahl. Er wird Sie gerne beraten. Eine einfachere Methode die Limits zu ermitteln besteht mit Hilfe der folgenden Faustformel:</para><screen>
|
|
|
228 |
<![CDATA[<Max. HF> = 220 - <Lebensalter>
|
|
|
229 |
]]></screen><para>Von dieser maximalen Herzfrequenz werden nun die Schwellen (Limits oder Zonen) wie folgt berechnet (x% von HF):</para>
|
|
|
230 |
<informaltable><tgroup cols="4" colsep="1" rowsep="1">
|
283 |
andreas |
231 |
<colspec colname="col0" align="left" />
|
|
|
232 |
<colspec colname="col1" align="left" />
|
|
|
233 |
<colspec colname="col2" align="left" />
|
|
|
234 |
<colspec colname="col3" align="left" />
|
261 |
andreas |
235 |
<tbody>
|
|
|
236 |
<row>
|
283 |
andreas |
237 |
<entry align="center" valign="top">Zone</entry>
|
|
|
238 |
<entry align="center" valign="top">Intensität</entry>
|
|
|
239 |
<entry align="center" valign="top">Laufen</entry>
|
|
|
240 |
<entry align="center" valign="top">Radfahren</entry>
|
261 |
andreas |
241 |
</row>
|
|
|
242 |
<row>
|
|
|
243 |
<entry align="left" valign="top">0 (<1)</entry>
|
|
|
244 |
<entry align="left" valign="top">sehr niedrig</entry>
|
|
|
245 |
<entry align="left" valign="top">< 65% (Reg. Lauf)</entry>
|
|
|
246 |
<entry align="left" valign="top">< 52% (KB --> Kompensationsbereich)</entry>
|
|
|
247 |
</row>
|
|
|
248 |
<row>
|
|
|
249 |
<entry align="left" valign="top">1</entry>
|
|
|
250 |
<entry align="left" valign="top">niedrig</entry>
|
|
|
251 |
<entry align="left" valign="top">65% - 80% (Ext DL --> extensiver Dauerlauf)</entry>
|
|
|
252 |
<entry align="left" valign="top">52% - 65% (GA1 --> Grundlagenausdauer 1)</entry>
|
|
|
253 |
</row>
|
|
|
254 |
<row>
|
|
|
255 |
<entry align="left" valign="top">2</entry>
|
|
|
256 |
<entry align="left" valign="top">mittel</entry>
|
|
|
257 |
<entry align="left" valign="top">80% - 85% (Int DL --> intensiver Dauerlauf)</entry>
|
|
|
258 |
<entry align="left" valign="top">65% - 77% (GA2 --> Grundlagenausdauer 2)</entry>
|
|
|
259 |
</row>
|
|
|
260 |
<row>
|
|
|
261 |
<entry align="left" valign="top">3</entry>
|
|
|
262 |
<entry align="left" valign="top">hoch</entry>
|
|
|
263 |
<entry align="left" valign="top">85% - 90% (TDL --> Tempodauerlauf)</entry>
|
|
|
264 |
<entry align="left" valign="top">77% - 90% (KA --> Kraftausdauer)</entry>
|
|
|
265 |
</row>
|
|
|
266 |
<row>
|
|
|
267 |
<entry align="left" valign="top">4 (>3)</entry>
|
|
|
268 |
<entry align="left" valign="top">sehr hoch</entry>
|
|
|
269 |
<entry align="left" valign="top">> 90% (TL --> Tempolauf (Wettkampf))</entry>
|
|
|
270 |
<entry align="left" valign="top">> 90% (SB --> Spitzenbereich)</entry>
|
|
|
271 |
</row>
|
|
|
272 |
</tbody>
|
272 |
andreas |
273 |
</tgroup></informaltable></sect3><sect3 id='sec.Andere-Limits' >
|
|
|
274 |
<title>Andere Limits<!-- anchor id="sec.Andere-Limits" --></title>
|
261 |
andreas |
275 |
<para>Der VO2max ist der maximale Sauerstoffsättigungswert in Prozent. Auch dieser Wert wird i.d.R. bei einem Laktattest ermittelt. Eine Faustformel zur Berechnung ist mir nicht bekannt.</para>
|
272 |
andreas |
276 |
<para>Der zweite Wert Gewicht (kg) ist das eigene Körpergewicht in Kilogramm.</para></sect3><sect3 id='sec.Gerte-und-Dateieinstellungen' >
|
|
|
277 |
<title>Geräte- und Dateieinstellungen<!-- anchor id="sec.Gerte-und-Dateieinstellungen" --></title>
|
|
|
278 |
<para>Die Zeilen und Einstellungen in diesem Block, setzen die Pfade in denen &sportwatcher; seine Daten ablegt.</para></sect3><sect3 id='sec.Hhenprofil-gltten' >
|
|
|
279 |
<title>Höhenprofil glätten<!-- anchor id="sec.Hhenprofil-gltten" --></title>
|
|
|
280 |
<para>Wenn die Höhenmessung Ihres GPS-Empfängers nicht sehr genau ist, bzw., vor allem bei geringen Höhenunterschieden störende Schwankungen aufweist, dann kann durch Aktivierung dieser Option eine leichte Glättung der Linie erreicht werden.</para></sect3><sect3 id='sec.Serielles-Port-statt' >
|
|
|
281 |
<title>Serielles Port statt USB-Port verwenden<!-- anchor id="sec.Serielles-Port-statt" --></title>
|
|
|
282 |
<para>Wenn Ihr GPS-Empfänger nur über eine serielle Schnittstelle verfügt, können Sie &sportwatcher; mitteilen, die serielle Schnittstelle anstatt des USB-Ports zu verwenden. Den Namen des Device können Sie wie unter <xref linkend="sec.Serielles-Gert" /> beschrieben angeben.</para><blockquote>
|
261 |
andreas |
283 |
<para>Hinweis: Diese Funktion ist bisher nicht getestet und es ist sehr wahrscheinlich, dass sie nicht funktioniert!</para>
|
272 |
andreas |
284 |
</blockquote></sect3><sect3 id='sec.Serielles-Gert' >
|
|
|
285 |
<title>Serielles Gerät<!-- anchor id="sec.Serielles-Gert" --></title>
|
|
|
286 |
<para>Der Name der seriellen Schnittstelle an der Ihr GPS-Empfänger angeschlossen ist. Diese Einstellung wird nur dann verwendet, wenn die Option Use serial port instead of USB port gesetzt ist (siehe 4.1.3.2).</para></sect3><sect3 id='sec.Datendateien' >
|
|
|
287 |
<title>Datendateien<!-- anchor id="sec.Datendateien" --></title>
|
|
|
288 |
<para>In dem hier angegebenen Verzeichnis, werden die Daten abgelegt, welche von Ihrem GPS-Empfänger ausgelesen werden. Als Standard wird hier das Verzeichnis .sportwatcher in Ihrem Homeverzeichnis verwendet. Nach dem ersten Start von SportWatcher wird dieses Verzeichnis angelegt, sofern es nicht bereits existiert.</para></sect3><sect3 id='sec.HRM-Dateien' >
|
|
|
289 |
<title>HRM-Dateien<!-- anchor id="sec.HRM-Dateien" --></title>
|
|
|
290 |
<para>SportWatcher ist in der Lage, die von Ihrem GPS-Empfänger gelesenen Pulsdaten in eine Polar-kompatible Datei zu speichern. Dabei wird Ihnen das hier angegebene Verzeichnis vorgeschlagen. Da die Spoftware von Polar die Dateien ebenfalls in einem bestimmten Verzeichnis ablegt, können Sie hier dieses Verzeichnis angeben und die Pulsdaten dann dort ablegen. Dadurch ist es möglich, auch mit der Polar eigenen Software die Daten einzulesen und darzustellen.</para></sect3><sect3 id='sec.Landkartendatei' >
|
|
|
291 |
<title>Landkartendatei<!-- anchor id="sec.Landkartendatei" --></title>
|
283 |
andreas |
292 |
<para>Hier wird eine Datei angegeben, welche entweder direkt eine Landkarte enthält, oder eine Steuerdatei ist, welche SportWatcher anweist, eine Landkarte zu laden. Tatsächlich wird durch den Map type (siehe <xref linkend="sec.Landkartentyp" />) festgelegt, um welche Art von Landkarte es sich handelt. Raster images sind Bilder in verschiedenen Formaten, die eine Landkarte darstellen können. Damit SportWatcher solche Karten verwenden kann, müssen die Geokoordinaten der linken oberen und der rechten unteren Ecke bekannt sein. Lediglich das Format "TIFF" beinhaltet die Möglichkeit Geokoordinaten direkt in der Datei zu speichern. Liegt eine solche Datei vor, müssen keine Geokoordinaten angegegeben werden. In jedem Fall haben Rasterimages den Nachteil, dass sie lediglich eine bestimmte Auflösung haben und nur jeweils ein bestimmtes Gebiet anzeigen. Liegt die Rad- oder Laufroute außerhalb der Karte, kann eben keine Karte unterlegt werden. Dem kann man zuvorkommen, in dem man z.B. Vektordateien, wie SHP (derzeit noch nicht unterstützt!) oder einen WMS-Server verwendet. Besonders letzterer bietet sich hier besonders an, da der Aufwand am geringsten ist. Hat man einmal einen WMS-Server (im Internet) gefunden, welcher die gewünschten Gebiete anzeigt, erledigt SportWatcher den Rest.</para></sect3><sect3 id='sec.Landkartentyp' >
|
272 |
andreas |
293 |
<title>Landkartentyp<!-- anchor id="sec.Landkartentyp" --></title>
|
|
|
294 |
<para>Hier kann der zu verwendende Landkartentyp eingestellt werden. &sportwatcher; verwendet die Bibliothek GDAL um die angegebenen Landkarten (siehe <xref linkend="sec.Landkartendatei" />) zu verarbeiten. Zumeist unterstützt GDAL erheblich mehr Formate als &sportwatcher; zur Verfügung stellt. Da jedoch jedes der Formate einen gewissen Aufwand bedeutet, werden derzeit nur einige der wichtigsten Formate zur Verfügung gestellt.</para></sect3><sect3 id='sec.Einheiten' >
|
|
|
295 |
<title>Einheiten<!-- anchor id="sec.Einheiten" --></title>
|
|
|
296 |
<para>Hier kann zwischen metrischen Massen und amerikanischen Massen umgeschalten werden.</para></sect3></sect2><sect2 id='sec.WMS-Einstellungen' >
|
|
|
297 |
<title>Der Menüpunkt <guimenuitem>Landkarteneinstellungen</guimenuitem><!-- anchor id="sec.WMS-Einstellungen" --></title>
|
|
|
298 |
<para>Abhängig von der eingestellten Landkartenquelle, erscheint unter diesem Menüpunkt entweder ein Dialogfenster zum Einstellen der Parameter zum Bezug einer Landkarte von einem WMS-Server im Internet, oder die Einstellung der Eckpunkte eines Bildes (Rasterimage). Die folgenden Punkte beschreiben die Einstellungen in den beiden möglichen Dialogboxen.</para><sect3 id='sec.WMS' >
|
|
|
299 |
<title>WMS<!-- anchor id="sec.WMS" --></title>
|
261 |
andreas |
300 |
<screenshot>
|
|
|
301 |
<screeninfo>SportWatcher WMS-Server</screeninfo>
|
|
|
302 |
<mediaobject>
|
|
|
303 |
<imageobject>
|
|
|
304 |
<imagedata fileref="SportWatcherWMS.png" format="PNG"></imagedata>
|
|
|
305 |
</imageobject>
|
|
|
306 |
<textobject>
|
|
|
307 |
<phrase>SportWatcher WMS-Server</phrase>
|
|
|
308 |
</textobject>
|
|
|
309 |
</mediaobject>
|
|
|
310 |
</screenshot>
|
|
|
311 |
<para>Dieser Dialog beinhaltet alle Steuermöglichkeiten, um eine Landkarte von einem WMS (Web Map System) Server zu beziehen. Ein WMS-Server kann über das HTTP-Protokoll angesprochen werden. Eine Landkarte wird ähnlich wie eine gewöhnliche WEB-Seite abgerufen. Sie können das mit einem WEB-Browser überprüfen. Tippen Sie folgende URL in den Browser ein und beobachten Sie, was passiert:</para><screen>
|
|
|
312 |
<![CDATA[http://onearth.jpl.nasa.gov/wms.cgi?VERSION=1.1.1&REQUEST=GetMap&SRS=EPSG:4326&LAYERS=modis,global_mosaic&STYLES=&FORMAT=image/png&WIDTH=800&HEIGHT=600&BBOX=14.200104,46.612177,14.307995,46.633730
|
|
|
313 |
]]></screen><para>Es sollte ein Satelittenbild sichtbar werden, welches einen Teil von Klagenfurt, der Hauptstadt des österreichischen Bundeslands Kärnten, und ein Stück des Wörtersees zeigt. Dieses Beispiel verdeutlicht wie einfach es ist, eine Landkarte von einem WMS-Server zu beziehen. Da jedoch eine statische Eingabe nicht den Zweck erfüllen würde, ist SportWatcher in der Lage, das Abholen und Aufbereiten der Landkarte für Sie zu übernehmen, so das Sie sich nicht weiter darum kümmern müssen, sobald die Einstellungen korrekt getroffen wurden. Neben dem im Beispiel gezeigten WMS-Server, gibt es noch viele andere im Internet, welche frei verwendet werden können. Die Seite</para><screen>
|
|
|
314 |
<![CDATA[]]><ulink url="http://www.skylab-mobilesystems.com/ger/wms_serverlist.html">http://www.skylab-mobilesystems.com/ger/wms_serverlist.html</ulink>
|
272 |
andreas |
315 |
<![CDATA[]]></screen><para>stellt eine Liste frei verfügbarer WMS-Server im Internet zur Verfügung.</para><sect4 id='sec.Server-URL' >
|
|
|
316 |
<title>Server URL<!-- anchor id="sec.Server-URL" --></title>
|
261 |
andreas |
317 |
<para>In diese Eingabezeile wird die URL des Servers eingegeben. Bezogen auf unser obiges Beispiel wäre das:</para><screen>
|
|
|
318 |
<![CDATA[http://onearth.jpl.nasa.gov/wms.cgi
|
272 |
andreas |
319 |
]]></screen><para>Extra Parameter, wie in obigem Beispiel angeführt, müssen nicht angegeben werden. Diese werden von SportWatcher automatisch im Hintergrund erzeugt.</para></sect4><sect4 id='sec.Layer-name' >
|
|
|
320 |
<title>Layer name<!-- anchor id="sec.Layer-name" --></title>
|
|
|
321 |
<para>Ein WMS-Server kann mehrere Layer zur Verfügung stellen. Diese beziehen sich zumeist auf bestimmte Teile einer Landkarte. Bei einer Straßenkarte zum Beispiel, könnte ein Layer die Straßen beinhalten, ein weiteres die Flüße und wiederum ein anderes die Bezeichnungen. Erst wenn alle drei Layer angegegeben werden, entsteht eine vollwertige Straßenkarte. In Dieser Eingabezeile können die gewünschten Layer angegeben werden. Dabei sollte auf die Reihenfolge geachtet werden, da ein Layer, in der angegebenen Reihenfolge, über das andere gezeichnet wird (sollen die Straßen über den Flüßen dargestellt werden, oder umgekehrt?).</para></sect4><sect4 id='sec.SRS' >
|
|
|
322 |
<title>SRS<!-- anchor id="sec.SRS" --></title>
|
|
|
323 |
<para>Damit die Landkarte korrekt erscheint, muss der WMS-Server wissen, welches <emphasis>geod</emphasis>ä<emphasis>tische</emphasis> Datum er verwenden muss. Wenn Sie mehr über Geodäten und Projektionen wissen möchten, sehen Sie unter: <ulink url="http://de.wikipedia.org/wiki/Geoid">http://de.wikipedia.org/wiki/Geoid</ulink> SportWatcher stellt Ihnen verschiedene geodätische Datum zur Verfügung, welche Sie auswählen können. Dabei muss es sich um ein Datum handeln, welches vom WMS-Server unterstützt wird. Andernfalls wird keine Karte erscheinen, oder die Karte wird nicht unter den dargestellten Track passen. Im Zweifelsfall nehmen Sie <emphasis>EPSG:4326</emphasis>, auch als <emphasis>WGS84</emphasis> bekannt.</para></sect4><sect4 id='sec.CRS' >
|
|
|
324 |
<title>CRS<!-- anchor id="sec.CRS" --></title>
|
|
|
325 |
<para>CRS ist an sich das Selbe wie SRS (siehe <xref linkend="sec.SRS" />). Der Unterschied ist, dass dieser Parameter optional ist und daher nicht zwangsweise angegeben werden muss. Auch hier gilt: Wählen Sie im Zweifelsfall <emphasis>WGS84</emphasis>.</para></sect4><sect4 id='sec.Bnder' >
|
|
|
326 |
<title>Bänder<!-- anchor id="sec.Bnder" --></title>
|
|
|
327 |
<para>Ein WMS-Server gibt als Antwort eine Landkarte in Form eines Rasterimages (Bild) zurück. Jedes farbige digitale Bild besteht aus den Informationen für die einzelnen Farbkanäle rot, grün und blau. Jeder dieser Farbkanäle wird auch als Band bezeichnet (rührt von der Art her, wie die Bildinformation intern verarbeitet wird). Bei einem Farbbild gibt es also mindestens drei Bänder. Oft haben solche Bilder auch noch ein viertes Band, den s.g. <emphasis>Alphakanal</emphasis>. Dieser gibt die Transparenz des Bildes an, wobei jeder Bildpunkt eine andere Transparenz haben kann. Die Angabe der richtigen Anzahl von Bändern ist sehr wichtig, da es bei der falschen Anzahl zu einer Fehlermeldung des WMS-Servers kommt! </para></sect4><sect4 id='sec.Version' >
|
|
|
328 |
<title>Version<!-- anchor id="sec.Version" --></title>
|
|
|
329 |
<para>Es gibt verschiedene Versionen von WMS-Servern. Die Versionsnummer sagt aus, welche Parameter der WMS-Server akzeptiert und wie die Rückmeldung z.B.: im Falle eines Fehlers aussieht. Jeder WMS-Server sollte jedoch zumindest Version 1.1.0 unterstützen. Zumeist wird aber auch die Version 1.1.1 unterstützt. Einige neuere WMS-Server unterstützen bereits Version 1.3.0. Jeder WMS-Server ist abwärtskompatibel, unterstützt also auch ältere Versionen. </para></sect4><sect4 id='sec.Stile' >
|
|
|
330 |
<title>Stile<!-- anchor id="sec.Stile" --></title>
|
|
|
331 |
<para>Neben den Layern (siehe <xref linkend="sec.Layer-name" />), werden auch Stile, im englischen Styles genannt, unterstützt. Bei den meisten WMS-Servern ist die Angabe von Styles optional und kann daher leer gelassen werden. Styles sind Varianten oder Teile eines Layers. Ein Layer setzt sich aus einem oder mehreren Styles zusammen (z.B.: Landstraßen, Bundesstraßen, Schnellstraßen und Autobahnen). Durch die Angabe von Styles, können bestimmte Teile eines Layers ausgegeben werden. Allerdings kann lediglich ein Style pro Layer angegeben werden. Es ist auch darauf zu achten, dass immer gleich viele Styles wie Layer angegeben werden, und die zu den Layern gehörenden Styles in der selben Reihenfolge wie die Layer angegeben werden. Andernfalls wird der WMS-Server die Anfrage mit einem Fehler quitieren.</para></sect4><sect4 id='sec.Teilgre' >
|
|
|
332 |
<title>Teilgröße<!-- anchor id="sec.Teilgre" --></title>
|
|
|
333 |
<para>Um Bandbreite zu sparen (gut bei schlechten oder langsamen Internetverbindungen), teilt SportWatcher die angeforderte Landkarte in quadratische Teile ein. Diese Teile werden auf der Festplatte in einem Cache gespeichert. Wird so ein Teil später wieder benötigt, muss es nicht erneut vom WMS-Server geholt werden, sondern wird aus dem lokalen Cache ausgelesen. Diese Auswahl ermöglicht es die größe eines der Teile einzustellen. Die optimale größe hängt vom WMS-Server und von der Qualität der Internetverbindung ab. Sie sollten daher mit dieser Einstellung etwas experimentieren um die optimale Größe zu finden.</para></sect4><sect4 id='sec.Tiefe' >
|
|
|
334 |
<title>Tiefe<!-- anchor id="sec.Tiefe" --></title>
|
|
|
335 |
<para>Sollte auf 2 eingestellt sein.</para>
|
|
|
336 |
<note><para>FIXME: Beschreibung ergänzen!</para></note></sect4><sect4 id='sec.Anzahl-bersichten' >
|
|
|
337 |
<title>Anzahl übersichten<!-- anchor id="sec.Anzahl-bersichten" --></title>
|
|
|
338 |
<para>Sollte auf 10 eingestellt sein.</para>
|
|
|
339 |
<note><para>FIXME: Beschreibung ergänzen!</para></note></sect4><sect4 id='sec.WMS-Server-verwendet' >
|
|
|
340 |
<title>WMS Server verwendet Quadratpixel<!-- anchor id="sec.WMS-Server-verwendet" --></title>
|
|
|
341 |
<para>Das WMS-Protokoll besagt zwar, dass WMS-Server Karten in beliebiger Größe darstellen sollen und das perspektivisch korrekt (Projektion), aber es kann dennoch sein, dass einzelne WMS-Server in diesem Punkt nicht korrekt arbeiten. Solche Server können lediglich quadratische Pixel darstellen. Also 2x2 oder 4x4 etc. Pixel im Quadrat. Die Länge und Höhe der Bilder in Bildpunkten (Pixel), muss also durch das verwendete Quadrat teilbar sein. Andernfalls erhält man gar keine Karte oder eine verzerrte Karte. Zumeist ist es angeraten, diese Option nicht zu wählen. Die meisten WMS-Server benötigen sie nicht. Zu dem ist diese Option nicht vollständig getestet und das Ergebnis ist daher unbestimmt!</para></sect4><sect4 id='sec.Offlinemodus' >
|
|
|
342 |
<title>Offlinemodus<!-- anchor id="sec.Offlinemodus" --></title>
|
|
|
343 |
<para>Ist diese Option gesetzt, befindet sich SportWatcher im offline Modus und versucht nicht eine Landkarte vom eingestellten WMS-Server abzuholen. Befindet sich jedoch eine benötigte Landkarte im lokalen Cache, wird sie aus diesem ausgelesen und dargestellt. Andernfalls wird der Track mit einem schwarzen Hintergrund unterlegt.</para></sect4><sect4 id='sec.Vorausschauendes-Lesen' >
|
|
|
344 |
<title>Vorausschauendes Lesen<!-- anchor id="sec.Vorausschauendes-Lesen" --></title>
|
|
|
345 |
<para>Um die Performance zu verbessern, kann SportWatcher die Daten vorausschauend von einem WMS-Server abholen. Dabei werden die Daten mit dem Cache abgeglichen. Befinden sich bereits Teile der Landkarte im Cache, werden nur mehr jene Teile geholt, die zur Darstellung benötigt werden. Das Spart Zeit und sorgt dafür, dass die Landkarte schneller angezeigt werden kann.</para></sect4><sect4 id='sec.Prfe-vorausschauendes-Lesen' >
|
|
|
346 |
<title>Prüfe vorausschauendes Lesen<!-- anchor id="sec.Prfe-vorausschauendes-Lesen" --></title>
|
|
|
347 |
<para>Is diese Box angehakt, erfolt eine zusätzliche Prüfung des Cache. Die Darstellung der Landkarte kann dadurch schneller erfolgen.</para></sect4><sect4 id='sec.Meter-zum-Lngengrad' >
|
|
|
348 |
<title>Meter zum Längengrad hinzufügen<!-- anchor id="sec.Meter-zum-Lngengrad" --></title>
|
|
|
349 |
<para>Für den Fall, dass die Darstellung der Landkarte immer (konstant) einige Meter waagerecht, als auch senkrecht vom Track abweicht, können Sie die Position der Landkarte für den Lägengrad um die Abweichung im Meter korrigieren. </para></sect4><sect4 id='sec.Meter-zum-Breitengrad' >
|
|
|
350 |
<title>Meter zum Breitengrad hinzufügen<!-- anchor id="sec.Meter-zum-Breitengrad" --></title>
|
|
|
351 |
<para>Für den Fall, dass die Darstellung der Landkarte immer (konstant) einige Meter waagerecht, als auch senkrecht vom Track abweicht, können Sie die Position der Landkarte für den Breitengrad um die Abweichung im Meter korrigieren.</para></sect4></sect3><sect3 id='sec.Grafikkoordinaten' >
|
|
|
352 |
<title>Grafikkoordinaten<!-- anchor id="sec.Grafikkoordinaten" --></title>
|
261 |
andreas |
353 |
<screenshot>
|
|
|
354 |
<screeninfo>SportWatcher Koordinaten</screeninfo>
|
|
|
355 |
<mediaobject>
|
|
|
356 |
<imageobject>
|
|
|
357 |
<imagedata fileref="SportWatcherCoordinates.png" format="PNG"></imagedata>
|
|
|
358 |
</imageobject>
|
|
|
359 |
<textobject>
|
|
|
360 |
<phrase>SportWatcher Koordinaten</phrase>
|
|
|
361 |
</textobject>
|
|
|
362 |
</mediaobject>
|
|
|
363 |
</screenshot>
|
272 |
andreas |
364 |
<para>Wurde bei den Einstellungen eines der Rasterformate als Landkartentyp ausgewählt, dann erscheint dieser Dialog zum festlegen der Eckpunkte. Einer der Nachteile bei Rasterformaten ist, dass sie über keine Geoinformationen verfügen. Damit SportWatcher solche Formate trotzdem korrekt hinterlegen kann, müssen die Geokoordinaten der Ecken des Bildes bekannt sein. Auf Grund dieser Informationen kann SportWatcher dann den geforderten Ausschnitt berechnen, ihn entsprechend ziehen und stauchen, um ihn in das vorgegebene Anzeigefenster einzupassen und schließlich anzeigen. Ein noch größerer Nachteil als das Fehlen von Geoinformationen, ist die immer gleiche Auflösung der Landkarte, unabhäng von der gewählten Vergrößerungsstufe. Das führt dazu, dass die Karte entweder verkleinert werden muss, was zu schwer bis gar nicht mehr leserlichen Bezeichnungen führt, oder vergrößert werden muss, was die Karte pixelig erscheinen lässt. Ein Vorteil solcher Karten ist jedoch, dass sie immer offline verfügbar sind und sich daher auch zum Einsatz auf Laptops ohne Internetanschluß eignen. Zu dem sind sie um ein Vielfaches schneller, als z.B.: der Zugriff auf einen WMS-Server.</para><sect4 id='sec.Obere-linke-Ecke' >
|
|
|
365 |
<title>Obere linke Ecke<!-- anchor id="sec.Obere-linke-Ecke" --></title>
|
|
|
366 |
<para>Mit den folgenden beiden Zeilen wird die linke obere Ecke definiert. Die Angaben müssen im, unter Projektion angegebenen, Datum erfolgen.</para></sect4><sect4 id='sec.Untere-rechte-Ecke' >
|
|
|
367 |
<title>Untere rechte Ecke<!-- anchor id="sec.Untere-rechte-Ecke" --></title>
|
|
|
368 |
<para>Mit den folgenden beiden Zeilen wird die rechte untere Ecke definiert. Die Angaben müssen im, unter Projektion angegebenen, Datum erfolgen.</para></sect4><sect4 id='sec.Projektion' >
|
|
|
369 |
<title>Projektion<!-- anchor id="sec.Projektion" --></title>
|
|
|
370 |
<para>Diese Einstellung legt die Projektion der Landkarte fest. Projektion ist in der Geometrie eine Abbildung, die Punkte des dreidimensionalen Raumes auf Punkte einer gegebenen Ebene abbildet. Eine Projektion dient häufig dazu, Schrägbilder von geometrischen Körpern herzustellen. Man unterscheidet zwei Grundtypen, die Parallelprojektion und die Zentralprojektion. Die Abbildung auf die Bildebene kann sowohl grafisch mittels gezeichneter Hilfskonstruktionen (Verfahren der darstellenden Geometrie) als auch mathematisch (meist computergestützt, dreidimensionales CAD) erzeugt werden. SportWatcher stellt einige Optionen zur Einstellung der Projektion zur Verfügung. Sie sollten jene wählen, welche der entspricht, die für Ihre Landkarte verwendet wurde.</para></sect4></sect3></sect2></sect1><sect1 id='sec.Das-Men-Hilfe' >
|
|
|
371 |
<title>Das Menü <guimenu>Hilfe</guimenu> <!-- anchor id="sec.Das-Men-Hilfe" --></title>
|
|
|
372 |
&help.menu.documentation;</sect1></chapter><chapter id='cha.Track-mit-Landkarte' >
|
|
|
373 |
<title>Track mit Landkarte unterlegen<!-- anchor id="cha.Track-mit-Landkarte" --></title>
|
261 |
andreas |
374 |
<para>SportWatcher ist in der Lage, einen <emphasis>Track</emphasis> mit einer Landkarte zu unterlegen. Ein <emphasis>Track</emphasis> besteht aus den einzelnen Messpunkten, welche mit Linien verbunden dargestellt werden, so das ein Pfad entsteht. Dieser Pfad wird optisch dargestellt und kann optional mit einer Landkarte unterlegt werden.</para>
|
272 |
andreas |
375 |
<para>Es werden unterschiedliche Quellen von Landkarten unterstützt. Stellen Sie die gewünschte Quelle in den <guimenu>Einstellungen</guimenu> (siehe <xref linkend="sec.Der-Menpunkt-SportWatcher" />) ein. Sobald die korrekten Einstellungen getroffen wurden, wird jeder Track, für den GPS-Koordinaten vorhanden sind, mit einer Landkarte unterlegt. Grundvoraussetzung für eine Landkarte ist das Vorhandensein von GPS-Koordinaten. Der <hardware>Garmin Forrunner305</hardware> zeichnet diese auf, wenn Sie im Freien trainieren und die Aufzeichnung nicht explizit abgeschalten wurde. Nach dem diese Daten von &sportwatcher; eingelesen wurden, dienen Sie als Basis für eine Landkarte. SportWatcher errechnet zuerst die linke obere und die rechte untere Ecke in GPS-Koordinaten. Wurde definiert, dass eine Landkarte zu hinterlegen ist, werden die GPS-Koordinaten in die Koordinaten umgerechnet, welche dem gewählten Landkartentyp entsprechen. Danach wird die Landkarte angefordert und in das dafür vorgesehene Fenster am Bildschirm gemalt. Erst dann wird der Track über diese Landkarte gezeichnet. Wurden alle Daten korrekt eingegeben, stimmt der Track mit den auf der Landkarte eingezeichneten Wegen und Straßen überein. Alle von SportWatcher unterstützten GPS-Empfänger verwenden das WGS84 Datum. Daher muss jede Landkarte intern in diese Projektion umgerechnet werden.</para><sect1 id='sec.WMS-Server' >
|
|
|
376 |
<title>WMS Server<!-- anchor id="sec.WMS-Server" --></title>
|
|
|
377 |
<para>Ein Web Map Service (WMS) ist eine Schnittstelle zum Abrufen von Auszügen aus Landkarten über das World Wide Web. Eine solche Schnittstelle kann allgemein auch als Web Service bezeichnet werden. Die Spezifikation des Web Map Service wurde vom Open Geospatial Consortium (OGC) verfasst. Darin sind die Parameter beschrieben, die bei einer Anfrage benannt werden müssen oder können. Weiter ist darin festgelegt, wie der WMS-Server aus einer solchen Anfrage den Ausschnitt und gegebenenfalls die inhaltliche Aufbereitung der Karte erzeugen soll. Gemäß der Spezifikationen des OGC kann ein WMS-Server die angeforderten Karten aus Rasterdaten oder Vektordaten visualisieren. Im Sinne eines verteilten Geoinformationssystems (GIS) besitzt ein WMS nur die Fähigkeit zur Auskunft der notwendigen Metainformation, zur Visualisierung dieser Geodaten und für eine allgemeine Abfrage der zugrundeliegenden Sachdaten. Das Ergebnis, also die Karte, wird vom WMS in der Regel in einem einfachen Raster-Grafikformat zurückgegeben, je nach Aufbau können aber auch verschiedene andere Dateiformate wie Scalable Vector Graphics (SVG) oder Web Computer Graphics Metafile (WebCGM) erstellt werden, wie es z. B. bei temporären Daten mit Zeitbezug als Film notwendig wird. Daher kann der Nutzer einen Web Map Service grundlegend über seinen Webbrowser ansprechen, in dem die Karte dann angezeigt werden kann. Somit ist der Web Map Service Bestandteil eines Web GIS. SportWatcher unterstützt den Zugriff auf einen WMS-Server von sich aus. Wurde unter den Einstellungen ein WMS-Server ausgewählt, müssen die Informationen eingegeben werden die SportWatcher für den Zugriff benötigt. Die entsprechenden Einstellungen können unter <xref linkend="sec.WMS" /> vorgenommen werden.</para></sect1><sect1 id='sec.Landkarte-aus-Raster' >
|
|
|
378 |
<title>Landkarte aus Rasterimage<!-- anchor id="sec.Landkarte-aus-Raster" --></title>
|
|
|
379 |
<para>Liegt eine Landkarte in Form von Rasterdaten vor, benötigt SportWatcher geographische Bezugspunkte. Formate wie PNG (Portable Network Graphics), BMP (Bitmap), GIF (Graphics Image Format), etc., gelten als Raster Images. Die Landkarten liegen also in Form von Rasterdaten vor. Zunächst gilt es, eine Landkarte des gewünschten Gebiets, in der gewünschten Auflösung zu finden. Ist das geschafft, muss heraus gefunden werden, in welchem geodätischen Datum die Karte gezeichnet ist. Das kann schon schwieriger sein, ist aber unbedingt erforderlich! Weis man endlich das geodätische Datum, müssen die linke obere und die rechte untere Ecke der Landkarte in Form von Geokoordinaten ermittelt werden. Erst jetzt können die Einstellungen sinnvoll in SportWatcher vorgenommen werden. Unter 4.1.3.6 Map file kann nun der Pfad und der Dateiname der Datei, welche die Landkarte beinhaltet, eingegeben werden. Unter <xref linkend="sec.Landkartentyp" /> muss noch der entsprechende Dateityp ausgewählt werden. Damit ist es beinahe geschafft. Zuletzt müssen noch die Geokoordinaten der Eckpunkte der Landkarte eingegeben werden. Diese werden, wie unter <xref linkend="sec.Grafikkoordinaten" /> beschrieben, eingegeben. Nun sollte der Track bereits mit einer Landkarte unterlegt dargestllt werden. Es ist nicht notwendig, dass die Landkarte genau die Größe des Tracks hat. Die Landkarte sollte viel mehr Ihr gesamtes Trainingsgebiet umfassen. SportWatcher schneidet den benötigten Teil selbstständig aus der Landkarte aus, zieht ihn für die Darstellung am Bildschirm zurecht und zeigt die Landkarte an.</para></sect1><sect1 id='sec.Shape-Dateien' >
|
|
|
380 |
<title>Shape Dateien<!-- anchor id="sec.Shape-Dateien" --></title>
|
283 |
andreas |
381 |
<para>Bei Shape Dateien handelt es sich um eine Art Datenbankdatei, welche eine Landkarte in Form von Vektoren enthält. Mit Hilfe der Bibliothek <emphasis>Mapnik</emphasis> ist &sportwatcher; in der Lage, eine Landkarte aus Vektordaten zu zeichnen. Damit das funktioniert, benötigt man zunächtst einige Shape-Dateien, welche die Landkartendaten der gewünschten Region beinhalten. Zumeist befinden sich die Dateien in einer ZIP-Datei (oder anderem Format) gepackt. Sie müssen die Dateien in der Regel also zuerst in ein Verzeichnis entpacken.</para>
|
|
|
382 |
<para>Sind die Shape-Dateien vorhanden, braucht &sportwatcher; noch eine <emphasis>Beschreibungsdatei</emphasis> (Mapdatei), welche angibt wie die Inhalte der Shape-Dateien zu interpretieren sind. Die folgenden Punkte werden anhand der Shape-Dateien der <ulink url="http://download.geofabrik.de/osm/">Geofabrik</ulink> erklären, wie die Beschreibungsdatei aufgebaut ist.</para><sect2 id='sec.Quellen-fr-Shape-Dateien' >
|
|
|
383 |
<title>Quellen für Shape-Dateien<!-- anchor id="sec.Quellen-fr-Shape-Dateien" --></title>
|
|
|
384 |
<itemizedlist>
|
|
|
385 |
<listitem><para><ulink url="http://downloads.cloudmade.com/">Cloudmade</ulink></para></listitem><listitem><para><ulink url="http://download.geofabrik.de/osm/">Geofabrik</ulink></para></listitem></itemizedlist><para>Unter <xref linkend="sec.Mapdatei" /> ist der Aufbau der Beschreibungsdatei (Mapdatei) beschrieben.</para></sect2></sect1><sect1 id='sec.PostGIS-Datenbank' >
|
272 |
andreas |
386 |
<title>PostGIS Datenbank<!-- anchor id="sec.PostGIS-Datenbank" --></title>
|
283 |
andreas |
387 |
<para>Eine weitere Möglichkeit eine Landkarte in Form von Vektoren zu speichern, ist eine Datenbank. Speziell die Datenbank <emphasis>PostgreSQL</emphasis> eignet sich dafür hervorragend, da sie über die Erweiterungsmöglichkeit <emphasis>PostGIS</emphasis> verfügt. Diese Erweiterung stattet die Datenbank mit der Fähigkeit aus, Geokoordinaten direkt zu verarbeiten und damit diverse Berechnungen anzustellen. SportWatcher ist mit Hilfe von Mapnik in der Lage, auf eine OSM (Open Street Map) konforme Datenbank zuzugreifen und diese in eine Landkarte zu konvertieren.</para>
|
|
|
388 |
<para>Damit das funktioniert, wird jedoch eine Beschreibungsdatei (Mapdatei) benötigt. Diese Datei beinhaltet ein Regelwerk welches beschreibt, wie die einzelnen Komponenten einer Landkarte zu zeichnen sind. Für eine Beschreibung des Aufbaus einer Mapdatei siehe <xref linkend="sec.Mapdatei" />.</para></sect1><sect1 id='sec.OSM-Dateien' >
|
|
|
389 |
<title>OSM Dateien<!-- anchor id="sec.OSM-Dateien" --></title>
|
|
|
390 |
<para>OpenStreetMap ist ein freies Projekt, welches für jeden frei nutzbare Geodaten sammelt. Mit Hilfe dieser Daten können Weltkarten gerendert oder Spezialkarten abgeleitet werden. Auch auf der <ulink url="http://www.openstreetmap.org">OpenStreetMap-Startseite</ulink> ist eine solche Karte abrufbar.</para>
|
|
|
391 |
<para>Der Kern des Projekts ist eine wiki-ähnliche Datenbank mit geographischen Daten. Diese dürfen gemäß der <action>Creative Commons Attribution-ShareAlike 2.0-Lizenz</action> verwendet werden. Dadurch ist eine Einbindung in Drucke, Webseiten und Anwendungen wie Navigationssoftware möglich, ohne durch restriktive Lizenzen beschränkt zu sein oder Entgelte zahlen zu müssen.</para>
|
|
|
392 |
<para>Die Datenbank befindet sich derzeit im Aufbau. Für Deutschland und Österreich gibt es in größeren und insbesondere Uni-Städten schon eine sehr gute Abdeckung, oft sogar detailreicher als bei kommerziellen Anbietern. So sind Fahrrad- und Wanderwege bei OpenStreetMap mit hoher Genauigkeit erfasst. Dagegen ist etwa in ländlichen Bereichen der Datenbestand noch lückenhaft.</para>
|
|
|
393 |
<para>Die fertigen Kartendaten werden im „.osm“-Format ausgetauscht, einem XML-Format, dessen Syntax den Ausgaben der OpenStreetMap-API entspricht. Kopien der gesamten Datenbank werden wöchentlich zur Verfügung gestellt („planet file“). Ebenso gibt es tägliche und stündliche Updates sowie Ausschnitte für einzelne Länder.</para>
|
|
|
394 |
<para>&sportwatcher; ist in der Lage, eine OSM-Datei direkt zu verarbeiten, sofern das entsprechende Plugin vorhanden ist (Standard unter Debian). Damit &sportwatcher; weis wie die Karte zu zeichnen ist, benötigt es eine Beschreibungsdatei (Mapdatei). Diese Datei beinhaltet ein Regelwerk welches beschreibt, wie die einzelnen Komponenten einer Landkarte zu zeichnen sind. Für eine Beschreibung des Aufbaus einer Mapdatei siehe <xref linkend="sec.Mapdatei" />.</para></sect1><sect1 id='sec.Mapdatei' >
|
|
|
395 |
<title>Mapdatei<!-- anchor id="sec.Mapdatei" --></title>
|
|
|
396 |
<para>Eine Mapdatei (Beschreibungsdatei für Shape-Dateien) ist eine Datei im Format XML. Sie kann daher mit einem XML-Editor erstellt werden, oder auch mit einem beliebigen Texteditor. Sowohl der Sourcedistribution als auch der Binärdistribution von &sportwatcher; liegen Mapdateien für die unter <xref linkend="sec.Shape-Dateien" /> beschriebenen Quellen bei. In der Binärdistribution befinden sich diese im Verzeichnis <filename class="directory">/usr/share/sportwatcher</filename>.</para>
|
|
|
397 |
<para>Eine Mapdatei gliedert sich in Abschnitte und Unterabschnitte. Dabei spielt die Reihenfolge eine gewisse Bedeutung. Die folgende Struktur zeigt den grundsätzlichen Aufbau der Datei:</para><screen>
|
|
|
398 |
<![CDATA[<?xml version = '1.0' encoding = 'utf-8'?>
|
|
|
399 |
<!DOCTYPE Map>
|
|
|
400 |
<Map>
|
|
|
401 |
<Style>
|
|
|
402 |
<Rule>
|
|
|
403 |
<CssParameter></CssParameter>
|
|
|
404 |
<Symbolizer/>
|
|
|
405 |
</Rule>
|
|
|
406 |
</Style>
|
|
|
407 |
<Layer>
|
|
|
408 |
<StyleName></StyleName>
|
|
|
409 |
<DataSource>
|
|
|
410 |
<Parameter></Parameter>
|
|
|
411 |
</Datasource>
|
|
|
412 |
</Layer>
|
|
|
413 |
</Map>
|
|
|
414 |
]]></screen><para>Die einzelnen Elemente (<command>Map</command>, <command>Style</command>, ...) können Attribute enthalten. Die folgenden Punkte erklären jedes einzelne Element und seine Anwendung.</para><sect2 id='sec.Dateikopf' >
|
|
|
415 |
<title>Dateikopf<!-- anchor id="sec.Dateikopf" --></title>
|
|
|
416 |
<para>Der Kopf der Datei sieht immer gleich aus. Er definiert die Datei als XML-Datei. Die folgenden beiden Zeilen sind also ungeändert zu übernehmen:</para><screen>
|
|
|
417 |
<![CDATA[<?xml version = '1.0' encoding = 'utf-8'?>
|
|
|
418 |
<!DOCTYPE Map>
|
|
|
419 |
]]></screen></sect2><sect2 id='sec.Element-Map' >
|
|
|
420 |
<title>Element: <markup>Map</markup><!-- anchor id="sec.Element-Map" --></title>
|
|
|
421 |
<para>Das Element Map leitet die Definition einer Landkarte ein. Dieses Element darf nur einmal in der Datei vorkommen.</para><itemizedlist>
|
|
|
422 |
<listitem><para>Element: <command>Map</command></para></listitem><listitem><para>Element type: Root Element</para></listitem><listitem><para>Attribute:</para><itemizedlist>
|
|
|
423 |
<listitem><para><command>bgcolor</command>: HTML-Farbcode für den Hintergrund der Landkarte (zum Beispiel <command>#000000</command>)</para></listitem><listitem><para><command>srs</command>: Koordinatensystem in dem die Landkarte erzeugt wurde (zum Beispiel <userinput>'+proj=latlong+datum=WGS84'</userinput> für das geografische Koordinatensystem WGS84)</para></listitem><listitem><para><command>buffer_size</command>: Standard: 0; Eine gute Zahl ist die Hälfte der zu darstellenden Fläche um das Abschneiden von Bezeichnungen zu minimieren. Das beeinflusst den “Envelope”, welcher vom Plazierdetektor verwendet wird ( wie <command>'avoid_edges'</command> Parameter)</para></listitem></itemizedlist></listitem><listitem><para>Kinder:</para><itemizedlist>
|
|
|
424 |
<listitem><para><command>Style</command> (siehe <xref linkend="sec.Element-Style" />)</para></listitem><listitem><para><command>Layer</command> (siehe <xref linkend="sec.Element-Layer" />)</para></listitem></itemizedlist></listitem></itemizedlist></sect2><sect2 id='sec.Element-Style' >
|
|
|
425 |
<title>Element: <markup>Style</markup><!-- anchor id="sec.Element-Style" --></title>
|
|
|
426 |
<para>Das Element Style definiert wie ein Objekt gezeichnet werden soll. Dieses Element kann beliebig oft verwendet werden. Das Element Layer greift auf die Style-Elemente zurück und sorgt so dafür, dass diese überhaupt gezeichnet werden.</para><itemizedlist>
|
|
|
427 |
<listitem><para>Element: <command>Style</command></para></listitem><listitem><para>Element type: Sammlung von <command>Rules</command></para></listitem><listitem><para>Attribute</para><itemizedlist>
|
|
|
428 |
<listitem><para><command>name</command>: Name des Style-Elements. Der Name muss innerhalb der Datei eindeutig sein. Auf ein <command>Style</command> wird innerhalb eines <command>Layers</command> referenziert. Ist ein <command>Style</command> in keinem <command>Layer</command> referenziert, wird es ignoriert. </para></listitem></itemizedlist></listitem><listitem><para>Kinder:</para><itemizedlist>
|
|
|
429 |
<listitem><para><command>Rule</command> (siehe <xref linkend="sec.Element-Rule" />)</para></listitem></itemizedlist></listitem></itemizedlist></sect2><sect2 id='sec.Element-Rule' >
|
|
|
430 |
<title>Element: <markup>Rule</markup><!-- anchor id="sec.Element-Rule" --></title>
|
|
|
431 |
<para>Das Element <command>Rule</command> definiert wie ein Detail eines Objektes (siehe <xref linkend="sec.Element-Style" />) gezeichnet werden soll. Innerhalb eines <command>Style</command>-Elements können beliebig viele <command>Rule</command>-Elemente vorkommen.</para><itemizedlist>
|
|
|
432 |
<listitem><para>Element: <command>Rule</command></para></listitem><listitem><para>Element type: Definiert wie ein Detail zu zeichnen ist.</para></listitem><listitem><para>Attribute</para><itemizedlist>
|
|
|
433 |
<listitem><para><command>name</command>: Der Name des Rule-Elements. Dieser Name ist optional und kann weggelassen werden. Wird er angegeben, muss er inner halb der Datei eindeutig sein.</para></listitem><listitem><para><command>title</command>: Der Titel des Rule-Elements. Der Titel ist optional und kann weggelassen werden. Der Titel darf auch mehrfach in einem Dokument vorkommen.</para></listitem></itemizedlist></listitem><listitem><para>Kinder:</para><itemizedlist>
|
|
|
434 |
<listitem><para><command>Filter</command> (siehe <xref linkend="sec.Element-Filter" />)</para></listitem><listitem><para><command>ElseFilter</command> (siehe <xref linkend="sec.Element-ElseFilter" />)</para></listitem><listitem><para><command>MinScaleDenominator</command> (siehe <xref linkend="sec.Element-MinScaleDenominator" />)</para></listitem><listitem><para><command>MaxScaleDenominator</command> (siehe <xref linkend="sec.Element-MaxScaleDenominator" />)</para></listitem><listitem><para><command>PointSymbolizer</command> (siehe <xref linkend="sec.Element-PointSymbolizer" />)</para></listitem><listitem><para><command>LinePatternSymbolizer</command> (siehe <xref linkend="sec.Element-LinePatternSymbolizer" />)</para></listitem><listitem><para><command>PolygonPatternSymbolizer</command> (siehe <xref linkend="sec.Element-PolygonPatternSymbolizer" />)</para></listitem><listitem><para><command>TextSymbolizer</command> (siehe <xref linkend="sec.Element-TextSymbolizer" />)</para></listitem><listitem><para><command>ShieldSymbolizer</command> (siehe <xref linkend="sec.Element-ShieldSymbolizer" />)</para></listitem><listitem><para><command>LineSymbolizer</command> (siehe <xref linkend="sec.Element-LineSymbolizer" />)</para></listitem><listitem><para><command>PolygonSymbolizer</command> (siehe <xref linkend="sec.Element-PolygonSymbolizer" />)</para></listitem></itemizedlist></listitem></itemizedlist></sect2><sect2 id='sec.Element-Filter' >
|
|
|
435 |
<title>Element: <markup>Filter</markup><!-- anchor id="sec.Element-Filter" --></title>
|
|
|
436 |
<para>Filter dienen dazu, nur bestimmte Objekte zu zeichnen. Damit können zum Beispiel alle als “Autobahn” gekennzeichnten Einträge herausgefiltert werden und entsprechend gezeichnet werden. Das Element <command>Filter</command> kann innerhalb eines <command>Rule</command>-Elements nur einmal vorkommen. Ein <command>Filter</command> unterliegt einer bestimmten Syntax, welche von &sportwatcher; penibel geprüft wird. Neben einfachen Vergleichsausdrücken, können auch reguläre Ausdrücke verwendet werden. Da in XML-Dateien die Zeichen < (kleiner als) und > (größer als) bereits mit anderen Bedeutungen belegt sind, können sie nicht direkt verwendet werden. Statt dessen sind folgende <emphasis>Vergleichsoperatoren</emphasis> zu verwenden:</para><itemizedlist>
|
|
|
437 |
<listitem><para>Größer als: &gt;</para></listitem><listitem><para>Kleiner als: &lt;</para></listitem><listitem><para>Gleich: = </para></listitem></itemizedlist><sect3 id='sec.Vergleich' >
|
|
|
438 |
<title>Vergleich<!-- anchor id="sec.Vergleich" --></title>
|
|
|
439 |
<para>Ein einfacher Vergleich besteht immer aus einer <Variable>, welche sich auf den Spaltennamen der Shape-Datei bezieht und auf einen Möglichen Inhalt der Spalte (<value>). Der Spaltennamen (<variable>) muss immer in Eckige Klammen ([]) eingeschlossen werden. Der Mögliche Inhalt, welche das Filterkriterium bildet, muss in einfachen Hochkomma ('') eingeschlossen werden. Zwischen der <variable> und der <value> befindet sich der Vergeichsoperator.</para><screen>
|
|
|
440 |
<![CDATA[<Filter>[<variable>] = '<value>'</Filter>
|
|
|
441 |
]]></screen><para>Mehrere Vergleiche können mit “and” oder “or” verknüpft werden:</para><screen>
|
|
|
442 |
<![CDATA[<Filter>[CARTO] >= 2 and [CARTO] < 5</Filter>
|
|
|
443 |
]]></screen></sect3><sect3 id='sec.Vergleichsoperatoren' >
|
|
|
444 |
<title>Vergleichsoperatoren<!-- anchor id="sec.Vergleichsoperatoren" --></title>
|
|
|
445 |
<para>Die Vergleichsoperatoren &lt; und &gt; können mit = kombiniert werden. Dadurch ergeben sich insgesamt folgende Vergleichsoperatoren:</para>
|
|
|
446 |
<informaltable>
|
|
|
447 |
<tgroup cols="2" colsep="1" rowsep="1">
|
|
|
448 |
<colspec colname="col0" align="center" />
|
|
|
449 |
<colspec colname="col1" align="center" />
|
|
|
450 |
<tbody> <row>
|
|
|
451 |
<entry align="center" valign="top">Operator</entry>
|
|
|
452 |
<entry align="center" valign="top">Bedeutung</entry>
|
|
|
453 |
</row>
|
|
|
454 |
<row>
|
|
|
455 |
<entry align="center" valign="top">&lt;</entry>
|
|
|
456 |
<entry align="left" valign="top">Kleiner als</entry>
|
|
|
457 |
</row>
|
|
|
458 |
<row>
|
|
|
459 |
<entry align="center" valign="top">&gt;</entry>
|
|
|
460 |
<entry align="left" valign="top">Größer als</entry>
|
|
|
461 |
</row>
|
|
|
462 |
<row>
|
|
|
463 |
<entry align="center" valign="top">=</entry>
|
|
|
464 |
<entry align="left" valign="top">Gleich</entry>
|
|
|
465 |
</row>
|
|
|
466 |
<row>
|
|
|
467 |
<entry align="center" valign="top">&lt;=</entry>
|
|
|
468 |
<entry align="left" valign="top">Kleiner oder gleich</entry>
|
|
|
469 |
</row>
|
|
|
470 |
<row>
|
|
|
471 |
<entry align="center" valign="top">&gt;=</entry>
|
|
|
472 |
<entry align="left" valign="top">Größer oder gleich</entry>
|
|
|
473 |
</row>
|
|
|
474 |
<row>
|
|
|
475 |
<entry align="center" valign="top">&lt;&gt;</entry>
|
|
|
476 |
<entry align="left" valign="top">Ungleich</entry>
|
|
|
477 |
</row>
|
|
|
478 |
<row>
|
|
|
479 |
<entry align="center" valign="top">not</entry>
|
|
|
480 |
<entry align="left" valign="top">Umkehrung des folgenden Ausdrucks</entry>
|
|
|
481 |
</row> </tbody>
|
|
|
482 |
</tgroup>
|
|
|
483 |
</informaltable><screen>
|
|
|
484 |
<![CDATA[<Filter>[waterway]='canal' and not ([tunnel] = 'yes' or [tunnel] ='true')</Filter>
|
|
|
485 |
]]></screen><para>Zudem können reguläre Ausdrücke verwendet werden:</para><screen>
|
|
|
486 |
<![CDATA[<Filter>[place] = 'town' and [population].match('[5-9]\d\d\d\d')</Filter>
|
|
|
487 |
]]></screen><para>Siehe auch: <xref linkend="sec.Element-ElseFilter" /></para></sect3></sect2><sect2 id='sec.Element-ElseFilter' >
|
|
|
488 |
<title>Element: <markup>ElseFilter</markup><!-- anchor id="sec.Element-ElseFilter" --></title>
|
|
|
489 |
<para>Dieses Element gehört zum Element <command>Filter</command> und stellt den Teil dar, der angewendet wird wenn der Filter nicht zutrifft. Innerhalb des Elements <command>Rule</command> kann <command>ElseFilter</command> nur einmal vorkommen. Es können aber beliebig viele <command>Rule</command>-Elemente mit einem <command>ElseFilter</command>, statt einem <command>Filter</command>, verwendet werden.</para>
|
|
|
490 |
<para>Beispiel:</para><screen>
|
|
|
491 |
<![CDATA[<Style name="contours">
|
|
|
492 |
<Rule>
|
|
|
493 |
<Filter>[major] = 1</Filter>
|
|
|
494 |
<MaxScaleDenominator>25000</MaxScaleDenominator>
|
|
|
495 |
<MinScaleDenominator>100</MinScaleDenominator>
|
|
|
496 |
<LineSymbolizer>
|
|
|
497 |
<CssParameter name="stroke">#fb9b67</CssParameter>
|
|
|
498 |
</LineSymbolizer>
|
|
|
499 |
</Rule>
|
|
|
500 |
<Rule>
|
|
|
501 |
<ElseFilter/>
|
|
|
502 |
<MaxScaleDenominator>25000</MaxScaleDenominator>
|
|
|
503 |
<MinScaleDenominator>5000</MinScaleDenominator>
|
|
|
504 |
<LineSymbolizer>
|
|
|
505 |
<CssParameter name="stroke">#f45906</CssParameter>
|
|
|
506 |
</LineSymbolizer>
|
|
|
507 |
</Rule>
|
|
|
508 |
<Rule>
|
|
|
509 |
<ElseFilter/>
|
|
|
510 |
<MaxScaleDenominator>5000</MaxScaleDenominator>
|
|
|
511 |
<MinScaleDenominator>100</MinScaleDenominator>
|
|
|
512 |
<LineSymbolizer>
|
|
|
513 |
<CssParameter name="stroke">#f4062A</CssParameter>
|
|
|
514 |
</LineSymbolizer>
|
|
|
515 |
</Rule>
|
|
|
516 |
</Style>
|
|
|
517 |
]]></screen></sect2><sect2 id='sec.Element-MinScaleDenominator' >
|
|
|
518 |
<title>Element: <markup>MinScaleDenominator</markup><!-- anchor id="sec.Element-MinScaleDenominator" --></title>
|
|
|
519 |
<para>Will man eine digitale Landkarte machen und ermitteln welche Skalierung diese hat, dann gibt es zwei Aspekte die eine Rolle spielen: Die verwendete Projektion und die Auflösung die zum Anzeigen der Karte verwendet wird.</para><sect3 id='sec.Skalierung' >
|
|
|
520 |
<title>Skalierung<!-- anchor id="sec.Skalierung" --></title>
|
|
|
521 |
<para>Traditionell ist die Skalierung die Art, wie die wirkliche Welt auf Papier abgebildet wird. Sehen wir also eine Skalierung von 1:10.000 dann bedeutet das, ein Zentimeter am Papier entspricht 10.000 Zentimeter in der realen Welt. Da jede Lankarte auf Papier das Ergebnis einer Projektion ist, und da Projektionen oft nicht perfekt sind, wird eine Karte der echten Welt immer einige Störungen mit sich bringen. Zum Beispiel haben Karten der “British Ordnance Survey”, welche mit einer Skalierung von 1:50.000 gefertigt wurden, eine tatsächliche Sklaierung die variiert, abhängig von der Position. So beträgt die Abweichung gegen Osten zwischen 1:49.980 und 1:50.025. Dieser Unterschied ist klein und wird kaum Störungen verursachen.</para>
|
|
|
522 |
<para>Je größer die Karte aber ist, desto größer wird die Störung. Betrachten wir zum Beispiel die folgende Karte der gesamten Erde wird klar, dass dafür kein Massstab angegeben werden kann. Auf dieser Karte ist Afrika gleich groß wie Grönland. In Wirklichkeit ist es aber gut 14 mal so groß. Die pinken Kreise markieren Bereiche von gleicher Größe in der realen Welt. &sportwatcher; verwendet intern dennoch eine Skalierung für solche Projektionen, aber es sollte klar sein, dass diese Skalierung keinen Wert hat, oder zumindest nur für einen bestimmten Bereich gilt.</para>
|
|
|
523 |
<screenshot>
|
|
|
524 |
<screeninfo>Weltkarte</screeninfo>
|
|
|
525 |
<mediaobject>
|
|
|
526 |
<imageobject>
|
|
|
527 |
<imagedata fileref="Tissot_mercator.png" format="PNG"></imagedata>
|
|
|
528 |
</imageobject>
|
|
|
529 |
<textobject>
|
|
|
530 |
<phrase>Weltkarte</phrase>
|
|
|
531 |
</textobject>
|
|
|
532 |
</mediaobject>
|
|
|
533 |
</screenshot>
|
|
|
534 |
<para>Für weitere Details bezüglich Skalierung von Landkarten, siehe <ulink url="http://trac.mapnik.org/wiki/ScaleAndPpi"></ulink>.</para></sect3><sect3 id='sec.ScaleDenominator' >
|
|
|
535 |
<title>ScaleDenominator<!-- anchor id="sec.ScaleDenominator" --></title>
|
|
|
536 |
<para>Der Wert des <command>MinScaleDenominator</command> wird mit 1e-6 multipliziert. Ist die aktuelle Skalierung größer oder gleich dem angegebenen Wert (hoch 1e-6), dann wird die Anweisung gezeichnet. Andernfalls wird sie ignoriert.</para>
|
|
|
537 |
<para>Beispiel:</para><screen>
|
|
|
538 |
<![CDATA[<Style name="text">
|
|
|
539 |
<Rule>
|
|
|
540 |
<Filter>[place] = 'city'</Filter>
|
|
|
541 |
<MaxScaleDenominator>10000000</MaxScaleDenominator>
|
|
|
542 |
<MinScaleDenominator>2000000</MinScaleDenominator>
|
|
|
543 |
<TextSymbolizer name="name" face_name="DejaVu Sans Book" size="10" fill="#000" dy="0" halo_radius="1" wrap_width="0"/>
|
|
|
544 |
</Rule>
|
|
|
545 |
</Style>
|
|
|
546 |
]]></screen><para>Der Wert 2.000.000 des obigen Beispiels wird mit 1e-6 multipliziert und das Ergebnis mit dem aktuellen Skalierungsfaktor verglichen. Ist der aktuelle Skalierungsfaktor größer oder gleich dem Ergebnis (2), wird Text ausgegeben. Andernfalls nicht.</para></sect3></sect2><sect2 id='sec.Element-MaxScaleDenominator' >
|
|
|
547 |
<title>Element: <markup>MaxScaleDenominator</markup><!-- anchor id="sec.Element-MaxScaleDenominator" --></title>
|
|
|
548 |
<para>Der Wert des <command>MaxScaleDenominator</command> wird mit 1e-6 multipliziert. Ist die aktuelle Skalierung kleiner oder gleich dem angegebenen Wert (hoch 1e-6), dann wird die Anweisung gezeichnet. Andernfalls wird sie ignoriert. Für weitere Details über Sklaierung siehe <xref linkend="sec.Element-MinScaleDenominator" />.</para></sect2><sect2 id='sec.Element-PointSymbolizer' >
|
|
|
549 |
<title>Element: <markup>PointSymbolizer</markup><!-- anchor id="sec.Element-PointSymbolizer" --></title>
|
|
|
550 |
<para>Ein <command>PointSymbolizer</command> definiert wie etwas an einem bestimmten Punkt gezeichnet werden soll. Innerhalb eines <command>Rule</command>-Elements können beliebig viele <command>PointSymbolizer</command> definiert werden.</para><itemizedlist>
|
|
|
551 |
<listitem><para>Element: <command>PointSymbolizer</command></para></listitem><listitem><para>Elementtype: Zeichnet einen bestimmten Punkt</para></listitem><listitem><para>Attribute:</para><itemizedlist>
|
|
|
552 |
<listitem><para><command>file</command>: Pfad zu einem Rasterbild in einem der Formate PNG oder JPG</para></listitem><listitem><para><command>width</command>: Breite des Rasterimage in Pixel</para></listitem><listitem><para><command>height</command>: Höhe des Rasterimage in Pixel</para></listitem><listitem><para><command>type</command>: Type des Rasterimage (png, jpg, tiff)</para></listitem><listitem><para><command>allow_overlap</command>: Standard: false; Wenn auf “true” gesetzt, dann dürfen sich die Punkte überlappen</para></listitem><listitem><para><command>opacity</command>: Standard: 1; Gibt die Transparenz des Bildes an, wobei 0.0 vollkommen durchsichtig ist und 1.0 vollkommen undurchsichtig ist. Werte außerhalb dieses Bereichs sind nicht erlaubt.</para></listitem></itemizedlist></listitem></itemizedlist><para>Beispiel:</para><screen>
|
|
|
553 |
<![CDATA[<PointSymbolizer file="/tmp/pub.png" width="16" height="16" type="png" />
|
|
|
554 |
]]></screen></sect2><sect2 id='sec.Element-LinePatternSymbolizer' >
|
|
|
555 |
<title>Element: <markup>LinePatternSymbolizer</markup><!-- anchor id="sec.Element-LinePatternSymbolizer" --></title>
|
|
|
556 |
<para>Zeichnet eine Linie in dem es das angegebene Rasterimage ständig wiederholt.</para><itemizedlist>
|
|
|
557 |
<listitem><para>Element: <command>LinePatternSymbolizer</command></para></listitem><listitem><para>Elementtype: Zeichnet eine Linie mit einem Rasterimage</para></listitem><listitem><para>Attribute:</para><itemizedlist>
|
|
|
558 |
<listitem><para><command>file</command>: Pfad zu einem Rasterimage in einem der Formate PNG oder JPG</para></listitem><listitem><para><command>width</command>: Breite des Rasterimage in Pixel</para></listitem><listitem><para><command>heigh</command>t: Höhe des Rasterimage in Pixel</para></listitem><listitem><para><command>type</command>: Type des Rasterimage (png, jpg, tiff)</para></listitem></itemizedlist></listitem></itemizedlist><para>Beispiel:</para><screen>
|
|
|
559 |
<![CDATA[<LinePatternSymbolizer width="16" height="16" type="png" file="/path/to/icon.png"/>
|
|
|
560 |
]]></screen></sect2><sect2 id='sec.Element-PolygonPatternSymbolizer' >
|
|
|
561 |
<title>Element: <markup>PolygonPatternSymbolizer</markup><!-- anchor id="sec.Element-PolygonPatternSymbolizer" --></title>
|
|
|
562 |
<para>Zeichnet eine Fläche mit einer Hintergrundfarbe und verteilt das Rasterimage gleichmäßig über die Fläche.</para>
|
|
|
563 |
<screenshot>
|
|
|
564 |
<screeninfo>PolygonPatternSymbolizer</screeninfo>
|
|
|
565 |
<mediaobject>
|
|
|
566 |
<imageobject>
|
|
|
567 |
<imagedata fileref="polygon_pattern.png" format="PNG"></imagedata>
|
|
|
568 |
</imageobject>
|
|
|
569 |
<textobject>
|
|
|
570 |
<phrase>PolygonPatternSymbolizer</phrase>
|
|
|
571 |
</textobject>
|
|
|
572 |
</mediaobject>
|
|
|
573 |
</screenshot><itemizedlist>
|
|
|
574 |
<listitem><para>Element: <command>PolygonPatternSymbolizer</command></para></listitem><listitem><para>Elementtype: Zeichnet eine Fläche mit einem Rasterimage</para></listitem><listitem><para>Attribute:</para><itemizedlist>
|
|
|
575 |
<listitem><para><command>file</command>: Pfad zu einem Rasterimage in einem der Formate PNG oder JPG</para></listitem><listitem><para><command>width</command>: Breite des Rasterimage in Pixel</para></listitem><listitem><para><command>height</command>: Höhe des Rasterimage in Pixel</para></listitem><listitem><para><command>type</command>: Type des Rasterimage (png, jpg, tiff)</para></listitem></itemizedlist></listitem></itemizedlist><para>Beispiel:</para><screen>
|
|
|
576 |
<![CDATA[<PolygonPatternSymbolizer width="16" height="16" type="png" file="/path/to/icon.png"/>
|
|
|
577 |
]]></screen></sect2><sect2 id='sec.Element-TextSymbolizer' >
|
|
|
578 |
<title>Element: <markup>TextSymbolizer</markup><!-- anchor id="sec.Element-TextSymbolizer" --></title>
|
|
|
579 |
<para>Schreibt einen Text in einer angegebenen Farbe und Schrift.</para>
|
|
|
580 |
<para>Ein <command>TextSymbolizer</command> wird dazu verwendet, um die Elemente einer Landkarte zu beschriften. Dabei kann die Schrift, die Schriftgröße, sowie die Schriftfarbe gewählt werden. Zusätzlich kann bestimmt werden, ob die Schift über dem Objekt angezeigt werden soll, oder entlang einer Linie (Beschriftung von Straßen, Flüssen, etc.).</para><itemizedlist>
|
|
|
581 |
<listitem><para>Element: <command>TextSymbolizer</command></para></listitem><listitem><para>Elementtype: Beschriftet Objekte</para></listitem><listitem><para>Attribute:</para><itemizedlist>
|
|
|
582 |
<listitem><para><command>name</command>: Das ist der Feldname auf den sich der Text bezieht. Der Feldname bezieht sich auf eine Datenbank, oder dem Feld einer Shape Datei, oder dem Feld einer OSM-Datei. Im Falle einer Shape Datei oder einer OSM-Datei, muss der Feldname der Groß-Kleinschreibung entsprechen.</para></listitem><listitem><para><command>face_name</command>: Der Name der zu verwendenden Schrift.</para></listitem><listitem><para><command>size</command>: Größe der Schrift in Pixel</para></listitem><listitem><para><command>wrap_width</command>: Länge in Pixeln bevor ein Text umgebrochen wird.</para></listitem><listitem><para><command>fill</command>: Farbe des Textes (z.B.: #FFFFFF)</para></listitem><listitem><para><command>halo_radius</command>: Radius des Lichthofs um die Schrift in ganzen Pixel</para></listitem><listitem><para><command>dx, dy</command>: Deplaziere den Text um eine fixe Anzahl von Pixel um beide Achsen</para></listitem><listitem><para><command>min_distance</command>: Minimale Abstand zwischen sich wiederholenden Beschriftungen wie Straßennamen und Schildsymbolen</para></listitem><listitem><para><command>placement</command>: Standard: “point”; Beschriftung über dem Objekt. “line”; Beschriftung entlang der Linie des Objekts (Straßen, Flüsse, etc.)</para></listitem><listitem><para><command>alignment</command>: Vertikale Positionierung der Beschriftung relativ zu einem Punkt ("top" (Beschriftung oberhalb des Punkts), "middle" (Beschriftung über dem Punkt), "bottom" (Beschriftung unterhalb des Punkts)) Standard ist "bottom" </para></listitem></itemizedlist></listitem></itemizedlist><para>Beispiel:</para><screen>
|
|
|
583 |
<![CDATA[<TextSymbolizer name="FIELD_NAME" face_name="DejaVu Sans Book" size="10" fill="black" halo_fill= "white" halo_radius="1" placement="line" allow_overlap="false"/>
|
|
|
584 |
]]></screen></sect2><sect2 id='sec.Element-ShieldSymbolizer' >
|
|
|
585 |
<title>Element: <markup>ShieldSymbolizer</markup><!-- anchor id="sec.Element-ShieldSymbolizer" --></title>
|
|
|
586 |
<para>Ein <command>ShieldSymbolizer</command> wird verwendet um Schildsymbole auf eine Karte zu zeichnen. Die Symbole werden als Rasterimage angegeben.</para><itemizedlist>
|
|
|
587 |
<listitem><para>Element: <command>ShieldSymbolizer</command></para></listitem><listitem><para>Elementtype: Zeichnet Schildsymbole</para></listitem><listitem><para>Attribute:</para><itemizedlist>
|
|
|
588 |
<listitem><para><command>name</command>: Das ist der Feldname auf den sich der Text bezieht. Der Feldname bezieht sich auf eine Datenbank, oder dem Feld einer Shape Datei, oder dem Feld einer OSM-Datei. Im Falle einer Shape Datei oder einer OSM-Datei, muss der Feldname der Groß-Kleinschreibung entsprechen.</para></listitem><listitem><para><command>face_name</command>: Name der zu verwendenden Schrift</para></listitem><listitem><para><command>fill</command>: Farbe der Schrift</para></listitem><listitem><para><command>placement</command>: Standard: “point”; Beschriftung über dem Objekt. “line”; Beschriftung entlang der Linie des Objekts (Straßen, Flüsse, etc.)</para></listitem><listitem><para><command>file</command>: Dateiname des Schildsymbols. Es muss sich um ein Rasterimage in einem der Formate PNG, JPG oder TIFF handeln.</para></listitem><listitem><para><command>type</command>: Typ des Rasterimages (png, jpg, tiff)</para></listitem><listitem><para><command>size</command>: Größe der Schrift in Pixel</para></listitem><listitem><para><command>width</command>: Breite des Schildsymbols in Pixel</para></listitem><listitem><para><command>height</command>: Höhe des Schildsymbols in Pixel</para></listitem><listitem><para><command>dx, dy</command>: Deplaziere den Text um eine fixe Anzahl von Pixel um beide Achsen</para></listitem><listitem><para><command>min_distance</command>: Minimale Abstand zwischen sich wiederholenden Beschriftungen wie Straßennamen und Schildsymbolen</para></listitem></itemizedlist></listitem></itemizedlist><para>Beispiel:</para><screen>
|
|
|
589 |
<![CDATA[<Style name="My Style">
|
|
|
590 |
<Rule>
|
|
|
591 |
<ShieldSymbolizer name="NAME" face_name="DejaVu Sans Bold" size="6" fill="#000000" min_distance="50" file="images/ushighway_shield_20.png" type="png" width="20" height="20" spacing="100" min_distance="50"></ShieldSymbolizer>
|
|
|
592 |
</Rule>
|
|
|
593 |
</Style>
|
|
|
594 |
]]></screen></sect2><sect2 id='sec.Element-LineSymbolizer' >
|
|
|
595 |
<title>Element: <markup>LineSymbolizer</markup><!-- anchor id="sec.Element-LineSymbolizer" --></title>
|
|
|
596 |
<para>Ein <command>LineSymbolizer</command> wird verwendet um eine Linie zu zeichnen. Dabei kann das Aussehen der Linie bestimmt werden.</para><itemizedlist>
|
|
|
597 |
<listitem><para>Element: <command>LineSymbolizer</command></para></listitem><listitem><para>Elementtype: Zeichnet eine Linie</para></listitem><listitem><para>Attribute:</para><itemizedlist>
|
|
|
598 |
<listitem><para>Keine</para></listitem></itemizedlist></listitem><listitem><para>Kinder:</para><itemizedlist>
|
|
|
599 |
<listitem><para><command>CssParameter</command> (siehe <xref linkend="sec.Element-CssParameter" />)</para></listitem></itemizedlist></listitem></itemizedlist><sect3 id='sec.Element-CssParameter' >
|
|
|
600 |
<title>Element: <markup>CssParameter</markup><!-- anchor id="sec.Element-CssParameter" --></title>
|
|
|
601 |
<para>Innerhalb eines <command>LineSymbolizer</command> werden die einzelnen Optionen mittels des Elements <command>CssParameter</command> definiert.</para><itemizedlist>
|
|
|
602 |
<listitem><para>Element: <command>CssParameter</command></para></listitem><listitem><para>Elementtype: Definiert Optionen für das Element <command>LineSymbolizer</command></para></listitem><listitem><para>Attribute:</para><itemizedlist>
|
|
|
603 |
<listitem><para><command>name</command>: Definiert den Namen einer Option.</para></listitem></itemizedlist></listitem></itemizedlist><para>Die folgende Tabelle listet die Namen der möglichen Optionen und beschreibt ihre Bedeutung:</para>
|
|
|
604 |
<informaltable><tgroup cols="3" colsep="1" rowsep="1">
|
|
|
605 |
<colspec colname="col0" align="left" />
|
|
|
606 |
<colspec colname="col1" align="left" />
|
|
|
607 |
<colspec colname="col2" align="left" />
|
|
|
608 |
<tbody>
|
|
|
609 |
<row>
|
|
|
610 |
<entry align="center" valign="top">Option</entry>
|
|
|
611 |
<entry align="center" valign="top">Inhalt</entry>
|
|
|
612 |
<entry align="center" valign="top">Bedeutung</entry>
|
|
|
613 |
</row>
|
|
|
614 |
<row>
|
|
|
615 |
<entry align="left" valign="top">stroke</entry>
|
|
|
616 |
<entry align="left" valign="top">CSS Farbe</entry>
|
|
|
617 |
<entry align="left" valign="top">Ein Farbwert</entry>
|
|
|
618 |
</row>
|
|
|
619 |
<row>
|
|
|
620 |
<entry align="left" valign="top">stroke-width</entry>
|
|
|
621 |
<entry align="left" valign="top">0.0 - n</entry>
|
|
|
622 |
<entry align="left" valign="top">Breite der Linie in Pixeln</entry>
|
|
|
623 |
</row>
|
|
|
624 |
<row>
|
|
|
625 |
<entry align="left" valign="top">stroke-opacity</entry>
|
|
|
626 |
<entry align="left" valign="top">0.0 - 1.0</entry>
|
|
|
627 |
<entry align="left" valign="top">Transparenz; 0.0 ist vollständig transparent. 1.0 ist vollkommen undurchsichtig.</entry>
|
|
|
628 |
</row>
|
|
|
629 |
<row>
|
|
|
630 |
<entry align="left" valign="top">stroke-linejoin</entry>
|
|
|
631 |
<entry align="left" valign="top">miter, round, bevel</entry>
|
|
|
632 |
<entry align="left" valign="top">Definiert die Art wie zwei Linien zusammengefügt werden sollen:
|
|
|
633 |
<screenshot>
|
|
|
634 |
<screeninfo>Line join</screeninfo>
|
|
|
635 |
<mediaobject>
|
|
|
636 |
<imageobject>
|
|
|
637 |
<imagedata fileref="linejoin.png" format="PNG"></imagedata>
|
|
|
638 |
</imageobject>
|
|
|
639 |
<textobject>
|
|
|
640 |
<phrase>Line join</phrase>
|
|
|
641 |
</textobject>
|
|
|
642 |
</mediaobject>
|
|
|
643 |
</screenshot></entry>
|
|
|
644 |
</row>
|
|
|
645 |
<row>
|
|
|
646 |
<entry align="left" valign="top">stroke-linecap</entry>
|
|
|
647 |
<entry align="left" valign="top">round, butt, square</entry>
|
|
|
648 |
<entry align="left" valign="top">Definiert wie das Ende einer Linie aussehen soll:
|
|
|
649 |
<screenshot>
|
|
|
650 |
<screeninfo>Line cap</screeninfo>
|
|
|
651 |
<mediaobject>
|
|
|
652 |
<imageobject>
|
|
|
653 |
<imagedata fileref="linecap.png" format="PNG"></imagedata>
|
|
|
654 |
</imageobject>
|
|
|
655 |
<textobject>
|
|
|
656 |
<phrase>Line cap</phrase>
|
|
|
657 |
</textobject>
|
|
|
658 |
</mediaobject>
|
|
|
659 |
</screenshot></entry>
|
|
|
660 |
</row>
|
|
|
661 |
<row>
|
|
|
662 |
<entry align="left" valign="top">stroke-dasharray</entry>
|
|
|
663 |
<entry align="left" valign="top">0.0 - n, 0.0 - n</entry>
|
|
|
664 |
<entry align="left" valign="top">Ein Paar von Längenwerten [a, b], wobei (a) die Strichlänge ist und (b) die Länge des Zwischenraums. Die Angabe ist in Pixel.</entry>
|
|
|
665 |
</row>
|
|
|
666 |
</tbody>
|
|
|
667 |
</tgroup></informaltable>
|
|
|
668 |
<para>Beispiel:</para><screen>
|
|
|
669 |
<![CDATA[<LineSymbolizer>
|
|
|
670 |
<CssParameter name="stroke">#0000ff</CssParameter>
|
|
|
671 |
<CssParameter name="stroke-width">4</CssParameter>
|
|
|
672 |
</LineSymbolizer>
|
|
|
673 |
]]></screen></sect3></sect2><sect2 id='sec.Element-PolygonSymbolizer' >
|
|
|
674 |
<title>Element: <markup>PolygonSymbolizer</markup><!-- anchor id="sec.Element-PolygonSymbolizer" --></title>
|
|
|
675 |
<para>Zeichnet ein unregelmäßiges Vieleck (Polygon).</para><itemizedlist>
|
|
|
676 |
<listitem><para>Element: <command>PolygonSymbolizer</command></para></listitem><listitem><para>Elementtype: Polygon</para></listitem><listitem><para>Attribute:</para><itemizedlist>
|
|
|
677 |
<listitem><para>Keine</para></listitem></itemizedlist></listitem><listitem><para>Kinder:</para><itemizedlist>
|
|
|
678 |
<listitem><para><command>CssParameter</command> (siehe <xref linkend="sec.Element-CssParameter2." />)</para></listitem></itemizedlist></listitem></itemizedlist><sect3 id='sec.Element-CssParameter2.' >
|
|
|
679 |
<title>Element: <markup>CssParameter</markup><!-- anchor id="sec.Element-CssParameter2." --></title>
|
|
|
680 |
<para>Innerhalb eines <command>PolygonSymbolizer</command> werden die einzelnen Optionen mittels des Elements <command>CssParameter</command> definiert.</para><itemizedlist>
|
|
|
681 |
<listitem><para>Element: <command>CssParameter</command></para></listitem><listitem><para>Elementtype: Definiert Optionen für das Element <command>PolygonSymbolizer</command></para></listitem><listitem><para>Attribute:</para><itemizedlist>
|
|
|
682 |
<listitem><para><command>name</command>: Definiert den Namen einer Option.</para></listitem></itemizedlist></listitem></itemizedlist><para>Die folgende Tabelle listet die Namen der möglichen Optionen und beschreibt ihre Bedeutung:</para>
|
|
|
683 |
<informaltable><tgroup cols="3" colsep="1" rowsep="1">
|
|
|
684 |
<colspec colname="col0" align="left" />
|
|
|
685 |
<colspec colname="col1" align="left" />
|
|
|
686 |
<colspec colname="col2" align="left" />
|
|
|
687 |
<tbody>
|
|
|
688 |
<row>
|
|
|
689 |
<entry align="left" valign="top">Option</entry>
|
|
|
690 |
<entry align="left" valign="top">Inhalt</entry>
|
|
|
691 |
<entry align="left" valign="top">Bedeutung</entry>
|
|
|
692 |
</row>
|
|
|
693 |
<row>
|
|
|
694 |
<entry align="left" valign="top">fill</entry>
|
|
|
695 |
<entry align="left" valign="top">CSS Farbe</entry>
|
|
|
696 |
<entry align="left" valign="top">Ein Farbwert</entry>
|
|
|
697 |
</row>
|
|
|
698 |
<row>
|
|
|
699 |
<entry align="left" valign="top">fill-opacity</entry>
|
|
|
700 |
<entry align="left" valign="top">0.0 - 1.0</entry>
|
|
|
701 |
<entry align="left" valign="top">Transparenz; 0.0 ist vollst&auml;ndig transparent. 1.0 ist vollkommen undurchsichtig.</entry>
|
|
|
702 |
</row>
|
|
|
703 |
</tbody>
|
|
|
704 |
</tgroup></informaltable>
|
|
|
705 |
<para>Beispiel:</para><screen>
|
|
|
706 |
<![CDATA[<PolygonSymbolizer />
|
|
|
707 |
<CssParameter name="fill">steelblue</CssParameter>
|
|
|
708 |
<CssParameter name="fill-opacity">0.5</CssParameter>
|
|
|
709 |
</PolygonSymbolizer>
|
|
|
710 |
]]></screen></sect3></sect2><sect2 id='sec.Element-Layer' >
|
|
|
711 |
<title>Element: <markup>Layer</markup><!-- anchor id="sec.Element-Layer" --></title>
|
|
|
712 |
<itemizedlist>
|
|
|
713 |
<listitem><para>Element: <command>Layer</command></para></listitem><listitem><para>Element type: References a Style and a DataSource</para></listitem><listitem><para>Attributes:</para><itemizedlist>
|
|
|
714 |
<listitem><para><command>name</command>: Der Name des Layers. Diser Name muss eindeutig sein!</para></listitem><listitem><para><command>status</command>: Standard "off"; on oder off, "0" oder "1"; Nur wenn der Status aktiv ist (on, 1, true), wird das Layer gezeichnet.</para></listitem><listitem><para><command>clear_label_cache</command>: Standard "off". Wird das auf “on” gesetzt, wird die interne Liste zum Setzen von Objekten gelöscht. Alle Objekte in diesem Layer und in den folgenden, werden ohne Rücksicht auf vorherige Plazierungen gezeichnet.</para></listitem><listitem><para><command>srs</command>: Definiert die Projektion, welche für dieses Layer verwendet werden soll (z.B.: <userinput>+proj=latlong +datum=WGS84</userinput>)</para></listitem><listitem><para><command>title</command>: Standard: ""; Definiert einen Titel für dieses Layer</para></listitem><listitem><para><command>abstract</command>: Standard: “”; Definiert einen kurzen Beschreibungstext für dieses Layer.</para></listitem><listitem><para><command>minzoom</command>: Standard 0.0; Definiert den minimalen Vergrößerungsfaktor.</para></listitem><listitem><para><command>maxzoom</command>: Standard: 1.797693134862316e+308; Definiert den maximalen Vergrößerungsfaktor.</para></listitem><listitem><para><command>queryable</command>: Standard "false";</para></listitem></itemizedlist></listitem><listitem><para>Children:</para><itemizedlist>
|
|
|
715 |
<listitem><para><command>StyleName</command>: Der Name eines zuvor definierten <command>Style</command> (siehe <xref linkend="sec.Element-Style" />). Der hier angegebene Name muss existieren!</para></listitem><listitem><para><command>Datasource</command>: Definiert die Quelle der Kartendaten und enthält Informationen wie diese ausgelesen werden können. Siehe <xref linkend="sec.Element.-Datasource" />.</para></listitem></itemizedlist></listitem></itemizedlist><para>Beispiel:</para><screen>
|
|
|
716 |
<![CDATA[<Layer name="coastlines" status="on" srs="+proj=merc +datum=WGS84 +k=1.0 +units=m +over +no_defs">
|
|
|
717 |
<StyleName>coast</StyleName>
|
|
|
718 |
<Datasource>
|
|
|
719 |
<Parameter name="type">shape</Parameter>
|
|
|
720 |
<Parameter name="file">coastline</Parameter>
|
|
|
721 |
</Datasource>
|
|
|
722 |
</Layer>
|
|
|
723 |
]]></screen></sect2><sect2 id='sec.Element-StyleName' >
|
|
|
724 |
<title>Element: <markup>StyleName</markup><!-- anchor id="sec.Element-StyleName" --></title>
|
|
|
725 |
<para>Innerhalb eines <command>Layer</command>-Elements muss mindestens ein <command>StyleName</command>-Element angegeben werden. Es können aber beliebig viele <command>StyleName</command>-Elemente in einem <command>Layer</command> angegeben werden. Definiert wird nur der Name eines zuvor bereits definierten <command>Style</command>. Der Name muss existieren!</para><itemizedlist>
|
|
|
726 |
<listitem><para>Element: <command>Style</command></para></listitem><listitem><para>Elementtyp: Name eines <command>Style</command></para></listitem><listitem><para>Attribute:</para><itemizedlist>
|
|
|
727 |
<listitem><para>Keine</para></listitem></itemizedlist></listitem></itemizedlist><para>Beispiel:</para><screen>
|
|
|
728 |
<![CDATA[<StyleName>style</StyleName>
|
|
|
729 |
]]></screen></sect2><sect2 id='sec.Element.-Datasource' >
|
|
|
730 |
<title>Element: <markup>Datasource</markup><!-- anchor id="sec.Element.-Datasource" --></title>
|
|
|
731 |
<para>Das Element <command>Datasource</command> definiert die Quelle, aus der die Karte gezeichnet werden soll.</para>
|
|
|
732 |
<para>&sportwatcher; verwendet intern <emphasis>Mapnik</emphasis> zum Zeichnen von Karten. Das beinhaltet mehrere Arten von Quellen. Für jede der gewünschten Quellen, muss ein entsprechendes <emphasis>Plugin</emphasis> vorhanden sein. Damit diese Bibliothek weis woher es die Daten zum Zeichnen der Karte nehmen soll, muss das definiert werden. Abhängig von der Art der Quelle, müssen verschiedene Angaben gemacht werden.</para><itemizedlist>
|
|
|
733 |
<listitem><para>Element: <command>Datasource</command></para></listitem><listitem><para>Elementtyp: Definiert die Datenquelle des <command>Layer</command></para></listitem><listitem><para>Attribute:</para><itemizedlist>
|
|
|
734 |
<listitem><para>Keine</para></listitem></itemizedlist></listitem><listitem><para>Kinder</para><itemizedlist>
|
|
|
735 |
<listitem><para><command>Parameter</command>: Definiert einen Parameter welcher die Datenquelle spezifiziert (siehe <xref linkend="sec.Element-Parameter" />).</para></listitem></itemizedlist></listitem></itemizedlist></sect2><sect2 id='sec.Element-Parameter' >
|
|
|
736 |
<title>Element: <markup>Parameter</markup><!-- anchor id="sec.Element-Parameter" --></title>
|
|
|
737 |
<para>Definiert einen Parameter zur Spezifikation der Datenquelle für ein <command>Layer</command>.</para><itemizedlist>
|
|
|
738 |
<listitem><para>Element: <command>Parameter</command></para></listitem><listitem><para>Elementtyp: Parameterspezifikation für eine Datenquelle.</para></listitem><listitem><para>Attribute:</para><itemizedlist>
|
|
|
739 |
<listitem><para><command>name</command></para></listitem></itemizedlist></listitem></itemizedlist><sect3 id='sec.Datenquelle-PostGIS' >
|
|
|
740 |
<title>Datenquelle: PostGIS<!-- anchor id="sec.Datenquelle-PostGIS" --></title>
|
|
|
741 |
<para>Bei PostGIS handelt es sich um eine spezielle PostgreSQL-Datenbank, welche um Geofunktionen erweitert wurde. Die folgende Tabelle zeigt die notwendigen Definitionen um auf die Daten in einer solchen Datenbank zugreifen zu können.</para>
|
|
|
742 |
<informaltable><tgroup cols="2" colsep="1" rowsep="1">
|
|
|
743 |
<colspec colname="col0" align="left" />
|
|
|
744 |
<colspec colname="col1" align="left" />
|
|
|
745 |
<tbody>
|
|
|
746 |
<row>
|
|
|
747 |
<entry align="center" valign="top">Parameter</entry>
|
|
|
748 |
<entry align="center" valign="top">Bedeutung</entry>
|
|
|
749 |
</row>
|
|
|
750 |
<row>
|
|
|
751 |
<entry align="left" valign="top">host</entry>
|
|
|
752 |
<entry align="left" valign="top">Name des Computers im Netzwerk, auf dem die Datenbank läuft.</entry>
|
|
|
753 |
</row>
|
|
|
754 |
<row>
|
|
|
755 |
<entry align="left" valign="top">dbname</entry>
|
|
|
756 |
<entry align="left" valign="top">Name der Datenbank</entry>
|
|
|
757 |
</row>
|
|
|
758 |
<row>
|
|
|
759 |
<entry align="left" valign="top">user</entry>
|
|
|
760 |
<entry align="left" valign="top">Benutzername unter dem auf die Datenbank zugegriffen werden kann.</entry>
|
|
|
761 |
</row>
|
|
|
762 |
<row>
|
|
|
763 |
<entry align="left" valign="top">password</entry>
|
|
|
764 |
<entry align="left" valign="top">Das Passwort des users mit dem auf die Datenbank zugegriffen wird.</entry>
|
|
|
765 |
</row>
|
|
|
766 |
<row>
|
|
|
767 |
<entry align="left" valign="top">table</entry>
|
|
|
768 |
<entry align="left" valign="top">Name der Tabelle welche für eine Abfrage verwendet wird. Hier kann eine komplexe SQL-Abfrage angegeben werden, welche als erster Filter für das gesamte <command>Layer</command> fungiert.</entry>
|
|
|
769 |
</row>
|
|
|
770 |
<row>
|
|
|
771 |
<entry align="left" valign="top">estimate_extent</entry>
|
|
|
772 |
<entry align="left" valign="top">Die Fläche in Geokoordinaten, welche von der Datenquelle, und damit vom <command>Layer</command> abgedeckt wird.</entry>
|
|
|
773 |
</row>
|
|
|
774 |
<row>
|
|
|
775 |
<entry align="left" valign="top">extent</entry>
|
|
|
776 |
<entry align="left" valign="top">Standard: false; Wird dieser Wert auf “true” gesetzt, werden die Werte unter <command>estimate_extent</command> berücksichtigt. Andernfalls nicht.</entry>
|
|
|
777 |
</row>
|
|
|
778 |
</tbody>
|
|
|
779 |
</tgroup></informaltable></sect3><sect3 id='sec.Datenquelle-Shape-Datei' >
|
|
|
780 |
<title>Datenquelle: Shape-Datei<!-- anchor id="sec.Datenquelle-Shape-Datei" --></title>
|
|
|
781 |
<para>&sportwatcher; ist in der Lage Datenquellen nach dem <ulink url="http://de.wikipedia.org/wiki/ESRI">ESRI-Standard</ulink> zu verarbeiten. Es können s.g. <ulink url="http://de.wikipedia.org/wiki/Shapefile">Shapedateien</ulink> eingelesen werden und daraus Karten generiert werden. Im Internet gibt es verschiedene Quellen für Shapedateien und alle beinhalten unterschiedliche Felder. Tatsächlich handelt es sich bei einer Shapedatei nicht um eine Datei, sondern zumeist um drei bis vier Dateien. Deshalb wird die Dateierweiterung nicht angegeben, diese findet &sportwatcher; selbst. Für eine Karte werden i.d.R. mehr als eine Shapedatei verwendet, da die einzelnen Komponenten einer Karte auf verschiedene Dateien aufgeteilt sind. Zumeist findet man eine Datei für Straßen, eine für Flüsse, eine für Punktobjekte u.s.w.</para>
|
|
|
782 |
<para>Wie bei einer Datenbank, besteht auch eine Shapedatei aus Datenfeldern. Es handelt sich also um Tabellen, wobei jede Shapedatei genau eine Tabelle ist. So wie bei Datenbanken, haben die einzelnen “Spalten” der Tabelle Namen. Im Gegensatz zu Datenbanken, spielt die Groß-Kleinschreibung dabei ein wichtige Rolle. Insbesondere in der <command>Filter</command>-Anweisung (siehe <xref linkend="sec.Element-Filter" />) muss darauf geachtet werden.</para>
|
|
|
783 |
<informaltable><tgroup cols="2" colsep="1" rowsep="1">
|
|
|
784 |
<colspec colname="col0" align="left" />
|
|
|
785 |
<colspec colname="col1" align="left" />
|
|
|
786 |
<tbody>
|
|
|
787 |
<row>
|
|
|
788 |
<entry align="center" valign="top">Parameter</entry>
|
|
|
789 |
<entry align="center" valign="top">Bedeutung</entry>
|
|
|
790 |
</row>
|
|
|
791 |
<row>
|
|
|
792 |
<entry align="left" valign="top">file</entry>
|
|
|
793 |
<entry align="left" valign="top">Pfad und Dateiname der Shapedatei. Die Dateiendung darf nicht angegeben werden!</entry>
|
|
|
794 |
</row>
|
|
|
795 |
</tbody>
|
|
|
796 |
</tgroup></informaltable></sect3><sect3 id='sec.Datenquell-OSM' >
|
|
|
797 |
<title>Datenquelle: OSM<!-- anchor id="sec.Datenquell-OSM" --></title>
|
|
|
798 |
<para>OSM ist das Datenformat des <ulink url="http://www.openstreetmap.org">Open Street Map</ulink> Projekts, welches eine weltweite freie Landkarte zur Verfügung stellt. OSM-Dateien sind selbst für kleine Gebiete sehr groß und, da sie im XML-Format gespeichert sind, sehr langsam. Sie direkt mit &sportwatcher; zu verwenden ist möglich, erfordert aber extrem schnelle Festplatten, wenn man innerhalb einer akzeptablen Zeit eine Landkarte sehen will. Das OSM-Format wurde entwickelt, um Landkarteninformationen transportieren zu können. Es ist dafür gedacht, die Daten in eine Datenbank einzuspielen.</para>
|
|
|
799 |
<informaltable><tgroup cols="2" colsep="1" rowsep="1">
|
|
|
800 |
<colspec colname="col0" align="left" />
|
|
|
801 |
<colspec colname="col1" align="left" />
|
|
|
802 |
<tbody>
|
|
|
803 |
<row>
|
|
|
804 |
<entry align="center" valign="top">Parameter</entry>
|
|
|
805 |
<entry align="center" valign="top">Bedeutung</entry>
|
|
|
806 |
</row>
|
|
|
807 |
<row>
|
|
|
808 |
<entry align="left" valign="top">file</entry>
|
|
|
809 |
<entry align="left" valign="top">Pfad und Dateiname der OSM-Datei.</entry>
|
|
|
810 |
</row>
|
|
|
811 |
<row>
|
|
|
812 |
<entry align="left" valign="top">parser</entry>
|
|
|
813 |
<entry align="left" valign="top">Parser der zum Entschlüsseln der OSM-Datei verwendet werden soll. Hier wird derzeit nur "libxml2" unterstützt.</entry>
|
|
|
814 |
</row>
|
|
|
815 |
<row>
|
|
|
816 |
<entry align="left" valign="top">url</entry>
|
|
|
817 |
<entry align="left" valign="top">URL von der die OSM-Datei geladen werden soll. Wenn dieser Parameter angegeben wird, muss der Parameter <command>bbox</command> ebenfalls angegeben werden. Es handelt sich hierbei nicht um eine Vollständige URL, sondern lediglich um die Basis (z.B.: http://127.0.0.1:8800/tiledata)</entry>
|
|
|
818 |
</row>
|
|
|
819 |
<row>
|
|
|
820 |
<entry align="left" valign="top">bbox</entry>
|
|
|
821 |
<entry align="left" valign="top">Der "bounding-box" parameter, welcher zur URL hinzugefügt werden soll. Es gibt kein bestimmtes Format für diesen Parameter, aber alles was hier steht wird nach einem "?bbox=" hinzugefügt. Wenn also "bbox" gleich "115.136719,-31.802893,116.894531,-33.284620" ist und die URL "http://127.0.0.1:8800/tiledata" ist, dann ergibt das: http://127.0.0.1:8800/tiledata?bbox=115.136719,-31.802893,116.894531,-33.284620</entry>
|
|
|
822 |
</row>
|
|
|
823 |
</tbody>
|
|
|
824 |
</tgroup></informaltable></sect3></sect2></sect1></chapter><chapter id='cha.Credits' >
|
272 |
andreas |
825 |
<title>Danksagung<!-- anchor id="cha.Credits" --></title>
|
|
|
826 |
<sect1 id='sec.Danksagung-und-Lizenz' >
|
|
|
827 |
<title>Danksagung und Lizenz<!-- anchor id="sec.Danksagung-und-Lizenz" --></title>
|
261 |
andreas |
828 |
<para>&sportwatcher;</para>
|
272 |
andreas |
829 |
<para>Programm <trademark class="copyright">Copyright </trademark> 2007 - 2009 bei Andreas Theofilu <email>andreas@theosys.at</email></para>
|
283 |
andreas |
830 |
<para>Basierend auf <command>garmin-tools</command> von Dave Bailey <email>dave@daveb.net</email></para>
|
|
|
831 |
<para>Basierend auf <command>GANT</command> von Paul <email>paul@ant.sbrk.co.uk</email></para>
|
261 |
andreas |
832 |
<!-- TRANS:CREDIT_FOR_TRANSLATORS -->
|
|
|
833 |
&underFDL; <!-- FDL: do not remove -->
|
|
|
834 |
&underGPL; <!-- GPL License --></sect1></chapter></book>
|