Aus Linux-Magazin 11/2007

Workshop: Das Geo-Informationssystem GRASS installieren und anwenden

Abbildung 9: Hier das Zusammenspiel aller Karten: Höhenprofil, Straßen und darüber die Flüsse.

Geo-Informationssysteme erstellen Landkarten für Atlanten, helfen bei der Vermessung, planen Buslinien, simulieren Waldbrände und bilden den Unterbau von Google Earth. Eines der leistungsstärksten freien Systeme dieser Art hört auf den Namen GRASS.

Anfang der 80er Jahre benötigte das U.S. Army Corp of Engineering Research Laboratory eine Software für die Landverwaltung und Umgebungsplanung. Also heuerte es kurzerhand einige Programmierer an und erstellte die benötigten Werkzeuge in Eigenregie. Das Ergebnis taufte der Auftraggeber auf den Namen Geographic Resource Analysis Support System, kurz GRASS.

Den weltweiten Durchbruch schaffte das System 1991, als die Version 4.0 die Weiten des Internets betrat. GRASS ist seitdem zu einer sehr umfangreichen Anwendung herangewachsen, die nicht mehr nur topologische Informationen in einer Datenbank verwaltet, sondern auch noch Landkarten anfertigt, topologische und geologische Analysen sowie Landschaftsmodellierungen und Visualisierungen durchführt. GRASS erfüllt heute alle Anforderungen eines modernen Geo-Informationssystems, die Benutzer können einfach und unkompliziert Geodaten bearbeiten und in 3D-Geländemodellen bearbeiten (Abbildung 1). Wie das geht, zeigt dieser Workshop.

Abbildung 1: Das Geo-Informationssystem GRASS GIS verwendet freie Werkzeuge, hier zum Beispiel NVIZ für ein dreidimensionales Geländemodell. Die Abbildung zeigt die Standard-Daten der Spearfish-Karten.

Abbildung 1: Das Geo-Informationssystem GRASS GIS verwendet freie Werkzeuge, hier zum Beispiel NVIZ für ein dreidimensionales Geländemodell. Die Abbildung zeigt die Standard-Daten der Spearfish-Karten.

Unterstützer

Der Linux-Portierung 1995 folgte die Gründung der GRASS Research Group an der University of Baylor. Unter Leitung von Markus Neteler von der Universität Hannover formierte sich 1999 die GRASS Development Group, die nun von Europa aus die Entwicklung koordiniert und vorantreibt, zugleich erfolgte die Lizenzierung unter der GNU GPL. Heute betreut das Istituto Trentino di Cultura die offizielle GRASS Homepage [1]. Neben dem kompletten GRASS-System gibt\’s dort umfangreiche, aber auch unübersichtliche Dokumentation. In der »Download«-Sektion steht die aktuelle Version 6.2.2, der in Arbeit befindliche Nachfolger 6.3 ist dort auch bereits erhältlich.

Sie sollten zunächst unter den »Binaries« Ihr Glück versuchen. Wenn die Lieblingsdistribution dort nicht vorkommt, gibt es noch das »Generic«-Archiv, das auf allen halbwegs aktuellen Linux-System laufen sollte. Ubuntu-Benutzer finden in ihren Standard-Repositories nur eine veraltete Version 6.0.2. Besonders Mutige greifen zum Quellcode, dessen Installation ist aufgrund der zahlreichen Abhängigkeiten jedoch kein Zuckerschlecken (siehe Kasten “Installation”).

Installation

Bevor Sie den Quellcode von GRASS übersetzen können, gilt es zunächst, ein Bett aus zahlreichen Abhängigkeiten zu zimmern. Mindestens erforderlich sind dabei:

  • Die üblichen Verdächtigen in Form des GCC-Compilers,
    Make sowie Flex und Yacc oder Bison
  • Die Zlib-Bibliothek
  • Die Libncurses ab Version 4
  • X-Window einschließlich OpenGL, wobei hier das
    unbeschleunigte Mesa bereits ausreicht
  • Die Projektionsbibliothek Proj.4, erhältlich unter
    [2]
  • GDAL und OGR, erhältlich unter [3]

Grafik erwünscht?

Damit sind jedoch gerade mal die Minimalanforderungen erfüllt und GRASS müsste fast vollständig auf eine grafische Oberfläche verzichten. Deshalb brauchen Sie zusätzlich mindestens noch Tcl/Tk ab Version 8.4

