# Benutzerhandbuch für Thuban 1.0

Jonathan
Coles
Jan-Oliver
Wagner
Frank
Koormann
2004
Intevation GmbH
CVS version $Id: thuban-manual-de.xml 2812 2008-01-19 01:15:56Z bernhard $
Under development.

## Einführung

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.

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.

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.

### Installation

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 Thuban Download site .

Required:

- Python 2.2.1 (`http://www.python.org`)

- wxWindows 2.4 (`http://www.wxwindows.org`)

- wxPython 2.4 (`http://www.wxpython.org`)

- proj 4.4.5 Projection Library (`http://www.remotesensing.org/proj/`)

- SQLite 2.8.3 `http://www.hwaci.com/sw/sqlite/`)

- PySQLite 0.4.3 (`http://pysqlite.sourceforge.net`)

Optional:

- GDAL 1.1.8 (`http://www.remotesensing.org/gdal/`)

- psycopg 1.0.8 (`http://initd.org/software/psycopg`)

Along with the source codes, the download page also offers full installation packages for Debian, Windows and RPM-based systems (Mandrake, RedHat, SuSE, etc).

#### RPM-based GNU/Linux Systems

##### Installing Binary Packages

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.

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:

    				rpm --install Thuban-0.9.0-1.i386.rpm

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.

For rpm exist some graphical user interfaces, notably kpackage, GnoRPM and xrpm.

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.

##### Build Binaries from Source Packages

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.

Note: rpm must be at least version 4. Execute `rpm --version` to find out about the version.

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.

- 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:

      						mkdir $HOME/freegisrpm
      						cd $HOME/freegisrpm
      						mkdir BUILD RPMS SOURCES SPECS SRPMS

- Set environment variable RPM_DIR:

      						export RPM_DIR=$HOME/freegisrpm

- 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.

      %packager Name Lastname <Name.Lastname@mydomain.example>

      %_topdir /home/mylogin/myrpm

      %_signature gpg
      %_gpg_name Name Lastname
      %_pgp_path ~/.gnupg
      %_pgpbin /usr/bin/gpg

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: `rpm --install Thuban-0.9.0-1.src.rpm`

Create install-package: Go to the directory with the spec-files and rebuild the package:

    cd $HOME/mypm/SPECS
    rpm -bb thuban.spec

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.

For documentation of RPM, either type `man rpm` or `rpm --help`. This will provide you with information on the various command line options of RPM. For more information see the homepage of RPM.

#### Win32 Systems

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.

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.

##### Raster Data: Installation of GDAL

Enabling the raster data features of Thuban is straight forward. For the examples we assume that Thuban has been installed under `C:\Thuban`:

- Download the zip-archive gdal-win2k.

- Extract the archive (e.g. with WiZ (InfoZip)) into the `C:\Thuban\Lib` directory of your Thuban installation.

- Extent the `PYTHONPATH` environment variable (in your Windows Control Panel) to make the new libraries available for Thuban.

      %PYTHONPATH%;C:\Thuban\Lib\gdal;C:\Thuban\Lib\gdal\pymod

- Extent also the `PATH` environment variable accordingly:

      %PATH%;C:\Thuban\Lib\gdal

