<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE book
	PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
	"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"
    [<!ENTITY imgscale "60">]>
<!-- $Revision: 1.11 $ -->
<book>
  <bookinfo>
    <title>Benutzerhandbuch für Thuban 1.0</title>
	<authorgroup>
      <author>
        <firstname>Jonathan</firstname><surname>Coles</surname>
      </author>
      <author>
        <firstname>Jan-Oliver</firstname><surname>Wagner</surname>
      </author>
      <author>
        <firstname>Frank</firstname><surname>Koormann</surname>
      </author>
	</authorgroup>
    <copyright>
      <year>2004</year>
      <holder>Intevation GmbH</holder>
    </copyright>
   <revhistory>
<!-- comment this first revision out when releasing a real version -->
     <revision>
        <revnumber>CVS version $Id: thuban-manual-de.xml,v 1.11 2005/06/27 15:52:08 jan Exp $</revnumber>
        <date></date>
        <revremark>Under development.</revremark>
     </revision>
<!--
     <revision>
        <revnumber>1.0.0</revnumber>
        <date>nn-Mmm-2004</date>
        <revremark>
			Corresponds to Thuban 1.0.0.
		</revremark>
     </revision>
-->
  </revhistory>

  </bookinfo>

  <chapter><title>Einführung</title>
	<para>
	Thuban ist ein interaktiver Geodaten-Betrachter.
	Die Entwicklung wurde seinerzeit gestartet, da es zu dieser Zeit
	keinen einfachen interkativen Betrachter für Geo-Daten als Freie
	Software gab.
	Thuban ist im wesentlichen in der Programmiersprache Python implementiert und
	nutzt die wxWidgets (ehemals: wxWindows) Bibliothek die es erlaubt
	Thuban auf verschiedenen Plattformen laufen zu lassen, darunter GNU/Linux
	und Windows.
	</para>
	<para>
	Geodatenbetrachter sind wichtige Werkzeuge die es gestatten, einen visuelle
	Eindruck des räumlichen (gegenseiten) Bezuges von Informationen zu bekommen
	die ansonsten anhand der reinen Daten nicht leicht ersichtlich sind.
	Thuban erlaubt dem Benutzer, Sitzungen zu erzeugen, die geografische
	Daten darstellen. Diese können dann erforscht werden indem er durch sie
	sie navigieren und die Art der Darstellung ändern kann.
	Die Ergebnisse können gespeichert oder gedruckt werden.
	</para>
	<para>
	Thuban strukturiert eine Sitzung hierarchisch.
	Eine Sitzung besteht aus Ebenen. Jede Ebene rerpäsentiert
	einen bestimmten Datensatz.
	Beispielsweise eine Ebene für Strassen und eine weitere für Gebäude.
	Die Ebenen können sowohl Vektor-Daten beschreiben als auch Raster-Daten.
	</para>

	<section><title>Installation</title>
        <para>
        Thuban is actively supported under Debian Testing (sarge), RedHat 7.2, 
        and Windows 2000. Thuban depends on the following packages. These
        packages can also be found on the 
        <ulink url="http://thuban.intevation.org/download.html">
        Thuban Download site
        </ulink>.
	</para>
	<para>
	Required:
        <itemizedlist>
            <listitem><para>Python 2.2.1 
			(<literal>http://www.python.org</literal>)
			</para></listitem>
            <listitem><para>wxWindows 2.4 
			(<literal>http://www.wxwindows.org</literal>)
			</para></listitem>
            <listitem><para>wxPython 2.4 
			(<literal>http://www.wxpython.org</literal>)
			</para></listitem>
            <listitem><para>proj 4.4.5 Projection Library 
			(<literal>http://www.remotesensing.org/proj/</literal>)
			</para></listitem>
            <listitem><para>SQLite 2.8.3 
			<literal>http://www.hwaci.com/sw/sqlite/</literal>)
			</para></listitem>
            <listitem><para>PySQLite 0.4.3 
			(<literal>http://pysqlite.sourceforge.net</literal>)
			</para></listitem>
	</itemizedlist>
	</para>
	<para>
	Optional:
        <itemizedlist>
            <listitem><para>GDAL 1.1.8 
			(<literal>http://www.remotesensing.org/gdal/</literal>)
			</para></listitem>
            <listitem><para>psycopg 1.0.8 
			(<literal>http://initd.org/software/psycopg</literal>)
			</para></listitem>
	    </itemizedlist>
        </para>
		<para>
		Along with the source codes, the download page also offers full
		installation packages for Debian, Windows and RPM-based systems
		(Mandrake, RedHat, SuSE, etc).
		</para>
  		<section><title>RPM-based GNU/Linux Systems</title>
  			<section><title>Installing Binary Packages</title>
				<para>
				The most wide-spread RPM-based GNU/Linux
				Systems are RedHat, Mandrake and SuSE. 
				The documentation of these distributions
				should contain information about how to 
				install third-party RPM packages.
				Nonetheless, a short summary is provided here.
				</para>
				<para>
				RPM packages can be installed applying several 
				tools. The most basic one is the command line 
				program "rpm".  The hardware architecture is 
				identified in the name of RPM packages, eg. 
				'i386' for most Intel/AMD architectures.  
				If you have a different hardware architecture, 
				where no binary RPM packages are provided, 
				you must rebuild binary packages from the 
				RPM source packages first (see below).
				Typical rpm commands look like:

				<programlisting>
				rpm --install Thuban-0.9.0-1.i386.rpm
				</programlisting>

				Depending on what you already have installed 
				on your system, you are informed that some 
				packages are required, but not installed. 
				You need to install them first. Either they 
				are provided by your GNU/Linux distributor 
				or available somewhere on the Internet.  
				The more essential and special ones are 
				provided together with the Thuban package.
				</para>

				<para>
				For rpm exist some graphical user interfaces, notably
				kpackage, GnoRPM and xrpm.
				</para>

				<para>
				Make yourself familiar with one of the tools and apply it
				to install the packages.
				Note, that you need to be administrator (root) for the system
				to do that.
				</para>
  			</section>
  			<section><title>Build Binaries from Source Packages</title>
				<para>
				This section describes howto build RPM install-packages
				from RPM source-packages.
				This adapts and optimizes an install-package specifically
				to your system.
				This is especially helpful to resolve version conflicts of
				dependent packages. Furthermore, install-packages for other
				platforms (e.g. PowerPC) can be created.
				</para>

				<para>
				Note: rpm must be at least version 4. Execute
				<literal>rpm --version</literal> to find out about the version.
				</para>

				<para>
				You need to do the following preparations to be able to
				build the packages as a regular user. You should now
				perform the package buling as root since this
				might cause damage to your system.
        		<itemizedlist>
            		<listitem>
						<para>
						Create RPM directory structure:
						Choose a directory (e.g. $HOME/myrpm) and create the
						subdirectories BUILD, RPM, SOURCES, SPECS and SRPMS.
						A possible command sequence for this is:
						<programlisting>
						mkdir $HOME/freegisrpm
						cd $HOME/freegisrpm
						mkdir BUILD RPMS SOURCES SPECS SRPMS
						</programlisting>
						</para>
					</listitem>
					<listitem>
						<para>
						Set environment variable RPM_DIR:
						<programlisting>
						export RPM_DIR=$HOME/freegisrpm
						</programlisting>
						</para>
					</listitem>
					<listitem>
						<para>
						Create $HOME/.rpmmacros:
						This file sets general preferences and some
						specific settings for signing packages.
						If you don't have a GnuPG-key, you can skip
						the signature settings i.e. drop the last 4 lines.
						A signature becomes important when you want to
						give away packages to third parties.
						<programlisting>
<![CDATA[
%packager Name Lastname <Name.Lastname@mydomain.example> 

%_topdir /home/mylogin/myrpm

%_signature gpg
%_gpg_name Name Lastname
%_pgp_path ~/.gnupg
%_pgpbin /usr/bin/gpg
]]>
						</programlisting>
						</para>
					</listitem>
        		</itemizedlist>

				Now you can install any RPM source-package.
				It's components are installed into the corresponding
				subdirectories of your rpm-directory.
				Essentially these are the sources (into directory SOURCES)
				and the so-called spec-file which contains all build
				instructions. The spec-file will go into the SPEC directory.
				Example:
				<literal>rpm --install Thuban-0.9.0-1.src.rpm</literal>
				</para>

				<para>
				Create install-package:
				Go to the directory with the spec-files and rebuild the
				package:
				<programlisting>
cd $HOME/mypm/SPECS
rpm -bb thuban.spec
				</programlisting>
				Next, you will find the newly created package in
				$HOME/myrpm/RPMS/i386.
				If you build the package for another architecture than
				i386, then the name of the directory has a corresponding name.
				</para>
				<para>
				For documentation of RPM, either type
				<literal>man rpm</literal> or <literal>rpm --help</literal>.
				This will provide you with information on the various command
				line options of RPM.
				For more information see the
        		<ulink url="http://www.rpm.org/">homepage of RPM</ulink>.
				</para>
  			</section>
  		</section> <!-- Intro - Installation - RPM-->

		<section><title>Win32 Systems</title>
		<para>
			A common installation package of Thuban for Win32
			systems is available from the Thuban website download
			section. This installation package is configured for
			displaying file based vector data (Shapefiles). For the
			display of raster data or the connection to spatial
			databases additional steps are needed.  
		</para>
		<para>
			The required Python packages are listed and linked on
			the download page as well.  If you don't have Python
			installed already, download the packages for Python,
			wxPython for Python and the SQLite Python Libraries as
			well as the Thuban package. Install all four packages
			in the order: Python, wxPython, SQLite, Thuban. Follow
			the installation instructions provided by the seperate
			setups. The Thuban installation package will add an
			entry in the menu folder you configured.
		</para>
		<section><title>Raster Data: Installation of GDAL</title>
		<para>
			Enabling the raster data features of Thuban is 
			straight forward. For the examples we assume that 
			Thuban has been installed under 
			<literal>C:\Thuban</literal>:
			<itemizedlist>
			<listitem>
			<para>
			Download the zip-archive <ulink 
			url="ftp://intevation.de/thuban/win2k/gdal-win2k.zip"
			>gdal-win2k</ulink>. 
			</para></listitem>
			<listitem><para>Extract the archive (e.g. with 
			<ulink 
			url="http://www.info-zip.org/pub/infozip/WiZ.html"
			>WiZ (InfoZip)</ulink>) into the 
			<literal>C:\Thuban\Lib</literal>
			directory of your Thuban installation.
			</para>
			</listitem>
			<listitem>
			<para>
			Extent the <varname>PYTHONPATH</varname> 
			environment variable (in your Windows Control Panel)
			to make the new libraries available for Thuban.
			<programlisting>
%PYTHONPATH%;C:\Thuban\Lib\gdal;C:\Thuban\Lib\gdal\pymod
			</programlisting>
			</para>
			</listitem>
			<listitem>
			<para>
			Extent also the <varname>PATH</varname>
			environment variable accordingly:
			<programlisting>
%PATH%;C:\Thuban\Lib\gdal
			</programlisting>
			</para>
			</listitem>
			</itemizedlist>
			After this installation steps Thuban is ready to
			display raster data (e.g. the
			<literal>island.tif</literal> from the Iceland Demo
			data set.
		</para>
		</section> <!-- Win32: GDAL-->

		<section><title>Working with PostGIS: Installation of PsycoPG</title>
		<para>
			To access PostgreSQL/PostGIS spatial databases with
			Thuban you have to install the PsycoPG package for 
			Windows:
			<itemizedlist>
			<listitem>
			<para> 
			Download the zip-archive 
			<ulink 
				url="http://stickpeople.com/projects/python/win-psycopg/win-psycopg22.zip"
			>win-psycopg22.zip</ulink>.
			</para>
			</listitem>
			<listitem>
			<para> 
			Extract the zip-archive into a directory either already
			in your <varname>PYTHONPATH</varname> or extent your 
			<varname>PYTHONPATH</varname> variable to the directory 
			you have extracted the archive to.
			</para>
			</listitem>
			</itemizedlist>
			For installation and maintenance of spatial databases
			we refer to the  <ulink
			url="http://postgis.refractions.net"
			>PostGIS Homepage</ulink>.
		</para>
		</section> <!-- Win32: PsycoPG-->

		</section> <!-- Intro - Installation - Win32 -->
	</section>

	<section><title>Internationalisierung</title>
	  <para>
	  Thuban ist mit Unterstützung für Internaionalisierung realisiert.
	  Bisher wurde Thuban in folgende Sprachen (neben der Basis Englisch) übersetzt:
	  <itemizedlist>
		<listitem><para>Französisch</para></listitem>
		<listitem><para>Deutsch</para></listitem>
		<listitem><para>Italienisch</para></listitem>
		<listitem><para>Portugiesisch (Brasilien)</para></listitem>
		<listitem><para>Russisch</para></listitem>
		<listitem><para>Spanisch</para></listitem>
	  </itemizedlist>
	  </para>

	<para>
	  Um die Internationalisierung auf POSIX Systemen (wie etwa GNU/Linux)
	  zu verwenden, muss die Umgebungsvariable LC_ALL entsprechend
	  gesetzt werden (z.B. LC_ALL=de_DE für Deutsch).
	  Prüfen Sie die Dokumentation zu Ihrem System für Details
	  und die unterstützten Einstellungen.
	  Normalweise haben Sie Ihre Sprache bereits mit der Installation
	  oder beim einloggen bereits vorausgewählt.
	  Trotzdem kann auch dann noch durch Setzen von LC_ALL auf
	  der Kommandozeile beim Aufruf von Thuban eine andere Sprache
	  gesetzt werden:
	</para>
	<programlisting>
	  LC_ALL=fr_FR thuban.py
	</programlisting>

	<para>
	MS Windows Benutzer müssen die Sprache über die Kontroll-Leiste einstellen
	welche grundsätzlich alle Anwendungen beeinflusst.
	</para>
	</section>

	<section><title>Das Hauptfenster</title>
	  <para>
		<figure><title>Das Hauptfenster</title>
		  <mediaobject>
			<imageobject> <imagedata fileref="../images/1_2_mainwindow.png" format="PNG" scale="&imgscale;"/> </imageobject>
			<imageobject> <imagedata fileref="./images/1_2_mainwindow.ps" format="EPS" scale="&imgscale;"/> </imageobject>
		  </mediaobject>
		</figure>
	  </para>

	  <para>
	  Das Hauptfenster stellt die aktuelle Karte dar. Hier kann der
	  Benutzer mit der Karte interagieren indem er die verschiednen
	  Werkzeuge anwendet.
	  </para>

      <para>
	  Die Legende auf der linken Seite zeigt eine Liste der aktuellen
	  Ebenen und alle dargestellten Klassifikations-Gruppen.
	  Bei diesem Beispiel haben alle Geo-Objekte Ebenen eine voreingestellte
	  Klassifizierung wie die jeweiligen Geo-Objekte in den einzelnen
	  Ebenen gezeichnet werden sollen.
	  Die Ebenen die weiter oben in der Liste dargestellt werden über
	  die darunter aufgelisteten gezeichnet.
	  Die Legende kann durch Anwahl des X in der oberen rechten Ecke
	  geschlossen werden.
	  Um die Legenden-Ansicht wieder zu öffnen, wählen Sie
	  <menuchoice>
	  <guimenu>Karte</guimenu>
	  <guimenuitem>Legende</guimenuitem>
	  </menuchoice>.
	  Das Legenden-Fenster ist lösbar. Das bedeutet, dass sie vom Hauptfenster
	  abgelöst und dann als eigenständiges Fenster
	  positioniert werden kann. Dies wird durch den kleinen Schalter
	  neben dem X gemacht. Erneutes Anwählen des Schalters läßt das
	  Legenden-Fenster wieder in das Hauptfenster integrieren.
	  </para>
	  <para>
	  Die Status-Leiste zeigt verschiedene Informationen jeweils
	  abhängig vom Kontext. Wählt der Benutzer einen Menüpunkt
	  dann wird in der Status-Leiste ein Hilfetext zu dem jeweiligen
	  Menüpunkt angezeigt.
	  Ist eines der Werkzeuge aktiviert, so wird in der Status-Leiste
	  die Position angegeben über der der Maus-Cursor auf der Karte
	  steht.
	  </para>
	  <para>
	  Die Werkzeugleiste erlaubt direkten Zugriff auf häufig
	  benötigte Werkzeuge.
	  Schwebt der Maus-Zeiger über einem Knopf wird eine Kurz-Info
	  über das jeweilige Werkzeug gegeben.
	  Folgende Werzeuge stehen zur Verfügung: Hineinzoomen,
	  Herauszoomen, Verschieben, Zur vollen Kartenausdehnung zoomen,
	  Zur vollen Ebenenausdehnung zoomen, Zur vollen Auswahlausdehnung zoomen,
	  Identifizieren, Labels hinzufügen/entfernen.
	  Alle Werkzeuge werden in diesem Handbuch noch detaillierter beschrieben.
	  </para>
	</section>

  </chapter>

  <chapter><title>Session Management</title>

  	<section><title>Eine neue Session beginnen</title>
		<para>
		Eine neue Session wird gestartet über
		<menuchoice>
		<guimenu>Datei</guimenu>
		<guimenuitem>Neue Session</guimenuitem>
		</menuchoice>. 
		Falls bereits eine Session geladen ist und seit der letzten
		Speicherung verändert wurde, so wird nun nachgefragt, ob
		diese Session zunächst gespeichert werden soll.
		Eine neue Session besteht aus einer leeren Karte
		ohne Ebenen, Tabellen und Projektion.
		</para>
	</section>

	<section><title>Eine Session öffnen</title>
		<para>
		Eine Session kann geöffnet werden über
		<menuchoice>
		<guimenu>Datei</guimenu>
		<guimenuitem>Öffne Session</guimenuitem>
		</menuchoice>.
		Es wird ein Dateiauswahl-Dialog geöffnet um eine
		Thuban Session Datei auszuwählen. Diese Dateien enden
		auf <varname>.thuban</varname>. Wird eine Datei ausgewählt und mit
		<guibutton>OK</guibutton> bestätigt, so wird die entsprechende
		Session in Thuban geladen.

		Ist bereits eine Session geladen und seit dem letzten Speichern modifiziert
		worden, so wird nachgefragt, ob zunächst die alte Session gespeichert werden
		soll.
		</para>
	</section>

	<section><title>Eine Session speichern</title>
		<para>
		Eine Session kann gepsiechert werden über
		<menuchoice>
		<guimenu>Datei</guimenu>
		<guimenuitem>Session Speichern</guimenuitem>
		</menuchoice>.
		Handelt es sich bei der aktuellen Session nicht um eine
		neue und ungespeicherte, so wird die entsprechende Datei
		mit den Daten der aktuellen Session überschrieben.
		Im Falle einer neuen und noch nicht gespeicherten Session
		wird ein Dateiauswahl-Dialog geöffnet um einen Namen
		für die zu speicherende Session auszuwählen.
		Thuban Session Dateien sollten mit der Endung
		<varname>.thuban</varname> versehen werden.
		Existiert bereits eine Datei mit dem gleichen Namen
		wird der Benutzer gefragt ob diese überschrieben
		oder ein neuer Name gewählt werden soll.
		</para>
	</section>

	<section><title>Der Session Info-Baum</title>
		<para>
		<figure>
		<title>Session Info-Baum</title>
		<mediaobject>
		<imageobject><imagedata fileref="../images/2_4_session_tree.png" format="PNG" scale="&imgscale;"/></imageobject>
		<imageobject><imagedata fileref="./images/2_4_session_tree.eps" format="EPS" scale="&imgscale;"/></imageobject>
		</mediaobject>
		</figure>
		</para>
		<para>
		Der Session Info-Baum ist hauptsächlich für Software-Entwickler gedacht
		die an Thuban arbeiten.
		Er stellt eine Reihe von internen Daten zur Session, der Karte, den
		Ebenen usw. dar. Er wird geöffnet über
		<menuchoice>
		<guimenu>Datei</guimenu>
		<guimenuitem>Session Baum</guimenuitem>
		</menuchoice>. 
		</para>
	</section>
  </chapter>

  <chapter><title>Karten Management</title>
    <para>
	Die Karte besteht aus eine Anzahl Ebenen wobei jede Ebene einen
	Datensatz mit bestimtem Typ repräsentiert. Mit Interaktion auf der
	Karte kann ein Benutzer die Daten visuell erforschen.
    </para>
    <para>
	Die Karte kann einen Namen haben der dann in der Kopfzeile des
	Thuban Fensters auftaucht. Der Kartenname kann geändert werden
	über
    <menuchoice>
    <guimenu>Karte</guimenu>
    <guimenuitem>Umbennen</guimenuitem>
    </menuchoice>.
    </para>
    <para>
    <inlinemediaobject>
    <imageobject> 
    <imagedata fileref="../images/3_rename_map.png" format="PNG" scale="&imgscale;"/> 
    </imageobject> 
    <imageobject> 
    <imagedata fileref="./images/3_rename_map.eps" format="EPS" scale="&imgscale;"/> 
    </imageobject>
    <textobject> <phrase>Karte umbennen</phrase> </textobject>
    </inlinemediaobject>
    </para>

	<section><title>Hinzufügen und Entfernen von Ebenen</title>
	<para>
	Es gibt drei Typen von Ebenen aus denen eine Karte besteht:
	Shape Ebene, Datenbank Ebene und Bildebene.
	Shape Ebenen sind im Shapefile Format gespeichert welches
	weit verbreitet für die Speicherung von geografischen Objekten
	genutzt wird.
	Die Dateien haben die Endung ``.shp''. Mit der eigentlichen Shape
	Datei ist eine Datenbank Datei welche die Attribut-Daten zu dem
	Shapefile enthält. Diese Datenbank Datei verwendet das dBase Format
	und hat die Endung ``.dbf''. Beide Dateien müssen den selben
	Basisnamen haben. So gehören zum Beispiel die Dateien
	strassen.shp und strassen.dbf zusammen.
	</para>
	<itemizedlist>
	<listitem>
	<para>
		Shape Ebenen können zur Karte hinzugefügt werden mit
        <menuchoice>
        <guimenu>Karte</guimenu>
        <guimenuitem>Ebene hinzufügen</guimenuitem>
        </menuchoice>.
		Zunächst werden im Dateiauswahl Dialog nur die ``.shp'' Dateien
		angezeigt, was für die Auswahl vollkommen ausreicht.
		Falls Sie aber auf Ansicht aller Dateien umschalten, und dann
		einer der assoziierten Dateien (z.B. mit der Endung ``.dbf'')
		auswählen, so verwendet Thuban den Basisnamen um die entsprechende
		Shape Datei zu laden,
		</para>
		<para>
		Der Dateidialog für Shape Dateien erlaubt es auch, viele
		Dateien gleichzeitig auszuwählen. Verwenden Sie dafür
		die Umschalt-Taste gleichzeitig mit der linken Maustaste um
		die Auswahl zu erweitern.
		</para>
	</listitem>

	<listitem>
		<para>Datenbankebenen können zu Karte hinzugefügt werden mit
	<menuchoice>
        <guimenu>Karte</guimenu>
        <guimenuitem>Datenbankebene hinzufügen</guimenuitem>
        </menuchoice>.
	Es wird ein Dialog mit zwei Listen geöffnet.
	Die linke Liste zeigt alle derzeit offenen Datenbankverbindungen dieser
	Session an. Eine Liste der verfügbaren Ebenen aus einer Datenbankverbindung
	wird steht auf der rechten Seite. Aus dieser Liste können Sie eine
	beliebige Ebene zum Öffnen auswählen. Der Dialog wird dabach
	automatisch beendet.
    	</para>
	<para>
	Siehe auch Anhang ``Mit PostGIS arbeiten'' für weitere Details.
	</para>
	</listitem>

	<listitem>
    	<para>
        Bildebenen können zur Karte hinzugefügt werden mit
        <menuchoice>
        <guimenu>Karte</guimenu>
        <guimenuitem>Bildebene hinzufügen</guimenuitem>
        </menuchoice>.
		Es ist wichtig, dass eine korrekte Bilddatei ausgewählt für
		die auch geographische Daten (Projektions) vorliegen.
		Diese Daten können in die Bilddatei eingebettet sein oder
		als separate Datei vorliegen. Können diese Daten nicht
		gefunden werden, so wird Thuban einen Fehler melden.
    	</para>
	</listitem>
	</itemizedlist>
  	</section>

  	<section><title>Navigation</title>
    	<para>
		Die Karte kann erforscht werden indem die Navigationswerkzeuge
		aus der Werkzeugleiste oder über das Menü
        <menuchoice><guimenu>Karte</guimenu></menuchoice> ausgewählt werden.
    	</para>
	<itemizedlist>
	<listitem>
    	<para>
        Das ZoomIn Werkzeug
        <inlinemediaobject>
        <imageobject> 
        <imagedata fileref="../images/3_2_zoomin.png" format="PNG" scale="&imgscale;"/> 
        </imageobject> 
        <imageobject> 
        <imagedata fileref="./images/3_2_zoomin.eps" format="EPS" scale="&imgscale;"/> 
        </imageobject>
        <textobject> <phrase>ZoomIn Werkzeug</phrase> </textobject>
        </inlinemediaobject>
		vergrößert einen Bereich aus der Karte. Ein einmaliges Klicken auf
		die Karte vergrößert die Karte um das Doppelte und zentriert auf den
		angewählten Punkt. Klicken und Ziehen selektiert einen Bereich
		der dann so vergrößert wird, dass er das Fenster ausfüllt.
    	</para>
	</listitem>
	<listitem>
    	<para>
        Das ZoomOut Werkzeug
        <inlinemediaobject>
        <imageobject> 
        <imagedata fileref="../images/3_2_zoomout.png" format="PNG" scale="&imgscale;"/> 
        </imageobject> 
        <imageobject> 
        <imagedata fileref="./images/3_2_zoomout.eps" format="EPS" scale="&imgscale;"/> 
        </imageobject>
        <textobject> <phrase>ZoomOut Werkzeug</phrase> </textobject>
        </inlinemediaobject>
		verkleinert die Karte, so dass ein größerer Bereich zu sehen ist.
		Ein einzelnen Klick verkleinert die Karte um Faktor 2.
		Klicken und Ziehen selektiert einen Bereich in den die gesamte sichtbare
		Karte im Fenster hineinverkleinert wird.
    	</para>
	</listitem>
	<listitem>
    	<para>
        Das Verschieben Werkzeug 
        <inlinemediaobject>
        <imageobject> 
        <imagedata fileref="../images/3_2_pan.png" format="PNG" scale="&imgscale;"/> 
        </imageobject> 
        <imageobject> 
        <imagedata fileref="./images/3_2_pan.eps" format="EPS" scale="&imgscale;"/> 
        </imageobject>
        <textobject> <phrase>Verschieben Werkzeug</phrase> </textobject>
        </inlinemediaobject>
        gestattet es dem Benutzer die Karte durch klicken und
	ziehen mit gedrückter Maustaste zu verschieben.
    	</para>
	</listitem>
	<listitem>
    	<para>
        Das Volle Ausdehnung Werkzeug 
        <inlinemediaobject>
        <imageobject> 
        <imagedata fileref="../images/3_2_fullextent.png" format="PNG" scale="&imgscale;"/> 
        </imageobject> 
        <imageobject> 
        <imagedata fileref="./images/3_2_fullextent.eps" format="EPS" scale="&imgscale;"/> 
        </imageobject>
        <textobject> <phrase>Volle Ausdehnung Werkzeug</phrase> </textobject>
        </inlinemediaobject>
        skaliert die Zoom-Stufe so, dass die gesamte sichtbare Karte im
	Fenster dargestellt wird.
    	</para>
	</listitem>
	<listitem>
    	<para>
        Das Voll Ebenen-Ausdehnung Werkzeug
        <inlinemediaobject>
        <imageobject> 
        <imagedata fileref="../images/3_2_fulllayerextent.png" format="PNG" scale="&imgscale;"/> 
        </imageobject> 
        <imageobject> 
        <imagedata fileref="./images/3_2_fulllayerextent.eps" format="EPS" scale="&imgscale;"/> 
        </imageobject>
        <textobject> <phrase>Volle Ebenen-Ausdehnung Werkzeug</phrase> </textobject>
        </inlinemediaobject>
        skaliert die Zoom-Stufe so, dass die akutelle Ebene vollständig
	im Fenster dargestellt wird. Ist keine Ebene ausgewählt, so
	ist dieser Knopf ausgegraut und damit nicht verfügbar.
    	</para>
	</listitem>
	<listitem>
    	<para>
        Das Volle Shape-Ausdehnung Werkzeug 
        <inlinemediaobject>
        <imageobject> 
        <imagedata fileref="../images/3_2_fullshapeextent.png" format="PNG" scale="&imgscale;"/> 
        </imageobject> 
        <imageobject> 
        <imagedata fileref="./images/3_2_fullshapeextent.eps" format="EPS" scale="&imgscale;"/> 
        </imageobject>
        <textobject> <phrase>Volle Shape-Ausdehnung Werkzeug</phrase> </textobject>
        </inlinemediaobject>
        skaliert die Zoom-Stufe so, dass die aktuell ausgewählten Shapes
	vollständig in das Fenster eingepasst sind.
        Handelt es sich bei der Auswahl nur um einen einzelnen Punkt
	so wird dieser zentriert dargestellt und bis zu einem gewissen
	grad gezoomed.
	Ist kein Shape selektiert, so ist dieser Knopf ausgegraut und damit
	nicht verfügbar.
	Dieses Werkzeug ist besonders für den Fall hilfreich wenn man Objekte
	in einer Ebenen-Tabelle auswählt und sie auf der Karte schnell
	anspringen machen möchte.
    	</para>
	</listitem>
	</itemizedlist>
  	</section>

  	<section><title>Objekt Identifikation</title>
    	<para>
        Objekte auf der Karte können identifiziert werden über das Identifikations-Werkzeug
        <inlinemediaobject>
        <imageobject> 
        <imagedata fileref="../images/3_3_identify.png" format="PNG" scale="&imgscale;"/> 
        </imageobject> 
        <imageobject> 
        <imagedata fileref="./images/3_3_identify.eps" format="EPS" scale="&imgscale;"/> 
        </imageobject>
        <textobject> <phrase>Identifikations-Werkzeug</phrase> </textobject>
        </inlinemediaobject>.
        Klickt man auf ein Objekt wird es selektiert und es wird ein
	Dialog geöffnet der dann alle Tabellenattribute für das Objekt
	anzeigt. Jegliche vorherige Selektion wird gelöscht.
	Objekte auf der Karte sind typischerweise Shapes und dieses
	Dokument wird sich häufiger auf Objekte als Shapes beziehen. 
    	</para>
  	</section>

  	<section><title>Objekt mit Label versehen</title>
    	<para>
        Objekte können über das Label-Werkzeug mit Labeln versehen
	werden
        <inlinemediaobject>
        <imageobject> 
        <imagedata fileref="../images/3_3_label.png" format="PNG" scale="&imgscale;"/> 
        </imageobject> 
        <imageobject> 
        <imagedata fileref="./images/3_3_label.eps" format="EPS" scale="&imgscale;"/> 
        </imageobject>
        <textobject> <phrase>Label Werkzeug</phrase> </textobject>
        </inlinemediaobject>.
        Klickt man auf ein Objekt, so wird dies selektiert und es wird ein
	Dialog geöffnet welcher dessen Attribute darstellt.
	Eins der Attribute kann nun als Label für das Objekt auf der Karte
	ausgewählt werden. Der Label wird dann mittif auf dem Shape
	plaziert.
	Klickt man auf ein Objekt welches bereits ein
	Label hat, so wird dieser nun entfernt.
    	</para>
  	</section>

  	<section><title>Die Legende</title>
        <para>
        <inlinemediaobject>
        <imageobject> 
        <imagedata fileref="../images/3_5_legend.png" format="PNG" scale="&imgscale;"/> 
        </imageobject> 
        <imageobject> 
        <imagedata fileref="./images/3_5_legend.eps" format="EPS" scale="&imgscale;"/> 
        </imageobject>
        <textobject> <phrase>Legende</phrase> </textobject>
        </inlinemediaobject>
        </para>
    	<para>
        Die Legende bietet eine Übersicht über die Ebenen der Karte.
	Ebenen die weiter oben in der Legende stehen sind
	``näher'' zum Benutzer.
        Falls eine Ebene Klassifizierung unterstützt (derzeit haben
	nur Shape-Ebenen haben diese Eigenschaft) so werden die Gruppen
	der Klassifikation für jede Ebene dargestellt. 
        Die Eigenschaften für jede Gruppe werden auch als kleine Grafiken
	dargestellt. Polygon-Ebenen werden als Rechtecke dargestellt,
	Linoen als Kurven und Punkte als Kreise.
        </para>
        <para>
        Am oberen Rand der Legende ist eine Werkzeugleiste welche einen schnellen
	Zugriff auf einige der Komanndos des Menüs
        <menuchoice><guimenu>Map</guimenu></menuchoice>
	gestattet. 
        </para>

	<itemizedlist>
	<listitem>
        <para>
        Das Werkzeug
        <inlinemediaobject>
        <imageobject> 
        <imagedata fileref="../images/3_5_totop.png" format="PNG" scale="&imgscale;"/> 
        </imageobject> 
        <imageobject> 
        <imagedata fileref="./images/3_5_totop.eps" format="EPS" scale="&imgscale;"/> 
        </imageobject>
        <textobject> <phrase>Auf die oberste Ebene bewegen</phrase> </textobject>
        </inlinemediaobject> bewegt die selektierte Ebene auf der Karte
	nach ganz oben.
        </para>
	</listitem>
	<listitem>

        <para>
        Das Werkzeug
        <inlinemediaobject>
        <imageobject> 
        <imagedata fileref="../images/3_5_moveup.png" format="PNG" scale="&imgscale;"/> 
        </imageobject> 
        <imageobject> 
        <imagedata fileref="./images/3_5_moveup.eps" format="EPS" scale="&imgscale;"/> 
        </imageobject>
        <textobject> <phrase>Eine Ebene nach oben bewegen</phrase> </textobject>
        </inlinemediaobject> bewegt die selektierte Ebene um einen
	Schritt nach oben.
        </para>
	</listitem>
	<listitem>

        <para>
        Das Werkzeug
        <inlinemediaobject>
        <imageobject> 
        <imagedata fileref="../images/3_5_movedown.png" format="PNG" scale="&imgscale;"/> 
        </imageobject> 
        <imageobject> 
        <imagedata fileref="./images/3_5_movedown.eps" format="EPS" scale="&imgscale;"/> 
        </imageobject>
        <textobject> <phrase>Eine Ebene nach unten bewegen</phrase> </textobject>
        </inlinemediaobject> bewegt die selektierte Ebene um einen Schritt
	nach unten.
        </para>

	</listitem>
	<listitem>
        <para>
        Das Werkzeug
        <inlinemediaobject>
        <imageobject> 
        <imagedata fileref="../images/3_5_tobottom.png" format="PNG" scale="&imgscale;"/> 
        </imageobject> 
        <imageobject> 
        <imagedata fileref="./images/3_5_tobottom.eps" format="EPS" scale="&imgscale;"/> 
        </imageobject>
        <textobject> <phrase>Auf die unterste Ebene bewegen</phrase> </textobject>
        </inlinemediaobject> bewegt die selektierte Ebene auf
	der Karte nach ganz unten.
        </para>

	</listitem>
	<listitem>
        <para>
        Das Sichtbarkeits-Werkzeug
        <inlinemediaobject>
        <imageobject> 
        <imagedata fileref="../images/3_5_visible.png" format="PNG" scale="&imgscale;"/> 
        </imageobject> 
        <imageobject> 
        <imagedata fileref="./images/3_5_visible.eps" format="EPS" scale="&imgscale;"/> 
        </imageobject>
        <textobject> <phrase>Sichtbar</phrase> </textobject>
        </inlinemediaobject> sorgt dafür, dass eine vorher nicht sichtbare
	Ebene nun wieder in der Karte dargestellt wird.
        </para>

	</listitem>
	<listitem>
        <para>
        Das Unsichtbar-Werkzeug
        <inlinemediaobject>
        <imageobject> 
        <imagedata fileref="../images/3_5_invisible.png" format="PNG" scale="&imgscale;"/> 
        </imageobject> 
        <imageobject> 
        <imagedata fileref="./images/3_5_invisible.eps" format="EPS" scale="&imgscale;"/> 
        </imageobject>
        <textobject> <phrase>Unsichtbar</phrase> </textobject>
        </inlinemediaobject> versteckt die aktuell
	selektierte Ebene auf der Karte.
        </para>

	</listitem>
	<listitem>
        <para>
        Das Eigenschaften-Werkzeug
        <inlinemediaobject>
        <imageobject> 
        <imagedata fileref="../images/3_5_props.png" format="PNG" scale="&imgscale;"/> 
        </imageobject> 
        <imageobject> 
        <imagedata fileref="./images/3_5_props.eps" format="EPS" scale="&imgscale;"/> 
        </imageobject>
        <textobject> <phrase>Eigenschaften</phrase> </textobject>
        </inlinemediaobject> startet den Eigenschaften-Dialog für die
	aktuelle Ebene.
	Ein Doppel-Klick auf eine Ebene startet ebenfalls diesen Dialog.
    	</para>
	</listitem>
	</itemizedlist>

	<para>
	Die am häufigsten benötigten Aktionen zu den Ebenen sind
	über ein Popup-Menü erreichbar. Es erscheint wenn Sie
	mit der Maus über einer Ebene stehen und die rechten
	Maustaste betätigen.
	</para>
	
	<para>
        <figure>
        <title>Popup Menü für Ebenen</title>
        <mediaobject>
        <imageobject><imagedata fileref="../images/3_5_popup_menu.png" format="PNG" scale="&imgscale;"/></imageobject>
        <imageobject><imagedata fileref="./images/3_5_popup_menu.eps" format="EPS" scale="&imgscale;"/></imageobject>
        </mediaobject>
        </figure>
        </para>

        <para>
        Am unteren Rand der Legende befindet sich
	die Maßstabsanzeige. Sie ist immer dann zu sehen wenn
	für die Karte eine Projektion gesetzt ist und mindestens
	eine Ebene vorhanden ist.
        </para>
  	</section>

  	<section><title>Exportieren</title>
        <para>
        Auf dem Betriebssystem MS Windows können Karten im Enhanced Metafile Format
        (<varname>.wmf</varname>)
        über 
        <menuchoice>
        <guimenu>Karte</guimenu>
        <guimenuitem>Export</guimenuitem>
        </menuchoice> erstellt werden um sie in Reports,
	Präsentationen oder weitergehenden Bearbeitungen zu verwenden.
        Die aktuelle Kartenansicht, Legende und, falls verfügbar,
	Maßstabsanzeige werden dafür exportiert.
        Auf anderen Plattformen steht dies nicht zur
	Verfügung.
        Wählt man diesen Menüpunkt an so wird ein
	Dateiauswahldialog für die zu erstellende Exportdatei
	geöffnet.
        </para>
  	</section>

  	<section><title>Drucken</title>
    	<para>
        Eine Karte wird über 
        <menuchoice>
        <guimenu>Karte</guimenu>
        <guimenuitem>Drucken</guimenuitem>
        </menuchoice> ausgedruckt. Die aktuelle Kartenansicht, Legende und,
	falls vorhanden, die Maßstabsanzeige werden gedruckt.
        Es wird ein Standard-Druckdialog geöffnet der die Konfiguration
	des Druckers gestattet. Dieser Druckdialog unterscheidet sich je
	nachdem auf welcher Plattform Thuban ausgeführt wird.
    	</para>
  	</section>

  </chapter>

  <chapter><title>Ebenen Management</title>
    <para>
    </para>

  	<section><title>Typen von Ebenen</title>
    	<para>
        Thuban unterstützt 3 Typen von Ebenen:
	Shape-Ebenen, Datenbank-Ebenen und Bild-Ebenen.
        Shape-Ebenen bestehen aus vektor-basierten Objekten mit
	geo-referenzierten Koordinaten.
	Es werden drei Shape-Typen unterstützt:
        Polygone, Linien und Punkte.
	Datenbank-Ebenen sind den Shape-Ebenen ähnlich und unterscheiden
	sich darin, dass die Daten aus einer Datenbank geholt werden
	anstatt direkt vom Dateisystem.
	Bild-Ebenen können im Prinzip alle von GDAL unterstützten Dateiformate
	sein. GDAL ist eine externe Bibliothek und steht für
        Geo-spatial Data Abstraction Library.
        Das Bild muss Informationen zu seiner geographische Lage und
	Ausdenung beinhalten, entweder direkt in die Datei eingebettet
	oder als separate Datei im selben Verzeichnis wie die Bild-Datei.
        GeoTIFF Dateien funktionieren sehr gut mit Thuban und sind
	speziell als Bildebenen für Bild-Ebenen bei Geographischen
	Informationssystemen geeignet.
    	</para>
        <para>
        Alle Aktionen im Menü
        <menuchoice>
        <guimenu>Ebene</guimenu>
        </menuchoice> beziehen sich auf die in der Legende aktuell
	ausgewählten Ebene.
        </para>
  	</section>

  	<section><title>Eigenschaften</title>
    	<para>
        Um die Eigenschaften einer Ebene anzusehen muss zunächst eine Ebene
	in der Legende selektiert werden.
        Die Menüoption
        <menuchoice>
        <guimenu>Ebene</guimenu>
        <guimenuitem>Eigenschaften</guimenuitem>
        </menuchoice> öffnet einen Dialog zu den Eigenschaften
	der Ebene.
        Alle Ebenen haben einen Titel der hier entsprechend geändert werden kann.
        Der Typ der Ebene ist ebenfalls ersichtlich.
	Handelt es sich um einen Shape-Typ (Polygon, Linie, Punkt) so
	wird eine Tabelle für Klassifizierung dargestellt.
        Bildebenen haben keineweiteren Eigenschaften als
	den Titel und Typ.
    	</para>
        <para>
        <figure>
        <title>Eigenschaften Fenster</title>
        <mediaobject>
        <imageobject><imagedata fileref="../images/4_2_layer_properties.png" format="PNG" scale="&imgscale;"/></imageobject>
        <imageobject><imagedata fileref="./images/4_2_layer_properties.eps" format="EPS" scale="&imgscale;"/></imageobject>
        </mediaobject>
        </figure>
    	</para>
        <para>
        <figure>
        <title>Eigenschaften Fenster</title>
        <mediaobject>
        <imageobject><imagedata fileref="../images/4_2_raster_layer_properties.png" format="PNG" scale="&imgscale;"/></imageobject>
        <imageobject><imagedata fileref="./images/4_2_raster_layer_properties.eps" format="EPS" scale="&imgscale;"/></imageobject>
        </mediaobject>
        </figure>
    	</para>
  	</section>

  	<section><title>Sichtbarkeit</title>
    	<para>
        Manchmal ist es nicht erwünscht alle Ebenen gleichzeitig anzuzeigen.
	Einige Ebenen könnten etwas länger für den Aufbau brauchen, was
	z.B. störend bei schneller Navigation ist.
	Jede Ebene kann einzeln an- oder ausgeschaltet werden mit
        <menuchoice>
        <guimenu>Ebene</guimenu>
        <guimenuitem>Zeigen</guimenuitem>
        </menuchoice>
        bzw.
        <menuchoice>
        <guimenu>Ebene</guimenu>
        <guimenuitem>Verstecken</guimenuitem>
        </menuchoice>.
    	</para>
  	</section>

  	<section><title>Duplizierung</title>
    	<para>
        Ebenen mit allen Eigenschaften inklusive Klassifikation
	können dupliziert werden mit
        <menuchoice>
        <guimenu>Ebene</guimenu>
        <guimenuitem>Duplizieren</guimenuitem>
        </menuchoice>. Die Duplizierung von Ebenen ist sinnvoll
	z.B. wenn eine Ebene auf verschiedene Weise modelliert werden
	soll. Obwohl sich die Ebenen direkt überlagern ist es
	durch sinnvolle Einstellung der Shape Eigenschaften möglich
	mehrer Aspekte gleichzeitig zu visualisieren.
        Beispielsweise kann eine Kopie einer Strassen-Ebene
	bezüglich der Länge klassifiziert sein und eine
	weitere Kopie bezüglich Strassen-Typ.
	Wenn dann die Länge durch Farbe und der Typ durch Linienbreite
	gesetzt wird, dann ist es möglich beide Eigenschaften zu
	visualisieren indem die Kopie für den Typ über die Kopie mit
	der Länge gelegt wird.
    	</para>
  	</section>

  </chapter>

  <chapter><title>Ebenen-Klassifizierung</title>
    <para>
    Die Klassifizierung einer Ebene bedeutet das zuordnen von
    Zeichenvorschriften zu Shape-Gruppen basierend auf deren Attributen
    die in zur Ebene gehörenden Tabelle gespeichert sind.
    Es können daher auch nur Shape-Ebenen klassifiziert werden und
    keine Bild-Ebenen.
    </para>
    <para>
    Eine Klassifizierung besteht aus mehreren Grupppen. Jede Gruppe
    hat einen einzelnen Wert oder einen Wertebereich auf den hin
    verglichen wird. Ausserdem hat jede Gruppe eine Zeichenvorschrift
    welche bestimmt wie die zugehörigen Shapes dargestellt werden
    sollen.
    Der Anwender gibt an welches Feld der Tabelle für Klassifizierung
    verwendet werden soll. Wird die Karte dann gezeichnet so
    wird für jedes Shape der entsprechende Wert aus der Tabelle
    geholt und mit den definierten Gruppen-Wertebereichen
    verglichen. Es werden dann die Zeichenvorschriften
    derjenigen Gruppe benutzt, welche als erstes beim Vergleich
    passte.
    Dies gestattet es einen visuellen Eindruck z.B.
    der räumlichen Verteilung von Objekten mit
    bestimmten Eigenschaften zu erhalten.
    </para>
    <para>
    Eine Ebene hat grundsätzlich eine Klassifizierung.
    Wird zur Karte eine neue Ebene hinzugefügt,
    wird sie mit einer vordefinierten Klassifizierung
    versehen. Diese besteht nur aus der einen Gruppe DEFAULT.
    Diese Gruppe kann man nicht entfernen, lässt sich aber
    verstecken (siehe unten).
    Jedes Shape der Ebene, unabhängig von dessen Attributen, wird
    diese Gruppe zugeordnet, falls nicht vorher eine andere passt.
    </para>

  	<section><title>Klassifizierung bearbeiten</title>
    	<para>
        Die Klassifizierung für eine Ebene wird über den Eigenschaftendialog
	bearbeitet
        (<menuchoice>
        <guimenu>Ebene</guimenu>
        <guimenuitem>Eigenschaften</guimenuitem>
        </menuchoice>). Das Feld für die Klassifizierung der Ebene kann ugesetzt sein.
	In diesem Fall wird die Gruppe DEFAULT als Klassifizierung eingesetzt.
        Solange kein Feld gesetzt wird kann keine weiter Gruppe zur
	Klassifizierung hinzugefügt werden.
	Es muss also zunächst ein Feld ausgewählt werden. Dann können
	weitere Gruppen mit dem Knopf
        <guibutton>Hinzufügen</guibutton> in die Klassifizierung aufgenommen
	werden.
        </para>
        <para>
        Um die Änderungen auf die Karte anzuwenden kann der Benutzer
	entweder <guibutton>Anwenden</guibutton> oder
	<guibutton>OK</guibutton> verwenden.
        <guibutton>Anwenden</guibutton> schliesst dabei den Dialog
	nicht, sondern gestattet es, die gemachten Änderungen auf der
	Karte als Voransicht zu sehen.
        <guibutton>Zurücksetzen</guibutton> setzt die zuletzt angewendete
	Klassifikation zurück.
        <guibutton>OK</guibutton> wendet die Änderungen an
	und schliesst den Dialog. Dann können die Änderungen
	nicht mehr zurückgenommen werden.
        <guibutton>Schliessen</guibutton> beendet den Dialog.
	Alle Änderungen, die nicht mit <guibutton>Anwenden</guibutton> auf
	die Karte gebracht wurden, werden verworfen. 
        </para>
        <para>
        <figure>
        <title>Eigenschaften Fenster</title>
        <mediaobject>
        <imageobject><imagedata fileref="../images/5_classification.png" format="PNG" scale="&imgscale;"/></imageobject>
        <imageobject><imagedata fileref="./images/5_classification.eps" format="EPS" scale="&imgscale;"/></imageobject>
        </mediaobject>
        </figure>
        </para>
        <para>
        Die Reihenfolge der Gruppen in der klassifizierung ist
	von Bedeutung. Eine Ausnahme bildet die Gruppe DEFAULT,
	welche immer ganz oben verbleibt.
	Werden die Shapes den Gruppen zugeordnet, so beginnt
	der Vergleich mit der ersten Gruppe nach DEFAULT und dann
	absteigend.
        Der Vergleich endet sobald eine Gruppe für das Shape passt.
        Mit <guibutton>Eine Ebene nach oben bewegen</guibutton> und
	<guibutton>Eine Ebene nach unten bewegen</guibutton>
        wird die Reihenfolge der Gruppen geändert.
	Die Gruppe DEFAULT wird uaf alle Shapes angewandt die
	auf keine der anderen Gruppen passssen.
    	</para>
  	    <section><title>Sichtbar</title>
    	    <para>
            Die Spalte Sichtbar beinhaltet Ankreuzfelder mit denen
	    bestimmt werden kann ob die Gruppen auch in der
	    Legende dargestellt werden sollen.
            Das ist zum Beispiel hilfreich wenn die Gruppen alle
	    Shapes abdecken und daher die Gruppe DEFAULT nicht
	    in der Legende bzw. im Ausdruck auftauchen soll.
            </para>
        </section>
  	    <section><title>Symbole</title>
    	    <para>
            Jeder Shape-Typ hat seinen eigenen Symbol-Typ.
	    Thuban unterstützt 3 Shape-Typen: Polygone, Linien und Punkte.
            Polygone und Punkte haben eine Rand- und Füllfarbe, Linien
	    haben nur eine Linienfarbe.
            zu jeder Gruppe gehören Symbol-Eigenschaften.
            Um diese zu bearbeiten, kann man entweder einen Doppelclick
	    auf das Symbol machen oder die entsprechende Gruppe
	    selektieren und dann den Knopf
            <guibutton>Symbol bearbeiten</guibutton> verwenden.
    	    </para>
  	    </section>
        <section><title>Wert</title>
            <para>
            Die Spalte Wert enthält die Werte auf die die Shapes
	    verglichen werden wenn die Karte gezeichnet wird.
            Die Art der Angaben in diesen Feldern hängt vom
	    Typ der Daten des Klassifizierungs-Feldes.
            </para>
            <para>
            Ist das Feld vom Typ Text, sind beliebige Eingaben erlaubt.
            Der Text wird buchstabenweise mit dem Wert des Shape-Attributes
	    verglichen. Gross-Kleinschreibung wird dabei berücksichtigt.
            Ist das Feld vom Typ Integer, sind alle ganzen Zahlen
	    erlaubt. Darüber hinaus können auch mit spezieller Syntax
	    Bereiche angegeben werden.
            Ein Bereich von <varname>start</varname> bis
	    <varname>ende</varname> inklusive der Grenzen wird so
	    eingegeben: <literal>[start;ende]</literal>.
            Der Bereich ohne die Grnezen wird so angegeben:
            <literal>]start;ende[</literal>. Bereich können auch
	    Unendlich als Wert benutzen: <literal>[-oo;oo]</literal>.
	    Der Feld-Typ kann auch Dezimal sein. Dann können beliebeige
	    rationale Zahlen verwendet werden.
            </para>
  	    </section>
  	    <section><title>Label</title>
    	    <para>
            
	    
	    als Voreinstellung wird als Label für die Gruppe in der
	    Legende der Wert verwendet. Es kann aber auch ein spezieller
	    Label angegeben werden.
            </para>
        </section>
  	</section>

  	<section><title>Erzeuge Klassifikation</title>
    	<para>
        <figure>
        <title>Erzeuge Klasse</title>
        <mediaobject>
        <imageobject><imagedata fileref="../images/5_3_genclass.png" format="PNG" scale="&imgscale;"/></imageobject>
        <imageobject><imagedata fileref="./images/5_3_genclass.eps" format="EPS" scale="&imgscale;"/></imageobject>
        </mediaobject>
        </figure>
    	</para>
    	<para>
        Das manuelle erstellen eine Klassifikation
	kann anstrengend werden.
        Thuban bietet hier die Möglichkeit, Klassikationen
	automatisch, aber unter Kontrolle des Benutzers, zu
	erstellen.
        Clicked man auf <guibutton>Erzeuge Klasse</guibutton>
        so wird der Dialog <varname>Erzeuge Klassifikationn</varname>
	geöffnet.
        Unter dem Aufklappmenü <varname>Erzeuge</varname> finden sich
	in der Regel drei unterschiedliche Arten für die
	Erzeugung von Klassifikationen:
        Eindeutige Werte, Gleichförmige Verteilung und Quantile.
	Einige Optionen sind nicht verfügbar wenn der Datentyp
	des Feldes es nicht unterstützt.
        So macht beispielsweise <varname>Gleichförmige Verteilung</varname>
        keinen Sinn bei Text-Feldern.
    	</para>
        <para>
        In jedem Fall muss bei der Erzeugung einer Klassifizierung
	ein Farbschema ausgewählt werden.
        Thuban bietet einige verschiedene Farb-Schemata die dann bestimmen
	wie sich Gruppeneigenschaften über die Klassifizierung ändern.
        Es mag gewünscht sein, dass nur bestimmte Eigenschaften
	sich über die Klassifizierung ändern.
        Ist der Shape-Typ Polygon oder Punkt, so die Option
        <guibutton>Rahmenfarbe festlegen</guibutton> verfügbar.
        Diese erlaubt es, eine feste Rahmenfarbe für alle
	Gruppen der Klassifizierung festzulegen.
        Es ist ebenfalls möglich ein benutzerdefiniertes Farbschema
	zu erstellen.
	Wählt man diese Option aus, werden zwei Symbole
	dargestellt: das linke Symbol hat die Eigenschaften für
	die erste Gruppe, das rechte für die letzte Gruppe.
        Thuban interpoliert dann zwischen diesen beiden um die
	Eigenschaften für die enderen Gruppen zu erstellen.
        <figure>
        <title>Benutzerdefiniertes Farbschema</title>
        <mediaobject>
        <imageobject><imagedata fileref="../images/5_2_custom_ramp.png" format="PNG" scale="&imgscale;"/></imageobject>
        <imageobject><imagedata fileref="./images/5_2_custom_ramp.eps" format="EPS" scale="&imgscale;"/></imageobject>
        </mediaobject>
        </figure>
        </para>
        <para>
        Die Option Eindeutige Werte erlaubt es, spezielle Werte
	auszuwählen die in der Tabelle vorkommen.
        Clickt man <guibutton>Aus Tabelle holen</guibutton>
        so wird die Tabelle nach allen vorkommenden Werten
	durchsucht und diese in der Liste auf der linken Seite dargestellt.
        Beide Listen für eine schnellere Suche sortiert
	oder umgedreht werden.
        Die Klassifizierung die dann erzeugt wird
	wird dieselbe Sortierung wie die rechte Liste haben.
        <figure>
        <title>Eindeutuige Werte</title>
        <mediaobject>
        <imageobject><imagedata fileref="../images/5_2_unique_values.png" format="PNG" scale="&imgscale;"/></imageobject>
        <imageobject><imagedata fileref="./images/5_2_unique_values.eps" format="EPS" scale="&imgscale;"/></imageobject>
        </mediaobject>
        </figure>
        </para>
        <para>
        Die Option Gleichförmige Verteilung erzeugt die angegebene
	Anzahl von Gruppen mit Bereichen wobei alle Bereiche
	das gleiche Intervall haben.
        Minimum und Maximum hierfür können automatisch aus der Tabelle
	ermittelt werden indem die Option 
        <guibutton>Aus Tabelle holen</guibutton> verwendet wird.
	Die Stufen bestimmen die Grösse des Intervalls.
        Ändert man diesen Wert, wird automatisch neu berechnet
	wie viele Gruppen nun passend sind.
        <figure>
        <title>Gleichförmige Verteilung</title>
        <mediaobject>
        <imageobject><imagedata fileref="../images/5_2_uniform_dist.png" format="PNG" scale="&imgscale;"/></imageobject>
        <imageobject><imagedata fileref="./images/5_2_uniform_dist.eps" format="EPS" scale="&imgscale;"/></imageobject>
        </mediaobject>
        </figure>
        </para>
        <para>
        Die Option Quantile erzeugt Bereiche anhand der Anzahl Elemente in
	der Tabelle.
        Beispielsweise werden durch die Wahl von fünf Gruppen
	entsprechend fünf Gruppen mit passenden Bereichen erstellt,
	so dass 20% der Tabellendaten in jeder Gruppe enthalten sind.
        Ist es nicht möglich exakte Gruppierungen zu erzeugen,
	sow wird Thuban Warnung mitteilen aber die Aktion fortführen.
        <figure>
        <title>Quantile</title>
        <mediaobject>
        <imageobject><imagedata fileref="../images/5_2_quantiles.png" format="PNG" scale="&imgscale;"/></imageobject>
        <imageobject><imagedata fileref="./images/5_2_quantiles.eps" format="EPS" scale="&imgscale;"/></imageobject>
        </mediaobject>
        </figure>
        </para>
  	</section>
  </chapter>

  <chapter><title>Projektions-Management</title>
    <para>
    Projektionen bestimmen wie geographische Daten auf dem
    Bildschirm dargestellt werden.
    Werden mehrere Ebenen in Thuban geladen bei denen die
    geographischen Daten in verschiedenen Projektionssystemen
    vorliegen, so muss jeder Ebene die entsprechende Projektion
    zugeordnet sein. Ebenso muss eine Projektion für die Karte
    angegeben werden.
    Dies kann die gleiche wie die der Ebenen sein oder eine
    andere Projektion wobei dann die Ebenen entsprechend
    umprojeziert werden.
    Die Projektion der Karte wird über
    <menuchoice>
    <guimenu>Karte</guimenu>
    <guimenuitem>Projektion</guimenuitem>
    </menuchoice> und die Projektionen für die Ebenen über
    <menuchoice>
    <guimenu>Ebene</guimenu>
    <guimenuitem>Projektion</guimenuitem>
    </menuchoice> gesetzt.
    <figure>
    <title>Projektionsauswahl-Fenster</title>
    <mediaobject>
    <imageobject><imagedata fileref="../images/6_projection.png" format="PNG" scale="&imgscale;"/></imageobject>
    <imageobject><imagedata fileref="./images/6_projection.eps" format="EPS" scale="&imgscale;"/></imageobject>
    </mediaobject>
    </figure>
    </para>
    <para>
    Thuban kommt mit eine Beispiel-Sammlung von Projektionen sowie
    dem von der EPSG (European Petroleum Survey Group) Satz. Dieser
    recht umfangreiche Satz wird nur angezeigt wenn er durch das entsprechende
    Wahlfeld eingeschaltet wurde.
    Der Satz besteht aus zwei Gruppen, die Liste der veralteten Projektionen
    enthält diejenigen Projektionen die eine EPSG Nummer haben aber
    in der aktuellen EPSG Datenbank nicht mehr enthalten sind.
    </para>
    <para>
    Ein Benutzer kann neue Projektionen definieren und sie für zukünftige
    Thuban Sitzungen zugängig machen. Sie können auch exportiert
    und importiert werden, so dass spezielle Projektionen
    leicht weitergegeben werden können.
    </para>
  	<section><title>Eine Projektion auswählen</title>
        <para>
        Die verfügbaren Projektionen sind link aufgelistet.
	Hat die Ebene oder Karte bereits eine Projektion,
	so ist diese zunächst hervorgehoben und trägt den Hinweis
        <varname>(aktuell)</varname>. Wird 
        <varname>&lt;Keine&gt;</varname> ausgwählt, so wird Thuban die Daten
	dirket verwenden wie sie in den Quellen vorkommen und keine
	Umprojezierung vornehmen.
        </para>
    </section>
  	<section><title>Eine Projektion bearbeiten</title>
        <para>
        Immer wenn eine Projektion aus der Liste ausgwählt wird, dann
	werden deren konkrete Eigenschaften rechts dargestellt.
	Diese Eigenschaften können geändert werden und die Änderungen
	in der Projektion über <guibutton>Aktualisieren</guibutton>
	gespeichert werden.
        Es können ausschliesslich Projektionen aktualisiert
	werden, die aus einer Datei kommen.
	Wenn also die Projektion der aktuellen Ebene angewählt ist, so
	ist die Aktion <guibutton>Aktualisieren</guibutton> deaktiviert.
        <guibutton>Hinzufügen zur Liste</guibutton> fügt die Projektion
	an die Liste der verfügbaren Projektionen an und macht sie so
	auch in zukünftigen Thuban Sitzungen verfügbar.
        Mit <guibutton>Neu</guibutton> wird eine neue, leere Projektion
	erzeugt.
        Die Aktion <guibutton>Entfernen</guibutton> löscht eine
	Projektion dauerhaft aus der Liste.
        </para>
        <para>
        Um eine Projektion auf die Karte anzuwenden kann man
        <guibutton>Anwenden</guibutton> oder <guibutton>OK</guibutton>
	benutzen.
        <guibutton>Anwenden</guibutton> schliesst den Dialog nicht
	und erlaubt es so, die Änderung auf der Karte zunächst zu begutachten.
        <guibutton>Zurücksetzen</guibutton> macht die zuletzt gemachte
	Änderung wieder rückgängig.
        <guibutton>OK</guibutton> aktiviert die gemachten Änderung und
	schliesst den Dialog.Danach kann man diese Änderung nicht mehr
	rückgängig machen.
        <guibutton>Schliessen</guibutton> beendet den Dialog.
	Wurde bis dahin keine Projektion mit
        <guibutton>Anwenden</guibutton> ausprobiert, so wird sie auch
	nicht auf die Karte übertragen.
        </para>
    </section>
  	<section><title>Projektionen Importieren/Exportieren</title>
        <para>
	Projektionen die in der Liste verfügbaren Projektionen auftauchen
	können in eine Datei exportiert werden.
	Nach der Auswahl einer oder mehrerer Projektionen wird nach betätigen von
        <guibutton>Export</guibutton> ein entsprechender
	Dateiauswahldialog gestartet.
	Die Datei kann dann z.B. an andere Thuban-Anwender weitergegeben
	werden.
        Um eine solche Datei zu importieren verwendet man die Aktion
        <guibutton>Import</guibutton>.
        Die importierten Projektionen werden zur Liste verfügbarer
	Projektionen zur sofortigen oder späteren Verwendung hinzugefügt.
        </para>
    </section>
  </chapter>

  <chapter><title>Tabellen-Management</title>
    <para>
    Thuban unterscheidet zwei unterschiedliche Tabellen-Typen:
    Attributtabellen (welche zu einer Ebene gehört) sowie normale
    Datentabellen.
    Beide bieten die gleiche allgemeine Funktionalität mit dem
    einzigen Unterschied, dass Aktionen auf einer Attributtabelle
    die Kartendarstellung ändern können.
    </para>

    <section><title>Tabellen-Ansicht</title>
        <para>
        <figure>
        <title>Tabellen-Ansicht</title>
        <mediaobject>
        <imageobject><imagedata fileref="../images/7_1_table_view.png" format="PNG" scale="&imgscale;"/></imageobject>
        <imageobject><imagedata fileref="./images/7_1_table_view.eps" format="EPS" scale="&imgscale;"/></imageobject>
        </mediaobject>
        </figure>
        </para>
        <para>
	Thuban stellt einen Standard-Dialog für die Anzeige einer Tabelle
	zur Verfügung. Diese Aansicht hat 5 Elemente:Titel, Selektion,
	das Tabellenraster, Exportfunktionen und die Statuszeile.
        </para>
        <para>
        Die Titelzeile identifiziert die Tabelle mit ihrem Namen.
        </para>
        <para>
        Die Selektionsbox erlaubt es dem Benutzer einfache Analysen auf den Daten
	durch Vergleiche durchzuführen: Die erste Auswahl ist ein Feldbezeichner
	der Tabelle, die zweite Auswahl bestimmt den Typ des Vergleichs.
	Die dritte Auswahl kann entweder ein bestimmter Wert (interpretiert
	als Zahl oder als Zeichenkette abhängig vom Typ des ersten Feldes)
	oder ein zweiter Feldbezeichner sein.
	D.h. man kann Analysen durchführen wie alle Einträge auswählen bei
	denen <literal>bevoelkerung > 10000</literal> oder 
        <literal>pkw_pro_einwohner < fahrraeder_pro_einwohner</literal> 
        (beachten Sie, dass die Namen nur exemplarisch sind, dBase Dateien
	erlauben nur Bezeichner mit einer maximalen Länge von 11 Zeichen).
      
        Selektionen können kombiniert werden. Entweder bezieht sich
	die Selektion auf die zuvor selektierten Einträge oder man kann
	eine bestehende Selektion erweitern. Voreingestellt ist
	einersetzen der bisherigen Selektion.
        </para>
        <para>
        Das Tabellenraster zeigt den Inhalt der Tabelle (pro Zeile ein Eintrag).
	Selektionen sind hervorgehoben. Die Grösse der Zeiken und Spalten kann
	verändert werden.
        </para>
        <para>
	Der Inhalt einer Tabelle kann in eine Datei exportiert werden,
	entweder im dBase format (DBF) oder als kommaseparierte Werte
	(CSV). Der.
        <guibutton>Export</guibutton> Knopf startet einen Dialog
	zur Angabe des Pfades und des Namens der Datei.
	Der Export-Typ wird durch die Namenserwiterung spezifiziert
	(entweder .dbf oder .csv).

        Der Knopf <guibutton>Exportiere Selektion</guibutton> funktioniert
	ähnlich, exportiert aber nur die aktuelle Selektion.

        Der <guibutton>Schliessen</guibutton> Knopf schliesst das
	Fenster mit der Tabellenansicht. Dies ist nicht zu verwechseln mit
	dem Menüpunkt
        <menuchoice>
        <guimenu>Tabelle</guimenu>
        <guimenuitem>Schliessen</guimenuitem>
        </menuchoice> welcher die Tabelle aus Thuban entfernt.
        </para>
        <para>
        Die Statuszeile zeigt einige statistische Informationen zu
	der Tabelle sowie zu Selektionsergebnisse an.
        </para>
    </section>

    <section><title>Allgemeine Funktionalität (Menü Tabelle)</title>
        <para>
	Die allgemeinen Funktionen wirken sich auf alle geöffneten Tabellen
	aus. Attributtabellen werden wie normale Tabellen behandelt (mit der
	Ausnahme dass diese nicht geschlossen werden können).
        </para>
        <section><title>Öffnen</title>
            <para>
            Der Menüpunkt 
            <menuchoice>
            <guimenu>Tabelle</guimenu>
            <guimenuitem>Öffnen</guimenuitem>
            </menuchoice>
	    startet einen Dateiselektionsdialog für die Auswahl 
	    einer dBase-Datei. Diese wird als nur-lesbar in Thuban
	    geladen.
            Mit <guibutton>OK</guibutton> wird die ausgewählte Datei
	    geladen und eine entsprechende Tabellenansicht geöffnet.
            </para>
        </section>

        <section><title>Schliessen</title>
            <para>
            Der Menüpunkt 
	    <menuchoice>
            <guimenu>Tabelle</guimenu>
            <guimenuitem>Schliessen</guimenuitem>
            </menuchoice>
            startet einen Dialog welcher alle derzeit geöffneten Datentabellen
            (die geladen wurden über 
            <menuchoice>
            <guimenu>Tabelle</guimenu>
            <guimenuitem>Öffnen</guimenuitem>
            </menuchoice>).
	    Die gewählten Tabellen werden nach Bestätigung aus Thuban
	    entfernt.
	    Da die Tabellen als nur-lesend geöffnet wurden, wird
	    der Inhalt der Tabellen nicht verändert.

	    Sämtliche offenen Tabellenansichten für diese
	    Tabellen werden ebenfalls geschlossen.

            Tabellen die bei Verknüpfungen verwendet werden
	    können nicht geschlossen werden.
            </para>
        </section>

        <section><title>Umbenennen</title>
            <para>
            <menuchoice>
            <guimenu>Tabelle</guimenu>
            <guimenuitem>Umbenennen</guimenuitem>
            </menuchoice> ändert den Tabellentitel.
            </para>
        </section>

        <section><title>Anzeigen</title>
            <para>
            Der Menüpunkt
            <menuchoice>
            <guimenu>Tabelle</guimenu>
            <guimenuitem>Anzeigen</guimenuitem>
            </menuchoice> 
            öffnet einen Dialog mit der Liste der verfügbaren
	    Tabellen (explizit geladene Tabellen, Attributtabellen,
	    Ergebnisse aus Verknüpfungen).
            Die ausgewählten Tabellen werden nach der
	    Bestätigung mit
            <guibutton>OK</guibutton> in Tabellenansichten dargestellt.
            </para>
        </section>

        <section><title>Verbinden</title>
            <para>
            <figure>
            <title>Verbinde Tabellen</title>
            <mediaobject>
            <imageobject><imagedata fileref="../images/7_2_5_join.png" format="PNG" scale="&imgscale;"/></imageobject>
            <imageobject><imagedata fileref="./images/7_2_5_join.eps" format="EPS" scale="&imgscale;"/></imageobject>
            </mediaobject>
            </figure>
            </para>
            <para>
            Der Menüpunkt
            <menuchoice>
            <guimenu>Tabelle</guimenu>
            <guimenuitem>Verbinden</guimenuitem>
            </menuchoice> 
            startet einen Dialog für die Angabe der beiden Tabellen die
	    verbunden werdn sollen. Das Ergebnis der Verbindung ist eine
	    neue Tabelle mit der Bezeichnung 
            'Join of "linke Tabelle" and "rechte Tabelle"'.

            Der Dialog erlaubt es die beiden zu verbindenden Tabellen sowie
	    die beiden Felder anzugeben über die die Verbindung hergestellt
	    werden soll. Als Voreinstellung beinhaltet die neue Tabelle
	    nur die Einträge für die entsprechende Übereinstimmungen
	    vorlagen.

            Wollen Sie die Einträge der linken Tabelle erhalten, so können
	    Sie eine äussere Verbindung erstellen. Die Felder der rechten
	    Tabelle für Einträge ohne Übereinstimmung werden in diesem
	    Fall aufgefüllt mit dem Wert <varname>None</varname>.
            </para>
        </section>

    </section>
    <section><title>Attribut-Tabellen</title>
        <para>
	Um klarer zwischen den beiden Tabellen-Typen (Daten und Attribute) zu
	unterscheiden, bietet Thuban die Funktionalität für die Attribut-Tabellen
	unter dem Menü
        <menuchoice><guimenu>Ebene</guimenu></menuchoice> an. 
        </para>

        <section><title>Zeige Tabelle</title>
            <para>
            <menuchoice>
            <guimenu>Ebene</guimenu>
            <guimenuitem>Zeige Tabelle</guimenuitem>
            </menuchoice> 
            öffnet die Attribut-Tabelle für die aktuell aktive Ebene in
	    einer Tabellenansicht.

            Eine zusätzliche Funktionalität bei diesen Tabellenansichten
	    ist, dass bei Selektionen die korrespondierenden Objekte
	    auf der Karte unmittelbar hervorgehoben werden.
            </para>
        </section>

        <section><title>Verbinde Tabelle</title>
            <para>
	    Anders als beim Verbinden wie oben beschrieben
            erzeugt dieses Verbinden keine neue Tabelle.
	    Die Attributtabelle der aktiven Ebene stelllt die linke
	    Tabelle. Die anderen Tabellen werden an diese angebunden.
            Das Ergebnis dieser Verbindung steht z.B. für Klassifizierungen
	    zur Verfügung.

            Daraus folgt auch, dass die Verbindung niemals weniger
	    Einträge haben als die ursprüngliche Attributtabelle.
	    Der Benutzer wird gewarnt, falls die recht Tabelle dies
	    nicht erfüllen kann. In so einem Fall muss eine
	    äussere Verbindung durchgeführt werden.
            </para>
        </section>

        <section><title>Tabellen-Verbindung lösen</title>
            <para>
            Wie schon erwähnt kann eine Tabelle nicht geschlossen
	    werden wenn sie noch bei einer Verbindung verwendet wird.
            Tabellen die neu aus der Verbindung zweier normaler Tabellen
	    entstanden sind, können ohne weiteres gelöst werden.
	    Dies gilt jedoch nicht für Attributtabellen.

            Also müssen Attributtabellen explizit gelöst werden.
	    Dazu wird das Kommando
            <menuchoice>
            <guimenu>Ebene</guimenu>
            <guimenuitem>Verbindungen lösen</guimenuitem>
            </menuchoice> 
            verwendet: Die jeweils zuletzt gemachte Verbindung wird
	    gelöst.
            </para>
        </section>
    </section>
  </chapter>

  <chapter><title>Erweiterungen</title>
  	<para>
	Thuban ist so konstruiert, dass es leicht
	erwiterbar ist. Der Begriff Erweiterungen wird
	als allgemeine Bezeichnung für alles verwendet, was Thuban
	erweitert.
	Diese Kapitel gibt eine Einführung in verschiedene Möglichkeiten
	weitere Funktionalität zu Thuban hinzuzufügen, entweder
	eigene Entwicklungen oder die von Dritten.
	</para>

	<section><title>Eigene Erweiterungen über thubanstart.py</title>
		<para>
		iNachdem Thuban zum ersten mal gestartet wurde, wird
		ein Verzeichnis .thuban im Heimatverzeichnis des
		Benutzers erzeugt.
		Dort kann die Datei thubanstart.py angelegt werden,
		die dann beim Start von Thuban importiert wird.
		Es ist empfehlenswert ausschliesslich import-Kommandos
		in dieser Datei aufzunehmen und den eigentlichen
		Programmcode separat zu halten.
		</para>
		<para>
		Die Module die importiert werden müssen entweder
		über die Pfade in Umgebungsvariablen
		PYTHONPATH gefunden werden oder direkt
		im .thuban-Verzeichnis abgelegt sein.
		</para>
		<para>
		Als Beispiel kann man die Datei
		examples/simple_extensions/hello_world.py
		aus dem Thuban Quelltext in das persönliche .thuban-Verzeichnis
		kopieren.
		Nun kann das Kommando import hello_world in die Datei
		thubanstart.py aufgenommen werden. Nach dem Start von Thuban
		wird man dann ein zusätzliches Menü
		<menuchoice><guimenu>Extensions</guimenu></menuchoice> vorfinden
		in dem der Unterpunkt für die Hello-World Erweiterung
		zu sehen ist. Wählt man diesen Punkt aus, so
		wird die bekannte Hello-World Mitteilung ausgegeben.
		</para>
	</section>

	<section><title>Im Thuban-Paket enthaltene Erweiterungen</title>
		<para>
		Die hier beschriebenen Erweiterungen sind Teil des Thuban-Paketes,
		aber nicht automatisch aktiviert.
		Sie befinden sich im Thuban Installations-Verzeichnis unter
		<literal>Extensions/</literal>. Man aktiviert sie über
		PYTHONPATH und import wie im obigen Abschnitt erklärt.
		Stabile Erweiterungen tauchen unter dem Menü
		<menuchoice><guimenu>Extensions</guimenu></menuchoice> auf
		und solche die sich noch im experimentellen Stadium
		befinden und daher unter Umständen nicht komplett 
		funktional unter 
		<menuchoice><guimenu>Experimental</guimenu></menuchoice>.
		</para>

        <section><title>Stabile Erweiterungen</title>
            <para>
            Diese Erweiterungen bieten zusätzliche Funktionalität
            für Thuban die nicht in Kernanwendung integriert
            ist. Es wird angenommen, dass keine bedeutenden
            Fehler mehr enthalten sind.
            </para>
            <section><title>gns2shp</title>
             <para>
             Dieses Werkzeug konvertiert Daten des
	     Geospatial Names Server
             (GNS, siehe <ulink url="http://www.nima.mil/gns"/>)
             in das Shapefile-Format.
             Die GNS Webseite bietet den Download die Informationen zu
	     benannten Orten nach Ländern gruppiert für alle Länder an.
             Einzige Ausnahme sind die USA für welche die Daten in anderer
	     Form angeboten werden.
             </para>
             <para>
             Wenn man einen Datensatz herunterlädt und auspackt so erhält
	     man eine Textdatei mit dem Anhang .txt.
             Wählt man eine solche Textdatei via gns2shp aus, so
	     wird ein Shapefile mit dem selben Basisnamen
	     erzeugt und im gleichen Verzeichnis abgelegt.
             Danach wird es automatisch in Thuban eingeladen.
             Die Shapefile Dateien werden nicht automatisch
	     wieder gelöscht.
             </para>
             <para>
             Das Modul gns2shp.py kann auch auf der Kommandozeile
	     verwendet werden, z.B. für Stapelverarbeitung.
             </para>
             <para>
             Ein Beispiel (<literal>ls.txt</literal> für Liechtenstein)
             befindet sich im Verzeichnis
             <literal>Extensions/gns2shp/test</literal>.
             </para>
             </section>

             <section><title>SVG Export</title>
             <para>
             Karte und Legende können separat in das Thuban-SVG-Format exportiert
	     werden.Die erzeugten Dateien entsprechen der
	     Scalable Vector Graphics (SVG) 1.1 Specification
             und können von den meisten Vektorzeichenprogrammen gelesen
	     werden.
             </para>
             <para>
             Ziel des SVG-Export ist es, den Beginn einer
	     Druck-Kette für Thuban-Karten anzubieten.
             Für diesen Zweck enthalten die erzeugten Thuban-Karten-SVG Dateien
	     zusätzliche Informationen welche in einer Nachbearbeitung
	     verwendet werden können.
             Typischerweise ist ein Vektorzeichenprogramm wesentlich
	     mächtiger bei der grafischen Ausgestaltung als eine
	     Geodaten-Betrachter; z.B. stehen viel mehr Symbole
	     und Fonts zur Verfügung.
             Auch unterstützt dies den Anwender darin, aufgabenorientierte
	     Komponenten jweils sinnvoll auszunutzen.
             Die Idee ist also, das Zeichenprogramm für die Druckvorbreitung
	     zu verwenden und nicht das GIS. Die zusätzlichen Informationen
	     die im Export-Format gespeichert werden ermöglichen es,
	     dass wenn sich nur einzelne Geo-Objekte ändern
             das Layout und die Stile für die ganze Karte im Zeichenprogramm
	     beizubehalten.
             </para>
             <para>
             Markus Rechtien hat den Prototyp dieser
	     Druckkette im Rahmen einer Diplomarbeit
	     entwickelt und validierte damit ein
	     Konzept von Bernhard Reiter.
             Skripte für entsprechende Weiterverarbeitung
	     existieren für die Zeichenanwendung Skencil
             (<ulink url="http://www.skencil.org"/>).
             </para>
             <para>
             Technische Hinweise: die Namen der Ebenen werden
	     als Basis für IDs im SVG-Format verwendet.
	     Wenn man versucht, zwei Ebenen mit gleichem Namen
	     zu exportieren, dann tritt entsprechend ein Fehler auf.
             Ändern Sie einfach den Namen einer Ebene und versuchen
	     Sie es erneut.
             </para>
             </section>
         </section>

         <section><title>Experimentelle Erweiterungen</title>
	<para>
	Die hier beschriebenen Funktionen sollten mit Vorsicht
	verwendet werden, da sie nicht vollständig und/oder nicht
	ausreichend getestet sind.
	Trotzdem können sie in der Praxis schon recht hilfreich sein.
	</para>
	<para>
	Interesse, diese Erweiterungen zu verbessern sollte
	auch der Entwickler- und Benutzergemeinschaft
	mitgeteilt werden.
	</para>

	<section><title>importAPR</title>
	<para>
	Dieses Kommando gestattet es, eine ESRI® ArcView® Projectdatei
	zu laden (endet auf .apr) und für weitere Nutzung in Thuban
	zu konvertieren.
	Nach Auswahl der zu ladenden apr-Datei erscheint eine
	Auswahlliste mit den enthaltenen Ansichten, falls mehr als
	eine existiert.
	Desweiteren wird der Session Infobaum um eine Repräsentation
	der kompletten apr-Datei erweitert.
	</para>
	<para>
	Die Legende von Thuban deckt nicht alle Elemente die von
	ArcView® unterstützt werden ab.
	Daher wird die Karte in Thuban anders aussehen.
	Zudem ist das apr-Format proprietär und nicht offen dokumentiert.
	Das bedeutet, dass die Interpretation auf
	Reverse Engeneering und intelligentem Raten basiert.
	</para>
	<para>
	Die Dateipfade innherhalb der apr-Datei passen unter
	Umständen nicht und müssen ggf. manuell in der apr-Datei
	mit einem Texteditor angepasst werden.
	Die Pfade m:The paths are either absolute
	or relative from where Thuban has been started.
	</para>
	<para>
	A sample for the Iceland data is included as
	<literal>Extensions/importAPR/samples/iceland.apr</literal>.
	The file-paths are relative from the Thuban main directory.
	</para>
	</section>
	</section>
	</section>

	<section><title>Writing simple extensions</title>
		<para>
		Writing an extension for Thuban basically means to
		implement the extra functionality in Python with all of the
		Thuban classes, methods and variables available.
		</para>
		<para>
		All classes and their methods are documented in the source code
		(see their doc-strings). Here is an example from
		Thuban/Model/layer.py that describes some of the methods
		of a Layer object:
		</para>
		<programlisting>
		<![CDATA[
class BaseLayer(TitledObject, Modifiable):

    """Base class for the layers."""

    def __init__(self, title, visible = True, projection = None):
        """Initialize the layer.

        title -- the title
        visible -- boolean. If true the layer is visible.
        """
        TitledObject.__init__(self, title)
        Modifiable.__init__(self)
        self.visible = visible
        self.projection = projection

    def Visible(self):
        """Return true if layer is visible"""
        return self.visible

    def SetVisible(self, visible):
        """Set the layer's visibility."""
        self.visible = visible
        self.issue(LAYER_VISIBILITY_CHANGED, self)

    def HasClassification(self):
        """Determine if this layer support classifications."""
...
		]]>
		</programlisting>
		<para>
		This example intends to give you an impression of the
		source-code-level documentation.
		You have to make yourself familiar with
		the Python programming language to understand some special
		code elements.
		</para>
		<section><title>hello_world.py</title>
		  <para>
		  Traditionally, the first example should welcome the world.
		  Most of the code handles the frame for integrating a menu
		  item into Thuban while the actual raising of a message
		  is done in a single line.
		  </para>
			<programlisting>
			<![CDATA[
# Copyright (C) 2003 by Intevation GmbH
# Authors:
# Jan-Oliver Wagner <jan@intevation.de>
#
# This program is free software under the GPL (>=v2)
# Read the file COPYING coming with Thuban for details.

"""
Extend Thuban with a sample Hello World to demonstrate simple
extensions.
"""

__version__ = '$Revision: 1.11 $'

# use _() already now for all strings that may later be translated
from Thuban import _

# Thuban has named commands which can be registered in the central
# instance registry.
from Thuban.UI.command import registry, Command

# The instance of the main menu of the Thuban application
# See Thuban/UI/menu.py for the API of the Menu class
from Thuban.UI.mainwindow import main_menu

def hello_world_dialog(context):
    """Just raise a simple dialog to greet the world.

    context -- The Thuban context.
    """
    context.mainwindow.RunMessageBox(_('Hello World'), _('Hello World!'))


# create a new command and register it
registry.Add(Command('hello_world', _('Hello World'), hello_world_dialog,
                     helptext = _('Welcome everyone on this planet')))

# find the extensions menu (create it anew if not found)
extensions_menu = main_menu.FindOrInsertMenu('extensions', _('E&xtensions'))

# finally bind the new command with an entry in the extensions menu
extensions_menu.InsertItem('hello_world')
			]]>
			</programlisting>
		</section>
		<section><title>Registering a Command</title>
		  <para>
		  Mainly, our new function has to be registered to the Thuban
		  framework in order to connect it to the menu. A registered
		  command can also be connected to e.g. a toolbar button.
		  </para>
		  <para>
		  The instances and classes for this are imported at the beginning.
		  Any code not inside a method or class is directly executed when
		  the source-code module is imported. Therefore, the second
		  part of this example consist of the plain statements to create a new
		  Command and to add it to the menu.
		  </para>
		  <para>
		  By convention, it looks for a menu registered as ``extensions'' to
		  insert the new command. If it does not exist yet, it gets created.
		  It is advisable to copy this code for any of your extensions.
		  </para>
		</section>
		<section><title>The Thuban context</title>
			<para>
			A registered command that is called, always receives the
			Thuban context. This instance provides our method with
			hook references to all important components of the Thuban
			application.
			</para>
			<para>
	        In the example hello_world.py, our function uses the
			mainwindow component which offers a method to raise a
			message dialog. In total there are three hooks:
			<itemizedlist>
			<listitem>
			<para>application:
			This object is the instance of the Thuban Application class.
			Except maybe for loading or savinf sessions, you will not
			need this object for a simple extension.
			See Thuban/UI/application.py for the API.
			</para>
			</listitem>
			<listitem>
			<para>session:
			The instance of the current session. It manages the sessions'
			map and tables. You can set and remove the map or tables.
			In may also get the map object. However, you should know that
			internally it is already prepared to handle many maps.
			Therfore, currently you would always receive a list with exactlty
			one element. In the future, if there are more than one map,
			you will not know which one is the currently display one and
			therefore you should use the mainwindow as hook to find
			the currently displayed map.
			See Thuban/Model/session.py for the API.
			</para>
			</listitem>
			<listitem>
			<para>
			mainwindow: The mainwindow object is central to manage various
			GUI things such as the Legend sub-window. Most notably,
			you get access to the canvas which is the window part where
			the map is drawn. The canvas knows, which map it currently
			draws and therefore you get the current map via
			context.mainwindow.canvas.Map().
			See Thuban/UI/mainwindow.py for the API.
			</para>
			</listitem>
			</itemizedlist>
            </para>
		</section>
	</section>
  </chapter>

  <chapter><title>Trouble Shooting</title>
    <para>
    Here are a few problems that users have encountered when first using Thuban.
    </para>
    <para>

    <itemizedlist>
    <listitem>
    <para>After adding two or more layers nothing is drawn in the map window.
    </para>
    <para>
    This is probably because the layers have different projections. Projections
    must be set on all layers and on the map itself if the layers' projections
    are different.
    </para>
    </listitem>

    <listitem>
    <para>Thuban crashes on startup with the error 
        <literal>NameError: global name 'False' is not defined</literal>.
    </para>
    <para>
    <varname>True</varname> and <varname>False</varname> were only introduced
    in Python 2.2.1. Thuban depends on at least Python 2.2.1.
    </para>
    </listitem>

    <listitem>
    <para>After compiling Thuban, Thuban crashes with an error similar to
        <literal>
        ImportError: /usr/local//lib/thuban/Thuban/../Lib/wxproj.so: undefined symbol: __gxx_personality_v0
        </literal>
    </para>
    <para>
    Thuban depends on the wxWindows library. If Thuban is compiled with an
    incompatible version of the compiler than wxWindows was compiled with
    this error may occur. Try compiling with a different version of the 
    compiler.
    </para>
    </listitem>
    </itemizedlist>
    </para>
    <para>
    If an error occurs Thuban will display a dialog indicating the error
    before closing. The text should be copied and reported to the 
    <ulink url="http://thuban.intevation.org/bugtracker.html">
    Intevation bugtracker
    </ulink>.
    More information about the system is available from 
    <menuchoice><guimenu>Help</guimenu><guimenuitem>About</guimenuitem></menuchoice> box.
    This should also be included in the bug report.
    <figure>
    <title>Error Dialog</title>
    <mediaobject>
    <imageobject><imagedata fileref="../images/8_int_error.png" format="PNG" scale="&imgscale;"/></imageobject>
    <imageobject><imagedata fileref="./images/8_int_error.eps" format="EPS" scale="&imgscale;"/></imageobject>
    </mediaobject>
    </figure>
    </para>

  </chapter>

  <appendix><title>Supported Data Sources</title>
    <para>
    </para>
    <variablelist>
    <varlistentry>
    <term>Shapefile</term>
    <listitem>
        <para>
        The Shapefile format has become a standard format for saving
        geographic vector information. It supports polygons, lines, and
        points. 
        
        <ulink url="http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf">
        Technical Specification.
        </ulink>  
        </para>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term>dBase file</term>
    <listitem>
        <para>
        dBase files are used to store the attributes for each layer. This
        is closely associated with the Shapefile format. For detailed 
        specifications on the correct format of a dBase file used with
        Thuban please see the Technical Specification for the Shapefile
        format above.
        </para>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term>PostGIS</term>
    <listitem>
        <para>
        PostGIS adds support for geographic objects to the PostgreSQL 
	object-relational database. Different layer types (as for Shapefiles)
	are supported. <ulink url="http://postgis.refractions.net">PostGIS
	Homepage</ulink>
        </para>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term>Raster files</term>
    <listitem>
        <para>
	Binding the GDAL library Thuban supports numerous raster file formats,
	see <ulink url="http://www.remotesensing.org/gdal/formats_list.html">
	GDAL format list</ulink> for details.</para>

	<para>Most commonly used is the <emphasis>TIFF/GeoTIFF</emphasis>
	format: Raster maps are provided as TIFF images, with an additional 
	"world file" storing the geographic reference (usually with an
	extension ".tfw").
        </para>
    </listitem>
    </varlistentry>

    </variablelist>
  </appendix>

  <appendix><title>Working with PostGIS</title>
  <para>
  This section focusses on the use of PostGIS in the Thuban framework. For
  installation and maintenance of spatial databases we refer to the  
  <ulink url="http://postgis.refractions.net">PostGIS Homepage</ulink>.
  The Thuban PostGIS support requires the 
  <ulink url="http://initd.org/software/psycopg">psycopg module</ulink>.
  </para>

  <para>
	Working with PostGIS Databases is seperated into two steps:
	<itemizedlist>
	<listitem><para>Opening a Database Connection</para></listitem>
	<listitem><para>Loading a Data Layer</para></listitem>
	</itemizedlist>
  </para>
	<section><title>Opening a Database Connection</title>
	<para>
		Before a data layer can be loaded from a PostGIS database a
		connection with the database has to be established. 
		<menuchoice>
        	<guimenu>Session</guimenu>
        	<guimenuitem>Database Connections ...</guimenuitem>
        	</menuchoice> opens a dialog for database connection
		management. In the dialog new connections can be added 
		and existing ones can be removed. Removing a database
		connection is not possible if the map still displays a
		layer provided by this database connection. 
	</para>
    <figure>
    <title>Database Management Dialog</title>
    <mediaobject>
    <imageobject><imagedata fileref="../images/app_postgis_db_management.png" format="PNG" scale="&imgscale;"/></imageobject>
    <imageobject><imagedata fileref="./images/app_postgis_db_management.eps" format="EPS" scale="&imgscale;"/></imageobject>
    </mediaobject>
    </figure>

	<para>
		To add a new database connection to the session a dialog is
		opened to specify the relevant connection data. Enter all 
		data relevant for your connection. If the connection fails 
		the dialog remains open and provides some hints on the failure.
	</para>
        <figure>
    	<title>Add Database Dialog</title>
    	<mediaobject>
    	<imageobject><imagedata fileref="../images/app_postgis_db_add.png" format="PNG" scale="&imgscale;"/></imageobject>
    	<imageobject><imagedata fileref="./images/app_postgis_db_add.eps" format="EPS" scale="&imgscale;"/></imageobject>
    	</mediaobject>
    	</figure>
	
	<para>
	It is important to note that information on database connections are
	also stored with the session. Passwords are NOT stored. If you load a 
	session with database connections you are asked to enter these
	passwords again where required.
	</para>

	</section>

	<section><title>Loading a Data Layer</title>
	<para>
	Data layers as part of a map are loaded with the 
	<menuchoice>
        <guimenu>Map</guimenu>
        <guimenuitem>Add Database Layer ...</guimenuitem>
        </menuchoice> menu item. A dialog is raised displaying two choice
	lists. In the left list all connected databases are shown.
	Highlighting
	one of these and issuing a retrieval results in a list of available 
	layer tables from that database. After selection of a 
	layer the dialog is closed.
	</para>
        <figure>
    	<title>Add Database Dialog</title>
    	<mediaobject>
    	<imageobject><imagedata fileref="../images/app_postgis_add_layer.png" format="PNG" scale="&imgscale;"/></imageobject>
    	<imageobject><imagedata fileref="./images/app_postgis_add_layer.eps" format="EPS" scale="&imgscale;"/></imageobject>
    	</mediaobject>
    	</figure>
	
	</section>

  </appendix>

  <appendix><title>Supported Projections</title>
    <para>
    The following types of projections are directly support by 
    Thuban. The specific values for each are provided by the user
    to create custom projections. Thuban comes with predefined
    projections which are available through the Projections dialog.
    </para>
    <itemizedlist>
    <listitem>
    	<para>Geographic</para>
	<itemizedlist>
    	<listitem><para><literal>Ellipsoid</literal></para></listitem>
    	<listitem><para>
		<literal>Source Data</literal>: either Degrees or Radians
		</para></listitem>
    	</itemizedlist>
    </listitem>
    <listitem>
    	<para>Lambert Conic Conformal</para>
    <itemizedlist>
    	<listitem><para><literal>Ellipsoid</literal></para></listitem>
    	<listitem><para><literal>Latitude of 1st standard parallel</literal></para></listitem>
    	<listitem><para><literal>Latitude of 2nd standard parallel</literal></para></listitem>
    	<listitem><para><literal>Central Meridian</literal></para></listitem>
    	<listitem><para><literal>Latitude of Origin</literal></para></listitem>
    	<listitem><para><literal>False Easting</literal> (meters)</para></listitem>
    	<listitem><para><literal>False Northing</literal> (meters)</para></listitem>
    </itemizedlist>
    </listitem>
    <listitem>
    	<para>Transverse Mercator</para>
    <itemizedlist>
    	<listitem><para><literal>Ellipsoid</literal></para></listitem>
    	<listitem><para><literal>Latitude</literal>of origin</para></listitem>
    	<listitem><para><literal>Longitude</literal>at central meridian</para></listitem>
    	<listitem><para><literal>Scale Factor</literal>at central meridian</para></listitem>
    	<listitem><para><literal>False Easting</literal> (meters)</para></listitem>
    	<listitem><para><literal>False Northing</literal> (meters)</para></listitem>
    </itemizedlist>
    </listitem>
    <listitem>
    	<para>Universal Transverse Mercator</para>
    <itemizedlist>
    	<listitem><para><literal>Ellipsoid</literal></para></listitem>
    	<listitem><para><literal>Zone</literal> 
		(can be guessed appling the Propose button)</para></listitem>
    	<listitem><para><literal>Southern Hemisphere</literal> flag</para></listitem>
    </itemizedlist>
    </listitem>
    </itemizedlist>
    
    <para>
    Thuban comes with a sample set of map projections for various 
    European countries. Apart from the basic projection they differ 
    especially in their parameterization:
    </para>
    <itemizedlist>
    <listitem><para>Belgium Datum 1972 (Lambert Conic Conformal)</para>
    </listitem>
 
    <listitem><para>Gauss-Boaga Zone 1 (Italy, Transverse Mercartor)</para>
    </listitem>
 
    <listitem><para>Gauss-Krueger Zone 2 (Germany, Transverse Mercartor)
    </para>
    </listitem>
 
    <listitem><para>Reseau Geodesique Francaise 
    (France, Lambert Conic Conformal)</para>
    </listitem>
 
    <listitem><para>UK National Grid (United Kingdom, Transverse Mercartor)
    </para>
    </listitem>
    </itemizedlist>

    <para>
    Thuban uses the comprehensive PROJ library for projections. PROJ provides
    more than the four commonly used projections described above. If needed
    Thuban can be easily extended to a new projection covered by PROJ.
    </para>
  </appendix>

</book>