Für den vollen Funktionsumfang sind die folgenden Pakete notwendig:

  • FFTW ab Version 2 (Bibliothek zur Berechnung diskreter
    Fourier-Transformationen)
  • Für die Bildverarbeitung Libpng, Libjpeg und Libtiff
  • Motif oder Lesstiff für animierte Darstellungen und
    Freetype2 zur Beschriftung von Karten
  • Ist eine Datenbankanbindung gewünscht, bleibt die Wahl
    zwischen PostgreSQL, MySQL, SQLite und Unix-ODBC
  • In vielen Fällen ist auch LAPACK/BLAS, eine Bibliothek
    für numerische Berechnungen, erforderlich; sofern sie der
    Distribution nicht beiliegt, ist der Quellcode unter [4] zu
    finden

Abschließend bietet GRASS noch eine Schnittstelle zur Skriptsprache R, vorausgesetzt das auf statistische Analysen spezialisierte System ist installiert [5].

Für alle aufgeführten Programme und Bibliotheken gilt, dass Sie sie zusammen mit den jeweiligen Entwicklerpaketen installieren müssen. Dies betrifft sogar Tcl/Tk, obwohl es später nur als grafischer Aufsatz dient.

Proj.4 und GDAL

Bis auf Proj.4 und GDAL sollten alle anderen Abhängigkeiten als Pakete den Distributionen beiliegen. Von diesen beiden installieren Sie zuerst Proj.4 mit dem gewohnten Dreisatz: »./configure; make; make install«. Das gleiche Verfahren gilt danach für GDAL. Besondere Voraussetzungen gibt es glücklicherweise bei beiden Paketen nicht.

Nach so viel Vorarbeit ist jetzt endlich GRASS selbst an der Reihe. Die Konfiguration erfolgt mit »./configure«, die Übersetzung und Installation dann wie gewohnt per »make; make install«. Nachdem »configure« durchgelaufen ist, zeigt die durchrauschende Liste unter anderem, welche Teile von GRASS das Skript aktiviert hat.

Sofern dabei ein »no« auftaucht, obwohl das entsprechende (Entwickler-)Paket installiert ist, müssen Sie noch einmal Hand anlegen und »configure« mit einem passenden Parameter ausstatten.

Configure unter Ubuntu

Hiervon sind insbesondere die Ubuntu-Anwender betroffen: Da dort die Konfigurationsdatei des Linkers »/etc/ld.so.conf« faktisch leer ist, erkennt GRASS so gut wie keine seiner Abhängigkeiten.

Der folgende Monsteraufruf ist also zwangsweise notwendig und verwendet zum Beispiel PostgreSQL und SQLite als Datenbanken:

# ./configure  --with-cxx 


--with-proj-share=/usr/local/share/proj 


--with-freetype=yes 


--with-postgres-includes=/usr/include/postgresql 


--with-sqlite=yes 


--enable-largefile=yes 


--with-tcltk-includes=/usr/include/tcl8.4 


--with-freetype-includes=/usr/include/freetype2 


--with-opengl-libs=/usr/include/GL 


--with-readline 


--with-fftw 


--with-gdal=/usr/local/bin/gdal-config

Sollte GRASS später unter Ubuntu den Start der grafischen Oberfläche verweigern, hilft es, das betroffene Verzeichnis (in der Regel ist dies »/usr/local/lib«) in die »/etc/ld.so.conf« aufzunehmen und anschließend per »ldconfig« den Linker-Cache neu einzurichten.

Wenn Sie GRASS nur einmal testen, aber nicht gleich installieren möchten, hält die Gesellschaft für Datenanalyse und Fernerkundung Hannover eine GIS-Live-CD bereit [6]. Sie basiert auf Knoppix und bietet zusätzlich zu einem sofort startfähigen GRASS 6.2 noch ein paar andere Geo-Informationssysteme sowie weiterführende Dokumentationen als PDF-Dateien.

Kartendilemma

Als Einsteiger in GRASS sollten Sie zusammen mit dem eigentlichen System auch gleich das Spearfish-Datenarchiv herunterladen [7]. Diese Kartensammlung zeigt ein Gebiet in South Dakota (USA) nahe Mount Rushmore (Abbildung 1). Derartiges freies Material ist ansonsten rar, weil die Erfassung von neuen Karten extrem aufwändig ist. Obwohl Steuergelder viele Datenerhebungen finanziert haben, lassen sich die Kartenhersteller teuer bezahlen. Insbesondere für deutsche Gefilde sieht die Kartenlage reichlich düster aus. Einzig die Stadt Osnabrück hat einen hochwertigen Kartensatz im Rahmen des FRIDA-Projekts freigeben [8]. Diese Daten müssen Sie jedoch erst umständlich in GRASS importieren. Andere deutsche Städte präsentieren nur einzelne Straßenzüge, die zudem Freiwillige über gesammelte GPS-Daten ins Open-Streetmap-Projekt eingestellt haben [10].