After this installation steps Thuban is ready to display raster data (e.g. the `island.tif` from the Iceland Demo data set.

##### Working with PostGIS: Installation of PsycoPG

To access PostgreSQL/PostGIS spatial databases with Thuban you have to install the PsycoPG package for Windows:

- Download the zip-archive win-psycopg22.zip.

- Extract the zip-archive into a directory either already in your `PYTHONPATH` or extent your `PYTHONPATH` variable to the directory you have extracted the archive to.

For installation and maintenance of spatial databases we refer to the PostGIS Homepage.

### Internationalisierung

Thuban ist mit Unterstützung für Internaionalisierung realisiert. Bisher wurde Thuban in folgende Sprachen (neben der Basis Englisch) übersetzt:

- Französisch

- Deutsch

- Italienisch

- Portugiesisch (Brasilien)

- Russisch

- Spanisch

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:

    	  LC_ALL=fr_FR thuban.py

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

### Das Hauptfenster

#### Das Hauptfenster

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

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 Karte Legende . 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.

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.

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.

## Session Management

### Eine neue Session beginnen

Eine neue Session wird gestartet über Datei Neue Session . 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.

### Eine Session öffnen

Eine Session kann geöffnet werden über Datei Öffne Session . Es wird ein Dateiauswahl-Dialog geöffnet um eine Thuban Session Datei auszuwählen. Diese Dateien enden auf `.thuban`. Wird eine Datei ausgewählt und mit OK 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.

### Eine Session speichern

Eine Session kann gepsiechert werden über Datei Session Speichern . 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 `.thuban` 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.

### Der Session Info-Baum

#### Session Info-Baum

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 Datei Session Baum .

## Karten Management

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.

Die Karte kann einen Namen haben der dann in der Kopfzeile des Thuban Fensters auftaucht. Der Kartenname kann geändert werden über Karte Umbennen .

Karte umbennen

### Hinzufügen und Entfernen von Ebenen

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.

- Shape Ebenen können zur Karte hinzugefügt werden mit Karte Ebene hinzufügen . 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,

  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.

- Datenbankebenen können zu Karte hinzugefügt werden mit Karte Datenbankebene hinzufügen . 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.

  Siehe auch Anhang ``Mit PostGIS arbeiten'' für weitere Details.

- Bildebenen können zur Karte hinzugefügt werden mit Karte Bildebene hinzufügen . 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.

### Navigation

Die Karte kann erforscht werden indem die Navigationswerkzeuge aus der Werkzeugleiste oder über das Menü Karte ausgewählt werden.

- Das ZoomIn Werkzeug ZoomIn Werkzeug 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.

- Das ZoomOut Werkzeug ZoomOut Werkzeug 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.

- Das Verschieben Werkzeug Verschieben Werkzeug gestattet es dem Benutzer die Karte durch klicken und ziehen mit gedrückter Maustaste zu verschieben.

- Das Volle Ausdehnung Werkzeug Volle Ausdehnung Werkzeug skaliert die Zoom-Stufe so, dass die gesamte sichtbare Karte im Fenster dargestellt wird.

- Das Voll Ebenen-Ausdehnung Werkzeug Volle Ebenen-Ausdehnung Werkzeug 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.

- Das Volle Shape-Ausdehnung Werkzeug Volle Shape-Ausdehnung Werkzeug 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.

### Objekt Identifikation

Objekte auf der Karte können identifiziert werden über das Identifikations-Werkzeug Identifikations-Werkzeug . 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.

### Objekt mit Label versehen

Objekte können über das Label-Werkzeug mit Labeln versehen werden Label Werkzeug . 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.

### Die Legende

Legende

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.

Am oberen Rand der Legende ist eine Werkzeugleiste welche einen schnellen Zugriff auf einige der Komanndos des Menüs Map gestattet.

- Das Werkzeug Auf die oberste Ebene bewegen bewegt die selektierte Ebene auf der Karte nach ganz oben.

- Das Werkzeug Eine Ebene nach oben bewegen bewegt die selektierte Ebene um einen Schritt nach oben.

- Das Werkzeug Eine Ebene nach unten bewegen bewegt die selektierte Ebene um einen Schritt nach unten.

- Das Werkzeug Auf die unterste Ebene bewegen bewegt die selektierte Ebene auf der Karte nach ganz unten.

- Das Sichtbarkeits-Werkzeug Sichtbar sorgt dafür, dass eine vorher nicht sichtbare Ebene nun wieder in der Karte dargestellt wird.

- Das Unsichtbar-Werkzeug Unsichtbar versteckt die aktuell selektierte Ebene auf der Karte.

- Das Eigenschaften-Werkzeug Eigenschaften startet den Eigenschaften-Dialog für die aktuelle Ebene. Ein Doppel-Klick auf eine Ebene startet ebenfalls diesen Dialog.

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.

#### Popup Menü für Ebenen

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.

### Exportieren

Auf dem Betriebssystem MS Windows können Karten im Enhanced Metafile Format (`.wmf`) über Karte Export 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.

### Drucken

Eine Karte wird über Karte Drucken 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.

## Ebenen Management

### Typen von Ebenen

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.

Alle Aktionen im Menü Ebene beziehen sich auf die in der Legende aktuell ausgewählten Ebene.

### Eigenschaften

Um die Eigenschaften einer Ebene anzusehen muss zunächst eine Ebene in der Legende selektiert werden. Die Menüoption Ebene Eigenschaften ö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.

#### Eigenschaften Fenster

#### Eigenschaften Fenster

### Sichtbarkeit

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 Ebene Zeigen bzw. Ebene Verstecken .

### Duplizierung

Ebenen mit allen Eigenschaften inklusive Klassifikation können dupliziert werden mit Ebene Duplizieren . 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.

## Ebenen-Klassifizierung

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.

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.

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.

### Klassifizierung bearbeiten

Die Klassifizierung für eine Ebene wird über den Eigenschaftendialog bearbeitet ( Ebene Eigenschaften ). 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 Hinzufügen in die Klassifizierung aufgenommen werden.

Um die Änderungen auf die Karte anzuwenden kann der Benutzer entweder Anwenden oder OK verwenden. Anwenden schliesst dabei den Dialog nicht, sondern gestattet es, die gemachten Änderungen auf der Karte als Voransicht zu sehen. Zurücksetzen setzt die zuletzt angewendete Klassifikation zurück. OK wendet die Änderungen an und schliesst den Dialog. Dann können die Änderungen nicht mehr zurückgenommen werden. Schliessen beendet den Dialog. Alle Änderungen, die nicht mit Anwenden auf die Karte gebracht wurden, werden verworfen.

#### Eigenschaften Fenster

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 Eine Ebene nach oben bewegen und Eine Ebene nach unten bewegen wird die Reihenfolge der Gruppen geändert. Die Gruppe DEFAULT wird uaf alle Shapes angewandt die auf keine der anderen Gruppen passssen.

#### Sichtbar

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.

#### Symbole

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 Symbol bearbeiten verwenden.

#### Wert

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.

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 `start` bis `ende` inklusive der Grenzen wird so eingegeben: `[start;ende]`. Der Bereich ohne die Grnezen wird so angegeben: `]start;ende[`. Bereich können auch Unendlich als Wert benutzen: `[-oo;oo]`. Der Feld-Typ kann auch Dezimal sein. Dann können beliebeige rationale Zahlen verwendet werden.

#### Label

als Voreinstellung wird als Label für die Gruppe in der Legende der Wert verwendet. Es kann aber auch ein spezieller Label angegeben werden.

### Erzeuge Klassifikation

#### Erzeuge Klasse

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 Erzeuge Klasse so wird der Dialog `Erzeuge Klassifikationn` geöffnet. Unter dem Aufklappmenü `Erzeuge` 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 `Gleichförmige Verteilung` keinen Sinn bei Text-Feldern.

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 Rahmenfarbe festlegen 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.

#### Benutzerdefiniertes Farbschema

Die Option Eindeutige Werte erlaubt es, spezielle Werte auszuwählen die in der Tabelle vorkommen. Clickt man Aus Tabelle holen 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.

#### Eindeutuige Werte

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 Aus Tabelle holen verwendet wird. Die Stufen bestimmen die Grösse des Intervalls. Ändert man diesen Wert, wird automatisch neu berechnet wie viele Gruppen nun passend sind.

#### Gleichförmige Verteilung

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.

#### Quantile

## Projektions-Management

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 Karte Projektion und die Projektionen für die Ebenen über Ebene Projektion gesetzt.

### Projektionsauswahl-Fenster

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.

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.

### Eine Projektion auswählen

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 `(aktuell)`. Wird `<Keine>` ausgwählt, so wird Thuban die Daten dirket verwenden wie sie in den Quellen vorkommen und keine Umprojezierung vornehmen.

### Eine Projektion bearbeiten

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 Aktualisieren 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 Aktualisieren deaktiviert. Hinzufügen zur Liste 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 Neu wird eine neue, leere Projektion erzeugt. Die Aktion Entfernen löscht eine Projektion dauerhaft aus der Liste.

Um eine Projektion auf die Karte anzuwenden kann man Anwenden oder OK benutzen. Anwenden schliesst den Dialog nicht und erlaubt es so, die Änderung auf der Karte zunächst zu begutachten. Zurücksetzen macht die zuletzt gemachte Änderung wieder rückgängig. OK aktiviert die gemachten Änderung und schliesst den Dialog.Danach kann man diese Änderung nicht mehr rückgängig machen. Schliessen beendet den Dialog. Wurde bis dahin keine Projektion mit Anwenden ausprobiert, so wird sie auch nicht auf die Karte übertragen.

### Projektionen Importieren/Exportieren

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 Export 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 Import. Die importierten Projektionen werden zur Liste verfügbarer Projektionen zur sofortigen oder späteren Verwendung hinzugefügt.

## Tabellen-Management

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.

### Tabellen-Ansicht

#### Tabellen-Ansicht

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.

Die Titelzeile identifiziert die Tabelle mit ihrem Namen.

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 `bevoelkerung > 10000` oder `pkw_pro_einwohner < fahrraeder_pro_einwohner` (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.

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.

Der Inhalt einer Tabelle kann in eine Datei exportiert werden, entweder im dBase format (DBF) oder als kommaseparierte Werte (CSV). Der. Export 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 Exportiere Selektion funktioniert ähnlich, exportiert aber nur die aktuelle Selektion.

Der Schliessen Knopf schliesst das Fenster mit der Tabellenansicht. Dies ist nicht zu verwechseln mit dem Menüpunkt Tabelle Schliessen welcher die Tabelle aus Thuban entfernt.

Die Statuszeile zeigt einige statistische Informationen zu der Tabelle sowie zu Selektionsergebnisse an.

### Allgemeine Funktionalität (Menü Tabelle)

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).

#### Öffnen

Der Menüpunkt Tabelle Öffnen startet einen Dateiselektionsdialog für die Auswahl einer dBase-Datei. Diese wird als nur-lesbar in Thuban geladen. Mit OK wird die ausgewählte Datei geladen und eine entsprechende Tabellenansicht geöffnet.

#### Schliessen

Der Menüpunkt Tabelle Schliessen startet einen Dialog welcher alle derzeit geöffneten Datentabellen (die geladen wurden über Tabelle Öffnen ). 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.

#### Umbenennen

Tabelle Umbenennen ändert den Tabellentitel.

#### Anzeigen

Der Menüpunkt Tabelle Anzeigen ö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 OK in Tabellenansichten dargestellt.

#### Verbinden

##### Verbinde Tabellen

Der Menüpunkt Tabelle Verbinden 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 `None`.

### Attribut-Tabellen

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ü Ebene an.

#### Zeige Tabelle

Ebene Zeige Tabelle ö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.

#### Verbinde Tabelle

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.

#### Tabellen-Verbindung lösen

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 Ebene Verbindungen lösen verwendet: Die jeweils zuletzt gemachte Verbindung wird gelöst.

## Erweiterungen

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.

### Eigene Erweiterungen über thubanstart.py

Nachdem 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.

Die Module die importiert werden müssen entweder über die Pfade in Umgebungsvariablen PYTHONPATH gefunden werden oder direkt im .thuban-Verzeichnis abgelegt sein.

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ü Extensions 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.

### Im Thuban-Paket enthaltene Erweiterungen

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

#### Stabile Erweiterungen

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.

##### gns2shp

Dieses Werkzeug konvertiert Daten des Geospatial Names Server (GNS, siehe ) 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.

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.

Das Modul gns2shp.py kann auch auf der Kommandozeile verwendet werden, z.B. für Stapelverarbeitung.

Ein Beispiel (`ls.txt` für Liechtenstein) befindet sich im Verzeichnis `Extensions/gns2shp/test`.

##### SVG Export

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.

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.

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 ().

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.

#### Experimentelle Erweiterungen

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.

Interesse, diese Erweiterungen zu verbessern sollte auch der Entwickler- und Benutzergemeinschaft mitgeteilt werden.

##### importAPR

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.

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.

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.

A sample for the Iceland data is included as `Extensions/importAPR/samples/iceland.apr`. The file-paths are relative from the Thuban main directory.

### Writing simple extensions

Writing an extension for Thuban basically means to implement the extra functionality in Python with all of the Thuban classes, methods and variables available.

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:

    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."""
    ...

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.

#### hello_world.py

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.

    # 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: 2812 $'

    # 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')

#### Registering a Command

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.

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.

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.

#### The Thuban context

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.

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:

- 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.

- 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.

- 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.

## Trouble Shooting

Here are a few problems that users have encountered when first using Thuban.

- After adding two or more layers nothing is drawn in the map window.

  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.

- Thuban crashes on startup with the error `NameError: global name 'False' is not defined`.

  `True` and `False` were only introduced in Python 2.2.1. Thuban depends on at least Python 2.2.1.

- After compiling Thuban, Thuban crashes with an error similar to `ImportError: /usr/local//lib/thuban/Thuban/../Lib/wxproj.so: undefined symbol: __gxx_personality_v0`

  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.

If an error occurs Thuban will display a dialog indicating the error before closing. The text should be copied and reported to the Intevation bugtracker . More information about the system is available from Help About box. This should also be included in the bug report.

### Error Dialog

## Supported Data Sources

Shapefile

  The Shapefile format has become a standard format for saving geographic vector information. It supports polygons, lines, and points.

  Technical Specification.

dBase file

  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.

PostGIS

  PostGIS adds support for geographic objects to the PostgreSQL object-relational database. Different layer types (as for Shapefiles) are supported. PostGIS Homepage

Raster files

  Binding the GDAL library Thuban supports numerous raster file formats, see GDAL format list for details.

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

## Working with PostGIS

This section focusses on the use of PostGIS in the Thuban framework. For installation and maintenance of spatial databases we refer to the PostGIS Homepage. The Thuban PostGIS support requires the psycopg module.

Working with PostGIS Databases is seperated into two steps:

- Opening a Database Connection

- Loading a Data Layer

### Opening a Database Connection

Before a data layer can be loaded from a PostGIS database a connection with the database has to be established. Session Database Connections ... 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.

#### Database Management Dialog

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.

#### Add Database Dialog

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.

### Loading a Data Layer

Data layers as part of a map are loaded with the Map Add Database Layer ... 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.

#### Add Database Dialog

## Supported Projections

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.

- Geographic

  - `Ellipsoid`

  - `Source Data`: either Degrees or Radians

- Lambert Conic Conformal

  - `Ellipsoid`

  - `Latitude of 1st standard parallel`

  - `Latitude of 2nd standard parallel`

  - `Central Meridian`

  - `Latitude of Origin`

  - `False Easting` (meters)

  - `False Northing` (meters)

- Transverse Mercator

  - `Ellipsoid`

  - `Latitude`of origin

  - `Longitude`at central meridian

  - `Scale Factor`at central meridian

  - `False Easting` (meters)

  - `False Northing` (meters)

- Universal Transverse Mercator

  - `Ellipsoid`

  - `Zone` (can be guessed appling the Propose button)

  - `Southern Hemisphere` flag

Thuban comes with a sample set of map projections for various European countries. Apart from the basic projection they differ especially in their parameterization:

- Belgium Datum 1972 (Lambert Conic Conformal)

- Gauss-Boaga Zone 1 (Italy, Transverse Mercartor)

- Gauss-Krueger Zone 2 (Germany, Transverse Mercartor)

- Reseau Geodesique Francaise (France, Lambert Conic Conformal)

- UK National Grid (United Kingdom, Transverse Mercartor)

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.