Wege jenseits von Google Maps mit GeoTools und uDig

API Dokumentation

Möchte man sich näher mit GeoTools und uDig beschäftigen, wird ein Nachschlagen in der Javadoc unerlässlich sein.

  • uDig (1.1RC14): udig.refractions.net/files/docs/api-udig/
  • GeoTools 2.4: javadoc.geotools.fr/2.4/
  • JTS 1.4: www.jump-project.org/docs/jts/1.4/api/
  • GeoAPI: geoapi.sourceforge.net/snapshot/javadoc/

uDig beruht derzeit noch auf einer älteren GeoTools-Version; das Upgrade ist für Version 1.2 geplant. In Listing 2 wird GeoTools 2.4 eingesetzt, hierbei kommen die Filter aus der (integrierten) GeoAPI zum Einsatz. In der aktuellen uDig-Version hingegen sind diese noch nicht integriert, sodass stattdessen eine eigene Implementierung von GeoTools zum Einsatz kommt, die sich von den Methodensignaturen her unterscheidet.

UDIG anpassen

Nicht für alle Anwendungen und nicht für alle Anwendergruppen eignen sich die aufgezählten Viewparts und Funktionalitäten. Sie sind sehr GIS-getrieben und können den fachlich nicht versierten Anwender verunsichern oder schlicht nicht in die geplante Anwendung passen. Mit einfachen Bordmitteln des Eclipse Frameworks lassen sich jedoch eigene Perspektiven, bestehend aus uDig-Elementen und eigenen Viewparts, erstellen. Das programmatische Steuern der Karte bzw. des Karteninhalts ist ebenfalls möglich. Einarbeitungsaufwand ist jedoch notwendig, da die Komplexität nicht zu unterschätzen ist.

Abb. 5: uDig-Beispielanwendung

Abbildung 5 zeigt eine Perspektive einer Beispielanwendung, die eigene Viewparts um den Karteneditor von uDig gruppiert. In Interaktion mit uDig stehen zwei von ihnen:

  • Layerinhalt: Die von uDig mitgelieferte Featuretabelle legt weniger Wert auf Darstellung, sondern ist für ein direktes Arbeiten mit den Daten gedacht. In diesem Fall wurde sie ersetzt durch eine den Bedürfnissen der Anwender angepasste Darstellung.
  • Übersichtskarte: Sie wird nicht von uDig mitgeliefert, ist jedoch relativ leicht zu erstellen, da Veränderungen der Bounding Box mittels eines Listeners verfolgt werden können (Listing 3). Vorsicht: Noch kann der Anwender innerhalb der Karte das Koordinatenreferenzsystem und damit die Projektion verändern. Gegebenenfalls entstehen dabei Ausschnitte, die in der Übersichtskarte nur durch gekrümmte Kegel darstellbar wären, was den Implementierungsaufwand der Übersichtskarte in die Höhe treibt.

Hat man die Absicht, das Koordinatenreferenzsystem dauerhaft auf WGS84 zu fixieren, z.B. um die eigenen, auf Längengrad und Breitengrad basierten Koordinaten nicht umrechnen zu müssen, so ist ein Eingriff direkt in den uDig-Quellcode notwendig. In net.refractions.udig.project.ui.internal.MapEditor muss hierzu der Inhalt von updateCRS() auskommentiert werden. Bevor man in den Sourcecode eingreift, muss das entsprechende Plug-in als Source Project importiert und anschließend anstelle des Originals sowohl in der Run Configuration (zum Starten aus der IDE) als auch in der Product Configuration (für den Export) ausgewählt werden.

Listing 3
// das uDig-Projekt
Project udigProject = ProjectPlugin.getPlugin().getProjectRegistry().getCurrentProject();
// Karte anlegen
final Map map = ProjectFactory.eINSTANCE.createMap(udigProject, "myMap", new ArrayList());
IViewportModel vM  = map.getViewportModel();
vM.addViewportModelListener(new IViewportModelListener(){
  public void changed (ViewportModelEvent event){
    Coordinate coordinate = event.getSource().getCenter();
    double scaleDenominator = event.getSource().getScaleDenominator();
    /* hier die Übersichtskarte triggern */
  }
});
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.