Von den Daten des Google-Earth-Dienstes sollten Benutzer tunlichst die Finger lassen. Auch der Internetriese kauft seine Bilder nur von externen Kartenlieferanten. Fliegt ein Datendiebstahl auf, kann das teuer werden. Dagegen lohnt ein Blick auf die Internetseiten der Nasa, die einige digitale Satellitenfotos kostenfrei zur Verfügung stellt [9]. Als letzter Weg bleibt noch die Möglichkeit, die Daten selbst zu erheben. Dazu schultert der Enthusiast einen GPS-Empfänger und läuft die benötigten Straßenzüge ab oder chartert ein Flugzeug, aus dem er Luftaufnahmen knipst. Alternativ dazu könnte er auch bestehendes Kartenmaterial digitalisieren, vorausgesetzt die Erlaubnis des Herstellers liegt vor.

Data, Location, Mapset

Los geht\’s: Für ein Einstiegsbeispiel bleibt meist nur der Spearfish-Datensatz übrig. Entpacken Sie ihn in ein Verzeichnis Ihrer Wahl, zum Beispiel nach »grassdata« im Homeverzeichnis. Dieser Ordner ist ab sofort das Lager für alle Karten, das so genannte Data Directory. Damit Sie bei vielen kleineren Karten oder größeren Projekten nicht den Überblick verlieren, gruppiert GRASS das Material zunächst in so genannte Locations. Wie der Name andeutet, legen diese das betrachtete Gebiet fest, zum Beispiel München, Deutschland oder den Mars. Technisch handelt es sich lediglich um ein passend benanntes Unterverzeichnis in »grassdata«, das die Geodaten enthält (Abbildung 2). Innerhalb der Location gruppieren Mapsets die Karten. Auch bei denen handelt es sich nur um weitere Unterverzeichnisse.

Abbildung 2: Der Aufbau einer GRASS-Datenbank mit Locations, Mapsets, Geometrie- und Attributdaten.

Abbildung 2: Der Aufbau einer GRASS-Datenbank mit Locations, Mapsets, Geometrie- und Attributdaten.

GRASS benutzt die Mapsets primär, um einen reibungslosen Mehrbenutzerbetrieb, zum Beispiel bei Datenhaltung in einem Netzwerkverzeichnis, zu gestatten. Arbeiten mehrere Personen an einem Projekt, erhält jeder von ihnen ein eigenes Mapset als Arbeitsverzeichnis. Beispielsweise könnte sich ein Mitarbeiter um die Rohrleitungen von Berlin kümmern, ein anderer wiederum um die Begrünung entlang der Straßen. Also legt der Projektleiter eine Location »Berlin« an, mit den Mapsets »Rohrleitungen« und »Straßenbepflanzung«.

Auch gemeinsame Datennutzung ist möglich. Wenn beide Mitarbeiter eine Karte des Straßennetzes benötigen, ist das spezielle Mapset »PERMANENT« richtig. Es existiert in jeder Location, gewöhnlich hat aber nur der Projektleiter Schreibzugriff. In diesem Ordner speichert GRASS auch alle Einstellungen, die die gesamte Location betreffen, etwa die Standardauflösung für Rasterdaten.

In den Spearfish-Daten gibt es nur die Location »spearfish60«. Darin stecken das obligatorische Mapset »PERMANENT« und noch ein leeres für den »User1«. Technisch gesehen sind Locations und Mapsets zwar Verzeichnisse. Mapsets und die enthaltenen Daten sollten Sie aber immer nur mit Hilfe von GRASS erzeugen oder löschen, da das System diese teilweise auf mehrere Dateien und Unterverzeichnisse aufteilt.

GRASS durchstarten

Ist die Kartenbasis vorhanden, starten Sie GRASS in einem Terminalfenster via »grass62«. Sofern Tcl/Tk auf Ihrem Linux-System installiert ist, erscheint der Konfigurationsbildschirm aus Abbildung 3. Ansonsten fragt GRASS die Informationen direkt im Terminalfenster ab. In jedem Fall stellen Sie zuerst das »GIS Data Directory« ein, im Beispiel also auf »grassdata«. Dann selektieren Sie die »Location« und wählen in der Liste rechts daneben das Mapset aus.

Abbildung 3: Der Startbildschirm von GRASS. Sofern kein Tcl/Tk installiert ist, werden die hier präsentierten Einstellungen in der Konsole abgefragt.

Abbildung 3: Der Startbildschirm von GRASS. Sofern kein Tcl/Tk installiert ist, werden die hier präsentierten Einstellungen in der Konsole abgefragt.

Für einen schnellen Einstieg eignet sich das Ausweichen direkt auf »PERMANENT«. GRASS arbeitet übrigens zu jedem Zeitpunkt immer nur in genau einer Location. Möchten Sie die Location wechseln, heißt es, GRASS komplett beenden und neu starten oder eine zweite Session öffnen.

