Zur Seitenübersicht
Zum Kopfbereich
Waren früher Datenbankprogramme sogenannte „stand-alone-Anwendungen“, deren Informationen separat gewonnen, verwaltet und ausgewertet wurden, so sind heute umfangreiche Datenbankfunktionen integraler Bestandteil von GIS-Programmen, so auch in gvSIG. Damit entfällt die manuelle Umsetzung von Datenbank- in grafische Informationen. Ebenso sind statistische Analysen im Ansatz möglich. Damit sind GIS-Programme auf dem Weg zur „all-in-one-Anwendung“.
In gvSIG sind die Daten in *.dbf-Dateien abgelegt und werden in sog. Attributtabellen angezeigt, die über das mit der rechten Maustaste erreichbare Kontextmenü aufrufbar sind. Diese Daten lassen sich nach verschiedenen Kriterien auswählen und modifizieren, und wir können aus vorhandenen Daten neue Felder und Inhalte generieren. Das wollen wir in verschiedenen Beispielen üben.
Wir laden den Layer Uebung_points.shp in die Ansicht. Die Tabelle besitzt 5 Spalten. Die drei ersten beinhalten die Koordinaten und ID der Fundstellen. In den restlichen zwei Spalten befinden sich Angaben zur Datierung ( Dat ) und zum Typ des Fundplatzes ( Typ ). Wir öffnen die Attributtabelle. Die Inhalte der Datenfelder sind in diesem Beispiel sehr einfach gehalten. Es gibt für die Felder Dat und Typ jeweils zwei Merkmalszustände. Für Dat sind das LBK1 und LBK2 , für Typ sind es Sied und Grab .
Zum reinen Filtern von Daten ist es nicht notwendig einen Layer auf bearbeitbar zu schalten!
Mit „Tabelle | Filter“ oder durch einen Klick auf das Icon
öffnen wir den Filterdialog (Kap. Objekte auswählen (Tabellen filtern), Flächenmaße hinzufügen, Layer aus- und verschneiden, S. 60). Es erscheint das Filterfenster , in dessen linker Hälfte die Spalten- oder Feldnamen der Tabelle stehen und in der rechten die möglichen Feldinhalte . Sie werden angezeigt, wenn im linken Fenster ein Feld durch Mausklick ausgewählt wird. Dazwischen befinden sich verschiedene logische Operatoren und darunter links das komplette Filterargument sowie rechts unten die Anweisungen, was mit den gefilterten Daten geschehen soll. Das Fenster mit dem Filterargument bietet Editionsmöglichkeiten, sodass wir für die weiteren Abfragen nur die Feldinhalte anpassen müssen.
Beim Filtern von Dateien stehen in gvSIG unterschiedliche Operatoren zur Verfügung, mit denen über mehrere Tabellenspalten hinweg Auswahlfilter gesetzt werden können (mit diesen Operatoren können Filter über mehrere Tabellenspalten gesetzt werden):
VERGLEICHE
= | alle Fälle werden gewählt, die diesen Feldinhalt haben |
!= | es werden die Fälle gewählt, die nicht diesen Feldinhalt haben |
< | alle Fälle, die kleiner sind als Feldinhalt (Zahlenwerte oder alphabetisch) |
> | alle Fälle, die größer sind als Feldinhalt (Zahlenwerte oder alphabetisch) |
<= | alle Fälle, die kleiner oder gleich sind (Zahlenwerte oder alphabetisch) |
>= | alle Fälle, die größer oder gleich sind (Zahlenwerte oder alphabetisch) |
VERKNÜPFUNGEN
And | verknüpft Bedingungen, alle müssen zutreffen |
Or | mindestens eine Bedingung von mehreren trifft zu |
Not | Negation (Ausschlusskriterium) |
ANDERES
Date | Abfrage von Datumsfeldern |
() | Klammer für geschachtelte Ausdrücke |
Text löschen | löscht den gesamten Text im Filterargument |
Grundsätzlich werden in gvSIG (wie auch in anderen Datenbanken) verschiedene Feldtypen unterschieden, auf die die genannten Datenbankoperationen angewandt werden:
String | z. B. Eigenschaften oder Namen als Textzeichen |
Integer | z. B. Code oder Messungen als Ganzzahlen |
Double | z. B. Messungen in Gleitkommazahlen; |
Date | Datums/ Zeitangaben |
Boolean | zeigt an, ob etwas wahr (true/1/vorhanden) oder falsch (false/0/nicht vorhanden) ist |
Für jedes Merkmal sollte der richtige Dartentyp ausgewählt sein, denn die Wahl hat auch Konsequenzen für die Filteroptionen und beeinflusst die Ergebnisse
(eine Auswahl von Links zu Feldtypen:
http://dev.mysql.com/doc/refman/5.1/de/connector-j-reference-type-conversions.html;
http://www.ooowiki.de/FeldTyp.html;
http://de.wikipedia.org/wiki/Datentyp
).
In unserem Beispiel wählen wir zuerst alle Fälle aus, die in die Stufe LBK1 datiert und Gräber sind. Dazu müssen wir zwei Argumente mit „And“ verknüpfen, in diesem Falle Dat= LBK1 und Typ= Grab . Zuerst wählen wir im Fenster „Felder“ den Eintrag Dat mit Doppelklick aus, dann als Operator das Gleichheitszeichen („=“) und darauf per Doppelklick den Eintrag LBK1 im Fenster „Inhalte“. Dadurch werden alle Fälle mit Datierung LBK1 gewählt.
Wir wollen aber aus dieser Auswahl wiederum nur die Gräber. Dazu müssen wir die Auswahl durch die Wahl von „AND“ aus der Gruppe der Operatoren weiter einschränken. Dann folgen die gleichen Arbeitsschritte wie im ersten Teil des Ausdrucks. Doppelklick im Fenster „Felder“ diesmal auf Typ , Auswahl des Operators „=“ und Doppelklick im Fenster „Inhalte“ diesmal auf Grab .
Jetzt ist der Ausdruck vollständig. Mit dem Schalter „Neuer Datensatz“ werden die gefilterten Daten ausgewählt („Aus dem Datensatz auswählen“ funktionierte auf drei Referenzrechnern nicht). Das Ergebnis sollte so aussehen:
Die Markierungsfarbe ist abhängig von den in den Grundeinstellungen getroffenen Vorgaben. In unserem Beispiel sind die markierten Fundpunkte rot, die markierten Datensätze in der Attributtabelle hingegen gelb.
Sind die Felder numerisch, also stellen Zahlen die Zellinhalte, so kann sich die Filterauswahl auf bestimmte Wertebereiche erstrecken. Als Beispiel wollen wir hier alle Fundstellen auswählen, deren ID zwischen 51 und 99 liegt. Der Ausdruck dazu lautet:
ID > 50 and ID < 100.
Kein Datensatz wird markiert. Das liegt daran, dass beim Import der Daten durch gvSIG das Format für alle Felder automatisch auf String (Text) gesetzt wurde, obwohl sie zum Teil ja Zahlen enthalten. Deshalb müssen wir ein neues Feld erstellen und darin die umformartierten Inhalte aus ID ablegen, bevor wir die Abfrage durchführen können. Zuerst machen wir den Layer über das Kontextmenü bearbeitbar („Bearbeitung beginnen“). Dann öffnen wir, falls noch nicht geschehen die Attributtabelle.
Mit „Tabelle | Felder verwalten“ öffnen wir den Feld-Manager. Mit der Schaltfläche „Neues Feld“ öffnen wir die nächste Dialogbox, wo die Eigenschaften des neuen Feldes eingestellt werden.
Wir tragen bei „Feldname“ ID2 , im Auswahlfeld „Feld-Typ“ den Wert Double , bei „Feldlänge“ 10 und bei „Präzision“ behalten wir den vorgegebenen Wert 3 . Bei „Standard-Wert“ könnte ein für alle Datensätze identischer Wert eingetragen werden . Das ist hier nicht der Fall. Mit „OK“ bestätigen wir die Einstellungen
und gelangen zurück zum Feld-Manager. Wir betätigen die Schaltfläche „OK“ und starten den Vorgang. Das Feld wird nun als neue Spalte an unsere Tabelle angehängt.
Jetzt klicken mit der linken Maustaste auf den Feldnamen ID2 in der Attributtabelle von Uebung_points.shp klicken, der daraufhin markiert oder invertiert dargestellt wird. Mit „Tabelle | Ausdruck“ oder Klick auf das entsprechende Icon
werden nun Feldinhalte und –formate verändert und neu geschaffen.
Es öffnet sich das Dialogfenster „Ausdruck berechnen“. In der fünfteiligen Box befindet sich zuoberst ein kontextsensitives Feld „Information“ (Erläuterungen zu den verschiedenen Parametern). Im mittleren Bereich stehen links die Felder unserer Tabelle, in der Mitte die möglichen Datentypen (Typ) und rechts die vom gewählten Typ abhängigen Kommandos. Im unteren Fenster erscheint der Ausdruck mit dem das Feld gefüllt wird, der dort auch unmittelbar eingegeben werden kann. Über dem Bereichsfenster liegen zwei Reiter „Allgemein“ (die Voreinstellung) und „Erweitert“. Durch Auswahl des zweiten Reiters erreichen wir einen Dialog, der gespeicherte Ausdrücke lädt. Ihn benutzen wir hier nicht.
Wir wählen mit Doppelklick im Fenster „Feld | [ID]“, (in der Attributtabelle haben wir zuvor ID2 mit Mausklick links markiert) und wählen „Typ | Numerisch“ und im Fenster „Kommandos | toNumber“ ebenfalls mit Doppelklick aus. Der automatisch erstellte Ausdruck lautet dann „toNumber ([ID])“. Mit „OK“ starten wir die Aktion.
Ein Blick auf die Attributtabelle zeigt uns, das sich nun Zahlenwerte im Feld ID2 befinden, die sich in der formalen Darstellung von der im Feld ID unterscheiden. Sie besitzen nun einen Punkt als Dezimal-trennzeichen.
Geht man umgekehrt vor und wählt zuerst Typ und Kommando, so entsteht der Ausdruck „toNumber ()[ID]“, der zu einer Warnmeldung und keinem Ergebnis führt.
In der runden Klammer muss das Feld stehen, auf das sich der Prozess bezieht.
Leider funktioniert das Umformatieren der Tabellenfelder nur unvollständig, wenn Quelle und Ziel identisch sind. Versuchen Sie den Ausdruck direkt in ID zu berechnen, indem Sie vor Aufruf des Fensters „Ausdruck berechnen“ das Feld ID markieren. Zwar werden die Feldinhalte jetzt in Zahlenwerte mit Dezimaltrenner umgewandelt, aber sie verhalten sich weiterhin wie Textfelder und dies kann auch nicht durch Speichern, Schließen und erneutem Öffnen des Layers behoben werden. Mit Sortieren des Feldes ID
(Icon )
prüfen wir die Sachlage.
Wir sortieren das Feld aufsteigend, so werden alle mit 1 beginnenden Zahlenwerte hintereinandergereiht, danach folgen die mit 2 am Anfang usw.
Sortieren wir im Gegensatz dazu das Feld ID2 , so werden die Zahlen entsprechend der Größe der Zahlwerte sortiert (6 ist die kleinste vorhandene Zahl).
Jetzt starten wir die Abfrage erneut. Mit dem Ausdruck ID2 > 50 and ID2 < 100 wählen wir die entsprechenden Fälle aus unserer Datenbank aus.
Wir wollen ein neues Feld mit einer Kombination der Feldinhalte aus Dat und Typ für den Layer Uebung_points.shp erstellen. Es soll den Namen Dat_Typ , den „Feld-Typ“ „String“ und die voreingestellte Feldlänge besitzen. Dazu öffnen wir durch Kloick mit der rechten Maustaste das Kontextmenü. Wir wählen „Bearbeitung beginnen“, dann erneut das Kontextmenü und dort „Attributtabelle“. Wir markieren die Attributtabelle durch einen Mausklick und über „Tabelle | Felder verwalten | Neues Feld“ erstellen wir das neue Feld. Wir markieren es und rufen mit „Tabelle | Ausdruck“ das Fenster „Ausdruck berechnen“ auf. Wir wählen als „Typ“ „Zeichenkette“ und erstellen durch Doppelklick auf die Felder Dat und Typ und das Kommando + sowie unter Einfügung eines Unterstrichs in Anführungsszeichen („_“, weil der „Typ“ eine „Zeichenkette“ ist) den unten dargestellten Ausdruck.
Mit „OK“ starten wir den Vorgang und erhalten folgendes Ergebnis:
Wir wollen aus einem Layer verschiedene neue Layer erstellen. Zuerst markieren wir den in die aktuelle Ansicht geladenen Layer Uebung-points.shp und öffnen mit „Tabelle | Filter“ den Filterdialog. In unserem Beispiel wählen wir zuerst alle Fälle, die in die Stufe LBK1 datiert und Gräber sind über den Ausdruck Dat_Typ = ‚LBK1_Grab‘ aus. Mit dem Schalter „Neuer Datensatz“ werden die gefilterten Daten ausgewählt.
Das Ergebnis kann in der Attributtabelle betrachtet werden.
Wir klicken nun in das geöffnete Ansichtsfenster, wo die ausgewählten Fundpunkte markiert sind. Mit „Layer | Exportieren nach.. | Shp“ legen wir einen neuen Layer an. Für jeden unserer vier Fälle ( LBK1_Grab , LBK1_Sied , LBK2_Grab und LBK2_Sied ) wiederholen wir den Vorgang, bis wir vier neue Layer besitzen, die jeweils nur eine Kombination aus Dat und Typ enthalten und laden sie, wenn noch nicht geschehen in die Ansicht.
Mit „Sextante | Tools for vector layers | Merge“ starten wir einen Dialog, der die vier neuen Layer wieder zu einem Layer zusammenführt. Im Optionenfenster wählen wir einen der neuen vier Layer als „Main Layer“ und drücken den Schalter bei „Additional Layers“, um im Fenster „Multiple Selection“ eine Auswahl zu treffen. Hier wählen wir die drei übrigen Layer mit „OK“. Als „Outputs“ belassen wir die Voreinstellung „Save to temporary file“ und starten mit „OK“ den Vorgang.
Das Ergebnis ist ein Layer namens Result , der automatisch in die Ansicht geladen wird. Er besitzt jetzt alle Datensätze der ursprünglichen Datei, erweitert um die neuen Felder.
Der Layer muss nun unter neuem Namen abgespeichert werden („Layer | Exportieren nach… | SHP“), ansonsten geht er nach dem Schließen von gvSIG verloren.
Die hier vorgestellten Beispiele stellen nur einen kleinen Ausschnitt aus dem Funktionsumfang von gvSIG dar. Sie bieten einen Einstieg, der durch die Lektüre vielfältiger Anleitungen, vor allem aus dem Internet vervollständigt und erweitert werden kann.
Zum Kopfbereich
Direkt zum Inhalt
Zur Seitenübersicht
Direkt zum Inhalt