hier - CHROMGRUEN
Transcrição
hier - CHROMGRUEN
Hans-Jörg Keiler chromgruen Planungs- und Beratungs- GmbH, Essen Vorbemerkung Entstehung dieses Manuskriptes Das vorliegende Manuskript ist im Rahmen eines dreimonatigen Praktikums (Oktober bis Dezember 2007) bei der chromgruen Planungs- und Beratungs- GmbH entstanden, bei dem unter anderem die Aufgabe darin bestand, verschiedene Open Source Desktop-GIS Lösungen zu testen und so einen Vergleich zwischen den Programmen herstellen zu können. Durch die lange Einarbeitungszeit in die komplexe Funktionsweise und den relativ großen Funktionsumfang von GRASS GIS konnte bislang allerdings nur dieses Programm betrachtet werden. Möglicherweise wird diese Dokumentation zu einem späteren Zeitpunkt fortgesetzt. Lizenz Dieses Manuskript wird unter den Bedingungen der Creative Commons Public License „Namensnennung 2.0“ veröffentlicht (http://creativecommons.org/licenses/by/2.0/de/legalcode). Haftungsbeschränkung Dieses Manuskript wird veröffentlicht in der Hoffnung, dass es nützlich ist. Der Autor und die chromgruen Planungs- und Beratungs- GmbH übernehmen keine Garantie für die Richtigkeit der darin getroffenen Aussagen und haften – im Rahmen der gesetzlichen Bestimmungen – nicht für Fehler oder eventuelle Schäden, die durch seine Anwendung auftreten können. Essen, Januar 2008 chromgruen Analyse und Bewertung von Open Source Desktop-GIS Vorbemerkung......................................................................................................................................1 Entstehung dieses Manuskriptes......................................................................................................1 Lizenz...............................................................................................................................................1 Haftungsbeschränkung.....................................................................................................................1 Einleitung und Aufgabenstellung.........................................................................................................3 Methodik...............................................................................................................................................3 GRASS.................................................................................................................................................5 Kurzbeschreibung und Fazit............................................................................................................5 GIS-Umgebung................................................................................................................................6 Bedienbarkeit..............................................................................................................................6 Support........................................................................................................................................7 Performance................................................................................................................................7 Kernfunktionen................................................................................................................................8 Konvertieren von Geodaten in digitale Form.............................................................................9 Datenbank-Management ..........................................................................................................10 Geoprocessing: Datenmanipulation und Analysefunktionen....................................................13 Kartenerstellung........................................................................................................................25 Fallbeispiel „Bielefeld“.............................................................................................................26 Quantum GIS......................................................................................................................................27 Kurzbeschreibung..........................................................................................................................27 OSSIM................................................................................................................................................28 Kurzbeschreibung..........................................................................................................................28 gvSIG..................................................................................................................................................29 Kurzbeschreibung..........................................................................................................................29 SAGA.................................................................................................................................................30 Kurzbeschreibung..........................................................................................................................30 Open-Jump.........................................................................................................................................31 Kurzbeschreibung..........................................................................................................................31 Bewertung der GIS-Programme.........................................................................................................32 Literatur..............................................................................................................................................33 Allgemein..................................................................................................................................33 GRASS......................................................................................................................................33 chromgruen Inhaltsverzeichnis Für eine Vielzahl von GIS-spezifischen Anwendungen, die in den Bereich Desktop-GIS fallen, existieren mittlerweile unter den Open Source-basierten Programmen eine Fülle von Werkzeugen, mit deren Einsatz das gleiche Ergebnis erzielt werden kann wie unter Verwendung von kommerziellen Produkten. Die unterschiedliche Funktionsweise der Programme und eine nur schwierig zu erlangende Marktübersicht sind Hemmnisse für einen verbreiteteren Einsatz. Das vorliegende Manuskript soll dem Leser einen einen Überblick über den aktuellen Funktionsumfang verschiedener Desktop-GIS im Open Source Bereich geben. Es wird weder auf die verschiedenen Definitionen von Open Source eingegangen, noch soll das Manuskript als vollständiges Manual der verschiedenen Programme gesehen werden: Eine Auflistung ausgewählter Materialien für diese Zwecke befindet sich im Literaturverzeichnis. Als Ergebnis dieser Dokumentation soll möglichst schnell erkennbar sein, welches Programm für welchen Zweck am besten eingesetzt werden kann. So soll der Funktionsumfang geschildert und die Funktionsweise möglichst anschaulich dargestellt werden. Die abschließende Bewertung soll möglichst transparent sein. Methodik Wie das Inhaltsverzeichnis schon zu erkennen gibt, wird bei der Bewertung zwischen Kernfunktionen der verschiedenen GIS-Programme und der jeweiligen „GIS-Umgebung“ unterschieden. Dabei handelt es sich um Themen wie den Inhalt der Hilfe-Datei, den Stand und die Verfügbarkeit von Dokumentationen oder die Aktivität der Community, aber auch um technische Rahmenbedingungen wie Performance, erhältliche Plugins und Anwendbarkeit von Scripts. Den Kernfunktionen sind die Teilfunktionen eines GIS zugeordnet, die es standardmäßig erfüllen sollte: Datenbank-Management, Digitalisieren von Geodaten, Datenmanipulation, Analysefunktionen und Kartenerstellung. Die verschiedenen Kapitel sind wie folgt aufgebaut: ● Beschreibung der verschiedenen Funktionen für jeden Teilbereich ● Exemplarisch: Dokumentation verschiedener Module ● Bewertung Die Bewertung erfolgt u.a. durch eine Nutzwertanalyse, d.h. den verschiedenen Funktionen des GIS wird ein verschieden hoher Nutzwert zugesprochen. Dabei soll allerdings auf eine Überprüfung der Gewichtung (z.B. im Sinne einer paarweisen Gewichtung) sowie auf eine Sensitivanalyse verzichtet werden. Verfahren und Gewichtung der Nutzwertanalyse sind an die Arbeit von Roland Krüger („Open Source-GIS in der Kommunalverwaltung“, siehe Literaturverzeichnis) angelehnt. Die nachfolgenden Tabellen geben die Berechnung für die Bewertung und die Gewichtung der Kriterien wieder. Die Nutzwertanalyse wird allerdings nur dort eingesetzt, wo ein direkter Vergleich möglich ist. In vielen Bereichen wirken die untersuchten GIS-Programme eher ergänzend als konkurrierend, was einem Vergleich von „Äpfeln mit Birnen“ nahe käme. chromgruen Einleitung und Aufgabenstellung Bewertungsgrad nicht erfüllt schlecht mäßig durchschnittlich gut sehr gut Wert 0 1 2 3 4 5 Gewichtung der Kriterien Kriterium GIS-Umgebung Bedienbarkeit Support Performance Kernfunktionen Datenbank-Management Digitalisieren Datenmanipulation / Analyse Kartenerstellung Gewicht 20% 10% 05% 05% 80% 20% 20% 30% 10% Zur Berechnung wird der Wert der Zielerfüllung mit der Gewichtung des jeweiligen Kriteriums multipliziert. Diese Werte werden für jedes untersuchte Programm in einer Tabelle zum Vergleich gegenübergestellt. Auf eine Aufsummierung wird wiederum verzichtet, da eine absolute Bewertung wegen der Heterogenität der Programme nicht für sinnvoll erachtet wird. Die Programme wurden auf dem Betriebssystem Ubuntu Linux 7.10. getestet. chromgruen Zielerfüllungsskala Kurzbeschreibung und Fazit GRASS (Geographic Resources Analysis Support System) ist ein Geographisches Informationssystem, welches durch eine Vielzahl von Raster- und Vektorfunktionen die Verarbeitung raumbezogener Daten in einem einzigen Programm ermöglicht. Es enthält Werkzeuge für räumliches Modellieren, für die Darstellung von Raster- und Vektordaten, für Management und Analyse raumbezogener Daten und für die Verarbeitung von Luft- und Satellitenbildern. Des Weiteren besteht die Möglichkeit, anspruchsvolle 4D Präsentationen und druckfähige Karten zu erzeugen. Das Programm enthält über 350 Module für das Arbeiten mit Vektor-, Raster- und Volumendaten. Durch den Konsolidierungsprozess in Bezug auf „Geospatial Open Source Standards“ (Das GRASS-Projekt ist Mitbegründer der Open Source Geospatial Foundation) sind die aktuellsten GDAL/OGR-Bibliotheken in GRASS eingebunden, was die Verarbeitung von einer großen Bandbreite an Vektor- und Rasterformaten ermöglicht. Es stützt sich außerdem auf das PROJ4Projekt, welches eine Vielzahl gängiger Projektionen unterstützt und darüber hinaus auch selbst definierte Projektionen verarbeiten kann. Enge Verbindungen bestehen auch mit den Projekten „QuantumGIS“ und „R Statistics“, bei welchen über PlugIns auf GRASS-Funktionen zurückgegriffen werden kann. GRASS wurde ursprünglich von den amerikanischen Streitkräften entwickelt und dann als lizenzfreie Software zugänglich gemacht. Seither hat ein internationales Entwickler-Team deren Arbeit an dem System übernommen. Die Überführung in eine lizenzfreie Software erfolgte 1999 unter den Bestimmungen der GNU General Public Licence. GRASS wird momentan weltweit erfolgreich in wissenschaftlichen, kommerziellen und öffentlichen Institutionen angewendet.1 Fazit GRASS ist ein sehr komplexes und vollständiges GIS-Programm. Der modulare Aufbau und die unterschiedliche Struktur im Vergleich zu anderen GIS-Programmen erfordern allerdings eine vergleichsweise lange Einarbeitungszeit. Es ist sehr gut geeignet für Analysen von Raster- und Vektordaten. Die Konvertierung von Rasterdaten nimmt allerdings eine gewisse Zeit in Anspruch, führt aber ebenfalls zu guten Ergebnissen. Mit NVIZ steht ein 3D-Programm zur Verfügung, welches ordentlich funktioniert, allerdings auf reine Visualisierungsmöglichkeiten beschränkt ist. In diesem Bereich bieten andere GIS-Programme, wie z.B. der 3D-Analyst für ArcGIS, deutlich mehr Möglichkeiten. Auch im Bereich des Darstellens und einfachen Selektierens von Objekten beinhalten andere Programme bessere Lösungen, allerdings führt die enge Kooperation mit dem QGIS-Projekt dazu, dass man dessen gutes Front-End dafür nutzen kann und auf die GRASS-Daten über ein PlugIn zurückgreifen kann. Auch der bei Open Source Projekten oft bemängelte Support ist über eine stark frequentierte Mailingliste in ausreichendem Maße gegeben. Hilfsbereite Mitglieder dieser Mailinglisten antworten generell auf Fragen innerhalb weniger Stunden. Allerdings wird auch hier eine ein Grundverständnis für GIS und IT-Hintergrundwissen vorausgesetzt, denn die Antworten sind meist sehr kurz und mit Fachwörtern überhäuft. Die Hilfe-Datei bietet – nach einigem Einlesen – eine gute Dokumentation, ebenso ein spezielles Wiki sowie einschlägige Literatur. Als nächstes soll nun auf Funktionsumfang und Funktionsweise im Speziellen eingegangen werden. 1 Quellen: E-Mail Markus Neteler (digest freegis-list) + Informationen aus http://www.osgeo.org/grass chromgruen GRASS Bedienbarkeit Installation Die Installation über die Synaptik-Paketverwaltung in Ubuntu-Linux ist relativ leicht, zu empfehlen sind die Installationshinweise auf der GRASS-Homepage http://grass.itc.it/. Um die aktuellste Version (momentan GRASS 6.2.2) zu installieren, war es allerdings nötig, die Software-Quellen für die Synaptik-Paketverwaltung zu erweitern. (Die Voreinstellung von Ubuntu beinhaltete die Version GRASS 6.0). Die notwendigen Schritte dafür sind auch nachzulesen unter http://les-ejk.cz/ubuntu/. Benutzeroberfläche Generelles zum Arbeiten mit GRASS: Wie bereits beschrieben ist GRASS ein aus vielen Modulen bestehendes System. Das heißt, dass für sämtliche Berechnungen jeweils das „zuständige“ Modul aufgerufen werden muss. Einen systematischen Überblick über die Module erhält man über den sog. „GIS-Manager“, eine graphische Oberfläche, in der die Module über verschiedenen Menus via Mausklick aufgerufen werden können. Des Weiteren gibt es ein sog. „Map Display“, in dem die verschiedenen Layer dargestellt werden können. Auf den ersten Blick ist das Arbeiten mit GRASS recht unübersichtlich, v.a. weil jeder neue Schritt (und jedes neu Abbildung 1: Haupt-Benutzeroberfläche: Der "GISaufgerufene Modul in einem eigenen Fenster angezeigt Manager" wird, durch die man sich über die Taskleiste navigiert. Nach einer gewissen Einarbeitungszeit ist aber die Verknüpfung zwischen Kommandozeilen-Eingabe und graphischer Steuerung sehr hilfreich, weil über die Kommandozeile die Fenster viel schneller anzusteuern sind. Es ist auch möglich, zwischen Kommandozeile und graphischer Steuerung jeweils beim Eingeben eines Vorganges zu wechseln. Generell ist aber das sog. „Front-End“ eher als benutzerunfreundlich zu werten, da intuitives Manipulieren eines Layers über die rechte Maustaste nicht möglich ist. Gewöhnungsbedürftig ist beispielsweise auch, dass der Mauspfeil mit der Spitze nach rechts oben zeigt. Sprachen Es besteht in der deutschen Version ein Durcheinander von deutsch und englisch. Die zumindest teilweise Übersetzung ins Deutsche kann allerdings manchmal recht hilfreich sein für die Benutzer, die mit den englischen Fachbegriffen nicht ganz firm sind. Die Hilfe-Datei liegt allerdings komplett in englischer Sprache vor, allein einige Manuskripte sind auf deutsch gehalten. chromgruen GIS-Umgebung Hilfe-Funktion Es wird bei der Installation eine Hilfe-Funktion mit installiert, die lokal auf dem Rechner liegt und die man über den Browser öffnen kann. Im Internet kann man dieses Manual aber auch einsehen; der Vorteil ist, dass es hier laufend aktualisiert wird. Es gibt allerdings keine Schlagwort-Suche in der Hilfe; man ist gezwungen, die Beschreibung jedes benötigten Modules nachzuschlagen. Über einen Button in der jeweiligen graphischen Oberfläche eines Modules gelangt man allerdings direkt zu der richtigen Stelle in der Hilfe-Datei. Dokumentation Die Funktionen von GRASS sind gut dokumentiert, einen Überblick findet man auf der GRASSWiki-Seite (s.u.). In deutscher Sprache gibt es ein umfangreiches Free-GIS Tutorial von Heiko Kehlenbrink (2002) und von der GDF Hannover ein Skript zur Einführung in GRASS (2005). User-Community Die User-Community ist eine der größten im Open Source Desktop-GIS Bereich, es werden über die User-Mailingliste momentan ca. 20 E-Mails pro Tag geschrieben. Auf dort angesprochene Probleme wird oft relativ zeitnah eingegangen. Ebenso existiert ein GRASS-Wiki, wo FAQ's, Hinweise zu Blogs, Dokumentationen und Installationsanleitungen beschrieben sind. Abrufbar ist dies unter: http://grass.gdf-hannover.de/wiki/Main_Page Performance Betriebssysteme / Hardware-Plattformen GRASS ist für alle gängigen Betriebssysteme verfügbar; für Windows ist ein PlugIn („cygwin“) notwendig. Während der Tests mit der Linux Distribution „Ubuntu“ gab es sowohl bei der Version 7.06 als auch 7.10 keine Probleme. Der für den Test verwendete PC verfügt zwar über 2GB Arbeitsspeicher, allerdings sind Cache und verwendetes Mainboard nicht auf dem aktuellsten Stand, was sicherlich die Performance beeinträchtigt. Erweiterbarkeit und Anpassbarkeit (Scripting, PlugIns) Aufgrund der Kommandozeilen-Struktur ist das Verwenden von Skripten sehr einfach. Auch wenn man die Graphische Benutzeroberfläche (GUI) nutzt, so erscheint bei der Eingabe bzw. dem Anklicken der jeweiligen Optionen automatisch der ausgeschriebene Befehl im unteren Teil der Oberfläche. Diesen kann man kopieren und in das Skript einbauen, so dass auch in der Programmierung ungeübten Personen das Schreiben von Skripten möglich ist. Für die Verwendung des Skriptes startet man GRASS am besten im textbasierten Modus (Eingabe im Terminal: grass62 -text) und führt das Skript aus. Fallbeispiel „Skript für r.to.vect“ Aufgabenstellung: Vektorisieren von 23 verschiedenen Rasterkarten Vorgehensweise: Schreiben eines Skriptes, das die darin enthaltenen Aufgaben „stapelweise“ abarbeitet. Wenn GRASS im textbasierten Modus (durch Eingabe von „grass62 -text“ in einem Terminal) gestartet wird, kann man das Skript ausführen (z.B. durch Eingabe von „./onl_rtovect.sh“). chromgruen Support chromgruen Abbildung 2: Shell-Skript Für dieses Verfahren wurde exemplarisch die benötigte Zeit für das Konvertieren von Raster- in Vektordaten gemessen: Karte 20 9 min 89.533 erzeugte Flächen Karte 21 9:19 min 104.909 erzeugte Flächen Karte 22 7:53 min 24.804 erzeugte Flächen Karte 23 7:39 min 7.647 erzeugte Flächen * benutzte Hardware: Athlon-Prozessor mit 2 GB Arbeitsspeicher Anhand dieser Statistik sieht man deutlich, dass die Bearbeitungsdauer hauptsächlich von der Ausdehnung der „Current Region“ abhängt, und weniger von der Anzahl zu erstellender Polygone. (Die „Current Region“ ist ein in XY-Koordinaten angegebener Raum, in dem die Berechnungen stattfinden). Performance / Stabilität Was bei größeren Datensätzen oder / und weiter erstreckten Locations zeitraubend ist, ist die Funktionsweise des Map Displays. Bei jeder Tätigkeit im Display (Zoomen oder Aktualisieren) werden alle Daten für den sichtbaren Bereich neu berechnet, was relativ lange dauern kann. Das Programm läuft allerdings sehr stabil. Fehlermeldungen werden im Ausgabefenster angezeigt. Besonders zeitintensiv sind Konvertierungen von Rasterdaten, sowie das Im- und Exportieren größerer Datenmengen. Kernfunktionen Die einzelnen Funktionen sollen im Folgenden nach Themen geordnet beschrieben werden. Dabei werden zu jedem Thema die jeweils wichtigstenen Module erläutert, wobei stellenweise auch auf Konvertieren von Geodaten in digitale Form Import / Export Vektordaten: Über die Module „v.in.ogr“ bzw. „v.out.ogr“ werden viele Formate für den Im- bzw. Export unterstützt. Vor dem Import muss eine Location erstellt werden, wobei Angaben zur Art der Projektion und zur Ausdehnung des zu betrachtenden Gebietes gemacht werden müssen. Es ist aber auch möglich, die Einstellungen der Location beim Import der jeweiligen Vektorkarte anzupassen. Zur Zeit werden folgende Datenformate unterstützt: ESRI_Shapefile, MapInfo_File, Tiger, S57, DGN, Memory, CSV, GML, KML, Interlis_1, Interlis_2, SQLite, ODBC, PostgreSQL, MySQL Mit „v.in.ascii“ und „v.in.db“ können Daten aus Textformaten (für größere Datensätze vorteilhaft) bzw. Daten aus Datenbanken importiert werden. Mit „v.external“ werden externe Karten angezeigt, aber nicht importiert. Rasterdaten Für Rasterdaten gibt es die Module „r.in.gdal“ bzw. „r.out.gdal“. Hierbei werden folgende Formate unterstützt: AAIGrid, BMP, BSB, DTED, ELAS, ENVI, FIT, GIF, GTiff, HVA, JPEG, MEM, MFF, MFF2, NITF, PAux, PNG, PNM, VRT, XPM. Grid 3D Daten: Module: „r3.in.ascii“ bzw. „r3.out.ascii“. Mögliche Formate sind: ASCII 3D, Vis5D, VTK ASCII Es besteht aber auch die Möglichkeit, Grid 3D-Daten aus 3D-Punktwolken zu erzeugen (mit „v.to.rast3“) Topologie-Funktionen GRASS ist ein topologisches GIS. Das bedeuted, dass benachbarte geographische Komponenten einer Vektorkarte in Bezug zueinander stehen. Nicht-topologische GI-Systemen arbeiten mit sog. „Pseudo-Topologien“. Diese entstehen, wenn z.B. jedes zweier aneinander grenzender Polygone eine eigene Grenze besitzt. Da pseudo-topologische Daten weniger Rechenkapazität benötigen, gibt es 2 Module, solche Daten zu erstellen: „v.in.ascii“ für das einbinden von Punktdaten und „v.surf.rst“, mit dem räumliche Analysen von Punkt- und Liniendaten möglich sind. Für das Topologie-Management gibt es 4 Funktionen: ● „v.build“ ermöglicht den Neuaufbau der Topologie. Es können Informationen zur Topologie in der Standardausgabe angezeigt werden. ● „v.clean“ bereinigt Topologie-Fehler. Es stehen 12 Operatoren zur Verfügung (fürderen Funktionen vgl. Skript GDF Hannover). So können z.B. mit dem Operator „snap“ Linien mit den nächstliegenden Vertices verbunden werden. Zu den jeweiligen Operatoren kann immer ein Treshold in den jeweiligen Map Units angegeben werden. ● „v.digit“ ist das Modul für manuelles Digitalisieren von Vektordaten. Für größere Datenmengen bietet sich allerdings das automatisierte Bereinigen von Fehlern an. ● mit „v.type“ können Daten, wenn möglich, von einem Topologie-Typ in einen anderen konvertiert werden (z.B. von „lines“ nach „boundaries“) chromgruen Problemstellungen, die bei den Tests auftraten, eingegangen wird. ● points: Punkte ● lines: Eine ausgerichtete Sequenz verbundener Vertices zwischen zwei Endpunkten (nodes) ● boundary: Eine Grenze, die eine Fläche beschreibt ● centroid: Ein Punkt innerhalb einer geschlossenen Grenze ● area: Der topologische Verbund von boundary und centroid ● face: 3D area Es ist weiterhin geplant, die Vektortypen kernel (3D-centroid) und volume (topologischer Verbund von face und kernel) zu implementieren. Digitalisieren Das Digitalisieren ist in GRASS relativ benutzerunfreundlich. Man muss zuerst einen Monitor starten und gelangt dann über den Befehl „v.digit“ an eine Werkzeugleiste, mit der man in einem neu aufgerufenem Monitor digitalisieren kann. Die einzelnen Schritte sind in der Dokumentation gut beschrieben. Es besteht die Möglichkeit, sämtliche Arten von Vektoren zu digitalisieren, man kann Vertices verschieben oder schaffen, eine Linie teilen oder eine Abbildung 3: Oberfläche für das Digitalisieren komplette Linie bzw. Polygon komplett verschieben. Über das Attribut-Fenster kann man Daten eingeben, in den Einstellungen lässt sich die „Schnappdistanz“ einstellen. Allerdings springt der Cursor, wenn man sich in der Nähe eines Vertex befindet, nicht automatisch auf den Vertex, sondern erst beim „Klick“. Ein weiterer großer Nachteil ist, dass man keine Kurven digitalisieren kann. Eine Besonderheit von GRASS ist das Digitalisieren von Rasterdaten mit „r.digit“. So kann man über einen Monitor Linien, Flächen und Kreise digitalisieren. Wie die meisten anderen interaktiven Programme erfordert dies die Eingabe des Befehls in das Terminal, in dem GRASS gestartet wurde, anstatt des Weges über das Ausgabefenster. Datenbank-Management Das Management der Datenbanken in GRASS funktioniert über Datenbank-Management-Systeme (DBMS). Der Aufbau folgt der gewohnten Zweiteilung von Geometrien und Attributen. Die Geometrien liegen wie schon beschrieben entweder als topologische Daten vor und sind dann im nativen Format von GRASS gespeichert - die Ordnerstruktur befindet sich dann immer im jeweiligen Mapset-Ordner - , oder sie können als pseudo-topologische Daten (z.B. shapefiles, DGNDateien) angezeigt werden, dann ist eine Bearbeitung der Daten allerdings nicht möglich. Dies erfordert das vollständige Importieren der Daten. Die Attribute können in allen möglichen relationalen Datenbanken gespeichert sein, z.B. PostgreSQL, Oracle oder MySQL. Die Verbindung einer Vektorkarte mit einerAttributtabelle wird automatisch über eine „dbln“-Datei geregelt. Über ein DBMI (Database Management Interface) kann der Benutzer den Bezug zwischen Geometrien und Attributen festlegen. Standardmäßig werden die Daten allerdings im dBase-Format gespeichert. Zwar ist die Bearbeitung eine dBaseDatei relativ einfach und ohne SQL-Kenntnisse möglich, jedoch ist das GRASS-interne chromgruen Es werden folgende Vektortypen unterschieden: Arbeiten mit Datenbanken innerhalb von GRASS Die Module für das Datenbank-Management sind grob in 2 Gruppen aufgeteilt. ● Die db.*-Befehle regeln den Bezug zur Datenbank: Mit dem Modul „db.execute“ können SQL-Befehle direkt in die Kommandozeile eingegeben werden, es ist so möglich, direkt auf die Datenbank zuzugreifen. Über das Modul „db.connect“ wird die Verbindung zur Datenbank geregelt. ● mittels der v.db.*-Befehle wird der Bezug zwischen Vektorkarte und Tabellengeregelt. Die einzelnen Vektorkarten können mit mehreren Tabellen verbunden werden. Dadurch erhält man verschiedene Layer. Ein Layer ist also nichts anderes als ein „Link“ zwischen Geometrie und jeweiliger Attributtabelle. Welches Objekt mit welchem Attribut verknüpft wird, ist durch den Kategorie-Wert (cat) festgelegt, also eine Objekt-ID. Wird einem Objekt in einem Layer keine Kategorie-Wert zugeteilt, so wird es nicht angezeigt. Dies ist ein Vorteil, wenn z.B. mehrere Objekttypen in einer Vektorkartevorliegen und ein Objekttyp nicht dargestellt werden soll. Optional ist sind diese Module auch im den GIS-Manager über den Menüpunkt „Datenbanken“ aufrufbar. (siehe Kapitel „Benutzeroberfläche“) Die Eigenschaften der Geometrien können mit „v.to.db“ zu der Datenbank hinzugefügt werden. Mit „v.extract“ ist es wiederum möglich, Vektorgeometrien und Attribute aus einer Karte zu selektieren und in einer neuen Karte zu speichern. Selektieren der Daten in GRASS „Intuitives“ Selektieren der Daten über das Klicken auf ein Objekt oder die Auswahl in einer Attributtabelle, wie man es von anderen GIS-Programmen kennt, ist bei GRASS nicht möglich. Die Selektion von Daten ist über verschiedene Module geregelt: ● Über einen SQL-Befehl selektierte Daten (mit „v.db.select“) können in das Standardausgabefenster gedruckt werden, allerdings nicht im Monitor markiert werden. ● das Editieren von Attributwerten eines bestimmten Objektes zwar auch über dessen Selektion im graphischen Fenster möglich, man muss allerdings den Weg über das Modul „v.digit“ wählen. Die Selektion nach Attributen läuft über das Modul „v.extract“. Dabei werden die selektierten Objekte in einer neuen Karte gespeichert. Man kann zum einen nach Kategorie-Werten selektieren, zum anderen über SQL-Statements. Durchführen von Field Calculations Dies ist möglich mit dem SQL-Statement „update“ über das Modul „db.execute“. Liegen die Daten 2 Support von SQL-Befehlen siehe Manual. chromgruen Management dieser Tabellen eben durch den fehlenden SQL-Support relativ eingeschränkt. So ist beispielsweise das Löschen von Spalten nicht möglich.2 Liegen die Daten in relationalen Datenbanken vor, so ist der volle SQL-Support gewährleistet. Die Daten können, bei PostGISSupport auch mit Koordinaten, am günstigsten in der Datenbank selbst manipuliert werden. Relative Bezüge herstellen (Joins and Relates) Das Erstellen relativer Bezüge ist in GRASS durchaus sehr gut möglich, es erfordert allerdings schon eine gewissen Kenntnis der Module. Im GIS-Manager sind diese hauptsächlich über den Menüpunkt „Datenbanken“ aufrufbar. Je nach Aufgabenstellung sind verschiedene Schritte notwendig. Um eine Tabelle mit einer Vektorkarte zu verbinden, ist zunächst für die jeweilige Vektorkarte eine neue Tabelle zu erstellen (mit „v.db.addtable“). Dabei kann man – neben der Vergabevon Tabellenname und Spaltennamen – einstellen, in welchen Layer die Tabelle eingefügt werden soll. Nun ist es möglich, über das Modul „db.execute“ via SQL-Befehl Daten aus anderen Tabellen in diese Tabelle zu importieren. Werden die Daten in der Vektorkarte nun verändert, bleiben sie in der Originaltabelle in ihrem ursprünglichen Zustand erhalten. Möchte man jedoch das Gegenteil erreichen, und auch die Daten der Originaltabelle verändern (im Jargon „Relate“ genannt), so erreicht man dies, indem man die Vektorkarte mit der Tabelle verbindet (Modul „v.db.connect“). Im GIS-Manager befindet sich dieses Modul im Menüpunkt „Vektor“. Auch hier ist wieder einstellbar, über welchen Layer die Verbindungerstellt werden soll. Verknüpfen einer Vektorkarte mit einer Datenbank Dies ist möglich über das Modul „v.db.connect“. Dazu muss die Datenbank allerdings über einen Primärschlüssel verfügen. Dieser wird dann dem Kategorie-Wert des jeweiligen Vektorobjektes zugeordnet. Das Manipulieren der Daten wirkt sich nun allerdings auch auf die angekoppelte Datenbank aus. In den meisten Fällen ist es daher ratsam, eine Kopie der Original-Datenbank mit der Vektorkarte zu verknüpfen. Abbildung 4: Graphische Oberfläche "v.db.connect" Fallbeispiel: Exportieren von Vektordaten in eine PostGIS-Datenbank Das folgende Beispiel beschreibt den Export von Vektordaten in eine PostGIS-Datenbank und die Zusammenführung mehrerer Tabellen innerhalb der Datenbank. Die Daten aus 23 Karten sollten in die Datenbank überführt werden. Dazu wurde ein Skript geschrieben, durch das die einzelnen Schritte hintereinander abgearbeitet wurden. Der Befehl, exemplarisch für 1 Karte lautet: v.out.ogr input=nrw2kl1kl8kl7 type=area 'dsn=PG:host=localhost dbname=nrw2005 user=postgres' olayer=nrw2kl1kl8kl7 layer=1 format=PostgreSQL Für das Überführen der Daten in 1 Tabelle wurde innerhalb der Datenbank über einen SQL-Befehl chromgruen in einer Datenbank mit vollem SQL-Support vor, können mit diesem Modul auch komplexere Berechnungen durchgeführt werden. Eine intuitivere Bedienung über einen Field-Calculator, wie er bei anderen GIS-Programmen existiert, ist leider nicht möglich. INSERT INTO ergebnis (geometry, value) SELECT nrw2kl1kl8kl7.wkb_geometry, nrw2kl1kl8kl7.a_a_a_valu FROM nrw2kl1kl8kl7; Geoprocessing: Datenmanipulation und Analysefunktionen Konvertieren von Daten (Raster <-> Vektor) Konvertieren von Raster- in Vektordaten Diese Funktion wird über das Modul „r.to.vect“ gesteuert. Dabei wird aus jedem Pixel ein Polygon erzeugt, welches als Attribute eine eigene ID sowie den Wert der Rasterzelle erhält. Aus aneinandergrenzenden Rasterzellen mit dem gleichen Wert wird lediglich 1 (diese umfassendes) Polygon erzeugt. Als Output wird eine neue Vektorkarte generiert, die Rasterkarte bleibt vorhanden. Sollen nicht alle Rasterzellen, sondern nur die mit einem bestimmten Wert vektorisiert weredn, kann man dies mit dem Modul „r.contour“ tun. Abbildung 5: Graphische Oberfläche des Moduls "r.to.vect" Beispiel Aus einem Satellitenbild sollten für jedes Pixel ein Polygon erzeugt werden, dabei sollten Pixel mit dem gleichen Wert eine zusammenhängende Fläche bilden. Folgende Punkte sind bei der Durchführung aufgefallen: 1. Bei zu starkem Zoom im Map Display kam es zum Absturz des Programms. 2. Die GRID-Resolution ist ausschlaggebend für die Lagegenauigkeit der Karte im Raum. Ist die GRIDResolution zu hoch eingestellt (in diesem Beispiel war sie zuerst auf einen Wert von 30 gesetzt), so verschob sich die Karte um ca. 4 Meter nach Osten bzw. 4,35 Meter nach Süden. Bei einer GRIDResolution von 1 lag die Verschiebung bei nur noch Abbildung 6: Erzeugte Polygone liegen halbtransparent auf dem Rasterbild 3cm bzw. 25 cm. Nachteil: Die Rechendauer für das Umrechnen der Rasterzellen in Polygone als auch für das Exportieren in ein Shapefile erhöhte sich. (Umrechnen von Raster nach Vektor: Erst ca. 1 Minute, dann ca. 30 Minuten; das Exportieren dauerte erst ca. 2 Std., dann ca. 4 Std) 3. Beim Umrechnen der Raster- in Vektordaten kam es an einigen Stellen zu Überschneidungen, d.h. die Polygone lagen nicht genau auf den Rasterzellen. Das lag wahrscheinlich an den Voreinstellungen für die Erstellung der Location, diese sollte quadratisch angelegt werden, so dass die „default region“, mit der GRASS später rechnet, ebenso viele Spalten wie Zeilen enthält. chromgruen gelöst: Konvertieren von Vektor- in Rasterdaten Diese Funktion ist zu den gleichen Bedingungen durchführbar wie die oben beschriebene. Über den Befehl „v.to.rast“ kann man eine graphische Oberfläche aufrufen, über die man die verschiedenen Einstellungen vornehmen kann. Dabei kann die Attributspalte, die für die Farbgebung relevant sein soll, angegeben werden. Datentransformation (Georeferenzieren, Projektion ändern) Georeferenzieren Die Prozedur für das Georeferenzieren wurde für die Version 6.2 völlig überarbeitet. Was vorher mehrere Schritte über verschiedene Befehle in Anspruch nahm, wird in dieser Version über eine Graphische Oberfläche in 2 Schritten abgefasst: 1. Aufrufen des GUI Georectifiers über die Taskleiste von GRASS, Eingabe der zu georeferenzierenden Karte, wenn nötig, anlegen einer Gruppe, für die die Georeferenzierung gelten soll. 2. Starten des Georeferenzier-Vorganges: Klicken auf die zu georeferenzierende Karte und Eingabe der neuen Koordinaten für den angegklickten Punkt. (Diese können z.B. über den Befehl „d.what.rast“ von einer bereits georeferenzierten Karte abgefragt werden. Nach Eingabe von min. 4 Koordinaten Georeferenzierung starten. Abbildung 7: Schritt 2: Passpunkte eingeben und Bild entzerren chromgruen Des Weiteren sollte bei der Erstellung der Location darauf geachtet werden, dass die Ausdehnung der „default region“ ziemlich genau das zu berechnende Gebiet umfasst, da ansonsten der Rechenaufwand größer wird. In der Hilfe-Datei (im Verzeichnis r.proj) befindet sich eine ausführliche Anleitung für die Transformation einer Karte in eine andere Projektion. Unter anderem wird darauf hingewiesen, dass der Rechenaufwand sehr hoch sein kann, und somit das Gebiet, in welches projiziert werden soll, möglichst gut abgesteckt sein sollte. Dies kann man dadurch erreichen, dass man zuerst eine Vektordatei mit der Umrandung des Rasterbildes umprojiziert, und so die Ausmaße der neuen Location genau ermittelt. Abbildung 9: Pixel sind nun nicht mehr quadratisch Das Ändern der Projektion für 1 Satellitenbild dauerte ca. 2 Std. Für einen kleinen Bereich wurde die Prozedur r.to.vect durchgeführt. Durch die Transformation des Abbildung 8: Einstellungen für die Transformation Rasterbildes werden die Pixel natürlich leicht verzerrt. Vector Processing Im Bereich Vector Processing stehen verschiedene Funktionen zur Verfügung, die hauptsächlich über das Modul „v.overlay“ gesteuert werden. In diesem Modul fließen 2 Vektorkarten in die Berechnung ein, und je nach gewähltem Operator erhält man als Ergebnis eine Vektorkarte mit unterschiedlichen Teilmengen der beiden Eingangskarten. In der Attributtabelle der resultierenden Vektorkarte werden die Spalten der in die Berechnung eingeflossenen Attributtabellen aufsummiert. Wählbare Operatoren: ● „or“ Datenvereinigung („union“), die Daten beider Eingangskarten werden in die neue Karte übernommen ● „and“ Datenverschneidung („intersection“), nur die Daten aus dem Überschneidungsbereich werden in die neue Karte übernommen ● „not“ Daten ausschneiden („cutout“), sich überschneidende Daten werden nicht mit in die neue Karte übernommen ● „xnot“ Datenüberlagerung („overlay“), nur die Daten aus einer Karte, die in dem Überschneidungsbereich liegen, werden übernommen. Weitere Funktionen im Bereich Vector Processing: chromgruen Ändern der Projektion Zusammenfügen von Karten: Des weiteren besteht die Möglichkeit, mit dem Werkzeug „v.patch“ aneinander angrenzende Karten zusammenzufügen. Dafür müssen allerdings die Atrributtabellen in ihrem Aufbau identisch sein. Die Berechnung ist aber auch mit „v.overlay“ möglich. ● Verbinden von Polygonen mit gleichem Attributwert: Möchte man nun die Linie, an der zusammengefügte Karten aneinandergrenzen aufbrechen, so müssen zuerst etwaige Topologiefehler, die beim Überschneiden von Linien auftreten können, mit dem Modul „v.clean“ bereinigt werden. Danach können mit „v.dissolve“ die Polygone mit gleichem Wert zusammengefügt werden. ● Karten erstellen durch Selektion: „v.select“ erzeugt eine Karte, die Teilbereiche der ursprünglichen Karte enthält (siehe Beispiel). Mit „v.extract“ wird eine Karte erzeugt, die Teilmengen der ursprünglichen Karte enthält. ● Nachbarschaftsanalysen: Unter diesen Begriff fallen bei GRASS zum einen das Erstellen von Polygonen aus einer Punkt-Wolke. Je nach Berechnungsmethode werden ThiessenPolygone oder Delauney-Dreiecke berechnet. Die zu benutzenden Module sind „v.voroni“ und v.delauney. Zweitens ist das Berechnen von Distanzen zwischen Objekten verschiedener Vektorkarten möglich (mit „v.distance“, siehe Beispiel) ● Sampling: Mit dem Modul „v.sample“ können Vektordaten einer Karte (nur für Punkte möglich) mit Rasterdaten verglichen werden. Die Vektordaten erhalten als neue Spalte die Differenz der Werte einer ausgewählten Spalte der Vektorobjekte und der Rasterdaten. Dabei sind die bekannten Interpolations-Möglichkeiten „nearest neighbor“, „cubic convolution“ oder „bilinear interpolation“ wählbar. Es gibt weiterhin eine Vielzahl „kleinerer“ Module, die für einige Problemstellungen gut geeignet sind. So ist es möglich, ein rechtwinkliges Vektorgitter zu erzeugen, ein Umrandungspolygon der current region oder einer Punktwolke zu erstellen, parallele Linien oder bestimmte Anzahl Punkte zu erstellen, die sich zufällig über den Raum verteilen. Beispiele Karte mit Teilbereichen einer Vektorkarte erstellen (mit „v.select“) Mit diesem Werkzeug wurden die Polygone in eine neue Karte überführt, die in der Abbildung von dem quadratischen Polygon im Vordergrund (zumindest in Teilbereichen) überlagert werden. Der Unterschied zu der Methode der Datenverschneidung (mit „v.overlay“) liegt in der Attributtabelle der neu erstellten Karte. Mit „v.overlay“ würde erstens das quadratische Polygon mit in die neue Karte integriert und zweitens die Spalten der jeweiligen Attributtabellen in die neue Attributtabelle übernommen. Abbildung 10: Teilmenge der Vektorkarte mit "v.select" chromgruen ● chromgruen Berechnung von Distanzen (mit „v.distance“) Dieses Modul beinhaltet eine Vielzahl von Möglichkeiten. In diesem Beispiel wurde die kürzeste Distanz zischen Punkten und Linien (Straßen) gemessen (in einem Bereich von <100m) und als Wert zu der Attributtabelle der Punkte hinzugefügt. Man kann aber auch z.B. die Distanz zum nächsten Punkt (über die Linie), den Winkel zur Linie oder einen Attributswert der Linie als Attribut zu den Punkten übernehmen. Als Option kann man eine Vektorkarte der Distanzen in Form von Linien darstellen lassen (in diesem Fall rot dargestellt). Abbildung 11: Vektorkarte mit Linien (rot), welche die Punkte mit den Straßen verbinden Netzwerk-Funktionen GRASS hält eine Reihe nützlicher Netzwerkfunktionen bereit, die im Folgenden kurz erläutert werden sollen. Für das Arbeiten mit Netzwerkfunktionen müssen die Daten als Linien vorliegen. ● Kürzeste-Weg-Analyse („d.path“ und „v.net.path“): Mit dem Modul „d.path“ ist es möglich, interaktiv über einen Monitor Start- und Endpunkt im Netzwerk zu wählen. (siehe Beispiel) ● Subnetze ausweisen („v.net.alloc“): Zum Ausweisen von Gebieten optimaler Erreichbarkeit (siehe Beispiel). ● Weiterhin sind einige andere Netzwerk-Funktionen in das Programm integriert, z.B. die sog. Traveling-Salesman-Problematik, mit der eine optimale Route auf einem Netzwerk berechnet wird, bei der mehrere fixe Punkte in den Routenverlauf einbezogen werden können. Beispiele Kürzeste-Weg-Analyse (mit „d.path“) In diesem Beispiel wurde das Modul „d.path“ gewählt, dass sich relativ gut für die Darstellung des kürzesten Weges eignet. In dem geöffneten Monitor kann man zwei Punkte anklicken, zwischen denen dann die Berechnung vollzogen wird. Es ist möglich, Kostenwerte (z.B. Höchstgeschwindigkeiten) für beide Richtungen eines Linienverlaufes anzugeben; auch den verschiedenen Nodes kann eine Attributsspalte mit Kosten zugewiesen werden. Dies wirkt sich dann in Form eines erhöhten Widerstandes auf den gewählten Weg aus. Abbildung 12: Berechnung des schnellsten Weges chromgruen Subnetze ausweisen (mit „v.net.alloc“) Hierbei werden Gebiete optimaler Erreichbarkeit auf Basis von Linien (Straßen) dargestellt. Um zu diesem Ergebnis zu kommen, sind einige Schritte notwendig: Die Vektorkarte mit den Märkten (Punkten) muss mit der Straßenkarte verschnitten werden (mit „v.patch“). Dann müssen mit „v.distance“ die Punkte mit dem Straßennetz verbunden werden, und diese Distanzen ebenfalls mit der Straßenkarte in einer neuen Karte kombiniert werden. Zu beachten ist, dass bei der Erstellung einer neuen Karte immer jeweils die Datenbankverbindung der Vektorkarte zugewiesen werden muss, wenn erforderlich. Mit „v.clean“ ist weiterhin eine topologische Säuberung erforderlich. In diesem Beispiel ist etwa der gelbe Punkt aufgrund eines topologischen Fehlers nicht mit dem Netzwerk verbunden. Abbildung 13: Gebiete optimaler Erreichbarkeit Raster Processing Das Arbeiten mit Rasterkarten ist eines der Kernelemente von GRASS. Es erfolgt hauptsächlich über sog. „Monitore“. Es können bis zu 7 solcher Monitore gleichzeitig aktiviert sein; der Befehl zum Aufrufen eines Monitors lautet „d.mon“. Mit „d.rast“ werden die einzelnen Rasterkarten in den Monitor geladen. Funktionsumfang Abfragen von Informationen und Statistiken Es gibt verschiedene Optionen zum Abfragen von Rasterinformationen. Mit „r.what.rast“ können Koordinaten und Pixelwerte interaktiv über das Klicken auf die in einen Monitor geladene Karte angezeigt werden. Über das Werzeug „r.stats“ kann je nach gewähltem Parameter z.B. die Anzahl der Zellen (die Rasterwerte werden in Klassen geordnet angezeigt) mit dazugehöriger Fläche ausgegeben werden. Die Ausgabe kann auch in eine Datei umgeleitet werden. Weitere Optionen in dieser Hinsicht bietet auch „r.reports“. Des Weiteren ist das Erstellen eines Reports basierend auf Statistiken zweier sich überlagernder Rasterkarten möglich („r.coin“). Diese über einfaches Anzeigen von Informationen hinaus reichende Funktionen sind in dem Kapitel „Statistische Funktionen“ beschrieben. Manipulation und Analyse Die Anwendungen sind so zahlreich, dass die Wichtigsten im Folgenden nur stichwortartig beschrieben werden. Bei der Berechnung werden jeweils immer neue Rasterkarten erstellt, so dass die Originaldaten erhalten bleiben. ● Überlagerung mehrerer (bis zu 11) Rasterkarten, wobei für jede Kombination der Werte überlagernder Rasterzellen in der Output-Karte eine neue Kategorie geschaffen wird. Die Rasterwerte der Input-Karten werden für jede Rasterzelle mitgeführt, so dass die OutputKarte mehrere Spalten enthält. Modul: „r.cross“. ● Nachbarschaftsanalysen: Auf jede Rasterzelle wirken sich bei der Berechnung die jeweiligen Werte der umliegenden Zellen aus. Die Werte aller Rasterzellen werden somit neu berechnet. Es gibt mehrere Operatoren (Summe, Durchschnitt, Medianwert), mit denen ● Reklassifizierung von Rasterdaten, wobei Rasterdaten in neue Kategorien eingeteilt werden können. Modul: „r.reclass“ --> siehe Beispiel. Des Weiteren besteht die Möglichkeit, den verschiedenen Rasterzellen eine eigene Farbcodierung zuzuweisen (mit „r.color“). ● Das „Resampling“ (Veränderung der Größe der Rasterzellen) wird anhand der Regionseinstellungen vorgenommen. Setzt man dort beispielsweise die Grid Resolution höher, werden die Rasterzellen nach der „nearest neighbor“-Methode neu berechnet. Modul: „r.resample“ ● Erstellen von Puffern für Rasterdaten Darüber hinaus sind weitere Funktionen für hydrologische Berechnungen, für sog. „Buschfeuermodellierungen“ und für Landschaftsstrukturmodellierungen in das System integriert. Diese lassen sich am Besten im GIS-Manager unter dem Menupunkt „Raster“ aufrufen, da sie dort strukturiert aufgeführt sind. Beispiele Sichtbarkeitsanalyse („r.los“) Mit diesem Werkzeug können alle von einem bestimmten Standort einsehbaren Bereiche der Karte abgebildet werden (siehe Abbildung). Dabei erhalten alle anderen Pixel als Wert „no data“, der Bereich, den die Sichtbarkeitsanalyse ausschließt (hier gelb dargestellt) erhält den Wert 0. Die Funktion ist mit Hilfe des GUI selbsterklärend aufgebaut, man kann den Bereich der Betrachtung sowie die Höhe des Betrachters einstellen. Die in blau dargestellten Zellen enthalten als Wert den vertikalen Betrachtungswinkel zur betrachteten Rasterzelle. Rasterwerte und Profile entlang von Transekten anzeigen lassen („d.profile /r.profile /r.transect“) Abbildung 14: Sichtbarkeitsanalyse Mit den oben genannten Werkzeugen können Profile entlang von Transekten erzeugt werden. Die Lagebestimmung der Transekte erfolgt wieder über einen Monitor, den man vorher starten muss. Die Handhabung ist übersichtlich: Mit der linken Maustaste werden Koordinaten abgefragt, mit der mittleren Maustaste Start- und Endpunkte der Transekten festgelegt. Eine präzise Festlegung der Koordinaten über dieses Verfahren ist allerdings kaum möglich. Die Ausgabe der Rasterwerte (Entfernung zum Startpunkt, geographische Koordinaten und Werte der Rasterzellen) kann in ein Textformat umgeleitet werden. Abbildung 15: Profile erstellen mit „d.profile“ chromgruen festgelegt werden kann, unter welchen Parametern die Berechnung durchgeführt werden soll. Modul: „r.neighbors“ chromgruen Reklassifizierung („r.reclass“) Mit diesem Werkzeug ist es möglich, Rasterdaten in neue Kategorien einzuteilen. Die Handhabung kann auf verschiedene Weisen erfolgen. Am einfachsten funktionierte es über eine interaktive Eingabe der neuen Daten in das Terminal. Gibt man dort den Befehl „r.reclass“ ein, so wird man zuerst nach dem Namen der Input-Karte, danach nach dem der neuen Output-Karte gefragt. Als nächsten Schritt legt man die Regeln fest, in diesem Beispiel 1=1 / 2=1 / 3=1 / ... / 7=2 / 8=2 / 9=2 /... . Mit der Eingabe „end“ wird die neue Karte erstellt. Abbildung 16: Reklassifizierung eines Satellitenbildes Kostenanalyse („r.cost“) Mit diesem Werkzeug ist es möglich, aus einem Rasterbild, dessen Werte der Rasterzellen Kosten symbolisieren, eine Rasterkarte zu erstellen, die darstellt, wie weit sich ein Gebiet mit gegebenen Kosten erstreckt. In der Abbildung symbolisieren die verschiedenen Farben in Klassen eingeteilte Kosten, die mit über die Distanz hinweg kumuliert werden. Mit „r.drain“ besteht des Weiteren die Möglichkeit, eine Route zu erstellen, die den Weg der geringsten Kosten zwischen zwei Punkten darstellt. Abbildung 17: Kostenanalyse Hydrologische Modellierung Zusätzlich zu den Standardfunktionen der Rasteranalysen gibt es bei GRASS drei Bereiche, bei denen es um die Entwicklung von Modellen auf Rasterdatenbasis geht. Dies sind die „Buschfeuermodellierung“ und die „Landschaftsstrukturmodellierung“, mit der hauptsächlich über verschiedene Sampling-Methoden Berechnungen gestartet werden können, wobei dann über verschiedene Indikatoren Aussagen zur Landschaftsstruktur getroffen werden können. Der dritte Bereich ist die hydrologische Modellierung. Auf diese soll im Folgenden etwas genauer eingegangen werden. ● Flussnetzwerk in ein DGM eintiefen: siehe Beispiel ● Einzugsgebietsanalysen: siehe Beispiel ● Füllen eines Sees bis zu einem angegebenen Level auf Grundlage eines DEM's ● Überflutungszenarien: Bei der Berechnung werden u.a. Rasterkarten mit Niederschlagsmengen, Versickerungsmengen und Abflussmengen benötigt. ● Erzeugen von Fließlinien auf Grundlage einer Rasterkarte (mit „r.flow“) Beispiele Flussnetzwerk in ein DGM eintiefen (mit „r.carve“) Abbildung 18: Eingetiefter Fluss in einem Rasterbild in 3D-Ansicht Einzugsgebietsanalysen (mit „r.watershed“) Hierbei ist eine hohe Vielfalt an Optionen gegeben. So können neben Einzugsgebietsflächen auch die Abflüsse selbst als Rasterdaten ausgegeben werden, wie in der Abbildung dargestellt ist. Dabei wird die Fläche des Einzugsgebietes, von der ein Fluss das Wasser bezieht, in Fließrichtung immer weiter aufsummiert (bis zum angegebenen Treshold), so dass man für jede Rasterzelle des Flusses ablesen kann, wie groß die Fläche des Einzugsgebietes bis zu dieser Stelle ist. Abbildung 19: Berechnung der Abflüsse aus den Einzugsgebieten Statistische Funktionen Für statistische Berechnungen lässt sich grundlegend das Programm „R“ empfehlen, ein Open Source Projekt, welches über ein PlugIn auf GRASS-Funktionen zurückgreifen kann. Vor einem kurzen Überblick über den Umfang dieses Programms sollen aber noch die statistischen Funktionen in GRASS erläutert werden. Es gibt in GRASS relativ viele unterschiedliche Module, mit denen sich Werte aus Karten anzeigen lassen, wie die bereits beschriebenen Module „r.what.rast“ oder „r.stats“. Da die Statistikfunktionen in der Hilfedatei den jeweiligen Raster- oder Vektorfunktionen zugeordnet sind und somit das Arbeiten über die manuelle Eingabe recht unübersichtlich ist, bietet sich in diesem Fall wieder der Weg über den GIS-Manager an. Dabei sind die statistischen Funktionen jeweils immer zusammengefasst als unterster Menupunkt im Hauptmenu (in den Kategorien Raster, Vektor, Imagery und Grid3D) aufgeführt. GRASS enthält einige Statistik-Module, die über das bloße Abfragen von Werten hinausgehen: ● Für Rasterkarten: ○ Korrelationen zwischen einzelnen Karten, das Ergebnis wird als Matrix ausgegeben („r.covar“) ○ Lineare Regressionen zweier Karten, wobei die Steigung der Regressionsgeraden, ihr YAchsenabschnitt, der Medianwert der Werte der Rasterzellen beider Karten sowie die Standardabweichungen berechnet werden. („r.regression.line“) ○ Kreuztabellierungen: siehe Beispiel („r.coin“) ○ Stichproben anhand von Transekten („r.profile“): Es wird die Kilometrierung und sowie zugeordnet die Werte der Rasterzellen ausgegeben. Leider wird bei diesem Vorgang keine Karte mit dem Transekt erzeugt, dafür muss man das Modul „r.drain“ benutzen. ○ Univariate Statistiken erstellen („r.univar“). Ausgabe verschiedener statistischer Werte einer Rasterkarte, z.B. Minimum und Maximum des Wertebereichs, Standardabweichung, Varianz, etc. chromgruen Durch die Berechnung eines digitalen Geländemodells aus verschiedenen Punkten mit unterschiedlichen Höhenangaben kommt es vor, dass gerade bei kleineren Tälern in ihrer Beschaffenheit interpolationsbedingte Unregelmäßigkeiten auftreten. Mit dem Modul „r.carve“ kann man diese etwas abschwächen, indem man das Rasterbild im Bereich von Liniensegmenten (Flüssen) etwas eintieft. Das Modul ist sehr übersichtlich aufgebaut, es ist möglich dem Fluss eine bestimmte Tiefe und eine bestimmte Breite zuzuweisen. Für Vektorkarten: ○ Univariate Statistiken erstellen („v.univar“) ○ Normalität der Punkteverteilung testen („v.normal“): Es werden in Abhängigkeit einer anzugebenden Attributspalte verschiedene Testverfahren durchgeführt. Unterstützt werden z.B. der Kolmogorov-Smirnov-Test oder der Chi-Quadrat-Test. Die Ergebnisse der jeweiligen Tests werden in der Ausgabe angezeigt. ○ Univariate Statistiken für Zellen einer Rasterkarte erstellen, die von Vektordaten überlagert werden. Diese Daten werden in die Attributtabelle der Vektorobjekte geschrieben, dazu werden neue Spalten erzeugt. („v.rast.stats“) Des Weiteren gibt es für Images und Grid3D-Daten statistische Werkzeuge, die in ihren Funktionen aber denen der Funktionen für Rasterkarten ähneln. Prinzipiell gilt festzuhalten, dass es für nahezu jede „einfachere“ statistische Problemstellung, die auf eine Auswertung einer oder mehrerer übereinanderliegender Karten beruht, mit Hilfe dieses Programmes gelöst werden kann. Für die Verarbeitung komplexerer mathematischer Funktionen wird das Programm „R“ empfohlen, dass über ein GRASS-PlugIn verfügt. Beispiele Kreuztabellierungen („r.coin“) Bei dieser Funktion werden die Werte sich überschneidender Rasterzellen (aus 2 Rasterkarten) tabellarisch aufgeführt, wobei die Werte der 2. Karte den Werten der 1. Karte zugeordnet werden. In diesem Beispiel sind für das Jahr 2005 die Pixelwerte eines Satellitenbildes reklassifiziert worden (siehe BSP „r.reclass“). Mit dem Modul „r.coin“ werden nun die Werte aus dem Jahr 1975 mit den reklassifizierten (in 2 Klassen eingeteilten) auf Basis ihrer Lage verglichen: chromgruen ● COINCIDENCE TABULATION REPORT | | | | Layer 1: reclass -- NO | | Layer 2: raster8_klass19-- | | Mask: none | | Units: square kilometers | |------------------------------------------------------------------------------| | Window: North: 5768600 | West: 2670610 | | East: 2674610 South: 5764600 | | +------------------------------------------------------------------------------+ Panel #1 of 1 | | | reclass cat# | | 1 | 2 | Panel Row Total | w cat 0 | w/o cat 0 | |--------------------------------------------------------------------| |r 1 | 2.08 | 0.01 | 2.09 | 2.09 | |a 2 | 2.39 | 0.02 | 2.41 | 2.41 | |s 3 | 2.53 | 0.09 | 2.62 | 2.62 | |t 7 | 0.10 | 0.58 | 0.68 | 0.68 | |e |r 8 | 9 | 0.77 | 0.03 | 2.89 | 1.16 | 3.66 | 1.20 | 3.66 | 1.20 | |8 10 | 0.06 | 1.54 | 1.60 | 1.60 | |_ 11 | 0.02 | 1.73 | 1.75 | 1.75 | Text 1: Auszug der Ausgabe von "r.coin", Spalten: reklassifizierte Werte (1: 1-3 / 2:711) Anhand dieser Auswertung wird deutlich, dass 2,89 km² Fläche mit dem Wert 8 (hier fett gedruckt) mit der Kategorie 2 der reklassifizierten Karte übereinstimmen, während 0,77 km² in ihrer Lage sich mit Gebieten der Kategorie 1 decken. Daraus wird z.B. in diesem Fall die Veränderung der Flächennutzung quantifiziert, in diesem Beispiel ist im Zeitraum 1975-2005 0,77 km² des Mischwaldes (Wert 8) in versiegelte Fläche (reklassifizierter Wert 1) umgewandelt worden. Das Programm „R“ Funktionsumfang von R: Linerares und nicht-lineares Modellieren, statistische Tests, Zeitreihenanalysen, Klassifikationen, Erstellen von Klustern, uvm. „spgrass“6 ist die aktuelle Version des R/GRASS Interfaces. „R“ kann so in einer laufenden GRASS-Session gestartet werden. Dadurch ist es möglich, erweiterte statistische Funktionen für GRASS-Daten zu nutzen. chromgruen | GRASS-intern gibt es verschiedene Datenformate, die entsprechend auch verarbeitet werden können. Weitere Datenformate müssen erst importiert werden. ● Raster 2,5D: Die Farbwerte eines Rasterbildes werden als Höhenwerte gesetzt. Da es sich bei diesem Format die Höhenwerte nicht als Koordinatenwerte eingebunden sind, wird dieses Format 2,5D genannt. ● Raster 3D (Voxel): Ein 3-dimensionales Rasterbild kann als ein Stapel 2-dimensionaler Rasterbilder verstanden werden. ● Vektor 3D-Punkte: Die Höhenwerte der Punkte liegen nicht als Angabe in einer Attributstabelle vor, sondern als z-Koordinatenwerte. ● Vektor 3D-Linien: Gleiche Eigenschaften wie 3D-Punktdaten. Wenn Linien in 3D vorliegen, ist es somit möglich, dass Straßen „untereinander“ her verlaufen (z.B. aufgrund einer Brücke) und sich demnach nicht zwingend schneiden. ● Vektor 3D-Polygone Import / Export In GRASS ist lediglich das Im- und Exportieren von AutoCAD DXF-Dateien möglich. Allerdings können über ein Zusatzprogramm weitere gängige Formate importiert werden, indem sie über das Programm vorher in ein AutoCAD DXF-Format konvertiert werden. Ein solches Programm ist z.B. wcvt2pov.exe, dessen Konvertierungsmöglichkeiten kurz dargestellt werden sollen: Import: AOFF (*.geo), AutoCAD DXF (*.dxf), 3D Studio (*.3ds), Neutral File Format (*.nff), RAW (*.raw), TPOLY (*.tpo), True Type Font (*.ttf), Wavefront (*.obj), World Toolki t (*.nff) Export: AutoCAD DXF (*.dxf), 3D Studio (*.asc), Neutral File Format (*.nff), Povray V2.2 (*.pov), Povray V2.2 Include (*.inc), RAW (*.raw), TPOLY (*.tpo), True Space (*.cob), VRML V1.0 (*.wrl), Wavefront (*.obj), World Toolkit (*.nff) Darstellung Wie schon beschrieben, ist NVIZ ein reines Visualisierungsinstrument. Somit ist es nicht möglich, Objekte im 3D Modell per Mausklick zu selektieren oder Informationen über diese Objekte abzurufen. Auch das Bewegen im Modell ist sehr umständlich. So ist z.B. keine „Zoom-“ oder „Orbit-Funktion“ über das Mausrad integriert. Allerdings zeigt sich auch an diesem Beispiel, was so charakteristisch für GRASS im Allgemeinen ist: Die „Orbit-Funktion“ ist integriert und wählbar, indem man den Abbildung 20: Dreidimensionale Darstellung einer Flugmodus aktiviert. Nun kann man mittels der dritten 2,5D-Rasterkarte mit NVIZ Maustaste den Blick schwenken lassen. Man kann somit die Geschwindigkeit des Schwenkens individuell einstellen und auch wählen, ob man „sich selbst“ oder die Oberfläche drehen möchte. Es existiert also eine Vielzahl von möglichen Optionen, allerdings ist bei der Programmierung die intuitive Bedienbarkeit eher vernachlässigt worden. chromgruen Verarbeitung dreidimensionaler Daten und Visualisierungsmöglichkeiten Die Kartenerstellung erfolgt in GRASS über PostScript-Dateien. Die erzeugten .ps-Dateien können dann über andere Programme bearbeitet werden, um die endgültige Karte zu erzeugen. Die Erstellung einer solchen .ps-Datei bzw. .eps-Datei läuft über das Modul „ps.map“. Darin wird festgelegt, welcher Maßstab verwendet werden soll oder wie viele Kopien erzeugt werden sollen; es können aber auch weitere Anweisungen für das Erscheinungsbild der Karte eingegeben werden, wie das folgende Beipiel aus dem GRASS-Wiki verdeutlicht: # S imp le ps .map examp le us ing the Spea r fi sh da tase t g . r eg ion r as t = e l e va t i on . 1 0m ps .map ou tpu t = spea r fi sh . ps << EOF pape r us - l e t t e r end sca l e 1 : 1 20000 r as t e r e l e va t i on . 1 0m co lo r t ab l e where 2 6 . 7 5 end t ex t 50% - 7% Spea r fi sh County , ND (Moun t Rushmore ) f on t s i ze 16 end map in fo where 4 . 5 7 . 2 5 end v l i nes roads where l abe l ~ ' h i ghway ' OR l abe l = ' i n t e r s t a t e ' co lo r grey end vpo in t s a r chs i t e s symbo l bas i c / t r i ang l e end end3 EOF Labels, Annotations Mit dem Modul „v.label“ können Beschriftungen für die Objekte generiert werden. Dabei kann u.a. Ausrichtung des Textes, Farbe und Größe individuell angegeben werden. Über eine zusätzliche Ebene können die Beschriftungen dann im Map Display angezeigt werden. Thematische Einfärbung Auch für die thematische Einfärbung muss zuerst eine neue Ebene in dem GIS-Manager ausgewählt werden. Allerdings sind die Auswahlmöglichkeiten für die Art der Einfärbung begrenzt: Es kann lediglich eine Attributsspalte für die Einfärbung ausgewählt werden, somit kann man unterschiedliche Werte nur über die Symbolstärke oder die Farbwahl visualisieren. 3 Quelle: http://grass.gdf-hannover.de/wiki/Psmap_simple_example chromgruen Kartenerstellung Aufgabenstellung: Konvertierung von Rasterdaten in Vektordaten für eine deutsche Großstadt Abgeleitete Aufgaben: ● Transformation der Daten in eine andere Projektion ● Zusammenfügen von Daten aus 2 verschiedenen Satellitenbildern Vorgehensweise: 1. Erstellung zweier Locations (für jede Projektion eine Location) 2. Erstellung eines Polygons mit den UmgebungsKoordinaten des Untersuchungsgebietes im Koordinatensystem GK3 mit „v.in.region“ 3. Transformation des Umrandungs-Polygons in GK2 mit „v.proj“ (siehe Abbildung) 4. Festlegen der „Current Region“ auf ein Gebiet, das nicht viel größer ist als das Untersuchungsgebiet mit „g.region“ (--> Der Rechenaufwand für die Vektorisierung wird geringer) 5. Vektorisierung der (Ausschnitte der) Rasterdaten mit „r.to.vect“ 6. Bereinigung des Überschneidungsbereiches zwischen den beiden Satellitenbildern mit „v.overlay“ --> Die aus dem oberen Satellitenbild erzeugten Polygone werden an der Grenze zum unteren Satellitenbild abgeschnitten. (Option „not“) Abbildung 21: In die GK2-Zone projeziertes Polygon "Untersuchungsgebiet" 7. Zusammenfügen der Polygone aus beiden Satellitenbildern mit „v.overlay“ (Option „or“) 8. Ausschneiden der nicht zum Untersuchungsgebiet gehörenden Polygone mit „v.overlay“ (Option „and“) 9. Transformation der Vektorkarte in die Zielprojektion 10. Exportieren der Daten als Shapefile. Abbildung 22: Der untere Teil des oberen Satellitenbildes ist bereits vektorisiert chromgruen Fallbeispiel Kurzbeschreibung Quantum GIS ist ein Anwender-freundliches Geographisches Informationssystem aus dem Open Source-Bereich, welches auf GNU/Linux, Unix, Mac OSX und Windows läuft. Es unterstützt Vektor-, Raster- und Datenbankformate und ist lizenziert unter den Bestimmungen der GNU General Public License. Quantum GIS ermöglicht das Öffnen, Editieren und Erzeugen von einer Vielzahl von Vektor- und Rasterformaten, incl ESRI shapefiles, Spatial Data aus PostgreSQL/PostGIS, GRASS Vektor- und Rasterformate oder auch GeoTiffs. Des Weiteren können Plug-Ins und GIS Applications unter Verwendung von C++ oder Python selbst erzeugt werden. Das Erstellen und Drucken von Karten erfolgt über eine Druckfunktion. QGIS unterstützt Plug-Ins, welche zum Beispiel das Importieren von begrenzten Text-Daten, das Herunterladen von Routen und Wegpunkten eines GPS oder das Visualisieren von OGC WMS und WFS Layern möglich machen.4 4 Übersetzung von http://www.osgeo.org/qgis chromgruen Quantum GIS Kurzbeschreibung Open Source Software Image Map (OSSIM) ist ein High-Performance-System für Remote Sensing, Image Processing, Geographische Informationssysteme und Photogrammetrie. Es wird seit 1996 entwickelt. OSSIM wurde durch verschiedene US-Amerikanische Institutionen aus dem Geheimdienst- und Verteidigungsbereich gegründet. Angewendet wird die Technologie heute vor allem im Bereich Forschung und Planung. Gebaut als Serie von High-Performance Software-Bibliotheken, ist es in der Programmiersprache C++ geschrieben, wodurch es die neuesten Technologien aus dem Objekt-Orientierten Software Design beinhaltet. Es wurden viele Befehlszeilen, GUI-Applications und integrierte Systeme implementiert – von denen einige bereits bereits im System vorinstalliert mitgeliefert werden.5 5 Übersetzung von http://www.osgeo.org/ossim chromgruen OSSIM Kurzbeschreibung Charakteristisch für gvSIG ist eine benutzerfreundliche Oberfläche, verbunden mit einem schnellen Zugang zu den gebräuchlichsten Raster- und Vektorformaten. Im einem einzigen Interface werden sowohl lokale als auch nicht-lokale Daten (über WMS, WCS oder WFS-Formate) abgewickelt. Besonders ansprechend ist es für universitäre Anwendungen wegen der R&D&I-Komponente. Besondere Aufmerksamkeit liegt auf der Expansion des Projektes, so dass Programmierern das Einbringen selbst entwickelter Plug-Ins mit Bestandteilen der gvSIG-Bibliotheken besonders leicht gemacht wird.6 6 Übersetzung aus http://www.gvsig.gva.es/index.php?id=que-es-gvsig&L=2 chromgruen gvSIG Kurzbeschreibung „SAGA – System für Automatisierte Geowissenschaftliche Analysen- ist eine hybride GIS software. Mit SAGA soll (Geo-) Wissenschatlern eine effektive, leicht zu erlernende Plattform zur Verfügung gestellt werden, um geowissenschaftliche Methoden mittels eines bislang auf diesem Sektor einzigartigem Application Programming Interface (API) zu implementieren. Der Zugriff auf die Methoden wird durch die benutzerfreundliche Bedienoberfläche (Graphical User Interface GUI) von SAGA gewährleistet. Daraus resultiert eine ständig wachsende wissenschatliche Methodensammlung, die in Form von implementierbaren Modulen zur Verfügung steht.“7 7 aus http://www.saga-gis.uni-goettingen.de/html/index.php?newlang=deu chromgruen SAGA Kurzbeschreibung „OpenJUMP ist ein Desktop-GIS, geschrieben in Java und basierend auf JUMP GIS. Es kann mit Vektordaten umgehen und verwendet Standards wie etwa GML, WMS und WFS.“8 OpenJump ist das Ergebnis einzelner internationaler Teilprojekte, bestehend aus dem englischsprachigen Jump-Pilot Project, dem französischen Projekt SIGLE, dem Pirol-Projekt der deutschen Universität Osnabrück, den Firmen Lat/Lon GmbH und Integrated System Analysts, Inc.; sowie einer großen Anzahl freischaffender Programmierer.9 8 http://www.freegis.org/database/?cat=20 9 Übersetzung aus http://openjump.org/wiki/show/OpenJUMP chromgruen Open-Jump Zielerfüllungsskala Bewertungsgrad nicht erfüllt schlecht mäßig durchschnittlich gut sehr gut Wert 0 1 2 3 4 5 Bewertung Kriterium Gewichtung GRASS GIS-Umgebung 20% Bedienbarkeit 10% 4 Support 05% 3 Performance 05% 3 Kernfunktionen 80% Datenbank-Management 20% 4 Digitalisieren 20% 3 Datenmanipulation / Analyse 30% 5 Kartenerstellung 10% 2 Bewertung gesamt 3,8 chromgruen Bewertung der GIS-Programme Allgemein ● Refractions Reserch Inc. (2007): The State of Open Source GIS. Abrufbar unter http://www.refractions.net ● OSGeo Journal Volume 1 (Mai 2007): Abrufbar unter: http://www.osgeo.org/journal ● OSGeo Journal Volume 2 (September 2007): Abrufbar unter: http://www.osgeo.org/journal ● Roland Krüger (2004): Open Source GIS in der Kommunalverwaltung (Ein Vergleich von Open Source Lösungen, Download unter http://www.rolandkrueger.de ) ● Community: Ein Wiki von OSGeo – Mailinglisten, Projekte, Dokumente http://wiki.osgeo.org (hier gibt es auch eine deutsche Community) ● Übersicht zu Open Source: ● ○ http://www.freegis.org/ ○ http://www.opensourcegis.org/ ○ http://www.maptools.org/ ○ http://www.osgeo.org/ Nützliche GIS-bezogene Internetseiten: ○ http://www.gisdevelopment.net ○ http://www.spatiallyadjusted.com (GIS-Blog) ○ http://www.reprojected.com (GIS-Blog) GRASS ● GRASS GIS 6.0 Kursskript, abrufbar unter: http://www.gdfhannover.de/lit_html/grass60_v1.2/node2.html ● Markus Neteler and Helena Mitasova (2007): Open Source GIS: A GRASS GIS Approach – in: The International Series in Engineering and Computer Science: Volume 773. Third Edition. New York. ● Offizielle GRASS GIS Homepage: http://grass.itc.it/ ● GRASS-Wiki: http://grass.gdf-hannover.de/wiki chromgruen Literatur