Kugel oder Scheibe?

Schon seit einigen Jahrhunderten steht fest, dass die Erde keine Scheibe ist, sondern ein ziemlich unförmiges Ei, das durch den Weltraum schlingert. Karten sind dummerweise jedoch immer flach. Folglich ergibt sich das Problem, die Erdkrümmung auf eine Fläche abzubilden. Dazu haben schlaue Köpfe verschiedene Darstellungsmethoden ersonnen. Aber neben der Projektionsmethode ist auch noch ein Koordinatensystem nötig, um die Position der Bäume, Häuser oder Berge auf den fertigen Karten eindeutig zu bestimmen.

Auch hierzu gibt es verschiedene Ansätze. Bei der vermutlich bekanntesten Lösung definieren Längen- und Breitengrade die Koordinaten eines Objekts, oft im Verbund mit der Höhe über dem Meeresspiegel.

Alternativ kann auch das den meisten vermutlich noch aus der Schule bekannte kartesische Koordinatensystem mit x-, y- und z-Achse dienen. Die Koordinaten gelten in diesem Fall allerdings nur für einen bestimmten Abbildungsbereich, wobei GRASS den Ursprung gewöhnlich in die linke untere Ecke legt. Beim in Deutschland üblichen geografischen Koordinatensystem nach Gauß-Krüger beziehen sich die Koordinaten zum Beispiel auf den Meridianstreifen, der Ausgangspunkt ist dabei in jedem Fall der Helmertturm in Potsdam.

Geokodierung und Georeferenzierung sind aufwändige Arbeiten, der Kasten “Hereinspaziert” zeigt, wie GRASS Ihnen dabei hilft.

Hereinspaziert

Da haben Sie sich extra einen Hubschrauber gechartert, um ein Foto Ihres Grundstückes zu schießen, und doch scheint GRASS die Datei irgendwie nicht zu mögen? Dem Geo-Informationssystem fehlt in diesem Fall eine Angabe, an welchen Koordinaten sich das Grundstück befindet. Weil diese wiederum von dem verwendeten Koordinatensystem abhängig sind, müssen Sie der Karte vor der Verwendung in GRASS noch die entsprechenden Informationen anheften. Es geht darum zu definieren, welchen Ausschnitt der Erde die Karte zeigt und wo dieser liegt.

Eine so ausgestattete Karte bezeichnet man als geokodierte Karte. Da GRASS das natürlich nicht von selbst herausfinden kann, müssen Sie selbst etwas Hand anlegen. Am Anfang steht die Luftaufnahme, dann erstellen Sie in GRASS eine neue Location, die allerdings zunächst nicht-geokodierte Karten aufnimmt. Diese so genannte xy-Location wählen Sie in ihrer Ausdehnung genauso groß wie die zu importierende Karte und setzen die Auflösung auf »1«. Damit entspricht später ein Pixel im Foto einem Rasterpunkt.

Importieren Sie die Luftaufnahme mit einem entsprechenden Importkommando wie beispielsweise »r.in.gdal«. Der nächste Schritt überträgt die jetzt in GRASS vorliegenden Daten in eine zweite Location mit dem gewünschten Ziel-Koordinatensystem und entzerrt und geokodiert die Karte automatisch.

Der Befehl »i.group« fasst alle zu transformierenden Bilder in einer Gruppe zusammen, per »i.target« wählen Sie die Ziel-Location und das Mapset aus. Starten Sie nun einen GRASS-Monitor via »d.mon start=x0« und aktivieren »i.points« für eine zu geokodierende Rasterkarte beziehungsweise »i.vpoints« im Fall einer Vektorkarte. Im Monitor erscheint jetzt die zuvor importierte Karte. Hilfe zum Verständnis der Kommandos bringt der Kasten “Auf Kommando” weiter unten.

Wo ist der Apfelbaum?

Jetzt stellt sich die Frage, an welchen Koordinaten die Objekte auf dieser Karte in der Ziel-Location liegen. Welche Koordinaten weist zum Beispiel der Apfelbaum im Garten auf? Diese Information können Sie GRASS auf zwei Arten mitteilen: Sofern Sie wissen, wie die Koordinaten des Apfelbaums lauten, klicken Sie ihn mit der Maus an und tippen dann einfach die benötigten Daten über die Tastatur ein.

Oder Sie bitten GRASS um Hilfe und entscheiden sich für »PLOT RASTER«. In diesem Fall öffnen Sie eine bereits geokodierte Karte aus der Ziel-Location, die dann rechts neben dem importierten Bild erscheint. Jetzt verteilen Sie so genannte Passpunkte, indem Sie mit der Maus einen Punkt in der importierten Karte, beispielsweise den Apfelbaum, anklicken und dann mit einem zweiten Klick dessen Standort in der rechten Karte festlegen. Sobald Sie genügend Passpunkte gesetzt haben, beenden Sie das Hilfswerkzeug, GRASS speichert automatisch. Ein »i.rectify« führt jetzt die eigentliche Transformation durch. Die xy-Location können Sie jetzt wieder löschen.

Bei bereits geokodierten Daten bleibt Ihnen dieser Umweg erspart und Sie können die Karte direkt, beispielsweise via »r.in.gdal«, in die Ziel-Location importieren. Möchten Sie die Straßenzüge aus der Luftaufnahme in einer Vektorkarte ablegen, greifen Sie zum Modul »v.digit«, das eine geokodierte Karte als Grundlage erwartet. Über die entsprechenden Werkzeuge aus der Symbolleiste können Sie als GRASS-Benutzer die Straßen und Wege über Liniensegmente nachziehen und anschließend in einer eigenen Karte abspeichern.

Ein System pro Location

Im Gegensatz zu anderen Geo-Informationssystemen liegt in GRASS jeder Location genau ein Koordinatensystem zugrunde, das für alle enthaltenen Karten gilt. Eine Mischung ist also nicht möglich. Wenn Sie eine andere Projektion oder ein anderes Koordinatensystem brauchen, bleibt Ihnen nichts anderes übrig, als eine neue Location mit den gewünschten Eckdaten zu öffnen.

Dazu verwenden Sie eine der drei Schaltflächen rechts unten, unter »Define new location with…«. Je nach Wahl wendet GRASS die Koordinatensysteme unterschiedlich an. Am bequemsten sind sicherlich die »EPSG codes« der Petroleum Survey Group [10]. Über die »Browse…«-Schaltfläche neben »ESPG code number« erhalten Sie eine Auflistung aller möglichen Systeme und deren jeweilige Nummer (Abbildung 4).

Abbildung 4: Die EPSG-Codes erleichtern das Anlegen einer neuer Location. In der Liste steht die Codenummer jeweils in den spitzen Klammern.

Abbildung 4: Die EPSG-Codes erleichtern das Anlegen einer neuer Location. In der Liste steht die Codenummer jeweils in den spitzen Klammern.

Nach der Auswahl startet ein Klick auf »Enter GRASS« das Geo-Informationssystem in der gewählten Location. Als Ergebnis öffnet sich ein Fensterreigen, wie ihn Abbildung 5 zeigt. Kaum zu glauben, aber das Hauptfenster bleibt trotz der Invasion von Fenstern die Konsole. GRASS besteht seit seiner ersten Version einfach aus einer Sammlung von Kommandozeilen-Programmen, die Karten manipulieren und analysieren. Das Startskript von GRASS setzt nur eine Hand voll Umgebungsvariablen.

Abbildung 5: GRASS direkt nach dem Start. Links oben die Kommandozeile, rechts daneben das Hauptfenster des »GRASS GIS Manager«. Im Fenster links unten protokolliert die Oberfläche jede Ihrer Aktionen, rechts daneben steht die Kartenanzeige. Bis zu zehn Karten kann GRASS gleichzeitig anzeigen.

Abbildung 5: GRASS direkt nach dem Start. Links oben die Kommandozeile, rechts daneben das Hauptfenster des »GRASS GIS Manager«. Im Fenster links unten protokolliert die Oberfläche jede Ihrer Aktionen, rechts daneben steht die Kartenanzeige. Bis zu zehn Karten kann GRASS gleichzeitig anzeigen.

Da Textkommandos zwar extrem flexibel, aber nicht besonders komfortabel sind, entstand der »GRASS GIS Manager« (in Abbildung 5 das aktive Fenster rechts oben). Er ist nur ein in Tcl/Tk geschriebener grafischer Aufsatz für die darunter liegenden GRASS-Befehle (Abbildung 6). Die von der Oberfläche abgesetzten Kommandos erscheinen zur Kontrolle im Fenster »Output«. Im »Map Display«, dem letzten Fenster im Bunde, zeigt sich später die fertige Karte.

Abbildung 6: Die Architektur von GRASS im Überblick. Auch die grafische Oberfläche des »GRASS GIS Manager« basiert immer noch vollständig auf den Kommandozeilen-Programmen der alten GRASS-Schule. Mit Tcl/TK gibt's aber auch das schöne GUI.

Abbildung 6: Die Architektur von GRASS im Überblick. Auch die grafische Oberfläche des »GRASS GIS Manager« basiert immer noch vollständig auf den Kommandozeilen-Programmen der alten GRASS-Schule. Mit Tcl/TK gibt’s aber auch das schöne GUI.

Rastafari

Um eine reale Landschaft im Computer abzubilden, fliegen Kartografen gerne mit einem Hubschrauber über die Landschaft und pressen das Gesehene in ein feinmaschiges Raster. Jeder so entstehenden Zelle weisen sie dann einen zu untersuchenden Wert zu, zum Beispiel die Höhe dieser Stelle über dem Meeresspiegel. Mit einem feinmaschigen Raster entsteht ein detailliertes Höhenprofil der Landschaft. Klassen unterteilen die Werte, etwa in Hundert-Meter-Schritten. GIS-Software ordnet jeder Klasse einen Farbwert zu, und schon gibt es die aus Atlanten berühmt gewordenen grün-gelb-braunen Karten.

Häufig schießen die Kartografen aus dem Hubschrauber auch Fotos und definieren jedes Pixel als einen Rasterwert. Wegen der Ähnlichkeit zu herkömmlichen Pixelgrafiken finden in GISs aus der Bildbearbeitung bekannte Analyse-Algorithmen breite Verwendung. Rasterkarten haben jedoch den Nachteil, dass bei zu starker Vergrößerung die Darstellung leidet und Präzision verloren geht.

Vektor oder Raster

Alternativ könnten Sie die Standorte eines jeden Baums als Punkt sowie den Verlauf jedes Straßenzuges als Linie oder Kurve notieren. Das Ergebnis sind Vektordaten, wie sie auch von vielen Zeichenprogrammen her bekannt sind. Diese Darstellungsformen erlauben beliebig tiefes Zoomen ohne Qualitätsverlust. Jedoch ist die Erfassung aufwändiger, denn die Koordinaten sind für jeden Baum einzeln festzulegen, in der Regel manuell. Nur in einigen einfachen Fällen bietet GRASS dafür Hilfestellungen.

Um die Vorteile der beiden Darstellungsformen zu nutzen, arbeiten Geo-Informationssysteme sowohl mit Raster- als auch mit Vektordaten. Das Höhenprofil aus Abbildung 8 ist beispielsweise eine solche Rasterkarte.

GRASS kann erst seit Version 6 sinnvoll mit Vektordaten arbeiten, daher hinken die Funktionen etwas hinter den eingebauten Raster-Kollegen her. Es unterscheidet bei Vektordaten zwischen einzelnen Punkten (Sites), Linien (Arcs), Zentroiden, Flächen und 3D-Flächen, die selbst wieder aus einer Punktfolge bestehen. Während sich Arcs gut zur Repräsentation von Straßen und Flüssen eignen, dienen Sites meist für kleine, freistehende Objekte, etwa Bäume oder spezielle Landschaftsmarkierungen.

Seit Version 6 behandelt GRASS die Sites nicht mehr als gesonderte Objekte, sondern wie alle anderen Vektordaten. Deren Attribute liegen zudem standardmäßig in dBASE-Dateien. Wer eine externe Datenbank mit SQL-Schnittstellen wie MySQL, PostgreSQL oder SQLite betreibt, darf die Vektordaten auch dorthin auslagern.

Das Höhenprofil liegt in den Spearfish-Daten als Rasterkarte vor. Um es einzublenden, klicken Sie im GIS-Manager auf das zweite Symbol von links in der oberen Symbolleiste. Um diese Ansicht zu aktivieren, wählen Sie den neuen Eintrag im oberen Bereich des Managers. Dieser präsentiert jetzt im unteren Bereich weitere Einstellungen.

Klicken Sie dort auf das Symbol direkt neben »Base Map«, es erscheint eine Liste mit allen derzeit verfügbaren Karten (Abbildung 7). Wählen Sie das Höhenmodell »elevation.dem«, dann erscheint im Eingabefeld des Managers die Auswahl als »elevation.dem@PERMANENT«. Anhand dieser Notation erkennen Sie sofort, aus welchem Mapset die Karte stammt. Jetzt noch schnell im »Map Display 1« die Ansicht über die erste Schaltfläche ganz links aktualisieren, und schon kann\’s losgehen.

Abbildung 7: Ein neuer Raster-Layer im GIS-Manager für die Karte »elevation.dem« wird geöffnet ...

Abbildung 7: Ein neuer Raster-Layer im GIS-Manager für die Karte »elevation.dem« wird geöffnet …

Abbildung 8: ... und zeigt als Ergebnis ein Höhenmodell in einer klassischen Farbdarstellung.

Abbildung 8: … und zeigt als Ergebnis ein Höhenmodell in einer klassischen Farbdarstellung.

Mischmaschine

Eine beliebige Landkarte in einem Atlas enthält meist mehrere Informationsarten gleichzeitig. Den Untergrund bildet beispielsweise ein grün-gelb-braunes Höhenprofil, auf dem sich Flüsse und Straßen entlangschlängeln. Geo-Informationssysteme wie GRASS packen jede dieser Informationen auf eine eigene Karte, die übereinander geschichtet die komplette Landschaft ergeben. Dieses Vorgehen funktioniert wie ein Stapel aus Folien, wobei sich auf der einen die Straßen befinden, auf einer weiteren die Flüsse und so weiter. GRASS bezeichnet die Folien als Layer (Ebene).

Mit dieser Arbeitsweise lassen sich bestimmte Informationen gezielt ein- und ausblenden. Interessieren beispielsweise nur die Flüsse, verschwinden mit einem Mausklick Straßen und Bäume aus der Darstellung. So sind auch themenbezogene Karten schnell erstellt. Die Ebene mit den Straßen bleibt, aber als Untergrund ersetzt der Layer mit den Bodenschätzen das Höhenprofil.

Höhenprofile

Im Spearfish-Beispiel existiert bereits ein Layer, nämlich das in Abbildung 8 dargestellte Höhenmodell. Über ihm sollen nun noch die Straßen und Flüsse erscheinen. Um sie aus ihrem Dornröschenschlaf zu wecken, klicken Sie auf das achte Symbol von links in der oberen Symbolleiste des GIS-Managers, das einen stilisierten Flusslauf darstellt. Ein neuer Layer für Vektorkarten erscheint, selektieren Sie ihn und klicken dann im unteren Bereich auf das Symbol rechts neben »Vector map«. Wählen Sie in der Liste die Karte mit den Straßen »roads«, damit ist diese Karte dem neuen Layer zugeordnet.

Ein Klick auf das erste Symbol von links im »Map Display 1« legt die Straßen über das Höhenprofil. Das Gleiche wiederholen Sie dann für die Flüsse, die in der Karte »streams« stecken. Um sie besser von den Straßen zu unterscheiden, sollte das Fenster die Gewässer blau darstellen: Suchen Sie im unteren Bereich nach der Zeile »Draw lines«, klicken auf das schwarze Rechteck und wählen einen Blauton. Schnell die Ansicht aktualisieren, und schon erscheinen die Flüsse in schönem Blau.

Allerdings liegen sie derzeit noch über den Straßen, wodurch Brücken optisch überflutet wären. Also ziehen Sie den Layer kurzerhand per Drag&Drop im GIS-Manager eine Etage tiefer. Danach dürfen Sie nicht vergessen die Darstellung zu aktualisieren. Wenn alles geklappt hat, schaut das »Map Display« ähnlich aus wie Abbildung 9.

Abbildung 9: Hier das Zusammenspiel aller Karten: Höhenprofil, Straßen und darüber die Flüsse.

Abbildung 9: Hier das Zusammenspiel aller Karten: Höhenprofil, Straßen und darüber die Flüsse.

Kleine Helfer

Im Map Display sind noch ein paar weitere pfiffige Werkzeuge zu finden. Zunächst lässt sich über das fünfte Symbol von rechts ein Querschnitt des Höhenprofils anzeigen. Nach einem Klick darauf ziehen Sie im Fenster einfach mit der Maus die gewünschte Luftlinie auf. GRASS öffnet anschließend ein neues Fenster mit dem Querschnitt durch den Berg (Linientransekt).

Bislang kamen nur zweidimensionale Karten zum Einsatz, GRASS beherrscht auf Wunsch aber auch die dritte Dimension, und zwar sowohl bei Vektorgrafiken als auch bei Rasterkarten (Voxel Volumes). Die Visualisierung und Analyse übernimmt das Werkzeug NVIZ, das im Map Display hinter dem dritten Symbol von links steckt. Das Ergebnis ist eine dreidimensionale Karte, die sich mit den Bedienelemente auf der linken Seite rotieren und drehen lässt.

Das klappt allerdings nur, wenn das Kartenmaterial auch die entsprechenden Höhendaten enthält. Bei zweidimensionalen Rasterdaten verwendet NVIZ die Informationen in den Zellen als Höheninformation (Abbildung 1).

Simulant

GRASS erlaubt es dem Benutzer, jedem Objekt zusätzliche Informationen mit auf den Weg zu geben. Bei der Routenplanung ist es beispielsweise sinnvoll, für jeden Straßenzug die typische Verkehrsdichte anzuheften. GRASS kann auf Vektordaten die kürzeste Route suchen und das Problem des Handlungsreisenden lösen. Auf Basis von Rasterdaten führt es sogar Waldbrandsimulationen durch oder hilft bei der Wettersimulation.

Referenzen

GRASS kommt in zahlreichen Institutionen und Unternehmen auf der ganzen Welt zum Einsatz, Letztere verschweigen aber gerne ihre Leidenschaft für das kostenlose GIS. Prominentester Einsatzort ist wohl die Nasa, aber auch heimische Wissenschaftler greifen gerne zu GRASS. So setzte die Universität Dortmund das freie System bei der automatischen Planung des Nahverkehrs ein [12].

Das im Rahmen des Projekts entwickelte Werkzeug erhielt über die C-Schnittstelle in GRASS das Straßennetz einer deutschen Kleinstadt und errechnete auf Basis der dortigen Bevölkerungs- und Verkehrsbewegungen ein optimiertes Netz für die Busse. Die Buslinien wurden dann als Vektordaten wieder in GRASS eingespeist, jede Linie auf einem eigenen Layer. Die Planer konnten bequem einzelne Routen selektieren, manipulieren und analysieren.

In GRASS gespeicherte Karten lassen sich auch über Skripte automatisiert verarbeiten. Da unter der Haube von GRASS die gute alte Bash werkelt, stehen zudem alle Möglichkeiten der Unix-Shell-Programmierung offen. Selbstverständlich eignet sich auch jede beliebige andere Skriptsprache, die Bash-Befehle absetzen kann (oder auch Windows-Batchdateien). Hiervon macht übrigens GRASS selbst ausgiebig Gebrauch, zum Beispiel indem es einige Befehle als Python-Skripte realisiert.

Eine kurze Übersicht über die GRASS-eigenen Kommandos bietet der Kasten “Auf Kommando”. Wer die grafische Oberfläche zu unübersichtlich findet, der sollte einen Blick auf Quantum GIS [13], kurz QGIS, werfen. Dieses handliche Geo-Informationssystem dient auch als komfortabler Betrachter und enthält eine eigene GRASS-Toolbox.

Auf Kommando

Die Kommandos der GRASS-Befehlszeile sind im Laufe der Zeit auf mehrere Hundert angewachsen. Unzählige weitere Module warten zudem noch im Internet auf ihren Download. Damit niemand in dieser Fülle den Durchblick verliert, sind sie gruppiert und bekamen noch ein passendes Präfix verpasst.

So beginnen alle Module, die sich auf Rasterdaten beziehen, mit einem »r.«, Vektordaten mit einem »v.«. Alle mit »d.« startenden Befehle beeinflussen die Darstellung auf dem Bildschirm. Um beispielsweise ohne grafische Oberfläche eine Rasterkarte auf den Bildschirm zu bringen, öffnen Sie zunächst ein Ausgabefenster, den so genannten Monitor, mit dem Namen »x0«

d.mon x0

und rufen »d.rast« auf. Ein »d.zoom« erlaubt das Vergrößern und Verkleinern der Karte.

Fazit

GRASS hat sich seit Version 6.0 endgültig zu einem leistungsstarken Geo-Informationssystem gemausert, das die proprietäre Konkurrenz in einigen Bereichen sogar deutlich übertrumpft. Es hilft nicht nur bei der Erstellung von Landkarten, sondern auch bei der integrierten Bildbearbeitung, und dient als Visualisierungssystem oder als Basis für Simulationen. GRAS bietet räumliche Analysen nebst Funktionen zur Geostatistik und bearbeitet Multispektralbilder. Kurzum: Der Tausendsassa ist immer dann einen Blick wert, wenn es sich irgendwo um Landkarten dreht. (mfe)

Infos

[1] GRASS-Homepage: [http://grass.itc.it]

[2] PROJ.4: [http://proj.maptools.org]

[3] GDAL und OGR: [http://www.gdal.org]

[4] LAPACK: [http://www.netlib.org/lapack]

[5] R statistical Language:[http://cran.r-project.org]

[6] GDF-Hannover:[http://www.gdf-hannover.de]

[7] Spearfish-Beispieldaten: [http://grass.itc.it/download/data.php]

[8] FRIDA-Projekt: [http://frida.intevation.org]

[9] Nasa-Höhenkarten: [ftp://e0srp01u.ecs.nasa.gov/srtm/version1]

[10] Open-Streetmap-Projekt: [http://www.openstreetmap.org]

[11] EPSG OGP Surveying & Positioning Committee: [http://www.epsg.org]

[12] “Rechnergestützte Planung von Nahverkehrsnetzen”, Projekt der Universität Dortmund: [http://www4.cs.uni-dortmund.de/Lehre/00-46369/index.html]

[13] Quantum GIS: [http://qgis.org]

Der Autor

Tim Schürmann ist selbstständiger Diplom-Informatiker und derzeit hauptsächlich als freier Autor unterwegs. Zu seinen Büchern gesellen sich zahlreiche Artikel, die in Zeitschriften in mehreren Ländern veröffentlicht wurden.

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben