Übung - Universität Heidelberg
Transcrição
Übung - Universität Heidelberg
Einführung in Theorie und Praxis Geographischer Informationssysteme Dr. Alexander Zipf European Media Lab Lutz Nücker Universität Heidelberg Geographisches Institut Einführung in Theorie und Praxis Geographischer Informationssysteme von Dr. Alexander Zipf und Lutz Nücker Copyright © 2001 von Alexander Zipf und Lutz Nücker Alle in diesem Buch enthaltenen Angaben, Daten Ergebnisse usw. wurden von den Autoren nach bestem Wissen erstellt und von ihnen mit größtmöglicher Sorgfalt überprüft. Dennoch sind inhaltliche Fehler nicht völlig auszuschließen. Daher erfolgen die Angaben usw. ohne jegliche Verpflichtung oder Garantie der Autoren. Sie übernehmen deshalb keinerlei Verantwortung und Haftung für etwa vorhandene inhaltliche Unrichtigkeiten. Dieses Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung der Autoren unzulässig und strafbar. Das gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. Inhaltsverzeichnis Vorwort ........................................................................................................................................................i 1. Grundlagen von Geographischen Informationssystemen..................................................................1 1.1. Was ist ein GIS............................................................................................................................1 1.1.1. Wozu GIS?......................................................................................................................2 1.1.2. GIS und Datenbanken.....................................................................................................3 1.1.3. GIS und CAD .................................................................................................................3 1.1.4. GIS und Kartographie.....................................................................................................4 1.2. Einsatzbereiche von Geoinformationssystemen .........................................................................4 1.3. Digitale Geodaten .......................................................................................................................6 1.3.1. Geoobjekte......................................................................................................................6 1.3.2. Geometrie versus Topologie ...........................................................................................7 1.3.2.1. Geometrie: Raster versus Vektor .......................................................................7 1.3.2.2. Topologie ...........................................................................................................8 1.3.2.3. Topologie in ARC/INFO....................................................................................9 1.3.2.3.1. Connectivity ..........................................................................................9 1.3.2.3.2. Flächendefinition...................................................................................9 1.3.2.3.3. Contiguity..............................................................................................9 1.3.3. Thematik und Dynamik..................................................................................................9 1.3.3.1. Thematik ............................................................................................................9 1.3.3.1.1. Ebenenprinzip (Layerprinzip) ...............................................................9 1.3.3.1.2. Objektklassenprinzip (Klassenhierarchien).........................................10 1.3.3.2. Dynamik...........................................................................................................11 1.4. Datenbanken..............................................................................................................................11 1.4.1. Datenmodelle von ARC/INFO .....................................................................................12 1.4.1.1. Konzeptionelle Modellierung mit ER-Diagrammen........................................12 1.4.1.1.1. Entität ..................................................................................................13 1.4.1.1.2. Beziehung............................................................................................13 1.4.1.1.3. Attribute...............................................................................................13 1.4.1.1.4. Kardinaliät...........................................................................................13 1.4.1.2. Logische Datenbankschemata..........................................................................14 1.4.1.3. Relationale Datenbanken .................................................................................14 1.4.1.4. Grundbegriffe...................................................................................................14 1.4.1.4.1. Transaktion ..........................................................................................15 1.4.1.4.2. Primärschlüssel....................................................................................15 1.4.1.4.3. Fremdschlüssel ....................................................................................15 1.4.1.4.4. Sichten (Views) ...................................................................................16 1.4.1.4.5. Integritätsbedingungen ........................................................................16 1.4.1.4.6. Referentielle Integrität.........................................................................16 1.4.1.4.7. Indizes .................................................................................................17 1.4.1.5. Normalformen..................................................................................................17 1.4.1.6. Manipulation und Selektion von Sachdaten mit SQL......................................18 1.4.1.6.1. SQL als Datendefinitionssprache ........................................................18 1.4.1.6.2. Relationale Operationen......................................................................18 1.4.1.6.3. Mengenoperationen.............................................................................19 1.4.1.7. Raumbezogene Erweiterungen von SQL (OPENGIS) ....................................19 v 1.4.1.8. Die Spatial Database Engine (SDE) von ESRI................................................21 1.4.1.9. Auf dem Weg zu raumzeitlichen Datenbanken................................................22 1.4.2. Speicherstrukturen für raumbezogene Daten ...............................................................22 1.5. Analysefunktionen ....................................................................................................................23 1.5.1. Räumliche Transformationen .......................................................................................23 1.5.2. Räumliche Suche ..........................................................................................................23 1.5.3. Räumliche Statistik.......................................................................................................24 1.5.4. Netzwerkanalyse...........................................................................................................24 1.5.5. Oberflächenanalyse.......................................................................................................24 1.6. Datenqualität und Metadaten ....................................................................................................25 1.6.1. Fehlerquellen ................................................................................................................25 1.6.1.1. Allgemeine Fehlerquellen................................................................................25 1.6.1.2. Räumliche Variationen.....................................................................................25 1.6.1.3. Verarbeitungsfehler ..........................................................................................26 1.6.2. Metadaten .....................................................................................................................26 Weiterführende Literatur: .......................................................................................................28 2. Der Aufbau von ARC/INFO ...............................................................................................................29 2.1. Architektur ................................................................................................................................29 2.1.1. Die Benutzeroberfläche ARCTOOLS ..........................................................................30 2.2. Datenmodelle ............................................................................................................................31 2.2.1. Vektordaten...................................................................................................................31 2.2.2. Verknüpfung der Features mit den Attributdaten .........................................................32 2.2.2.1. Das Coverage ...................................................................................................32 2.2.2.2. Die Coverage Feature Classes..........................................................................33 2.2.2.2.1. Arcs als Liniensegmente .....................................................................33 2.2.2.2.2. Nodes (Knotenpunkte) ........................................................................34 2.2.2.2.3. Pseudo Nodes ......................................................................................34 2.2.2.2.4. Dangling Nodes...................................................................................35 2.2.2.2.5. Polygone..............................................................................................35 2.2.2.2.6. Polygon Attributes...............................................................................36 2.2.2.2.7. Tics ......................................................................................................37 2.2.2.2.8. Annotation...........................................................................................37 2.2.2.2.9. Links....................................................................................................37 2.2.2.2.10. Route-Systems...................................................................................38 2.2.2.2.11. Coverage Begrenzung (Boundary, BND)..........................................39 2.2.2.2.12. Regions..............................................................................................39 2.2.2.2.13. Coverage-Verzeichnisstruktur ...........................................................40 2.2.2.3. Map-Libraries ..................................................................................................40 2.2.2.4. CAD-Zeichnungen...........................................................................................40 2.2.2.5. Shapefiles .........................................................................................................41 2.2.3. Rasterdaten ...................................................................................................................41 2.2.3.1. Grids.................................................................................................................41 2.2.3.2. Images ..............................................................................................................43 2.2.4. Dreidimensionale Daten ...............................................................................................43 2.2.4.1. Lattice ..............................................................................................................44 2.2.4.2. Dreiecksvermaschung (TIN)............................................................................44 2.3. Erste Schritte in ARC/INFO .....................................................................................................45 vi 2.3.1. Workspaces...................................................................................................................46 2.3.2. Grundsätzliche Bedienung............................................................................................46 2.3.3. Initialisierung der Graphikfenster.................................................................................47 2.3.4. Voreinstellungen beim Programmstart .........................................................................48 2.4. Erhalten von Hilfe .....................................................................................................................48 2.4.1. Hilfe auf der Kommandozeile ......................................................................................49 2.4.2. Die Online-Hilfe ARCDOC .........................................................................................49 2.4.3. Der Tool Browser .........................................................................................................52 2.4.4. Weitere nützliche Tools ................................................................................................53 2.4.4.1. Der Datenbetrachter .........................................................................................53 2.4.4.2. Umrechung von Maßeinheiten.........................................................................53 Weiterführende Literatur: .......................................................................................................54 3. Projektplanung und Erstellen der raumbezogenen Datengrundlage mit ARCEDIT...................57 3.1. Fragestellung und Arbeitsablauf ...............................................................................................57 3.2. Geometriedaten in ARC/INFO übernehmen/erstellen ..............................................................58 3.2.1. Vorbereitung .................................................................................................................58 3.2.1.1. Kartengrundlage...............................................................................................58 3.2.1.2. Reihenfolge der Arbeitsschritte festlegen........................................................58 3.2.1.3. Namensbeschränkungen und -konventionen, Verzeichnisstruktur ..................58 3.2.1.4. Kartenmaterial vorbereiten ..............................................................................59 3.2.1.4.1. Karten ggfs. auf anderes Material übertragen .....................................60 3.2.1.4.2. TICs bestimmen und markieren ..........................................................60 3.2.1.4.3. unklare Stellen markieren....................................................................61 3.2.1.4.4. Richtung der Linien festlegen .............................................................61 3.2.2. Geometriedaten.............................................................................................................62 3.2.2.1. Digitalisierung..................................................................................................62 3.2.2.1.1. Toleranzen ...........................................................................................62 3.2.2.2. Fuzzy Tolerance ...............................................................................................62 3.2.2.3. Grain Tolerance................................................................................................63 3.2.2.4. Weed Tolerance................................................................................................63 3.2.2.4.1. Editfeature festlegen............................................................................64 3.2.2.4.2. Digitalisierbrett....................................................................................64 3.2.2.4.3. Digitalisieren am Bildschirm ..............................................................66 3.2.2.5. Georeferenzieren von Rastergraphiken mit register und rectify ....................68 3.2.2.6. Import/Export...................................................................................................70 3.2.3. Import von Vektorkoordinaten......................................................................................71 3.2.4. ASCII-Schnittstelle für Vektor-Geometriedaten (GENERATE) ..................................73 3.2.5. DXF-Dateien ................................................................................................................75 3.2.6. Weitere Schnittstellen ...................................................................................................77 3.2.6.1. ATKIS / EDBS.................................................................................................77 3.2.6.2. SICAD..............................................................................................................77 3.2.6.3. Export von Vektorkoordinaten .........................................................................77 3.2.6.4. Import und Export von Rasterdaten .................................................................78 3.2.6.4.1. import ..................................................................................................78 3.2.6.4.2. generate ...............................................................................................78 3.2.6.4.3. shape/dxf .............................................................................................78 3.2.6.5. Fehlerkorrektur ................................................................................................78 vii 3.2.6.5.1. Nodes...................................................................................................78 3.2.6.5.1.1. Dangling Nodes ......................................................................78 3.2.6.5.1.2. Pseudo Nodes..........................................................................79 3.2.6.5.2. Arcs .....................................................................................................79 3.2.6.5.2.1. Under/Overshoots ...................................................................79 3.2.6.5.2.2. Überschneidung ohne Node....................................................79 3.2.6.5.2.3. Sliver-Polygone.......................................................................80 3.2.6.5.3. Labels ..................................................................................................81 3.2.6.5.3.1. Fehler in Polygonlabels ..........................................................81 3.2.6.6. Fehlende Labels ...............................................................................................81 3.2.6.7. Doppelte Labels ...............................................................................................81 3.2.6.8. Topologie erzeugen ..........................................................................................82 3.2.6.9. Koordinatentransformation / Projektion ..........................................................82 3.2.6.9.1. Transformation in das Gauss-Krüger System .....................................83 3.2.7. Andere Projektionen.....................................................................................................84 3.2.8. Sachdaten......................................................................................................................86 3.2.9. Die INFO-Datenbank ...................................................................................................87 3.2.9.1. Hinzufügen von Attributen ..............................................................................87 3.2.9.2. Erstellen eigener INFO-Tabellen .....................................................................88 3.2.9.3. Einlesen von ASCII-Tabellen ..........................................................................88 3.2.9.4. Bearbeiten von INFO-Dateien .........................................................................89 3.2.9.5. Erstellen von Indizes........................................................................................89 3.2.9.6. Berechnung neuer Variablen ............................................................................89 3.2.9.7. Verknüpfen mehrerer Tabellen.........................................................................89 3.2.10. Anbindung externer Sachdaten...................................................................................90 3.2.11. Anbindung an eine Oracle Datenbank........................................................................91 3.2.11.1. DBase-Dateien (DBF)....................................................................................92 3.2.11.1.1. Import von dbase-Tabellen mit dbaseinfo ........................................92 3.2.11.1.2. Export von dbase-Tabellen mit infodbase ........................................92 3.2.11.2. INFO ..............................................................................................................92 3.2.11.3. Tables .............................................................................................................92 3.2.11.4. externe DB .....................................................................................................93 3.2.12. Speichern einer Sitzung als Makro.............................................................................93 3.2.12.1. Editieren der Datengrundlage ........................................................................95 3.2.12.1.1. Korrektur angrenzender Coverages ...................................................95 3.2.12.1.2. Anpassen von Elementen ..................................................................95 3.2.13. INFO-Dateien anlegen................................................................................................95 3.3. Sachdaten hinzufügen/bearbeiten .............................................................................................95 3.3.1. Tabellen erzeugen .........................................................................................................96 3.3.2. Attributdateien über joinitem verbinden.......................................................................98 3.4. Relate erzeugen .........................................................................................................................98 3.5. Erstellen der Geometrie/Rohdaten in ARCEDIT....................................................................101 3.5.1. Grundfunktionen.........................................................................................................101 3.5.2. Öffnen eines Coverages..............................................................................................105 3.5.3. Darstellung der Editiergrundlage................................................................................106 3.5.4. Hintergrundcoverages und -bilder ..............................................................................107 3.5.5. Auswahl der zu editierenden Elemente ......................................................................107 3.5.5.1. Graphische Auswahl ......................................................................................107 viii 3.5.5.2. Logische Auswahl..........................................................................................108 3.5.6. Editieren oder Erzeugen eines Coverages ..................................................................108 3.5.7. Editieren von Arcs ......................................................................................................108 3.5.7.1. Verschieben und Kopieren von Arcs..............................................................110 3.5.7.2. Editieren von Nodes.......................................................................................110 3.5.7.3. Weitere Editierfunktionen ..............................................................................110 3.5.7.4. Ändern der Geometrie....................................................................................111 3.5.7.5. Editieren von Vertices ....................................................................................111 3.5.7.6. Drehen und aneinanderschnappen .................................................................111 3.5.8. Editieren anderer Feature Classes ..............................................................................112 3.5.9. Vergabe von Kennummern .........................................................................................113 Weiterführende Literatur: .....................................................................................................114 4. Räumliche Analyse in ARC und mit CommandTools....................................................................117 4.1. Geographische Analyse...........................................................................................................117 4.2. Verschneidungsoperationen und Bufferbildung ......................................................................117 4.2.1. Union..........................................................................................................................120 4.2.1.1. Polygoncoverage............................................................................................121 4.2.2. Identity.......................................................................................................................122 4.2.2.1. Punktcoverage................................................................................................122 4.2.2.2. Liniencoverage...............................................................................................123 4.2.2.3. Polygoncoverage............................................................................................125 4.2.3. Intersect .....................................................................................................................126 4.2.3.1. Punktcoverage................................................................................................126 4.2.3.2. Liniencoverage...............................................................................................127 4.2.3.3. Polygoncoverage............................................................................................128 4.2.4. Clip.............................................................................................................................129 4.2.4.1. Punktcoverage................................................................................................130 4.2.4.2. Liniencoverage...............................................................................................131 4.2.4.3. Polygoncoverage............................................................................................131 4.2.5. Erase ..........................................................................................................................132 4.2.5.1. Punktcoverage................................................................................................133 4.2.5.2. Liniencoverage...............................................................................................134 4.2.5.3. Polygoncoverage............................................................................................135 4.2.6. Update........................................................................................................................136 4.2.7. Split ............................................................................................................................137 4.2.8. Mapjoin .....................................................................................................................139 4.2.9. Append.......................................................................................................................141 4.2.10. Reselect ....................................................................................................................142 4.2.11. Dissolve ....................................................................................................................144 4.2.12. Entfernen von Restflächen mit Eliminate................................................................145 4.3. Entfernungsberechnungen.......................................................................................................146 4.3.1. Buffer: Erzeugung von Pufferzonen ..........................................................................146 4.4. Entfernungsberechnungen.......................................................................................................148 4.4.1. Near............................................................................................................................148 4.4.2. Entfernungsmatritzen zwischen Punkten ...................................................................148 4.4.3. Thiessen-Polygone .....................................................................................................148 4.4.4. Abschlußübung...........................................................................................................149 ix 4.5. Weitere Werkzeuge - Die Productivity Tools..........................................................................150 4.5.1. Geokodieren von Adressen.........................................................................................150 4.5.2. Auswahl anhand von Attributdaten mit reselect ........................................................151 Weiterführende Literatur:............................................................................................154 5. Netzwerkanalyse ................................................................................................................................155 5.1. Netzwerkanalyse - Tourenplanung..........................................................................................155 5.1.1. Kürzester Weg ............................................................................................................155 5.1.2. Gravitation ..................................................................................................................155 5.1.3. Traveling-Salesman-Problem (TSP)...........................................................................155 5.1.4. Netzwerkanalysen mit den Productivity Tools ...........................................................156 Weiterführende Literatur: .....................................................................................................157 6. Visualisierung.....................................................................................................................................159 6.1. Kartenerstellung mit ARCPLOT.............................................................................................159 6.1.1. Ausgabemedium .........................................................................................................159 6.1.2. Angaben zur Kartengröße...........................................................................................159 6.1.3. Auswahl von Signaturen und Farbskalen ...................................................................160 6.1.4. Ausgabe von Coverage-Elementen.............................................................................161 6.1.5. Benennung von Coverage-Elementen ........................................................................161 6.1.6. Eingrenzen der Auswahl (ARCPLOT).......................................................................162 6.1.7. Kartographische Elemente hinzufügen.......................................................................162 6.1.8. Ausgabe auf Papier oder in Dateien ...........................................................................162 6.2. Ausgabe mit MapTools ...........................................................................................................166 6.2.1. Erzeugen von Themes und Views...............................................................................166 6.2.1.1. Erstellen / öffnen eines Views........................................................................166 6.2.1.2. Editieren eines Views.....................................................................................167 6.2.1.3. Klassenbildung u. Farbzuweisung (View-/Legendenerstellung) ...................168 6.2.1.4. Variablenausprägung als Text ........................................................................169 6.2.2. Weitere Hilfsmittel beim Umgang mit Views ............................................................170 6.2.2.1. Zoomen ..........................................................................................................170 6.2.2.2. Abfragewerkzeuge .........................................................................................170 6.3. Kartenerstellung ......................................................................................................................171 6.3.1. Der Map Object Manager...........................................................................................173 6.3.2. Einstellung der Zeichenumgebung .............................................................................174 6.4. Hinzufügen neuer Kartenobjekte ............................................................................................174 6.4.1. View............................................................................................................................174 6.4.2. Legende ......................................................................................................................175 6.4.3. Maßstab ......................................................................................................................176 6.4.4. Nordpfeil.....................................................................................................................176 6.4.5. Text, Rahmen, Grafik etc............................................................................................177 6.4.6. Erstellen von Diagrammen in Karten .........................................................................178 6.4.7. Speichern der Karte ....................................................................................................179 6.5. Drucken einer Karte ................................................................................................................179 6.6. ArcPress ..................................................................................................................................180 Weiterführende Literatur: .....................................................................................................181 x 7. Geländemodelle..................................................................................................................................183 7.1. Erzeugung eines Triangulated Irregular Networks als Datengrundlage.................................183 7.1.1. Umwandeln von TINs in Lattices...............................................................................185 7.1.2. Export von 3D-Daten..................................................................................................185 7.1.3. Umwandlung von TINs in VRML..............................................................................186 7.1.4. Virtuelle 3D Welten mit VRML .................................................................................187 7.2. 3D-Visualisierung ...................................................................................................................188 7.2.1. Erstellen und Anzeigen des dreidimensionalen Themas ............................................189 7.2.2. Orientierung des Geländes .........................................................................................190 7.2.3. Virtuelle Durchflüge durch Geländemodelle..............................................................191 7.2.3.1. Definition der Flugparameter durch den Flight Path Generator ....................192 7.2.3.2. Abspielen der Videos .....................................................................................194 7.3. 3D Analyse..............................................................................................................................194 7.3.1. Interpolieren von Höhenlinien....................................................................................195 7.3.2. 3D-Sichtbarkeitsanalysen ...........................................................................................195 7.3.3. Volumen unter einem 3D-Modell berechnen..............................................................196 7.3.4. Veränderung von 3D-Oberflächen verfolgen..............................................................197 Weiterführende Literatur: .....................................................................................................197 8. Die Makro-Programmierung mit AML...........................................................................................199 8.1. Was ist AML ...........................................................................................................................199 8.2. Wie funktioniert die Arc Macro Language .............................................................................199 8.3. Wie erzeuge ich ein AML-Programm.....................................................................................199 8.3.1. Vereinfachungen bei der Programmierung .................................................................201 8.3.1.1. Zeilenumbruch ...............................................................................................201 8.3.1.2. Mehrere Aktionen in einer Zeile....................................................................201 8.3.1.3. Erweiterungen ................................................................................................202 8.3.1.4. Zeilenwiederholung .......................................................................................202 8.3.1.5. Zeichenketten und Sonderzeichen .................................................................202 8.3.1.6. Operatoren......................................................................................................203 8.4. AML-Elemente .......................................................................................................................203 8.4.1. Variablen.....................................................................................................................203 8.4.1.1. Setzen von Variablen......................................................................................203 8.4.1.2. Löschen von Variablen...................................................................................204 8.4.1.3. Lokale und globale Variablen ........................................................................204 8.4.1.3.1. Lokale Variablen ...............................................................................204 8.4.1.3.2. Globale Variablen..............................................................................204 8.4.1.4. Variablenverkettungen....................................................................................206 8.4.1.5. Indexvariablen................................................................................................206 8.4.1.6. Anzeigen von Variablen und deren Werten....................................................206 8.4.1.7. Übertragen von Argumenten/Variablen .........................................................207 8.4.1.8. Reservierte Variablen .....................................................................................208 8.4.1.8.1. Coverage-/Grid-/Tin-Variablen .........................................................208 8.4.1.8.2. Cursorposition (PNT$)......................................................................208 8.4.1.8.3. AML-Status-Variablen (AML$)........................................................208 8.4.1.8.4. Programmvariablen ...........................................................................209 8.4.2. Funktionen und Anweisungen....................................................................................209 8.4.2.1. Anzeigen einer Liste mit Auswahl.................................................................210 xi 8.4.2.2. Existenzüberprüfung von Objekten ...............................................................210 8.4.2.3. Erhalten von Attributinformationen...............................................................211 8.4.2.4. Anzeigen der momentanen Einstellungen .....................................................211 8.4.2.5. Verschachtelte Funktionen .............................................................................211 8.4.2.6. Entscheidungen und Bedingungen.................................................................212 8.4.2.6.1. IF-THEN (Wenn ... dann)..................................................................212 8.4.2.6.2. IF-THEN-ELSE (Wenn ... dann ... sonst)..........................................213 8.4.2.6.3. SELECT-WHEN (Wähle ... wenn)....................................................214 8.4.2.6.4. GOTO ................................................................................................215 8.4.2.7. Schleifen ........................................................................................................215 8.4.2.7.1. Zählschleifen (&DO ... &TO ... &BY ... &END) .............................216 8.4.2.7.2. WHILE-Schleifen..............................................................................216 8.4.2.7.3. UNTIL-Schleifen ..............................................................................217 8.4.2.7.4. LIST-Schleifen ..................................................................................217 8.4.2.7.5. REPEAT-Schleifen ............................................................................217 8.4.2.7.6. Verschachtelte Schleifen ...................................................................218 8.4.2.8. Routinen (Module).........................................................................................218 8.5. Dateien und Datenbanken .......................................................................................................219 8.5.1. Öffnen einer Datei ......................................................................................................220 8.5.1.1. Datei lesend öffnen (-read) ............................................................................221 8.5.1.2. Datei mit Schreibberechtigung öffnen (-write)..............................................221 8.5.1.3. An Datei anfügen (-append)...........................................................................221 8.5.1.4. Lesen einer Zeile aus einer Datei...................................................................222 8.5.1.5. Schreiben einer Zeile in eine Datei................................................................224 8.5.1.6. Schließen einer Datei .....................................................................................225 8.5.1.7. Löschen einer Datei .......................................................................................226 8.5.1.8. Anzeigen von vorhandenen Dateien und Spalten ..........................................226 8.5.1.9. Zugriff auf INFO-Tabellen.............................................................................228 8.6. Menüs......................................................................................................................................231 8.6.1. Pulldown Menu...........................................................................................................231 8.6.2. Sidebar Menu..............................................................................................................232 8.6.3. Matrix Menu...............................................................................................................233 8.6.4. Key Menu ...................................................................................................................234 8.6.5. Tablet und Digitizer Menu..........................................................................................234 8.6.5.1. Form Menu.....................................................................................................236 8.6.5.1.1. Input fields.........................................................................................236 8.6.5.1.2. Choice fields......................................................................................236 8.6.5.1.3. Slider fields........................................................................................236 8.6.5.1.4. Button ................................................................................................236 8.6.5.1.5. Scrolling list of devices .....................................................................236 8.6.5.1.6. Check box..........................................................................................236 8.6.5.1.7. Display field ......................................................................................237 8.6.5.1.8. Setbutton............................................................................................237 8.6.5.2. Die Arbeitsweise eines Form Menus .............................................................237 8.6.5.2.1. Setzen von Variablen durch das Ausführen von Eingaben................237 8.6.5.2.2. Wie erzeugt man ein Formmenu?......................................................238 8.6.5.3. Form Menu Widgets (Bedienelemente) .........................................................238 8.6.5.3.1. Buttons ..............................................................................................239 xii 8.6.5.3.2. Check Box Fields ..............................................................................239 8.6.5.3.3. Choice Fields.....................................................................................239 8.6.5.3.4. Display Fields....................................................................................240 8.6.5.3.5. Setbuttons ..........................................................................................240 8.6.5.3.6. Input Fields........................................................................................240 8.6.5.3.7. Slider Fields.......................................................................................241 8.7. Beispieloberflächen .................................................................................................................242 Weiterführende Literatur: .....................................................................................................259 Stichwortverzeichnis..............................................................................................................................261 xiii xiv Tabellenverzeichnis 1-1. Strukturelle Bestandteile eines GIS......................................................................................................2 1-2. Funktionale Bestandteile eines GIS .....................................................................................................2 1-3. GIS und DBS........................................................................................................................................3 1-4. Logische Datenbankschemata ............................................................................................................14 1-5. Neue SQL-Methoden in OPENGIS ...................................................................................................20 1-6. Methoden für räumliche Analyse .......................................................................................................21 1-7. Einige Attribute des FDGC Metadaten-Standards .............................................................................27 3-1. Namenskonventionen für Coverages ..................................................................................................59 3-2. Namenskonventionen für Bearbeitungsschritte..................................................................................59 3-3. DCW layers ........................................................................................................................................84 3-4. WORLD 1: 1.000.000, Edition 3-GSGS............................................................................................85 Abbildungsverzeichnis 1-1. Ebenenprinzip.....................................................................................................................................10 1-2. Objektklassenprinzip am Beispiel ALK.............................................................................................10 1-3. Datenbanksystem (DBS) ....................................................................................................................12 1-4. 1:n-Beziehung ....................................................................................................................................13 1-5. Primärschlüssel: Geometriedaten .......................................................................................................15 1-6. Fremdschlüssel: Sachdaten.................................................................................................................16 1-7. Metadatentypen (nach SPIESS 98) ....................................................................................................26 2-1. Vektordaten: Ein Polygoncoverage ....................................................................................................31 2-2. Aufbau eines Arcs ..............................................................................................................................33 2-3. Arcs mit Dangling Nodes ...................................................................................................................34 2-4. Polygone mit Pseudo Nodes und Label Points...................................................................................35 2-5. Straßencoverage mit drei bemaßten Routen.......................................................................................38 2-6. Ausschnitt eines Liniencoverages mit bemaßten Abschnitten ...........................................................39 2-7. Dateien eines Coverages.....................................................................................................................40 2-8. Rasterdaten: ein Grid..........................................................................................................................42 2-9. TINs und Lattices im Vergleich - Ausgangsdaten und Resultate (aus ARCDOC) ............................44 2-10. Datenquelle (Punkte) für ein TIN.....................................................................................................44 2-11. Resultierendes TIN...........................................................................................................................45 2-12. Das ARCTOOLS Hauptmenü ..........................................................................................................46 2-13. Die Online-Hilfe ARCDOC .............................................................................................................49 2-14. Funktionale Kommandolisten in ARCDOC.....................................................................................50 2-15. Alphabetische Kommandolisten in ARCDOC.................................................................................51 2-16. Suchfunktion in ARCDOC...............................................................................................................51 2-17. Glossar in ARCDOC ........................................................................................................................52 2-18. Das Tool Browser Menü...................................................................................................................53 2-19. Das Data Viewer Menü ....................................................................................................................53 2-20. Das Programm zur Konvertierung von Einheiten.............................................................................54 3-1. Arbeitsablauf eines GIS-Projekts .......................................................................................................57 3-2. Kartenübersicht mit TICs ...................................................................................................................60 3-3. Vorbereitung des Kartenmaterials: nicht eindeutige Start- und Schnittpunkte festlegen ...................61 xv 3-4. Eingabemethode auswählen (Set Coordinate Entry Device)..............................................................65 3-5. Initialisierung des Digitalisierbretts ...................................................................................................65 3-6. Das Export Menü................................................................................................................................71 3-7. Das Generate Menü ............................................................................................................................74 3-8. Das Generate Menü zur manuellen Eingabe (Linien) ........................................................................75 3-9. Konvertierung von DXF nach ARC/INFO.........................................................................................76 3-10. Arcs mit Dangling Nodes .................................................................................................................78 3-11. Das Transform Coordinates Menü ...................................................................................................83 3-12. Terminologie für Datenbanken.........................................................................................................86 3-13. Das Add Items Menü........................................................................................................................87 3-14. Das ASCII Table to INFO Menü......................................................................................................88 3-15. Digitalisieren von Arcs und Polygonen............................................................................................94 3-16. Das Describe Coverage Popup Menü.............................................................................................104 3-17. Select an Edit Coverage Menü .......................................................................................................105 3-18. Das Change Symbolset Menü ........................................................................................................106 3-19. Erweiterte Maustastenbelegung zum Digitalisieren.......................................................................109 3-20. Das Edit Menü................................................................................................................................110 3-21. Das More Arc Editing Menü ..........................................................................................................111 3-22. Optionen beim Node to Arc Snapping ...........................................................................................111 3-23. Das Arc Environment Menü...........................................................................................................112 3-24. Das Table Editor (AAT) Menü .......................................................................................................113 4-1. Das Union Menü ..............................................................................................................................120 4-2. Das Identity Menü ............................................................................................................................122 4-3. Das Intersect Menü...........................................................................................................................126 4-4. Das Clip Menü..................................................................................................................................129 4-5. Das Erase Menü................................................................................................................................133 4-6. Das Update Menü.............................................................................................................................136 4-7. Das Split Menü.................................................................................................................................138 4-8. Das Mapjoin Menü...........................................................................................................................140 4-9. Das Append Menü............................................................................................................................141 4-10. Das Reselect Menü.........................................................................................................................143 4-11. Das Dissolve Menü ........................................................................................................................144 4-12. Das Eliminate Menü.......................................................................................................................145 4-13. Das Productivity Tools Menü .........................................................................................................150 4-14. Das Productivity Tools Menü .........................................................................................................150 5-1. Das Productivity Tools Menü, Type = Network und das Location-Allocation-Pulldownmenü.......156 6-1. Wichtige Kartenparameter................................................................................................................160 6-2. Das Map Tools Hauptfenster ............................................................................................................166 6-3. MapTools mit View Pulldownmenü .................................................................................................166 6-4. Der Add New Theme Manager ........................................................................................................167 6-5. Das Theme Manager Menü ..............................................................................................................167 6-6. Das Polygon Coverage Properties Menü..........................................................................................168 6-7. Discrete Legend Editor (Bsp. für Linien-Coverages ........................................................................168 6-8. Das Classification - Menü ................................................................................................................168 6-9. Der Save File as Macro Dialog ........................................................................................................169 6-10. Das CoverageText Properties Menü ...............................................................................................169 6-11. Das Zoom Menü.............................................................................................................................170 6-12. Das Tool Menü ...............................................................................................................................170 xvi 6-13. Das Snapshot Menü........................................................................................................................171 6-14. Das Map Menü ...............................................................................................................................172 6-15. Das Map Template Menü ...............................................................................................................172 6-16. Seiteneigenschaften: Das Page Properties Menü ...........................................................................173 6-17. Der Map Object Manager...............................................................................................................173 6-18. Das Add New Object Menü ...........................................................................................................173 6-19. Das Snap to Grid Menü ..................................................................................................................174 6-20. Das View Properties Menü.............................................................................................................175 6-21. Das Key Properties Menü...............................................................................................................175 6-22. Das Scalebar Properties Menü .......................................................................................................176 6-23. Das North Arrow Properties Menü.................................................................................................176 6-24. Das Text String Properties Menü ...................................................................................................177 6-25. Das Text Symbol Properties Menü.................................................................................................177 6-26. Das More Text Symbol Properties Menü .......................................................................................177 6-27. Das Shaded Box Properties Menü..................................................................................................178 6-28. Das Shade Properties Menü ...........................................................................................................178 6-29. Das Custom Color Properties Menü...............................................................................................178 6-30. Das Graph Properties Menü ...........................................................................................................179 6-31. Das Layout Properties Menü..........................................................................................................179 6-32. Die Metafile Format und Plotting Utilities Menüs .........................................................................180 7-1. Das TIN Builder Menü.....................................................................................................................183 7-2. Das TIN Source Menü......................................................................................................................184 7-3. Das TIN Source Menü (Generate)....................................................................................................184 7-4. Das TIN Source Menü (Lattice).......................................................................................................184 7-5. Das TIN Properties Menü.................................................................................................................185 7-6. Das TIN to Lattice Menü..................................................................................................................185 7-7. Das Export from ARC / TINs and Lattices Menü............................................................................186 7-8. VRML-3D Geländemodell von Heidelberg .....................................................................................186 7-9. Das TIN to VRML-Menü.................................................................................................................186 7-10. Ausschnitt einer VR-Welt der Heidelberger Altstadt direkt aus ARC/INFO.................................187 7-11. Das Surface Properties Menü .........................................................................................................188 7-12. Der Grid Composite Property Sheet...............................................................................................189 7-13. Das Mesh Properties Menü ............................................................................................................190 7-14. 3D-Mesh.........................................................................................................................................190 7-15. Das Camera Orientation & Advanced Camera Orientation Menü.................................................191 7-16. Das Camera Preferences Menü ......................................................................................................191 7-17. Einzelbild aus einem der Videos ....................................................................................................191 7-18. Das Productivity Tools Menü (Type = Animation) ........................................................................192 7-19. Das Flightpath Menü und Optionen Menü.....................................................................................192 7-20. Das Flyby Viewing Options Menü .................................................................................................193 7-21. Das Flight Frame Generator Menü.................................................................................................193 7-22. Das Mpeg-Encode Menü................................................................................................................193 7-23. Der Circular Flight Path Generator ................................................................................................194 7-24. Der interne MPEG-Player ..............................................................................................................194 7-25. Das Surface Menü ..........................................................................................................................195 7-26. Das Contouring Tool Menü ............................................................................................................195 7-27. Das Visibility Menü........................................................................................................................196 7-28. Das Volume Calculation Menü.......................................................................................................196 xvii 7-29. Das Cut & Fill Calculation Menü...................................................................................................197 Beispiele 1-1. Tabelle / Sicht erstellen ......................................................................................................................18 1-2. Selektion: Auswahl von Zeilen einer Tabelle.....................................................................................18 1-3. Projektion: Auswahl von Spalten einer Tabelle .................................................................................18 1-4. Verbund: Relationen werden miteinander verknüpft (JOIN) .............................................................18 1-5. Vereinigung mehrerer Tabellen (UNION)..........................................................................................19 1-6. Schnittbildung (INTERSECT) ...........................................................................................................19 1-7. Differenz (EXCEPT) ..........................................................................................................................19 4-1. Baumbestand ....................................................................................................................................123 4-2. Tarifgrenzen für ÖPNV-Netz............................................................................................................124 4-3. Nunavut ............................................................................................................................................125 4-4. Brunnenstandorte und Altlasten .......................................................................................................126 4-5. Krötenwanderung .............................................................................................................................127 4-6. Erosionsgefahr..................................................................................................................................128 4-7. Gefährdete Standorte von geschützten Pflanzen ..............................................................................130 4-8. Naturschutzgebiet.............................................................................................................................131 4-9. Landnutzung einer Gemeinde ..........................................................................................................132 4-10. Kahlschlagflächen ..........................................................................................................................133 4-11. Schienennetz...................................................................................................................................134 4-12. Landbedeckung ..............................................................................................................................135 4-13. Aktualisierung von Karten .............................................................................................................137 4-14. Kreisgrenzen...................................................................................................................................138 4-15. Teildigitalisierungen zusammenfassen...........................................................................................140 4-16. Landkreis ........................................................................................................................................142 4-17. Ackerflächen nach Besitzern ..........................................................................................................143 4-18. Nahtlose Kartenübergänge .............................................................................................................145 4-19. Doppelt digitalisierte Linien...........................................................................................................146 4-20. Pufferzone um Schnellstraßen........................................................................................................147 xviii Vorwort * LN: Ich denke, wir sollten die Zielgruppe noch staerker betonen - Unterschied zu ArcView oder Positionierung innerhalb von ArcGIS 8.1 Fast alle Entscheidungen haben einen räumlichen Bezug. Mit der immer breiteren Verfügbarkeit Geographischer Informationssysteme wachsen auch die Möglichkeiten, diese räumlichem Bezüge und Abhängigkeiten mit Hilfe des Computers herauszuarbeiten. Da dieses Potenzial noch lange nicht ausgeschöpft ist, ist ein weiterer Zuwachs der Nachfrage nach GIS (und deren Anwendern/Betreuern) abzusehen. Wir wollen mit diesem Buch eine Einführung in Theorie, Grundlagen und Anwendung Geographischer Informationssysteme geben. Der Schwerpunkt dieses Buches liegt in der Einführung in die GIS-Software ARC/INFO, sei es als Kursbegleitung oder zum Selbststudium. Die umfangreichen Möglichkeiten, die dieses Programm bietet, können wir natürlich bei diesem Umfang des Buches nicht erschöpfend behandeln, genausowenig können wir auf alle Analysemöglichkeiten ausführlich eingehen. Für weitergehende Fragen verweisen wir auf die weiterführende Fachliteratur und verschiedene WWW-Seiten. ARC/INFO war eines der ersten kommerziellen GIS-Programme. Seine lange Entwicklungsgeschichte bringt eine für Windows-Verwöhnte manchmal etwas sperrige Bedienung und eine anfangs hohe Lernkurve mit sich. Dies liegt jedoch nicht alleine am Programm, sondern vielmehr an der Komplexität der Materie insgesamt. Mit der Version 8 erschien eine in der Windows-Version grundlegend neue Version des GIS-Pakets ARC/INFO. Neben einer stark vereinfachten Bedienung wurde das relationale Datenmodell um ein objektorientiertes ergänzt. Die Workstation-Varianten wurden ebenfalls erweitert, ihre Bedienung hat sich gegenüber den 7er Versionen jedoch nicht wesentlich geändert. Dieses Buch soll den Anwender in die Lage versetzen, sich selbständig oder im Rahmen eines Kurses die Bedienung von ARC/INFO anzueignen. Mit dem Kapitel zu AML wird zugleich ein plattformunabhängiges Werkzeug zur Erstellung eigener Anwendungen mit ARC/INFO beschrieben. Auf die Programmierung von Desktop-ARC/INFO mit Visual Basic oder COM-kompatiblen Sprachen können wir in diesem Zusammenhang nicht eingehen. Im Text verwenden wir häufig die englischen Begriffe, die in der jahrzehntelangen Geschichte des Programmes im täglichen Umgang mit ARC/INFO häufig gebraucht werden. Die verwendeten Beispieldaten stammen hauptsächlich aus dem angelsächsischen Raum, da nur hier umfangreiche Daten problem- und kostenlos zugänglich sind. Das Kapitel zur AML basiert auf einem Skript von Stefan Scherer, dem Abschnitt zu SDE liegt eine Arbeit von Roman Elsässer zugrunde. Die Abbildungen des Theorieteils wurden von Dipl. Ing. Christine Brückner und den Autoren angefertigt. Den Teilnehmern unserer Kurse danken wir für zahlreiche Anregungen zu früheren Versionen dieses Buches. Für die kritische Durchsicht des Textes und Anregungen danken wir ganz besonders herzlich ... und ... . Layout-Konventionen Um dieses Buch möglichst übersichtlich zu gestalten, wurden für Programmein- und ausgaben, Übungsaufgaben, Hinweise etc. verschiedene Formatierungen verwendet, die wir hier kurz vorstellen wollen. i Vorwort Allgemein Im laufenden Text beziehen wir uns manchmal auf Datei- oder Verzeichnisnamen. Damit sich diese vom übrigen Text abheben, setzen wir sie in Schreibmaschinenschrift, wie z.B die Datei grenzen.bnd. Um auf möglicherweise schwerwiegende Fehler in der Bedienung etc. hinzuweisen geben wir einen Warnhinweis: ! Achtung! Tun Sie das bloß nicht, Sie würden es höchstwahrscheinlich später bereuen. Sagen Sie nicht, wir hätten Sie nicht gewarnt! Daneben gibt es natürlich noch beliebig viele Möglichkeiten, weniger schwere Fehler zu machen, auf die wir mit den folgenden Formaten hinweisen: Vorsicht Auch hier ist eine mögliche Falle versteckt, die Ihnen bei Nichtbeachtung möglicherweise einige graue Haare beschert. * Hier fehlt noch ein Icon ! Wichtig Auch bei diesem Hinweis sollten sie etwas genauer hinsehen, wenn Sie sich unnötige Arbeit oder Datenverluste ersparen möchten. i Tip: Bitmaps in Karten Kleine Tricks oder Hinweise, die vielleicht der einen oder dem anderen etwas Arbeit sparen oder eine neue Möglichkeit aufzeigen sehen so aus. Um das Programm zu lernen, müssen Sie leider ab und zu auch selbst etwas tun. Dafür sind unsere Übungsaufgaben da. Sie sehen in etwa folgendermaßen aus: ? Übung ii Vorwort Verbinden Sie die durch split geteilten Coverages durch append wieder zu einem Coverage und erstellen Sie die Topologie neu. * note zweckentfremdet fuer Uebungen - Hier fehlt noch ein Icon ... * Icon dazu? - Stylesheets Manchmal gibt es auch sinnvolle Ergänzungen im World Wide Web, die wir ihnen nicht vorenthalten wollen, z.B. auf der Homepage unseres Lehrstuhls ;) : http://www.geog.uni-heidelberg.de/wisogeo/ Alles können wir in diesem Buch bei weitem nicht abdecken, deshalb geben wir nach jedem Kapitel Hinweise für weiterführende Literatur. Kommandozeile Folgende Darstellung verwenden wir für die kommandozeilenorientierte Schreibweise von ARC/INFOBefehlen1: Kommando {erforderliches Argument} [optionales Argument | optionales Argument] In diesem Beispiel ist das erste Argument nach dem Befehl ein erforderliches Argument, das 2. und 3. Argument stellen optionale Eingaben dar, aus denen eine ausgewählt werden kann. Wird das optionale Argument nicht angegeben, so wird die Programmvorgabe übernommen, falls eine solche existiert. In der Regel ist dies die erste von mehreren genannten Optionen. Will man ein optionales Argument auslassen, aber ein späteres angeben, so muß für jedes ausgelassene Argument ein # eingegeben werden. Für die so übersprungenen optionalen Argumente wird jeweils der vom Programm standardmäßig vorgegebene Wert eingesetzt: * Beispiel komplettieren (Usage) Arc: usage register ... Arc: register tk50a # # composite 1 2 3 In der Regel wird eine Eingabe an der Kommandozeile mit einer Return/Entertaste beendet: Ret. Der Digitalisierpuck hat eine eigene Tastatur, die im Text so erscheint: 1, 8, A etc. Der Teil, der selbst eingegeben werden muß, wird von der Programmausgabe abgehoben: Arc: erase i_poly op_poly outerpy Erasing i_poly with op_poly to create outerpy Sorting... Intersecting... Assembling polygons... Creating new labels... Creating outerpy.PAT... AML-Texte und andere Textdateien oder Programmtexte erscheinen ebenfalls in Schreibmaschinenschrift: display 9999 2 arcedit iii Vorwort editcover river drawenvironment arc node error editfeature arc nodesize dangle .2 nodecolor dangle 2 nodesize pseudo .15 nodecolor pseudo 5 draw ArcTools Um Ihnen Hilfe zu geben, sich durch die verschiedenen ARCTOOLS-Menüs zu hangeln, ohne das ganze Buch mit Screenshots vollpflastern zu müssen, haben wir den Weg, den Sie mit der Maus zurücklegen müssen, markiert: CommandTools Analysis Overlay Intersect Beziehen wir uns auf einzelne Schaltflächen eines gerade aktiven Menüs, so sieht das im laufenden Text so aus: Select an item. Fußnoten 1. In den Hilfesystemen von ARC/INFO werden die Befehlsnamen zur besseren Lesbarkeit jeweils groß geschrieben, obwohl das Programm in der Regel eine Eingabe in Kleinbuchstaben erwartet. iv Kapitel 1. Grundlagen von Geographischen Informationssystemen Was ist ein GIS? Der englische Begriff geographical information system wird im Deutschen mit Geoinformationssystem wiedergegeben. Unter diesem allgemeinen Oberbegriff werden recht unterschiedliche Dinge verstanden. Dies liegt am weiten Spektrum möglicher Einsatzgebiete von Geoinformationssystemen. 1.1. Was ist ein GIS * wir brauchen noch ein paar motivierende, interesseerregende einfuehrende Worte zu Anwendungspotential etc. Grundsätzlich handelt es sich bei einem GIS1 um ein spezielles digitales Informationssystem. Die große Klasse der digitalen Informationssysteme gewinnt in unserem digitalen Informationszeitalter immer mehr an Bedeutung. Ihre wesentlichen Charakteristika sollen nachfolgend kurz skizziert werden. Digitale Informationssysteme (IS) erlauben die digitale Erfassung, Speicherung, Aktualisierung, Verarbeitung und Wiedergabe von umfangreichen Informationen eines Fachgebietes (nach STREIT 97). Als operationale Grundlage dafür dienen meist ein oder mehrere Datenbanksysteme. Das Informationssystem ermöglicht eine thematisch strukturierte Abfrage und Analyse dieser unterschiedlichen Daten. Diese können wiederum in unterschiedlicher Form vorliegen. Grob können folgende Typen unterschieden werden: (Alpha)numerische Daten Text-Dokumente d.h. Attribute als Text oder Zahlen in der Regel unstrukturiert (wenn der Text nicht z.B. in SGML/XML markiert ist und so auch eine gezieltere inhaltliche Suche ermöglicht), aber z.B. Volltextsuche möglich Bilder Multimediale Informationen Fotos, Scans, Satellitenbilder Digitale Videos, Audiosequenzen, computergenerierte Animationen, o.ä. GIS ist ein Oberbegriff für eine große Menge differenzierter raumbezogener Informationssysteme. Nach Bill (1999:91) können z.B. folgende Typen unterschieden werden: LIS RIS Land(schafts)informationssystem (z.B. zur Naturraumausstattung) Rauminformationssystem (z.B. für Regionalplanung) KIS UIS Kommunales Informationssystem (für Planung u. Verwaltung) Umweltinformationssystem (z.B. Umweltüberwachung) NIS FIS Netzinformationssystem (z.B. Kanal-IS, Straßen-IS) Fachinformationssystem (z.B. Boden-IS, ...) BILL/FRITSCH (1991) definieren ein GIS folgendermaßen: Bill/Fritsch 1991, 5 1 Kapitel 1. Grundlagen Ein Geo-Informationssystem ist ein rechnergestütztes System, das aus Hardware, Software, Daten und den Anwendungen besteht. Mit ihm können raumbezogene Daten digital erfaßt und redigiert, gespeichert und reorganisiert, modelliert und analysiert sowie alphanumerisch und graphisch präsentiert werden. Im Englischen läßt sich dies noch knapper formulieren: Burrough 1986 a powerful set of tools for collecting, storing, retrieving at will, transforming and displaying spatial data from the real world. oder mit Betonung der Organisationsseite: Cowen 1988, zitiert in Burrough 1998 a decision support system involving the integration of spatially referenced data in a problem solving environment. Dabei unterscheiden die Worte analyze und spatial ein GIS von herkömmlichen (nichträumlichen) Informationssystemen oder aber von Kartographieprogrammen (die keine Analysefunktionen besitzen). Damit kann man GIS strukturell (Tabelle strGIS) oder funktionell (Tabelle fnkGIS) nach seinen Komponenten untergliedern: Tabelle 1-1. Strukturelle Bestandteile eines GIS Komponente Bestandteile und geschätzte Lebensdauer in Jahren Hardware Rechner, Peripherie, Netzwerk (3-5) Software Programm-System und modulare GIS-Werkzeuge (3-15) Geodaten bestehend aus Geometrie, Topologie und Thematik (10-30) Anwender (weites Spektrum) Tabelle 1-2. Funktionale Bestandteile eines GIS Komponente Bestandteile Datenbank Attribute, Geoobjekte Räumliches Analysewerkzeug Routenfindung, Pufferung, Polygonverschneidung, Räumliche Suche Kartographiesystem Punkte, Linien, Flächen, Objekte, Schichten / Ebenen Aus der Lebensdauer kann auch der Wert der einzelnen Komponenten abgeschätzt werden: Digital erfaßte und vor allem gepflegte Datenbestände sind meist deutlich wertvoller als Hard- oder Software. Besonders die Pflege von sich in der Regel ändernden Datenbeständen ist noch immer sehr aufwendig und kostenintensiv. Kosten für Hard- und Software sinken laufend, doch insbesondere für spezialisierte Software muß oft deutlich mehr ausgegeben werden als für Hardware. 2 Kapitel 1. Grundlagen 1.1.1. Wozu GIS? Es stellt sich die Frage, wozu ein GIS benötigt wird. Sind all diese Funktionalitäten nicht schon durch eigene, spezialisierte Programme abgedeckt, wie es folgende Beispiele nahezulegen scheinen? * auf registered trademarks™ verweisen (Vorwort?) • Möglichkeit der statistischen Berechnung durch SAS, SPSS, Excel • Darstellung von Karten z.B. MERCATOR, MapInfo, THEMAK • Bearbeitung der Geometriedaten mit CAD-Programmen z.B. AutoCAD... • Verwaltung großer Datenbestände in Datenbanken Diese Unschärfe in der Abgrenzung zwischen Datenbanksystemen, Kartographiesystemen und CADSystemen nimmt sogar noch zu, da viele Funktionen heute in den unterschiedlichsten Systemen implementiert werden. Folgende Aspekte eines „typischen“ GIS sollen daher noch einmal aufgeführt werden: • Geometrische Analysen / Flächenverschneidung / Buffer... • Alle Möglichkeiten in einem System • Verknüpfung verschiedener Abfragen möglich • Kombination verschiedener Datentypen / Geometrien • Aufbau eines interaktiven räumlichen Informationssystems. 1.1.2. GIS und Datenbanken Heute ist ein Trend zu beobachten, daß einige GIS-Funktionalität auch in modernen Datenbanksystemen zur Verfügung gestellt wird. Doch sind nach SPIESS die in Tabelle Tabelle 1-3 genannten grundsätzlichen Unterschiede zwischen Geoinformationssytemen und Datenbanksystemen zu berücksichtigen. Tabelle 1-3. GIS und DBS GIS DBS Geoobjekte mit explizitem Raumbezug und gekoppelten Sachdaten Modellierung allgemeiner Objekte, Raumbezug nur als Attribut Selektion von Geoobjekten über Raumbezug oder Attribute Selektion von Objekten über Attribute (Schlüssel) Datenanalyse interaktiv-graphisch und numerisch-statistisch Statistische Datenanalyse Kartographische Visualisierung Visualisierung als Tabellen und Diagramme (Business-Grafik) 1.1.3. GIS und CAD Gerne werden GIS mit CAD (Computer-Aided-Design) Systemen verglichen, da sich die Funktionalität 3 Kapitel 1. Grundlagen beider Systeme annähert. Jedoch ist ein grundsätzlicher Unterschied in der Aufgabenstellung der jeweiligen Produkte zu sehen: bei CAD steht die Konstruktion im Vordergrund, d.h. vom digitalen Modell zur realen Welt, während dies in GIS umgekehrt ist, da dort das Hauptaugenmerk auf der Abbildung der realen Welt ins digitale Modell liegt. BILL u. FRITSCH geben folgende Definition eines CAD-Systems: Bill/Fritsch 1991, 40 CAD - Systeme dienen dem interaktiven geometrischen Modellieren in 2D und 3D im Rechner mit den Komponenten Beschreibung, Entwicklung, Bearbeitung, Speicherung und Darstellung. Damit ergeben sich im Vergleich zu GIS folgende Eigenschaften von CAD-Systemen: • Erfassung, Verwaltung und Präsentation als Komponenten • Erweiterte Datenmodellierung • Zwei- und/oder Dreidimensional • Rein vektororientiert (Raster nicht sinnvoll) • Permanentdatenhaltung • Hohe Interaktivität • Stärken in der Visualisierung • nur eingeschränkte Analysefunktionen (nach BILL / FRITSCH 1991, 40, erweitert) 1.1.4. GIS und Kartographie Kartographieprogramme legen den Schwerpunkt auf die Visualisierung raumbezogener Sachverhalte. Eine computerunterstützte Analyse wurde ursprünglich nicht unterstützt. Heute werden Kartographieprogramme oft mit Datenbanken gekoppelt, bzw. greifen auf diese zu und werden werden dann bisweilen schon als GIS bezeichnet. Diese Bezeichnung ist nicht zutreffend, da die geographische Analyse ein elementares Merkmal eines GIS darstellt. Oben erwähnte Systeme werden heute meist als Desktop Mapping Systeme (Bsp: ARCVIEW) bezeichnet. Ursprünglich als reine Visualisierungswerkzeuge gedacht, fließt in diese Systeme heute immer mehr GIS-Funktionalität ein, oder wird in Form von optionalen Modulen zur Verfügung gestellt. Es ist also ein Trend weg von großen, monolithischen Geoinformationssystemen hin zu modularen, für die jeweilige Aufgabe optimierten GIS festzustellen. Dies spiegelt auch besser die heterogene Struktur, Funktionalität und Anwendungsgebiete von GIS wieder. In einer GIS-Analyse stellen die eigentlichen Kartographieprogramme nur einen Aspekt, nämlich die kartographische Visualisierung, zur Verfügung. 4 Kapitel 1. Grundlagen 1.2. Einsatzbereiche von Geoinformationssystemen Geoinfomationssysteme weisen einen äußerst breiten Bereich von Einsatzmöglichkeiten auf, da eigentlich alle Informationen und Daten über die physische Welt und die in ihr lebenden und wirkenden Menschen in irgendeiner Weise einen Ortsbezug besitzen. Die Verwaltung, Darstellung und Analyse dieser „verorteten“ Daten gehört zu den grundsätzlichen Aufgaben eines Geoinformationssystems. Dieses gilt für die unterschiedlichsten Maßstabsebenen und Themenschwerpunkte. Damit ist die Bedeutung von Geoinformationssystemen als einem der Hauptwerkzeuge in den Geo- und Umweltwissenschaften, aber auch für alle raumbezogenen Planungs-, Verwaltungs- oder Überwachungs- und Analyseaufgaben stark gestiegen. Es soll nur grob zwischen dem Einsatz in Wirtschaft und Verwaltung und dem in Umwelt und Natur unterschieden werden. Da aber auch mit und in der Umwelt gewirtschaftet wird, kommt es natürlich zu Überschneidungen. Mögliche Anwendungen (ohne Anspruch auf Vollständigkeit) sind: • Logistik / Verkehrsplanung / Routenplanung (Speditionen, Taxiunternehmen, Lieferverkehr, Feuerwehr, Rettungsdienste ...) • Telematik • Einzugsbereichsermittlung • Standortplanung • Trassenplanung • Landschaftsplanung • Grundstücksverwaltung • Umweltkataster / Baumkataster, ... • Erosionsberechnungen • Kanal-/Leitungsverwaltung • Straßenverwaltung • Stadtinformationssysteme • Nationalpark-Informationssysteme • Tourismusinformationssysteme • Geomarketing • Hydrologische Fragestellungen (Grundwasser, Einzugsbereiche, Ablaufgebiete) • Hochwassermodellierung • Sozioökonomische Modellierung • Klimaforschung • Telematik / Navigationssysteme • Medizin • Kriminalistik • Location Based Services (LBS) • u.v.m. 5 Kapitel 1. Grundlagen Außerdem spielt die Integration von Systemen und Methoden für folgende Aufgaben im Rahmen von interoperable GIS eine verstärkte Rolle: • wissensbasierte Spatial Decision Support Systems (SDSS) • rechnergestützte Datengewinnung (für Geometrie und Sachdaten) • WWW-Integration Weitere Einsatzmöglichkeiten können aus der in den späteren Kapiteln vorgestellten Übersicht über mögliche Analysefunktionen erschlossen werden. Letztendlich hängt es vom Anwender ab, wie er ein GIS einsetzt. 1.3. Digitale Geodaten 1.3.1. Geoobjekte Es existieren unterschiedliche Sichtweisen der Welt und ihrer Phänomene. Eine Aufgabe der Geoinformatik ist es, diese Phänomene geeignet in ein digitales und damit auf 0 und 1 als Ausdrucksmittel beschränktes Computersystem zu überführen. BURROUGH und McDONNELL (1998) unterscheiden folgende mögliche Abstraktionsebenen der realen Welt: • Reale Welt • (wahrgenommene) Struktur des untersuchten Phänomens • GIS-Repräsentation der Phänomenstruktur • Raster • Vektor • etc. • Struktur der Datenbasis • Hierarchisches Datenmodell • Netzwerk-Datenmodell • Relationales Datenmodell • Objektorientiertes Datenmodell • Hardwarestruktur Wie definieren wir nun die für GIS relevanten Geoobjekte und wie werden sie in Geographischen Informationssystemen verwaltet und verwendet? Ein Geoobjekt (auch oder ) definieren wir als ein auf einen räumlichen Ausschnitt der Erde bezogenes reales oder abstraktes Objekt mit folgenden Charakteristika: • Lage (und Form) im Raum (Geometrie) • Räumliche Beziehungen zu anderen Geoobjekten (Topologie) • Fachliche Inhalte (Thematik) 6 Kapitel 1. Grundlagen SPIESS 98 fügt diesen die Dynamik als Veränderung der obigen Charakteristika mit der Zeit hinzu. Darauf gehen wir unter „Thematik und Dynamik“ im Abschnitt 1.3.3 genauer ein. Geodaten können unterschiedliche räumliche (aber auch zeitliche) Dimensionen besitzen. Mögliche Dimensionen von Geoobjekten führen wir nachfolgend an: 0-dimensional (NodePunkt (keine Länge oder Fläche) / Point) 1-dimensional (Arc) Linienstück (Strecke) 2-dimensional Fläche (in der Regel besitzen Flächen keine „natürliche“ Länge, d.h. die Länge Polygon, ...) einer Fläche müßte jeweils definiert werden. Nur der Kreis besitzt mit dem Durchmesser eine inhärente „Länge“. 3-dimensional Körper (verschiedene Modellierungsmöglichkeiten: Solide (Volumen-Körper) versus Polyeder (Grenzflächen-Körper). Die kursiven englischen Bezeichnungen in der ersten Spalte nennen die typischen Vertreter im traditionellen Coverage-Datenmodell von ARC/INFO. Auf dieses wird später genau eingegangen. Wie ARC/INFO unterstützen heute viele GIS-Systeme 2,5-dimensionale Objekte, d.h. Flächen mit Höheninformationen als zusätzliche Z-Koordinate. Diese Geländemodelle sind aber keine echten 3D-Körper mit Volumen, sondern im Raum „gefaltete“ Flächen. Allerdings sind Volumenberechnungen zum Beispiel mit ebenen Schnittflächen möglich. Die entsprechenden Datenstrukturen (TIN, LATTICE, GRID), die diese 2,5-Dimensionalität unterstützen, werden üblicherweise dennoch als 3D-Datentypen aufgeführt und im Kapitel Kapitel 2 erläutert, sowie im Kapitel Kapitel 7 ausführlicher vorgestellt. Echte 3D-Systeme sind Gegenstand von Forschungsprototypen. Erste kommerzielle Systeme existieren in den Bereichen Geologie, Umweltwissenschaften und Architektur. 1.3.2. Geometrie versus Topologie 1.3.2.1. Geometrie: Raster versus Vektor Die verschiedenen GIS-Systeme verwenden unterschiedliche Ansätze zur Repräsentation der Geometrie. Grob können die folgenden Gruppen unterschieden werden, wobei wir einige verbreitete Produkte exemplarisch nach ihrem Haupteinsatzgebiet aufführen. • Vektor (ARC/INFO, SICAD, SMALLWORLD, INTERGRAPH, Bentley) • Raster (GRASS, IDRISI, OSU-MAP) • Hybrid-GIS Die meisten Produkte können heute sowohl mit Raster als auch mit Vektordaten umgehen (Hybrid-GIS), wobei noch immer die ursprünglichen Schwerpunkte erkennbar sind. Im Allgemeinen bestimmt die Geometrie eines Geoobjektes dessen Lage und Form im Raum bezogen auf ein räumliches Bezugssystem (Koordinatensystem), die durch die Angabe von Koordinaten (im zweidimensionalen Raum zwei: x und y, drei falls die Höhe z einbezogen wird) definiert wird. Zusätzlich wird eine Metrik (Abstandsfunktion) definiert, die das Messen von Entfernungen erlaubt. In rechtwinkligen Ko- 7 Kapitel 1. Grundlagen ordinatensystemen ist dies üblicherweise die Euklidische Distanz. Auf die Unterschiede zwischen Raster und Vektor wird noch bei der Vorstellung des Rasterfomates GRID von ARC/INFO kurz eingegangen. Die folgende Tabelle bietet eine differenziertere Einteilung der wichtigsten GIS-Geometriedatenstrukturen nach Raster- und Vektorformaten: Vektor Raster Unstrukturiert (Spaghetti) Nicht-Topologisch Einfache BitMap / Matrix Run-length encoded Topologie (einfach/komplex) Quadtree Modelle (diverse Erweiterungen) Objekt-Orientiert Tesselation 1.3.2.2. Topologie Topologie ist definiert als die räumliche Beziehung der Geoobjekte zueinander: In einer analogen Karte steckt implizit Information über die Lage der Geoobjekte zueinander: ein Mensch kann die Karte lesen und erkennt dabei, daß die „Brücke über den Fluß“ verläuft oder sich „die Kirche neben dem Marktplatz“ befindet. Soll der Rechner ähnliche Leistungen vollbringen, müssen außer der Geometrie der Objekte zusätzliche Informationen explizit gespeichert werden (oder errechenbar sein). Typische topologische Fragestellungen lauten: • Schneidet Objekt A Objekt B ? • Ist Objekt A in Objekt B enthalten? • Sind Objekt A und B benachbart? Die Geometrie der einzelnen Geoobjekte ist für solche Fragestellungen nicht ausschlaggebend. Bekannte Beispiele für topologische Karten sind Pläne von Straßenbahn- oder Omnibuslinien. Der genau geometrische Verlauf der Straßen ist für diese unerheblich. Es ist sogar so, daß Veränderungen im Straßenverlauf die topologische Struktur unverändert lassen. So können Haltestellen verschoben oder Straßen umgeleitet werden, ohne daß sich die Topologie der Karte ändert. Das bekannteste Beispiel zur Erklärung dieser Invarianz gegenüber solchen Transformationen wie Drehung oder Streckung ist der Luftballon auf dessen Hülle eine einfache Straßenkarte gemalt ist. Die Hülle des Luftballon kann stark verzerrt werden, aber dennoch bleibt die Topologie der aufgemalten Objekte zueinander gleich. GIS-Systeme können bezüglich ihrer Behandlung der Topologie unterschieden werden. Sie können ein topologisches Datenmodell benutzen, also die topologischen Beziehungen explizit speichern, oder diese bei Bedarf errechnen, d.h. über Möglichkeiten zur Bestimmung der topologischen Beziehungen verfügen. ARC/INFO gehört zur ersten Kategorie, während ARCVIEW zur zweiten gerechnet würde. Systeme, die keine der beiden Möglichkeiten unterstützen, sind dagegen nur als Visualisierungswerkzeug und nicht als vollwertiges GIS anzusehen. Die explizite Speicherung der Topologie bewirkt, daß das Retrieval der Information relativ rasch vonstatten geht. Dieser Vorteil wird mit einem relativ aufwendigen Datenerhebungsund Editiervorgang erkauft. Es existieren verschiedene topologische Datenstrukturen wie DIME, TIGER, GEOGRAF2 etc. Im Rahmen dieses Buches kann nur das von ARC/INFO verwendete Modell genauer dargelegt werden (vgl. Kapitel 2). Schnellere Hardware ermöglicht heute auch das Errechnen der Topologie on the fly (in erträglicher Geschwindigkeit). Dies machen sich moderne, stärker objektorientierte Systeme wie ARCVIEW, aber auch Konkurrenzprodukte, zunutze, indem sie sich die komplexere Datenverwaltung sparen. Allerdings verzichten sie dadurch auch auf die eingebaute Sicherheit, daß die Beziehungen in den 8 Kapitel 1. Grundlagen Daten konsistent sind, wie sie ein topologisches Datenmodell bietet. Die Vor- und Nachteile der beiden Ansätze müssen also im Verhältnis zu ihrem Haupteinsatzgebiet gesehen werden. Sind topologische Analysen häufig und Veränderungen der Grunddaten selten, bietet sich ein topologisches Datenmodell an -auch wenn es um die Verwaltung großer Datenbestände geht, deren Korrektheit gewährleistet sein muß. Liegt der Schwerpunkt auf der Visualisierung und verändert sich die Datengrundlage häufig, topologische Beziehungen werden aber seltener abgefragt, so ist der zweite Ansatz pragmatischer. 1.3.2.3. Topologie in ARC/INFO Der genauere Aufbau der vektorbasierten Datentypen und der dazu verwendeten wesentlichen Dateien und Tabellen wird in Kapitel Kapitel 2 vorgestellt. Folgende topologische Grundtypen werden in ARC/INFO explizit abgelegt: 1.3.2.3.1. Connectivity (Arc-Node Topologie, Verbundenheit von Features): Eine Kante (Arc) besteht aus zwei Knoten (Nodes), die den Anfangs- und Endpunkt dieser Kante (From-Node und To-Node) definieren, damit eine Richtung definieren und in einer für den Endbenutzer lesbaren Tabelle abgelegt sind. Die genaue Form der Kante ist für die Topologie uninteressant. Diese Form, d.h der geometrische Verlauf eines Arcs, wird intern über Zwischenpunkte (Vertices) definiert. 1.3.2.3.2. Flächendefinition (Polygon-Arc Topologie): In ARC/INFO werden Polygone definiert, indem die das Polygon begrenzenden Kantenlinien (Arcs) in einer internen Tabelle abgelegt werden. 1.3.2.3.3. Contiguity (Rechts-Links-Topologie): Da jede Kante in ARC/INFO eine Richtung besitzt, kann das Programm daraus eine Tabelle mit den Polygonen erstellen, die jeweils links oder rechts dieser Kante (Arc) liegen. Diese Tabelle wird gespeichert. Dabei erhält die „unendliche“ Restfläche, d.h. die Fläche außerhalb aller definierten Polygone, die Nummer 1 und wird als Universalpolygon bezeichnet. 1.3.3. Thematik und Dynamik 1.3.3.1. Thematik Wenn wir die Geometrie und Topologie eines Geoobjektes definiert haben, wissen wir noch nichts über seine inhaltliche Bedeutung. Repräsentiert diese Linie einen Fluß oder Eisenbahnschienen? Ein Geoobjekt besitzt also eine sogenannte Thematik, die über Attribute, d.h. beschreibende Variablen festgelegt wird. Diese sogenannten Sachdaten werden in der Regel in Datenbanken gespeichert und können unterschiedliche Datentypen oder Skalenniveaus aufweisen. 9 Kapitel 1. Grundlagen 1.3.3.1.1. Ebenenprinzip (Layerprinzip) In ARC/INFO werden wie in vielen Geoinformationssystemen die Geometriedaten unterschiedlicher Thematik in der Regel voneinander getrennt gespeichert, d.h. in einzelnen Geometrieebenen (layers) vorgehalten. Diese Geometrieebenen sind in ARC/INFO die sogenannten Coverages (vgl. Kapitel 2). Dieses Modellierungsprinzip stammt vom Folienprinzip der Kartographie ab. Bei diesem wirdfür jeden dargestellten Inhalt eine eigene Folie erstellt, z.B.: Gewässerfolie, Grünflächenfolie oder Schriftfolie. Durch Austausch der einzelnen Folien (bzw. Coverages) können leicht thematische Karten erstellt werden. Außerdem können die einzelnen Informationsebenen getrennt bzw. in unterschiedlichen Kombinationen analysiert werden (vgl. Abbildung Abbildung 1-1). 1.3.3.1.2. Objektklassenprinzip (Klassenhierarchien) Während beim Layerprinzip zunächst alle Ebenen gleichberechtigt sind, werden im Objektklassenprinzip Geoobjekte zu Klassen geordnet. Ein Objekt besitzt damit einen bestimmten Klassentyp und kann in eine Hierarchie von Klassen eingeordnet werden. Als Beispiel dazu zeigen wir in Abbildung Abbildung 1-2 einen Ausschnitt des Objektschlüsselkatalogs der ALK (Automatisierte Liegenschaftskarte). Abbildung 1-1. Ebenenprinzip Abbildung 1-2. Objektklassenprinzip am Beispiel ALK 10 Kapitel 1. Grundlagen * Inhalt/Beschriftung von Abbildung fehlt 1.3.3.2. Dynamik Die Dynamik eines Geoobjektes betrifft Änderungen des Geoobjektes über die Zeit. Diese Veränderungen können sowohl Thematik (Attributwerte), Geometrie oder Topologie betreffen. Am einfachsten sind die Änderungen der Thematik, d.h. der Sachdaten. Einzelnen Attributen können Zeitabschnitte für die Gültigkeit der einzelnen Ausprägungen zugewiesen werden. Dies kann mit herkömmlichen Datenbankmanagementsystemen (DBMS) realisiert werden, indem zusätzlich für jedes Attribut der Anfangs- und Endzeitpunkt der Gültigkeit als Datum gespeichert wird. Für die Verwaltung der zeitlichen Veränderung der Geometrie (2D oder 3D) oder gar Topologie von Geoobjekten sind in den meisten kommerziellen Systemen nur rudimentäre Möglichkeiten vorgesehen. Diese beschränken sich oft darauf, zu bestimmten Zeitpunkten Schnappschüsse zur Verfügung zu stellen. Im einfachsten Falle beinhaltet dies eine komplette Kopie des gesamten Datenbestandes. Dies ist natürlich äußerst ineffizient und zudem geht die Dynamik der Veränderungen zwischen diesen gespeicherten Zuständen verloren. Insbesondere objektorientierte Datenbanken bieten ausgefeiltere Mechanismen der Versionierung von Objektzuständen, eine nähere Betrachtung derselben würde aber den Rahmen dieser Einführung sprengen. * TODO AZ: (vgl. Zipf und Krüger ...) Grundsätzlich müßten für eine möglichst realitätsnahe Modellierung also dynamische räumliche Prozesse (spatio-temporal processes), mit gleichzeitigen Veränderungen in Raum und Zeit (und Attributwerten) behandelt werden. Entsprechende mehrdimensionale Analysemethoden oder Modelle sind äußerst komplex. In der Regel finden vereinfachte Modelle Anwendung, wie z.B. Zeitreihen an einem Meßpunkt (Hauptaugenmerk auf der Zeit) oder die Analyse räumlicher Verteilungsmuster zwischen definierten Zeitpunkten (Hauptaugenmerk auf dem Raum). Ein wichtiges Hilfsmittel stellt die Visualisierung solcher mehrdimensionaler Phänomene dar. Hierbei können neue Hilfsmittel wie Virtual Reality von Nutzen sein. (siehe dazu auch Kapitel 7) 1.4. Datenbanken Die Speicherung von Daten erfolgt entweder als einfache Datei (Flat File) in der Dateistruktur des Betriebssystems, oder besser unter Zuhilfenahme einer Datenbank, genauer eines Datenbank-ManagementSystems (DBMS). Für GIS ist dabei die unterschiedliche Behandlung von Geometriedaten, Topologie und der thematischen Sachdaten von Bedeutung. Für letztere hat sich die Speicherung in Datenbanksystemen durchgesetzt. Geometrie und Topologie bereiten Standard-DBMS jedoch Schwierigkeiten, da diese für einfache eindimensionale Tabellen entwickelt wurden. Hierfür wurden eigene Lösungen gefunden, wobei die Verwaltung der Geometrie und Topologie in Datenbanken gerade durch neue Entwicklungen ein starkes Wachstum erfährt. Die großen Datenmengen und die hohen Anschaffungs- und Pflegekosten, die für Geodaten typisch sind, machen eine professionelle Speicherung aller Daten in Datenbanken unerläßlich. * Heute Realität - Geodatenserver - OGC - Arc 8 - GeoDB - ArcSDE, vgl. Kapitel Geodatenbanken Zunächst sollen die grundlegenden Begriffe geklärt werden: Inhaltlich zusammengehörige Dateien bilden eine Datenbank (Datenbasis, DB). Spezielle Softwareprogramme, die die integre Verwaltung und Auswertung solcher Datenbestände erlauben, heißen Datenbank- 11 Kapitel 1. Grundlagen managementsystem (DBMS). Zusammen bilden DBMS und ein oder mehrere Datenbanken ein Datenbanksystem, was in Abbildung Abbildung 1-3 veranschaulicht wird. Abbildung 1-3. Datenbanksystem (DBS) Allerdings werden umgangssprachlich auch oft Datenbanksysteme oder Datenbankmanagementsysteme als Datenbanken bezeichnet. Wir werden im Folgenden daher nicht die strikte Nomenklatur einhalten. Bekannte DBMS sind z.B. Oracle, Informix, DB2 oder MS SQL-Server. 1.4.1. Datenmodelle von ARC/INFO In einem Datenbanksystem können 3 Ebenen bezüglich der Datenmodelle unterschieden werden. Externe Ebene Unterschiedliche Sichten verschiedener Anwender auf die Daten Konzeptionelle Ebene Strukturierung der Daten unabhängig von Hard- und Software oder speziellen Fachfragen. Beliebtes Hilfsmittel zur konzeptionellen oder logischen Modellierung des fraglichen Weltausschnitts sind die sogenannten ER-Diagramme (Entity-Relationship-Diagramme). Interne Ebene Physische Organisation der Speicherung auf dem Rechner, d.h. Festlegung von Datentypen, Speicherplatzen, Speichermedium, Zugriffsoperationen etc. Die einzelnen Ebenen sind unabhängig voneinander. Aus dieser schichten-basierten Sichtweise lassen sich einige Vorteile von Datenbanken gegenüber der Speicherung auf Basis einfacher Dateien ableiten: • Unabhängigkeit von Anwendungsprogrammen • Datenintegrität • Mehrbenutzerbetrieb • Verschiedene Sichten auf Daten • Sicherheit 1.4.1.1. Konzeptionelle Modellierung mit ER-Diagrammen Bei der Datenmodellierung handelt es sich um eine Abstraktion, bei der ein Ausschnitt der realen Welt in Form einer Datenbeschreibung abgebildet wird. 12 Kapitel 1. Grundlagen Das ER-Modell ist ein möglicher Ansatz, von der realen Welt zu abstrahieren. Dabei wird in dem betrachteten Ausschnitt der Wirklichkeit nach Objekten gesucht, die miteinander in Beziehung (= Relationship) stehen und dies im Rahmen einer speziellen grafischen Notation dargestellt. Diese Technik wird vor allem dazu verwendet, die reale Welt in Form eines abstrakteren Diagramms anschaulich darzustellen. Diese Diagramme können dann in ein Datenbankschema überführt werden. Es gibt Softwarewerkzeuge, die dabei helfen (CASE-Tools (Computer Aided Software Engineering)). Folgende Begriffe müssen in diesem Zusammenhang kurz erläutert werden: 1.4.1.1.1. Entität Ein real existierendes oder abstraktes, aber identifizierbares Objekt, das meist in Form eines Rechteckes dargestellt wird. 1.4.1.1.2. Beziehung Eine Beziehung (relationship) zeigt eine mögliche Verbindung, einen Zusammenhang zwischen zwei Entitäten auf. Für die Namen von Beziehungen werden daher gerne Verben benutzt. Dabei muß beachtet werden, daß Beziehungen von zwei Richtungen aus gelesen werden können, dann erhält die Beziehung gegebenenfalls zwei unterschiedliche Rollennamen. Relationships werden meist als Raute dargestellt. Linien weisen zu den einzelnen Entitäten. Es existieren verschiedene spezielle Typen von Beziehungen, wie Aggregation (Teil Ganzes-Beziehung), IS_A, Vater-Sohn-Beziehung, ... 1.4.1.1.3. Attribute In einem weiteren Schritt werden nun Eigenschaften (Attribute) der einzelnen Entitäten und Beziehungen identifiziert, die sie beschreiben. Attribute ordnen den Entitäten oder auch den Beziehungen beschreibende Werte zu. Hierbei muß auf die funktionale Abhängigkeit geachtet werden. So kann ein Grundstück als Attribute einen zugehörigen NAMEN, eine ZUGEHOERIGKEIT zu einer Gemeinde, eine FLURSTUECKNUMMER, einen EIGENTUEMER, eine LANDNUTZUNG etc. besitzen. Der Besitzer wird z.B. durch seinen NAMEN, die , die SPRACHE charakterisiert. Auch die Beziehungen können durch Attribute genauer charakterisiert werden. In unserem Beispiel z.B. das Jahr (DATUM), in der Besitzer das Grundstück erworben hat. 1.4.1.1.4. Kardinaliät Die Kardinalität beschreibt die Quantität, die zwischen den beiden Entitäten herrscht, d.h. wie viele Exemplare einer Entität mit wie vielen Exemplaren einer anderen Entität in einer speziellen Beziehung stehen können. Folgende Typen können unterschieden werden: 1:1, 1:n, n:m. (Für die ns oder ms können gegebenenfalls konkrete Zahlen eingesetzt werden). Es existieren noch andere Schreibweisen für Kardinalitäten, auf die hier aber nicht eingegangen werden soll. Abbildung 1-4. 1:n-Beziehung 13 Kapitel 1. Grundlagen Als Illustration soll Abbildung 1-4 dienen: ein Eigentümer kann mehrere Flurstücke besitzen, aber ein Flurstück gehört genau einem Eigentümer. Man kann sich bereits über diesen Fall streiten. Wieso sollte ein Flurstück nicht mehrere Eigentümer haben? Die Modellierung hängt also sehr stark davon ab, wie der Modellierende den Weltauschnitt sieht und welche Randbedingungen für die Anwendung gegeben sind. 1.4.1.2. Logische Datenbankschemata Für Datenbanken existieren verschiedene Möglichkeiten für den Aufbau der konzeptionellen (oder logischen) Datenschemata. Die grundlegenden logischen Schemata sollen kurz angeführt werden: Tabelle 1-4. Logische Datenbankschemata Hierarchisch Nur 1:n- Beziehungen (d.h. auch 1:1) -- einfache Baumstruktur (historisch ältestes Datenbankkonzept) Netzwerk Navigation in Graphen. Bsp: IMS von IBM. Relational Tabellen als Grundstruktur -- heute Standard der meisten kommerziellen DBMS, besonders für Sachdaten geeignet Postrelational, Die aktuellen Entwicklungen zeigen in Richtung einer Verschmelzung von relationalen objektrelational, und objektorientierten Ansätzen. hybrid Objektorientiert „Natürliche“ Sichtweise auf die modellierten Objekte. Einheit von Daten und Methoden, Zugriff auf das Objekt nur über die von ihm unterstützen Methoden, Vererbung / Kapselung/ und Polymorphie. Für Attributdaten hat sich das relationale Modell etabliert. Netzwerk- und hierarchische Datenbanken besitzen hier nur historische Bedeutung. Bei räumlichen Datenstrukturen spielen sie neben originären Konzepten noch eine gewisse Rolle. Objektorientierte Datenmodelle konnten sich nicht kommerziell durchsetzen. Auf sie werden Hoffnungen bei der Modellierung komplexer Daten gesetzt, da relationale Datenbanken im Wesentlichen für einfache "flache" Tabellen entwickelt wurden und Schwierigkeiten bestehen, komplexere Zusammenhänge effektiv in (normalisierter) Tabellenform darzustellen. Es gibt mittlerweile ein breites Angebot an sogenannter Middleware, die die Speicherung komplexer Objekte (wie Geometrie) in relationalen Systemen erlaubt. Damit ist ein Trend zu objektrelationalen (hybriden) Datenbanksystemen zu verzeichnen. Beispiele für solche Middleware-Lösungen sind die Spatial Data Cartridge für Oracle, der Spatial Extender von IBM oder die Spatial Database Engine (ArcSDE) von ESRI. ARC/INFO in Version 8 wird heute standardmäßig mit solchen GeoDB geliefert. Dies unterstreicht die heutige Marktdominanz relationaler Datenbanksysteme. Es ist daher notwendig, einige grundlegende Begriffe dieses Datenbanktyps zu klären. 1.4.1.3. Relationale Datenbanken In diesem Rahmen kann nur eine erste Begriffsbestimmung einiger für (relationale) Datenbanken wichtiger Aspekte erfolgen, damit ein grundsätzliches Verständnis des später Folgenden möglich ist. Sollen selbst größere Datenbanken aufgebaut werden empfiehlt sich eine eingehendere Beschäftigung mit diesem Thema. 14 Kapitel 1. Grundlagen 1.4.1.4. Grundbegriffe 1.4.1.4.1. Transaktion Das Transaktionsprinzip ist einer der grundlegenden Mechanismen in Datenbanken. Durch Transaktionsmechanismen werden erst sichere auf Datenbanken basierende Anwendungen oder Mehrbenutzerfähigkeit ermöglicht. Eine Transaktion besteht aus einer Folge von zusammengehörigen Verarbeitungsschritten innerhalb der Datenbank, die z.B. ein Benutzer als eine Aufgabe durchführen will (z.B. die Änderung eines Wertes in einer Tabelle). Vereinfacht dargestellt basieren Transaktionen auf dem „Alles oder Nichts“Prinzip: Entweder wird die gesamte Transaktion erfolgreich durchgeführt oder komplett zurückgewiesen. Auch bei einem Systemabsturz mitten im laufenden Betrieb, bei dem bei einer Mehrbenutzerdatenbank sehr viele Transaktionen gleichzeitig aktiv sein können, darf kein inkonsistenter Zustand der Daten entstehen, sondern es muß die Integrität der gesamten Datenbank gesichert bleiben. Inkonsistente Zustände könnten z.B. dann auftreten, wenn ein Wert gelöscht, aber der neue Wert noch nicht eingefügt wurde, oder Trigger (siehe unten im Abschnitt Abschnitt 1.4.1.4.5) nicht vollständig ausgeführt wurden. Es gibt verschiedene Ansätze, um den Transaktionsgedanken zu realisieren. Diese sogenannten Lockingmechanismen beruhen darauf, die gerade in Benutzung (Read, Write) befindlichen Tabellen (oder Tupel) für andere Benutzer auf gewisse Weise zu sperren. 1.4.1.4.2. Primärschlüssel In Relationen dürfen Tupel (Zeilen) mit gleichen Einträgen in allen Attributen nicht vorkommen, d.h. Einträge müssen eindeutig identifizierbar sein. Identifiziert werden die Einträge genau durch ihre Attribute. Kombinationen von Attributen, die einen Eintrag eindeutig identifizieren, heißen Schlüsselkandidaten. Aus den Schlüsselkandidaten kann einer, nämlich der minimale (d.h. mit der kleinsten Menge beteiligter Attribute) als Primärschlüssel ausgewählt werden. Der Primärschlüssel identifiziert damit jede Zeile eindeutig und besteht aus der minimalen Anzahl dazu notwendiger Attribute. Aus der Forderung der eindeutigen Identifizierbarkeit folgt, daß der Wert eines Primärschlüssels nie NULL sein darf. Oft wird extra ein eigenes, neues Attribut als Primärschlüssel kreiert: z.B. werden Integerwerte beständig hochgezählt oder vom System generierte, eindeutige Werte vergeben. Abbildung 1-5. Primärschlüssel: Geometriedaten 1.4.1.4.3. Fremdschlüssel Kommt der Primärschlüssel einer Relation in einer anderen Relation noch einmal als Attribut(menge) 15 Kapitel 1. Grundlagen vor, d.h. referenzieren diese Attribute die erste Relation eindeutig, so werden sie in der zweiten Relation als Fremdschlüssel bezeichnet. Auf diese Weise können Beziehungen (Relationships) des ER-Modells im Fall 1:n realisiert werden. Abbildung 1-6. Fremdschlüssel: Sachdaten 1.4.1.4.4. Sichten (Views) Ein View (in einer Datenbank) ist eine externe Sicht (d.h. die eines Endanwenders oder eines externen Anwendungsprogrammes) auf die Daten. Ein View beruht auf einer konkreten Abfrage der real existierenden Tabellen einer Datenbank und wird beim Aufruf dynamisch erzeugt. Man kann einen View daher auch als virtuelle Tabelle bezeichnen. Damit zeigt ein View auch immer die aktuellen Daten an, da bei jedem Öffnen eines solchen Views die entsprechende Abfrage von neuem ausgeführt wird. Für verschiedene Benutzer oder Benutzerkategorien können auf diese Weise verschiedene Sichten (je nach Benutzerrechten) auf dieselbe zentrale Datenbasis definiert werden. Beispielsweise dürfen nur Mitarbeiter bestimmter Abteilungen definierte Attribute gewisser Tabellen ansehen oder gar verändern. Dies wird über datenbankinterne Zugriffsrechte geregelt, die zusätzlich die Sicherheit einer Datenbank gewährleisten. In ARC/INFO exisitiert ebenfalls der Begriff view, der eine ähnliche, aber eigene Bedeutung aufweist und in Kapitel 6 eingehender erläutert wird. 1.4.1.4.5. Integritätsbedingungen Integritätsregeln sind Regeln, die bei der Eingabe oder Veränderung von Werten in der Datenbank beachtet werden müssen, damit die sachliche und logische Korrektheit der Datenbasis gewährleistet ist. Sie umfassen z.B. erlaubte Wertebereiche und Datentypen, sowie sogenannte Geschäftsregeln (business rules), die in relationalen Datenbanken z.B. mit Hilfe von Triggern oder Stored Procedures realisiert werden können. Trigger sind Anweisungen (Programmcode), die beim Verändern von Werten ausgeführt werden und z.B. die Korrektheit der Änderungen überprüfen oder auf Grundlage der Eingaben andere Daten verändern. 1.4.1.4.6. Referentielle Integrität Die Einhaltung folgender Regeln muß u.a. vom Datenbankmanagementsystem gewährleistet werden: 16 Kapitel 1. Grundlagen • Kein Bestandteil eines Primärschlüssels (wenn es sich um einen zusammengesetzten Primärschlüssel handelt) darf je den Wert NULL annehmen, da sonst der Gesamtschlüssel den Datensatz nicht mehr eindeutig identifiziert. • Zeilen, die einen Fremdschlüssel enthalten, müssen den Wert des bereits vergebenen Primärschlüssels in der referenzierten Tabelle besitzen oder den Wert NULL, sonst werden sie abgewiesen. • Primärschlüssel dürfen nicht verändert werden, wenn zu ihnen Fremdschlüssel existieren. 1.4.1.4.7. Indizes Typisch für Standard-Datenbanksysteme sind eindimensionale Indexmechanismen (z.B. B-Bäume). Für raumbezogene Daten werden spezielle Zugriffsmechanismen benötigt, die später kurz angerissen werden. 1.4.1.5. Normalformen Wir haben Relationen im Wesentlichen als Tabellen mit gleicher Variablenstruktur definiert. Diese Tabellen erfüllen eine bestimmte Normalform, wenn die Struktur der Tabellen gewissen Regeln entspricht. Es können mehrere Normalformen unterschieden werden. Der Zweck der Normalisierung von Tabellen ist die Beseitigung von Redundanzen oder mehrwertigen Abhängigkeiten zwischen Attributen. Falls diese Regeln nicht befolgt werden, kann es zu sogenannten Anomalien kommen, die die logische Konsistenz der Datenbasis gefährden, da dann in unterschiedlichen Tabellen sich widersprechende Aussagen zum Inhalt gewisser Variablen existieren. Im Folgenden geben wir eine kurze Charakterisierung der wichtigsten Normalformen: Normalformen NF 1NF Eine Relation ist in erster Normalform (1NF), wenn jeder Attributwert elementar ist, also nicht aus mehreren Bestandteilen besteht (Vektoren, Gruppen, Aufzählungen). 2NF Eine Relation ist in zweiter Normalform (2NF), wenn sie in 1NF ist und jedes Nichtschlüssel-Attribut vom Gesamtschlüssel voll funktional abhängig ist. D.h.: Ein Nicht-Schlüsselattribut darf nicht schon von einem Teil des Schlüssels abhängen. 3NF Eine Relation ist in dritter Normalform (3NF), wenn sie in 2NF ist und kein Nichtschlüssel-Attribut von einer Menge anderer Schlüssel-Attribute transitiv abhängig ist. 4NF Eine Relation ist in vierter Normalform (4NF), wenn sie in 3NF ist und außer funktionalen Abhängigkeiten keine mehrwertigen Abhängigkeiten enthält. 17 Kapitel 1. Grundlagen 5NF Eine Relation ist in fünfter Normalform (5NF), wenn sie in 4NF ist und wenn sie nicht dadurch gewonnen werden kann, daß einfachere Relationen mit unterschiedlichen Schlüsseln verschmolzen werden. Ihre praktische Bedeutung ist umstritten. Wird eine relationale Datenbank entworfen, so sollten die Tabellen grundsätzlich normalisiert sein. Allerdings können Performanceaspekte o.ä. Abweichungen sinnvoll erscheinen lassen. Diese sollen dann aber sehr bewußt vorgenommen werden. Mögliche Inkonsistenzen müssen erkannt und z.B. von der auf der Datenbank aufsetzenden Anwendung oder von Triggern oder Stored Procedures behandelt werden. 1.4.1.6. Manipulation und Selektion von Sachdaten mit SQL Die Structured Query Language (SQL) ist die standardisierte Sprache zum Erzeugen, Manipulieren und Abfragen von relationalen Datenbanken, weswegen diese umgangssprachlich manchmal auch SQL-Datenbanken genannt werden. SQL (Structured Query Language) wurde ursprünglich in den 70er Jahren in den Labors von IBM entwickelt und stellt eine Möglichkeit des Zugriffs auf relationale Datenbanken dar. SQL-Anweisungen dienen dazu, Tabellen zu erzeugen, Daten aufzufinden, einzufügen, zu verändern oder zu löschen und Zugriffsberechtigungen zu verwalten. Seither wurde SQL zum Standard für den Zugriff auf relationale Datenbanken, wenn sich auch, wie nachfolgend erläutert, verschiedene „Dialekte“ entwickelten. Beispiele für den Umgang mit externen relationalen Datenbanken und SQL mit ARC/INFO finden sich im Kapitel Kapitel 3. Hier sollen nur einige wesentliche Konstrukte von SQL vorgestellt werden. 1.4.1.6.1. SQL als Datendefinitionssprache Beispiel 1-1. Tabelle / Sicht erstellen CREATE TABLE; CREATE VIEW AS ... 1.4.1.6.2. Relationale Operationen Beispiel 1-2. Selektion: Auswahl von Zeilen einer Tabelle SELECT * FROM MITARBEITER WHERE NAME = "Maier"; Alle Zeilen, deren Feld Name den Eintrag Maier enthält, werden ausgewählt. Beispiel 1-3. Projektion: Auswahl von Spalten einer Tabelle SELECT NAME, GEHALT FROM MITARBEITER; Aus der Tabelle „Mitarbeiter“ werden die Spalten Name und Gehalt ausgewählt. 18 Kapitel 1. Grundlagen Beispiel 1-4. Verbund: Relationen werden miteinander verknüpft (JOIN) SELECT MITARBEITER.NAME, ABTEILUNG.NAME FROM MITARBEITER, ABTEILUNG WHERE MITARBEITER.ABTEILUNG = ABTEILUNG.ID; Gibt alle Mitarbeiter mit dem Namen der Abteilung, in der sie arbeiten aus. Die Namen von Mitarbeitern und Abteilungen stehen in jeweils eigenen Tabellen und werden über das Attribut ID als Fremdschlüssel verknüpft. 1.4.1.6.3. Mengenoperationen Beispiel 1-5. Vereinigung mehrerer Tabellen (UNION) SELECT * FROM BERGHEIM.EINWOHNER UNION SELECT * FROM NEUENHEIM.EINWOHNER; Die Ergebnistabelle erhält die Liste aller Einwohner von Bergheim und Neuenheim. Beispiel 1-6. Schnittbildung (INTERSECT) SELECT * FROM BANKA.KUNDEN INTERSECT SELECT * FROM FIRMAB.KUNDEN; Die Ergebnistabelle erhält die Liste aller Kundendaten, die sowohl Kunde der Bank A als auch der Firma B sind. Beispiel 1-7. Differenz (EXCEPT) SELECT * FROM BANKA.KUNDEN EXCEPT (SELECT * FROM FIRMAB.KUNDEN); Die Ergebnistabelle enthält alle Kundendaten der Bank A, die nicht Kunden der Firma B sind. Wie wir später sehen werden, gibt es in ARC/INFO recht ähnliche Operationen zur geometrischen Verschneidung von räumlichen Gebietseinheiten, bzw. Geoobjekten (vgl. Kapitel 4). Dies motiviert auch die zunehmende Verlagerung von GIS-Funktionalität in Datenbanken, bzw. die Entwicklung von SQLErweiterungen für raumbezogene Datentypen. 1.4.1.7. Raumbezogene Erweiterungen von SQL (OPENGIS) Im folgenden sollen Entwicklungstendenzen der Sprache SQL in Bezug auf die Integration geographischer Elemente vorgestellt werden. Eine Komponente des SQL 3-Standards ist SQL MM. Diese definiert standardisierte Erweiterungen für die Handhabung von Datentypen wie Text, Bild und räumlichen Daten. Es wird versucht, SQL Multimedia 19 Kapitel 1. Grundlagen (MM) mit dem Open GIS Standard abzustimmen, so daß beide die gleiche Funktionalität für räumliche Daten besitzen. Im Folgenden wird die OpenGIS Simple Features Specification For SQL Revision 1.0 erläutert, die im März 1998 veröffentlicht wurde, und an der u.a. die folgenden Unternehmen beteiligt sind: • Environmental Systems Research Institute, Inc. (ESRI) • IBM Corporation. • Informix Software, Inc. • MapInfo Corporation. • Oracle Corporation. Ziel dieser Spezifikation ist die Definition eines standardisierten SQL-Schemas, das die Speicherung, Wiederauffindung, Abfrage einschließlich Update einer Auswahl einfacher räumlicher Objekte mittels der ODBC API unterstützt. Hierbei wird unter einem Feature ein Objekt mit geometrischen Attributen verstanden. Eine Tabelle, deren Zeilen grundlegende räumliche Objekte (OpenGIS Simple Features) enthalten, wird Feature Table genannt. Ein Objekt, das in einer Feature Table gespeichert wird, besteht aus einer zweidimensionalen Geometrie mit linearer Interpolation zwischen den Knoten (Vertices). Einem solchen Objekt werden sowohl räumliche als auch nicht-räumliche Attribute zugeordnet. Vom Ansatz her werden die Datensätze räumlicher Objekte in einem relationalen DBMS in Tabellen gespeichert. Die nicht-räumlichen Attribute der Objekte werden in Spalten eingetragen, deren Datentypen denen des Standard-SQL92 entnommen sind. Die räumlichen Attribute der Objekte beziehen sich auf Spalten, deren Datentypen auf dem Konzept der zusätzlichen geometrischen Datentypen für SQL basieren. Dem Ansatz liegt folgendes geometrisches Objektmodell zugrunde (siehe Abb.): Die übergeordnete Geometrieklasse (Geometry) hat als Unterklassen Point, Curve, Surface und GeometryCollection. Jedes geometrische Objekt ist mit einem räumlichen Referenzsystem verbunden, das Auskunft über den Koordinatenraum gibt, in dem das geometrische Objekt definiert ist. Die null-, ein- und zweidimensionalen Klassen namens MultiPoint, MultiLineString und MultiPolygon setzen sich aus einer Sammlung von Punkten (Points), Linien (LineStrings) und Flächen (Polygons) zusammen. Alle Elemente einer Sammlung von Geometrien müssen dem gleichen räumlichen Referenzsystem zugeordnet sein. Die Einführung von MultiCurve und MultiSurface als abstrakte Oberklassen verallgemeinert die Schnittstelle zu den Geometriesammlungen und vereinfacht den Umgang mit Kurven und Flächen. Die Spezifikation stellt neben den neuen Datentypen auch neue Methoden zur Verfügung, um räumliche Beziehungen zwischen geometrischen Objekten zu überprüfen: Tabelle 1-5. Neue SQL-Methoden in OPENGIS Equal Prüfen, ob eine Geometrie räumlich gleich einer anderen ist. Disjoint Prüfen, ob eine Geometrie räumlich getrennt von einer anderen ist. Intersect Prüfen, ob eine Geometrie eine andere räumlich schneidet. Touch Prüfen, ob eine Geometrie eine andere räumlich berührt. Contains Prüfen, ob eine Geometrie eine andere beinhaltet Diese und weitere Methoden waren bisher nur Geographischen Informationssystemen vorbehalten und 20 Kapitel 1. Grundlagen sind jetzt direkt in der Datenbank verfügbar. Weiterhin stehen u.a. folgende Methoden bereit, die räumliche Analysen unterstützen: Tabelle 1-6. Methoden für räumliche Analyse Distance Ermittelt die kürzeste Distanz zwischen zwei beliebigen Punkten. Buffer Ermittelt eine Geometrie, deren Punkte sich gleich oder innerhalb eines maximalen Abstandes befinden. Dies ermöglicht z.B. die Berechnung eines lärmbelasteten Streifens 50m rechts und links von einer Straße. ConvexHull Ermittelt die Umrandung einer Geometrie. Intersection Ermittelt die Punkte einer Geometrie, die sich mit denen einer anderen überlagern. Difference Ermittelt die Punkte einer Geometrie, die sich von denen einer anderen unterscheiden. Die SQL92-Implementation von räumlichen Objekten, wie sie von OpenGIS definiert werden, erzeugt ein Schema zur Speicherung der Feature Tables, der Geometrie und der Informationen des räumlichen Referenzsystems. Sie legt also ein Schema zur Speicherung der räumlichen Attribute, der abstrakten geometrischen Klasse (Punkt, Linie, Fläche ...) und des zugehörigen räumlichen Referenzsystems fest. * Textbaustein von Alex zu OGC, geodB und SFS fuer CORBA 1.4.1.8. Die Spatial Database Engine (SDE) von ESRI * TODO AZ: Einleitung Damit SDE diesen offenen Datenzugriff gewährleisten kann, hat ESRI eine dreischichtige Client/ServerArchitektur. Diese ist folgendermaßen aufgebaut: • Präsentationsschicht (ArcView GIS, MapObjects, ARC/INFO, ArcExplorer etc.), • Application Server-Schicht (SDE Server), • Datenmanager-Schicht (ARC/INFO Coverages, Open GIS Simple Features, SDE compressed binary, RDBMS3). SDE arbeitet mit allen führenden modernen relationalen DBMS-Produkten wie Oracle, Informix, IBM DB2, Microsoft SQL Server und Sysbase zusammen. SDE benutzt das darunterliegende RDBMS, das für den Endbenutzer und den Anwendungsentwickler „unsichtbar“ ist und das die räumlichen und nichträumlichen Daten enthält. SDE ist mittels eines „Database Interface Modules“ eng mit dem RDBMS gekoppelt. Dieses Modul ist die Schnittstelle zu allen in dem darunterliegenden RDBMS gespeicherten, Geodaten und Sachdaten. Dieses Modul wurde so anbieterunabhängig wie möglich vom RDBMS gestaltet, um die Zusammenarbeit mit vielen Systemen zu erreichen. Ein SDE-Datensatz wird Schicht (Layer) genannt und ist ein Satz von geographischen Eigenschaften einheitlicher Objekttypen, die die gleichen Attribute haben. Ist z.B. ein Gebietsausschnitt eines topologischen oder kartographischen Modells nicht als ein komplettes Objekt gespeichert, sondern als Pfade, die entlang von Punkten aufgereiht sind, hat das zum Nachteil, daß jeder Zugriff auf das Polygon des Gebietes eine Rekonstruktion benötigt, die viele Plattenzugriffe nach sich zieht. Um diesen Nachteil zu 21 Kapitel 1. Grundlagen umgehen, speichert das von SDE verwendete Objekt-Entitäten-Modell jedes Gebiet als ein komplettes Polygon, wodurch das ganze Objekt mit einem einmaligen Plattenzugriff geladen werden kann. * TODO AZ: Tabelle Eigenschaften von SDE (aus Web ESRI D) 1.4.1.9. Auf dem Weg zu raumzeitlichen Datenbanken Ein spannende Fragestellung für die Forschung ist die Verwaltung historischer Geodaten. Um in die Datenbank einen historischen Bezug zu integrieren, müssen alle Informationen, die über die Zeit hinweg eine Veränderung erfahren haben, mit einem entsprechenden Zeitbezug versehen werden. Wie die steigende Anzahl von Publikationen zeigt, wird die Integration der Zeit in der Datenbank von immer größerer Bedeutung. Die zeitliche Veränderung ist ein grundlegender Bestandteil von Phänomenen in der Realität. Es gibt verschiedene „Arten“ von Zeit, die je nach Bedeutung auf unterschiedliche reale Sachverhalte verweisen, wie z.B. Ereignisse, Tatsachen, Prozesse. Bei der Definition und Verwaltung zeitabhängiger Daten haben sich, bezogen auf die Verwaltung in SQL-Datenbanken, nach Snodgrass [Sno98] schon einfache Konzepte, wie z.B. der Schutz vor Duplikaten von zeitabhängigen Daten als überraschend komplex erwiesen. * TODO AZ: Textbaustein 1.4.2. Speicherstrukturen für raumbezogene Daten Räumliche Daten weisen im Gegensatz zu den üblicherweise in Datenbanken gespeicherten eindimensionalen Sachdaten (z.B. Wirtschaftsdaten) einige Besonderheiten auf. Dazu gehört vor allem die inhärente Zweidimensionalität der Daten, die eine einfache Sortierung (und damit eine Standard-Indizierung über B-Bäume oder ähnliche eindimensionale Indexalgorithmen) erschwert. Daher wurden besondere Verfahren entwickelt, um Geometriedaten im Computer zu speichern. Hierin ist auch die historische Trennung der Speicherung von Geometriedaten und Sachdaten in unterschiedlichen Datenbanken in den meisten GIS begründet. Einige wenige dieser zweidimensionalen Indexalgorithmen sollen hier wenigstens angeführt werden. Für den Endbenutzer sind sie von untergeordneter Bedeutung. Sie betreffen im wesentlichen die Performanz räumlicher Abfragen. Vertiefende Informationen können aus der einschlägigen Fachliteratur, speziell auch derjeniger der Geoinformatik gewonnen werden. Sogenannte Nicht-Standard-Datenbankensysteme sind noch immer Forschungsgegenstand der Informatik. • Rasterzellen • Quadtrees (4 Nachfolger je Knoten) • Halbebenenunterteilung (k-1 dimensionale Hyperebenen) • K-d-Bäume • K-d-B-Bäume • etc. (BILL / FRITSCH , 1991, 305) Es existieren weitere Methoden, um den physikalischen Zugriff auf die Daten mittels unterschiedlicher Datenstrukturen zu realisieren: 22 Kapitel 1. Grundlagen • Extendable hashing (Formelbasiertes Indexmanagement) • Extendable cell method (Erweiterung desselben) • Gridfile • R-Baum (R+ -Baum) • Zellbaum (Knoten mit komplexen Polyedern) (BILL / FRITSCH 1991, 306) Dynamische Zugriffsmethoden zeichnen sich dadurch aus, daß sie sich dem Wachstum des Datenvolumens dynamisch anpassen, wodurch die periodische Notwendigkeit der Reorganisation der Daten entfällt und effizienter Zugriff bei akzeptablem Speicherplatzverbrauch gewährleistet ist. In diesem Rahmen können und sollen nur einige gängige Verfahren erwähnt werden. Genauere Beschreibungen liefert die Fachliteratur. * TODO AZ: noch ein paar Takte dazu 1.5. Analysefunktionen Im Zusammenhang mit GIS tauchen immer wieder die Begriffe Spatial Analysis (raumbezogene Analyse) oder Spatial Modelling (raumbezogene Modellierung) auf. Die folgenden Tabellen geben eine knappe Übersicht über die damit verknüpften Konzepte. Grundsätzliche Erläuterungen zu den damit verbundenen Funktionalitäten finden sich in den Standard-Lehrbüchern zu GIS: * TODO AZ: Verweis auf Fotheringham etc. Die in ARC/INFO relevanten Variationen werden vor allem in den Kapiteln Kapitel 4 und Kapitel 7 angesprochen. Wie die folgenden Aufzählungen andeuten, existieren daneben eine große Zahl weiterer Analysemethoden, die jedoch den hier verfügbaren Rahmen sprengen würden, sollten sie alle ausführlich behandelt werden. 1.5.1. Räumliche Transformationen • Koordinatensystemkonvertierung • Rubber-sheeting (Entzerrung) • Erzeugung von Pufferzonen (buffer generation) • um Punkte (Punkt zu Fläche) • um Linien (Linie zu Fläche) • um Flächen (Fläche zu Fläche) • Thiessen Tessellation / Delaunay Triangulation (Punkt zu Fläche) • Netzwerk Einzugsbereich (Linie zu Fläche) 23 Kapitel 1. Grundlagen 1.5.2. Räumliche Suche • Entfernung • Räumliche Bemaßung, Fläche, ... 1.5.3. Räumliche Statistik • Räumliche Korrelation und Autokorrelation • Interpolation • Gravitätsmodelle • Mustererkennung • Fehleranalyse • Fernerkundung und Satellitenbildinterpretation 1.5.4. Netzwerkanalyse • Kürzeste Strecke • Pfadanalysen in Netzwerken • Konnektivität • Gerichtete Netzwerke • Interaktionsmodellierung • Ermittlung von Einzugsbereichen 1.5.5. Oberflächenanalyse • Interpolation • Hangneigung • Hangrichtung • Sichtbarkeit • Volumenberechnung Aus den genannten Anwendungsbereichen bzw. den gewünschten Funktionalitäten ergeben sich folgende Anforderungen an ein GIS: • Fähigkeit, große heterogene Mengen räumlich indizierter Punkte zu verwalten 24 Kapitel 1. Grundlagen • Möglichkeit der Abfrage solcher Datenbanken hinsichtlich Existenz, Position und Eigenschaften von raumbezogenen Objekten • Möglichkeit der Interaktion, Verknüpfung von Abfragen • Offenheit des Systems in Hinsicht auf Nutzeranpassung und Aufgabenanpassung 1.6. Datenqualität und Metadaten Die mittels Geographischer Informationssysteme erzielten Analyseergebnisse können nur so gut sein wie die Daten, auf denen sie aufbauen. Von deren Qualität und Eignung hängt die Gültigkeit einer Untersuchung ab. Eines der größten Probleme ist die Maßstabsfrage, da Geometriedaten unterschiedlichster Maßstabsebenen und damit Generalisierungsgrade digitalisiert und mittels Zoom- und Streckfunktionen technisch einfach übereinander abgebildet und verschnitten werden können. Dabei wird die unterschiedliche Eignung verschiedener Maßstäbe für bestimmte Fragestellungen oft vernachlässigt, oder nicht berücksichtigt, daß die Verschneidung von generalisierten mit lagegenauen Informationsebenen nur bedingte Aussagekraft aufweist. 1.6.1. Fehlerquellen Bei Betrachtung möglicher Fehlerquellen bei GIS-Analysen sind folgende Problemfelder zu nennen (vgl. BILL / FRITSCH 1991, 193ff und BURROUGH/McDONNELL 1998, 223): 1.6.1.1. Allgemeine Fehlerquellen • Unterschiedliches Alter der Daten • Verschieden dichte Gebietsbedeckung • Maßstab • Generalisierung • Gültigkeit / Eignung der Daten • Digitale Aufbereitung • Verfügbarkeit / Kosten 1.6.1.2. Räumliche Variationen • Positionsgenauigkeit • Erfassungsmethode • Gebietsgröße und -form • Datenart • Inhaltsgenauigkeit 25 Kapitel 1. Grundlagen • Konsistenz • Gültigkeit • Repräsentativität • Eingabefehler • Natürliche Variation • Meßfehler • Interpretationsfehler • Auflösung • Vergleichbarkeit 1.6.1.3. Verarbeitungsfehler • Rechenschärfe des Computers • Algorithmen • Erfassungsfehler • Verarbeitungsfehler 1.6.2. Metadaten Metadaten sind Daten über Daten, also beschreibende Informationen einer höheren Abstraktionsebene als die Primärdaten. Sie sollen notwendige Informationen (Quelle, Maßstab, Alter, Genauigkeit, Erfassungsmethoden, Maßeinheit, Datentyp, Erstellungsart, Bearbeiter, ...) über die Primärdaten liefern. Um Daten mit verschiedenen Anwendungen nutzen zu können, gibt es Bemühungen, diese Metadaten zu standardisieren. Abhängig von der inhaltlichen Bedeutung werden drei Typen von Metadaten unterschieden (vgl. auch Abb. metadata): Metadaten Semantische Metadaten Sie bestimmen die fachliche Bedeutung durch eine inhaltliche Beschreibung der Geodaten (Maßeinheit, etc). Syntaktische Metadaten Hier erfolgt die strukturell formale Beschreibung (also Datentyp oder Datenstruktur). Pragmatische Metadaten Diese beschreiben Frage zur Nutzbarkeit, wie Zugriffspfade (navigatorische Metadaten) oder datenrechtliche Bestimmungen. 26 Kapitel 1. Grundlagen Abbildung 1-7. Metadatentypen (nach SPIESS 98) Wichtige Metadatenstandards sind derjenige des US-amerikanischen FGDC (Federal Geographic Data Comitee) oder der Dublin CORE. Auf europäische Ebene wird im ESMI-Projekt (European Spatial Metadata Infrastructure) die Entwicklung solcher Standards koordiniert. Als Beispiel sollen einige der über 200 Attribute des in den USA für Behörden vorgeschriebenen Content Standard for Digital Geospatial Metadata des FGDC angeführt werden: * TODO AZ: Ingeoforum: dt. Metadatenforum Tabelle 1-7. Einige Attribute des FDGC Metadaten-Standards Identification Information Urheber des analogen Datenbestandes Urheber des digitalen Datenbestandes Kurzbeschreibung räumlicher Umgriff thematische und räumliche Schlagworte Data Quality Information Genauigkeit der Geometrie- und Sachdaten Logische Konsistenz Vollständigkeit Historie des Datensatzes Spatial Data Organization Information Raster-/Vektormodell Anzahl der vektoriellen Informationen Zeilen- und Spaltenzahl bei Datenmatritzen Spatial Reference Information Art der geodätischen Referenzierung Projektionsparameter Entity and Attribute Information Beschreibung der Sachdaten Urheber Datentyp Wertebereich Distribution Information Datenvertreiber Optionen für den Datenverkehr (online/offline) Techn. Voraussetzungen der Datenübernahme Kosten 27 Kapitel 1. Grundlagen Metadata Reference Information Aktualität des Eintrags in die Metadatenbank Da in zunehmenden Maße digitale Geodaten aus den unterschiedlichsten Quellen mit diversen Maßstäben, Zeitbezug und Erhebungsart zur Verfügung stehen, sind Metadaten zur Orientierung unerläßlich und ermöglichen erst eine sinnvolle Integration verschiedener (Geo-)Daten. Zum Teil erfordert die Fülle der Metadaten schon wieder Metadaten über Metadaten. Grundsätzlich können Metadaten, wie normale Daten auch, unterschiedliche Datentypen aufweisen: Diese reichen von Attributwerten in einer Datenbank über unstrukturierten Freitext bis hin zu Karten oder Bildern (z.B. quick looks). Damit wird verdeutlicht, daß die Erfassung der Metadaten ähnlich gut organisiert sein muß wie die Erhebung der Primärdaten selbst. Insbesondere sollte dies werkzeuggestützt vonstatten gehen. So sind im WWW auf der ESRI-Homepage und andernorts verschiedene AMLs4 (bzw. AVENUE-Scripte für ARCVIEW) verfügbar, die Hilfestellung bei der Erstellung von Metaddaten für die verwendeten Geodaten geben. * TODO AZ: In Arc 8 neues Metadatenmanagement auf XML-Basis? Weiterführende Literatur: Norbert Bartelme, 1995, Geoinformatik: Modelle, Strukturen, Funktionen, Berlin, Heidelberg: Springer. Ralf Bill, 1999, Grundlagen der Geo-Informationssysteme. Band 2: Analysen, Anwendungen und neue Entwicklungen. 2. Auflage, Heidelberg: Wichmann. Michael F. Worboys, 1995, Geoinformatik: Modelle, Strukturen, Funktionen, London: Taylor and Francis. Andrew MacDonald, 1999, Building a Geodatabase, Redlands: ESRI. Fußnoten 1. Vgl. J.D. Wilson: What’s In A Name in: GeoWorld Vol. 11, No. 11, anläßlich der Umbenennung von GISWorld in GEOWorld: Während dieser Begriff in Europa noch geläufig ist, sind anderswo Tendenzen zu beobachten, diese als zu eng betrachtete Bezeichnung zu ändern. So ist in Asien inzwischen der Begriff Räumliches Informationssystem gebräuchlicher, und auch in Nordamerika findet spatial inzwischen weitere Verbreitung, neben dem vor allem kanadischen Begriff Geomatics. 2. Basis für ARC/INFO 3. Relationales Datenbankmanagementsystem 4. Makros, die in der Arc Macro Language (vgl. Kapitel 8) geschrieben wurden. Da es sich um eine interpretierte Skriptsprache handelt, sind die Makros les- und änderbar und können an die eigenen Bedürfnisse angepaßt werden. 28 Kapitel 2. Der Aufbau von ARC/INFO ARC/INFO besteht aus verschiedenen Modulen mit eigenen Einsatzbereichen, die eng mit dem Grundmodul ARC verwoben sind. Wir starten ARC/INFO und stellen einige wichtige Unterprogramme vor. 2.1. Architektur Mit der Version 8 wurde eine Trennung von ARC/INFO in Workstation-ARC/INFO und Desktop-ARC/INFO vollzogen. Dabei kann der Desktop-Teil nur unter Windows NT/2000 installiert werden, der WorkstationTeil unter Windows NT/2000 (auch auf dem gleichen Computer) oder unter verschiedenen Unix-Varianten (nicht Linux). Der Workstation-Teil beinhaltet eine aktualisierte Version des bisherigen ARC/INFO-Kerns. Seine wichtigsten Bestandteile (Module) werden in der nachfolgenden Aufstellung vorgestellt: ARC Einstellungen der Arbeitsumgebung Aufruf der Unterprogramme/Module von ARC/INFO Datenerfassung, -automation und -aktualisierung Analyse Koordinatentransformation und -projektion Sachdatenautomation und -aktualisierung Datenexport und -import Anbindung externer Datenbanken ARCEDIT Datenerfassung / Digitalisierung Editierung und Aktualisierung der Koordinatengrundlage ARCPLOT Analyse, Visualisierung und graphische Ausgabe LIBRARIAN ARCSTORM Erstellung und Verwaltung von Kartenbibliotheken Weiterentwicklung von LIBRARIAN NETWORK Aufbau und Analyse von Netzwerkstrukturen Bemaßung von Netzwerken, Routenplanung Einzugsgebietsberechnung (Location / Allocation-Probleme) DYNAMIC SEGMENTATION COGO Dynamisches Zuordnen von Sachdaten an Linientopologien, Analyse und Visualisierung dynamischer Phänomene auf Netzwerken Werkzeuge zur Einbindung von Vermessungsdaten, CAD-Daten, Daten der Feldaufnahme ((halb-)automatisch) ArcSDE Einbindung von und Zugriff auf externe Datenbanksysteme wie ORACLE, INGRES, SYBASE, INFORMIX, RDB IMAGE INTEGRATOR Gleichzeitige Visualisierung von Raster- und Vektordaten Georeferenzierung von Rasterdaten Organisation von Bilddaten in einem Image Katalog GRID Bearbeitung und Analyse von Rasterdaten 29 Kapitel 2. Der Aufbau von ARC/INFO TIN Triangular Irregular Network, Verarbeitung dreidimensionaler Vektordaten, Oberflächendarstellung und -modellierung ARCSCAN ARCPRESS Vektorisierung von Rasterdaten (halb- oder vollautomatisch) Rasterung von Ausgabedateien für Plotausgabe und Druckvorstufe AML ODE Arc Macro Language, prozedurale Programmiersprache von ARC/INFO Programmierschnittstellen zu C, Java etc. Bei Nutzung der Kommandozeile muß das jeweilige Modul von ARCaus aufgerufen werden und stellt dann einen eigenen Prompt zur Verfügung. Ein Großteil der Möglichkeiten der Module steht auch menügesteuert über ARCTOOLS zur Verfügung. ARCTOOLS wird im nächsten Abschnitt vorgestellt. Der Desktop-Teil besteht aus folgenden Anwendungen: ArcToolbox Konvertierung, Verschneidung, Transformierung ArcCatalog ArcMap Datenbrowser /-editor Abfrage, Visualisierung und Ausgabe von Vektor- und Rasterdaten 2.1.1. Die Benutzeroberfläche ARCTOOLS ARCTOOLS ist die bisherige grafische Benutzeroberfläche (GUI - Graphical User Interface) für ARC/INFO. Sie ermöglicht dem Benutzer relativ bedienungsfreundlich verschiedene Analyse- und Editierabläufe, sowie z.B. die Layoutgestaltung der Ergebniskarte mittels Menüfenstern. Die Oberfläche ist auf allen verfügbaren Betriebssystemen im wesentlichen identisch. Bis auf wenige Ausnahmen (z.B. Dateidialoge) ist nur das Aussehen des umgebenden Fensterrahmens plattformabhängig. * TODO: verschiedene Beispiele unter verschiedenen OS? ARCTOOLS gliedert sich in fünf logische Aufgabenbereiche, die im wesentlichen den Modulen von ARC/INFO entsprechen: EditTools Aufbau und Editieren der Kartengrundlage MapTools Visualisierung und Kartenerstellung CommandTools Analyse und weiterführende Befehle GridTools Land Records Analyse von Grids Verwaltung von Vermessungsdaten Jedes dieser Tools arbeitet unabhängig von den anderen. Daher sind die grundlegenden Funktionen (Dateimanagement, Hilfemenü, allgemeine Arc-Befehle) in jedem vorhanden. Die Command Tools sind zusätzlich von den anderen vier Modulen als eigenes Fenster aufrufbar. ARCTOOLS übernimmt automatisch die Festlegung verschiedener Umgebungsvariablen, die normalerweise vom Benutzer zu Sitzungsbeginn selbst definiert werden müssen (z.B. der Typ des Terminals: &TERMINAL 9999). Da ARCTOOLS als GUI vollständig in AML, der interpretierten ARC/INFO-eigenen Makrosprache, programmiert wurde, liegen alle Menüs und Werkzeuge als AML-Makro-Sourcecode vor. Damit ist die Programmierung eigener, speziell angepaßter Oberflächen in AML möglich. Auf diese Möglichkeiten 30 Kapitel 2. Der Aufbau von ARC/INFO gehen wir in Kapitel Kapitel 8 ein. Seit der Version 7.2 können auch weitere Programmiersprachen wie C++ o.ä. für die Programmierung von Oberflächen, die an spezifische Nutzergruppen angepaßt wurden (Fachschalen) oder die leichtere Einbindung externer Funktionalität (z.B. eigene Optimierungs- oder Simulationsroutinen) im Rahmen der ODE-Architektur (Open Developers Environment) genutzt werden. 2.2. Datenmodelle ARC/INFO kann mit verschiedenen Datenmodellen umgehen. Es unterstützt verschiedene Raster- (Grid, Lattice) und Vektorformate (Coverage, TIN, Network). Die Geometrieinformation wird dabei entweder getrennt gespeichert (Coverages, Grids) oder über ArcSDE direkt in der Datenbank als sogenanntes GeoObject vorgehalten. 2.2.1. Vektordaten In den folgenden Abschnitten werden die in ARC/INFO verwendeten Datenstrukturen erklärt. Im wesentlichen wird in vektorbasierten Systemen versucht, die reale Welt mittels Punkt und Linie als kleinsten Elementen abzubilden. Die mit einer Richtung versehene Linie (= Vektor) erhält in ARC/INFO den Namen Arc und bildet die Grundlage für komplexere Konstruktionen. Die nächste Ebene stellen Polygone zur Darstellung von Flächen dar. Die räumlichen Beziehungen zwischen all diesen (und weiteren) Elementen wird als Topologie bezeichnet. Diese digitale Kartengrundlage, über Koordinaten und IDs verortet und ansprechbar, kann in einem weiteren Schritt mit zusätzlichen Variablen versehen und dadurch mit Inhalt und Sinn erfüllt werden (Computerkartographie, räumliche Statistik). Nun können jedoch noch zusätzliche räumliche Analyseverfahren angewendet werden. Diese bilden das eigentlich Neue und Spezifische eines GIS gegenüber herkömmlichen Techniken. Sie werden in Kapitel 4 (Analysetechniken) vorgestellt. Das Ergebnis derselben wird im Normalfall die Grundlage einer neuen Karte bilden. Abbildung 2-1 zeigt ein schematisches Vektorcoverage (vgl. dazu auch Abbildung 2-8. Abbildung 2-1. Vektordaten: Ein Polygoncoverage 31 Kapitel 2. Der Aufbau von ARC/INFO Es muß in ARC/INFO zwischen der Koordinatenebene, d.h. dem zusätzlich mit expliziter Topologie versehenen Coverage als Kartengrundlage und den Ergebnissen weiterer Verarbeitungsschritte unterschieden werden. Die in den Coverages verorteten Sachdaten werden in ARCTOOLS in sogenannten Views visualisiert. Ein View kann aus mehreren sogenannter Themes aufgebaut sein. Ein Theme ist die Visualisierung einer (oder mehreren) Variablen auf einer bestimmten Grundgeometrie (dem Coverage). Es wird also pro Theme ein thematischer Inhalt eines Coverages dargestellt. Der ARCTOOLS-spezifische Fachbegriff Theme kann also gut mit „Thema“ übersetzt werden. Beispielsweise könnte ein Thema die Gewässergüte darstellen, ein weiteres die aktuelle Bodennutzung und ein drittes den Strassenzustand. Alle drei Themes können dann in einem View gemeinsam dargestellt werden. Erst solch ein View dient als Grundlage einer Karte im klassischen Sinne. Diese wird mit Map bezeichnet. Sie verfügt neben dem View über Legende, Maßstab, Titel und gegebenenfalls weitere gestalterische Elemente. Es können aber auch mehrere Views (z.B. eine Übersichtskarte und eine Detailkarte) in einer einzigen Map dargestellt werden. Die Erstellung von Views und Maps wird in Kapitel Kapitel 6 erläutert. Zunächst soll jedoch die Struktur innerhalb eines Coverages untersucht werden. * AZ: bezieht sich schon alles auf Coverage, weiss nicht genau, wie das jetzt in der OO-GeoDB gehandlet wird 2.2.2. Verknüpfung der Features mit den Attributdaten * AZ: unter + hinter Ueberschrift "Das Coverage" Von besonderem Interesse ist die Verknüpfung der den Raum darstellenden Daten (Koordinaten, Geländemodell) und der ihn beschreibenden Sachverhalte, welche zunächst in tabellarischer Form vorliegen. Diese von ARC/INFO automatisch erzeugte Verknüpfung besitzt folgende Charakteristika: • Eine eineindeutige Beziehung zwischen den Coverage-Features und den zugehörigen Einträgen in der Datentabelle (Feature Attribute Table). Diese wird realisiert durch: • Die programminterne Kennung (Sequence Number) (#) (-#), als für jedes Coverage Feature spezifisches Kennzeichen zur Identifizierung zugehöriger Daten im Feature Attribute Table (FAT). Es existieren verschiedenene FAT-Arten -- zu jedem Objekttyp (Feature Type, z.B. arc, poly, line) eines Coverages, bzw. besser Coverage-Types (Line Coverage, Polygon Coverage, Point Coverage, ...) eine eigene. Dies wird in den kommenden Kapiteln im Detail dargestellt. Letztendlich muß diese Indentifikationsnummer für jedes Feature, d.h. die räumlichen Datengrundstrukturen, pro Coverage an zwei physikalisch verschiedenen Orten gespeichert werden: Nämlich in der Datei, welche die Raumdaten, z.B. x/y-Koordinaten beinhaltet, sowie in der Datei mit den zugehörigen Einträgen in der Feature Attribute Table. 2.2.2.1. Das Coverage Vektordaten werden in Informationsebenen verwaltet, die als Coverages bezeichnet werden. Ein Coverage repräsentiert die digitale Form einer einzelnen Informationsebene. Beispiele solcher Informationsschichten sind ein Straßen- oder Gewässernetz, eine Bodenkarte oder Verwaltungseinheiten, also jeweils geometrische Objekte mit festen Grenzen1 Eine Informationsebene enthält sowohl geometrische Lagedaten als auch Attributdaten. Letztere beschreiben die Geoobjekte weitergehend durch Sachinformationen. 32 Kapitel 2. Der Aufbau von ARC/INFO Die einzelnen Coverage-Features, also z.B. Polygone oder Linien, besitzen zwei Kenn-Nummern. Die eine ist die vom Benutzer vergebene Feature-ID und wird mit coveragename-ID gekennzeichnet. Die andere ist eine fortlaufende programminterne Nummer (sequence number), welche an einem Gartenzäunchen -# erkennbar ist. Letztere kann sich nach Editiersitzungen ändern, was vom Benutzer nicht beeinflußbar ist.2 Dagegen bleibt die Feature-ID voll unter Kontrolle des Benutzers. Beide Kennnummern werden als ganzzahlige numerische Werte (Integer) abgelegt. 2.2.2.2. Die Coverage Feature Classes Da jede Informationsebene (Coverage) in ARC/INFO nicht nur logisch aus den unterschiedlichen Feature Classes besteht, sondern diese auch physikalisch in eigenen Dateien gespeichert werden, sollen deren Charakteristika erläutert werden. 2.2.2.2.1. Arcs als Liniensegmente Arcs werden definiert als fortlaufende Kette von x/y-Koordinatenpaaren, die an einem Ort beginnt (FromNode), an einem zweiten endet (To-Node) und eine Länge, jedoch keine Fläche besitzt (vgl. Abbildung 2-2. Abbildung 2-2. Aufbau eines Arcs Der Anfangs- und der Endpunkt werden besonders ausgezeichnet und mit Node bezeichnet. Da beide genannten Punkte explizit unterschieden werden, ist ein Arc mehr als eine einfache Linie oder beliebige Kurve, denn er besitzt eine Richtung. Diese kann z.B. in Straßen- oder Flußsnetzen Bedeutung erlangen und ermöglicht erst Pfadanalysen wie Network Tracing oder Routing. Arcs definieren Liniensysteme wie z.B. Flüsse, aber auch die Grenzen von Polygonen. Sie werden in zwei Coverage-Dateien mit den Namen ARC und AAT gespeichert: In der ARC-Datei findet man pro Arc die IDs (jeweils die programminterne und die vom Anwender definierbare) und die Folge von x/y-Koordinaten, die Ort und Aussehen des Arcs bestimmen. Die AAT-Datei enthält Zusatzinformationen wie Anfangs- und Endpunkt (From-node und To-node) jedes Arcs. Weiterhin sind die Nummern des links und rechts des Arcs liegenden Polygons gespeichert. Falls dieses nicht existiert, lautet der Eintrag 0. Die explizite Speicherung ist notwendig, um später räumliche Abfragen zu Nachbarschaftsbeziehungen o.ä. realisieren zu können. Dies unterscheidet ein GIS u.a. von Kartographieprogrammen, die folglich keine so komplexe Datenstruktur benötigen. In letzeren reicht eine eindeutige Indizierung der darzustellenden Elemente (Flächen, Linien), um ihnen über diese ID Farbwerte o.ä. zuzuordnen. Mittels der Sequenz-Nummer (-#) werden jedem Arc verschiedene Einträge zugeordnet. Als Minimum findet man folgende Items (Felder): FNODE# programminterne Kennung des Anfangspunktes (from-node TNODE# LPOLY# interne Kennung des Endpunktes (to-node interne Kennung des linken Polygons (0, falls nicht existent) RPOLY# interne Kennung des rechten Polygons ( xxxxx ) 33 Kapitel 2. Der Aufbau von ARC/INFO Cover# interne Kennung des Arcs in der ARC-Datei Cover-ID LENGTH vom Benutzer vergebene Feature-ID Länge des Arcs in Coverage-Einheiten Danach können sich noch benutzerdefinierte Variablen anschließen. Durch obige Variablen wird die Topologie definiert. Nun kann eine Reihe weiterer vom Benutzer angelegter Variablen folgen (Sie dürfen erst nach der Cover-ID stehen!) 2.2.2.2.2. Nodes (Knotenpunkte) Die Koordinaten eines Nodes werden als Teil des Arcs in der Datei ARC gespeichert. Außerdem tauchen sie in der AAT-Datei auf (s.o.). Falls nun ein Node ein eigenes Punktfeature darstellt (z.B. einen Kanaldeckel in der Straße), also weitergehende Eigenschaften aufweist als die reine Trennfunktion zweier Arcs, werden diese Eigenschaften in einer NAT-Datei (Node Attribute Table) gespeichert. Diese Datei enthält folgende Einträge: Cover# programminterne Kennung des Arcs mit der niedrigsten Nummer der Arcs, die den Node berühren programminterne Kennung des Nodes Cover-ID vom Benutzer festgelegte Feature-ID ARC Beim erstmaligen Erstellen einer NAT (Node Atttribute Table) wird letztere automatisch auf den Wert der Sequenznummer gesetzt. Genaugenommen gibt es drei unterschiedliche Node-Typen, die besonders bei der Fehlerkorrektur von Bedeutung sind: • Normale Nodes • Pseudo Nodes • Dangling Nodes 2.2.2.2.3. Pseudo Nodes werden durch eine Raute dargestellt. Sie repräsentieren Nodes von in sich geschlossenen Arcs (Inseln) oder entstehen, wenn nur zwei Arcs miteinander verbunden werden. * absichtliche vs. unerlaubte Pseudo Nodes 34 Kapitel 2. Der Aufbau von ARC/INFO Abbildung 2-3. Arcs mit Dangling Nodes 2.2.2.2.4. Dangling Nodes zeigen mögliche Digitalisierfehler wie zu kurz oder zu lang geratene Abschnitte bei Polygonen an. Sie werden durch Quadrate gekennzeichnet. Natürlich kann solch ein sogenannter undershoot (Arc dessen Endpunkt nicht mit weiterem Arc verbunden ist, sondern kurz davor endet) oder overshoot (Arc, der einen anderen Arc schneidet und darüber hinaus weiter verläuft) auch Absicht sein, z.B. bei der Digitalisierung von Sackgassen. Label Points sind einfache Punkte auf einer Ebene. Sie werden daher nur durch ein einzelnes x/y-Koordinatenpaar bestimmt und besitzen eine Kennummer (ID). Ihr Nutzen besteht darin, daß sie punktförmige Gegebenheiten wie Laternenpfähle, Grenzsteine oder Gipfelkreuze darstellen können. Außerdem kennzeichnen sie den Ort, an dem die Kennummer (User-ID) eines Polygons auf der Karte aufgetragen werden soll - in diesem Fall ist die genaue räumliche Lage unerheblich. Ohne Label Point ist ein Polygon nicht vollständig. Die zu einem Punkt-Feature gehörenden Daten heißen Point Attributes. Diese werden in einer sogenannten PAT-Datei abgelegt (Point Attribute Table). Dasselbe gilt für Polygon Attributes. Die PAT-Datei enthält also entweder Punkt- oder Polygon-Features. Pro Coverage ist aber nur eine PAT-Datei möglich. Somit kann ein Coverage nicht beide Feature-Typen gleichzeitig beinhalten. % nachpruefen ... mehrere Punkte in einem Polygon ...?? 2.2.2.2.5. Polygone Polygone (Polygons) sind geschlossene, durch mehrere Arcs als Umrandung definierte flächige Figuren. Sie besitzen eine User-ID, die an einen Label Point innerhalb des Polygons positioniert wird. Beispiele für Polygone reichen von administrativen Grenzen über die Landnutzungsverteilung bis zur Verteilung von Bodenarten etc. 35 Kapitel 2. Der Aufbau von ARC/INFO Abbildung 2-4. Polygone mit Pseudo Nodes und Label Points Zu den definierenden Arcs eines Polygons gehören auch die Arcs, die innerhalb eines Polygons liegen und eine Insel (Enklave) aus diesem herausschneiden. Für Polygone werden keine expliziten Koordinaten gespeichert. Stattdessen enthält die PAL (Polygon Arc List) eine Liste aller Arcs und Nodes, welche die Grenze eines Polygons definieren. Für jedes Polygon wird wieder eine Kennung erstellt. Der erste Eintrag dahinter bestimmt das umschließende Hintergrundpolygon. 2.2.2.2.6. Polygon Attributes Die die Polygone beschreibenden Daten werden in einer PAT-Datei (Polygon Atribute Table) gespeichert. Wie schon erläutert, sind dort für jedes Polygon wenigstens folgende Variablen notwendig: Area Perimeter Fläche des Polygons (bzw. 0 bei Punkten) entsprechende Umfang (bzw. 0 bei Punkten) Cover# Cover-ID programminterne Kennung des Punkt-Features in der LAB-Datei benutzerspezifizierte Feature-ID des Punktes Nach diesen können sich weitere benutzerdefinierte Variablen (Items) anschließen. Hier ein Beispiel aus einer PAT: 1 AREA PERIMETER SIEDL# SIEDL-ID EIGENTUEMER = = = = = 2 AREA PERIMETER SIEDL# SIEDL-ID = 2.226 = 5.586 = 2 = 500 3.664 13.802 1 0 heike 36 Kapitel 2. Der Aufbau von ARC/INFO EIGENTUEMER = tim 2.2.2.2.7. Tics Die Referenzpunkte eines Kartenauschnitts, die eine Georeferenzierung und damit z.B. das Übereinanderprojezieren räumlich zusammengehöriger Informationsebenen ermöglichen, heißen Tics. Oft werden für diese Kontrollpunkte die vier Eckpunkte eines Kartenblattes verwendet. Selbstverständlich müssen bei allen Informationsebenen (also den einzelnen Coverages) jeweils räumlich genau dieselben Punkte als Tics benutzt werden. Um eindeutig zugeordnet werden zu können, müssen diese auch alle dieselbe Tic-ID aufweisen. Tics spielen auch bei der Transformation von Digitalisierkoordinaten in Echte-Welt-Koordinaten eine entscheidende Rolle. Aus den Echte-Welt-Koordinaten der Tics werden die entsprechenden Koordinaten aller übrigen Punkte berechnet. Die Informationen über Tics stehen in der Tic-Datei. Dabei handelt es sich um eine INFO-Datei, die ebenso wie das Coverage benannt wird: COVER.TIC. Die enthaltenen Informationen sind: IDTIC User-ID für jedes Tic XTIC YTIC X-Koordinate des Tics entsprechende Y-Koordinate Weitere für das Koordinatenmanagement notwendige Informationen finden sich in den Dateien PRJ und TOL. In PRJ stehen Angaben zur benutzten Kartenprojektion und in TOL zu den eingestellten Fehlertoleranzen für die Digitalisierung. 2.2.2.2.8. Annotation Unter Annotations versteht man Anmerkungen, die benutzt werden, um die bisher beschriebenen Typen von räumlichen Features mit einem Textkommentar zu versehen. Dieser wird aber nicht mit der zu beschreibenden Feature Class topologisch verbunden, sondern bildet eine unabhängige Informationsschicht, welche zu reinen Darstellungszwecken über die übrigen Ebenen gelegt werden kann. Demgemäß besitzen Annotations keine Aussagekraft bei der Analysearbeit, sondern dienen nur der Orientierung oder zusätzlichen Beschreibung der Objekte auf dem Kartenausschnitt. Suchabfragen nach bestimmten Annotations sind beispielsweise nicht möglich. Annotationen werden in den TAT-Dateien eines Coverages gespeichert. Es können verschiedene Unterklassen von Annotationen definiert werden, die dann in eigenen Dateien gespeichert werden. Beispielsweise können Text-Annotationen entlang der Geometrie anderer Feature-Typen (z.B. Linien) ausgerichtet werden. Dies ermöglicht eine Beschriftung, die z.B. dem Verlauf von Straßen oder Flüssen folgt. Jedoch können für Annotationen auch eigene Geometrien definiert werden. Für die nichtgeographischen, dem Layout dienenden Bestandteile einer Karte wie Titel, Legende, Windrosen oder Quellenangaben etc. werden sie jedoch in der Regel nicht verwendet. Dies fällt in den Bereich der Kartenerstellung mit MapTools bzw. dem Modul ARCPLOT * TODO LN: Abbildung mit Annotations (Englandkarte ponet mit Beschr.) 37 Kapitel 2. Der Aufbau von ARC/INFO 2.2.2.2.9. Links Links sind durch einen Anfangs- und Endpunkt definierte Verschiebungsvektoren. Sie werden zur Korrektur und Anpassung ganzer Coverages an angrenzende Gebiete oder weitere Informationsebenen gebraucht. Oft passen die Features aneinandergrenzender Kartenausschnitte durch Digitalisierfehler oder andere Ungenauigkeiten nicht zusammen. Durch eine Entzerrung des Coverages werden diese so hingezogen, daß eine Verknüpfung möglich ist. Man kann diese Links auch als Soll-Ist-Vektoren bezeichnen. Sie werden in der LNK-Datei innerhalb einer Coverage-Informationsebene mit den Koordinaten ihrer Anfangs- und Endpunkte gespeichert. Falls bestimmte Punkte unbedingt ihren Platz behalten sollen, können Links mit identischen Anfangs- und Endkoordinaten benutzt werden. Diese wirken während des Anpassungsprozesses wie Nägel. * TODO AZ: Abb. Diplomarbeit Gernot 2.2.2.2.10. Route-Systems Aus den Coverage-Features Arcs, Routes und Sections sind die sogenannten Routensysteme (Route Systems) aufgebaut. Für jedes Liniencoverage kann es Routensysteme geben. Sie stellen eine logisch zusammengehörende Sammlung linienförmiger Gegebenheiten wie Buslinien, Stromleitungsnetze, Einkaufswege etc. dar. Da sie bezüglich der Anwendungs- und Analysemethoden einen eigenständigen Komplex darstellen, soll hier nur kurz auf ihre Existenz hingewiesen werden. Ihre Handhabung erfolgt im ARC/INFOModul NETWORK. Einige Funktionalität des NETWORK-Moduls findet sich in ARCTOOLS unter MapTools Productivity Tools Routensysteme sind eine Methode zur Darstellung von Abschnitten auf Linienstrukturen. Diese Abschnitte können dynamisch verändert werden (Dynamic Segmentation). Dabei muß nicht jedesmal die zugrundeliegende Arc-Node-Topologie geändert werden. Auf diese Weise können auf demselben Coverage verschiedene Routen (z.B. von Buslinien) definiert werden oder Verkehrsbelastungsszenarien durchgespielt werden, ohne daß eine Änderung der Arc-Definitionen und damit der Grundtopologie notwendig ist. Die Feature Classes im Network-Modul heißen Route und Section. Als Route bezeichnet man dabei eine geordnete Abfolge von Abschnitten (Sections). Jede einzelne Buslinie in einem ÖPNV-Netz ist z.B. eine Route. Die Gesamtheit der Buslinien stellt das Route System dar. Die Daten der Routen finden sich in der RAT-Datei (Route Attribute Table), welche wie üblich mindestens die interne Subclass-# und die benutzerdefinierte Subclass-ID enthält. Abbildung 2-5. Straßencoverage mit drei bemaßten Routen Mit Sektionen/Abschnitten (Sections) werden die Arcs oder Teile derselben bezeichnet, welche das Gerüst für die einzelnen Routen bilden. Für jedes Routensystem eines Coverages finden sich die Daten über die Abschnitte in der SEC-Datei. Mit folgendem Inhalt besitzt es einen ähnlichen Aufbau wie ein Feature Attribute Table: 38 Kapitel 2. Der Aufbau von ARC/INFO ROUTELINK# interne Sequenznummer der Route, zu der der Abschnitt gehört. Dies bezieht sich auf den Eintrag mit dem Namen SUBCLASS# in der RAT. ARCLINK# F-POS dasselbe für den betroffenen Arc. Die Bezugsadresse ist COVER# in der AAT. Prozentwert der Länge des Arcs, an dem der Abschnitt beginnt. T-POS F-MEAS Prozentwert der Arc-Länge, an dem der Abschnitt endet. Maß des Routensystems, an dem der Abschnitt beginnt, in den realen Einheiten wie Meilen oder km. T-MEAS Subclass# die entsprechende Angabe für den Endpunkt des Abschnittes. interne Sequenznummer für jeden Abschnitt. Subclass-ID benutzerdefinierte Feature-ID jedes Abschnittes. Hieran können sich weitere Variablen anschließen. Falls der Abschnitt eine dem Arc entgegengesetzte Richtung aufweist, ist der Wert von F-POS größer als der von T-POS. Abbildung 2-6. Ausschnitt eines Liniencoverages mit bemaßten Abschnitten * TODO AZ: Vielleicht noch ein paar Takte zu Netzwerkanalyse 2.2.2.2.11. Coverage Begrenzung (Boundary, BND) Die Ausdehnung des Kartenausschnittes wird mit Coverage Extent bezeichnet. Als minimale Abgrenzung definiert es die Werte der äßersten Eckkoordinaten der sichtbaren (d.h. dargestellten) Arcs und Label Points des Coverages. Von ARC/INFO wird es als standardmäßige Kartengrenze bei der graphischen Umsetzung eines Coverages benutzt. Folgende Informationen werden in der Datei Covername.BND gespeichert: XMIN X-Koordinate der linken unteren Ecke des Kartenausschnitts YMIN XMAX Y-Koordinate der linken unteren Ecke des Kartenausschnitts X-Koordinate der rechten oberen Ecke des Kartenausschnitts YMAX Y-Koordinate der rechten oberen Ecke des Kartenausschnitts Diese definieren die Ecken (links unten, rechts oben) des Rechtecks (bounding box), innerhalb dessen alle dargestellten Arcs und Label Points (und mit diesen die Polygone und Routensysteme) liegen. Sie gelten nur für die Visualisierung als Karte. 2.2.2.2.12. Regions Regions sind eine Erweiterung des Polygon-Datentyps für Mehrfachgeometrien. Sie erlauben z.B. aus 39 Kapitel 2. Der Aufbau von ARC/INFO mehreren Polygonen zusammengesetzte Gebiete. Dies erleichtert die einheitliche Behandlung von logisch zusammengehörenden Gebieten, die aus nicht zusammenhängenden Flächen bestehen. Beispiele dafür sind Inselgruppen oder Gebiete mit Exklaven. Dabei wird ein Attributdatensatz pro Region, die aber potentiell aus mhereren Teilgeometrien bestehen kann, verwaltet. Neben der Einsparung von Speicherplatz hilft dies Inkonsistenzen der Attributdaten zu vermeiden. * TODO: Beispiel (aus Roberts Dipl.?) 2.2.2.2.13. Coverage-Verzeichnisstruktur Die in den vorherigen Kapiteln beschriebene Dateienstruktur für ein Coverage sieht für ein Liniencoverage z.B. wie in Abbildung 2-7 wiedergegeben aus. Dabei ist zu beachten, daß die Namen, unter denen INFODateien wie z.B. Feature-Attributtabellen in INFO und anderen Modulen angesprochen werden, in dieser Form im Dateisystem nicht existieren. Es ist also nicht möglich, eine Datei wie z.B. fluss.aat direkt von der Betriebssystemebene aus zu kopieren. Abbildung 2-7. Dateien eines Coverages 2.2.2.3. Map-Libraries Bei größeren Projekten ist es manchmal sinnvoll3 (oder wegen der Art der Datenaufnahme zunächst unumgänglich), die Information in einzelnen Teilflächen (tiles), die zum Beispiel einzelnen Kartenblättern entsprechen können, zu organisieren und innerhalb dieser Teilflächen wieder einheitliche Informationsebenen (layers) zu definieren. Solch eine räumlich und thematisch geordnete Sammlung zusammengehörender Informationsebenen wird in ARC/INFO als map library bezeichnet. Diese map libraries können ihrerseits mit ARCSTORM verwaltet werden. 2.2.2.4. CAD-Zeichnungen Durch den starken Gebrauch von CAD (Computer-Aided Design) in Planung und Entwicklung existieren eine Fülle interessanter Karten (Katasterpläne ...) oder Bilder, die in ein GIS-Projekt miteinbezogen werden können. ARC/INFO besitzt dazu die Voraussetzungen. Ihrer Natur gemäß eignen sich CADbasierte Pläne jedoch nur bedingt zu Analysezwecken oder zur Modellbildung. CAD-Zeichnungen können als Bereicherung vorhandener geographischer Raumobjekte gespeichert werden. Beispielsweise könnte beim Anklicken eines Hauses in einem Stadtplan der Grundrißplan des gewählten Gebäudes als CAD- 40 Kapitel 2. Der Aufbau von ARC/INFO Zeichnung erscheinen. Es ist heute für einige CAD-Formate möglich, sie in ARC/INFO-Vector-Coverages umzuwandeln. So gibt es Schnittstellen zu den gängigsten Formaten wie DXF (Binär oder ASCII), Intergraph IGDS und IGES u.a. 2.2.2.5. Shapefiles Shapefiles sind das ursprüngliche Datenformat von ArcView. Sie können importiert und in Coverages umgewandelt werden. In Desktop-ArcInfo können sie auch direkt verwendet werden. Im Gegensatz zu Coverages verfügen sie über keine explizite Topologie. Sie verfügen auch nur über eine vereinfachte Geometrie (z.B. keine Splines). * TODO LN: check - bilde mir jedenfalls ein, das mal wo gelesen zu haben ... Die Attributdaten von Shapefiles werden in einer separaten DBase-Datei bwz. GeoDB vorgehalten. 2.2.3. Rasterdaten Obwohl Coverages als vektorbasierte Informationsebenen das Herzstück von ARC/INFO bilden, gibt es einige Aufgabenstellungen, für deren Lösung ihre Struktur weniger geeignet ist. Hierzu zählen: • Oberflächenmodellierung • Darstellung fließender Grenzen und Übergangsbereiche (z.B. Bodengüte, Vegetation, Feuchtgebiete) • Schnelle Verschneidung verschiedener Ebenen Das Erzeugen neuer Grenzen durch Verschneidungsoperationen ist auf Vektorbasis sehr rechenintensiv, da jeweils die Topologie neu erstellt werden muß. Für Aufgaben, bei denen der genaue Grenzverlauf weniger kritisch ist, sind Rasterverfahren im Vorteil. Diese werden neben anderen im nächsten Abschnitt vorgestellt. Außer den ausführlich behandelten Coverages gibt es noch eine Reihe anderer Datenmodelle (TIN, GRID, Lattice). Der Schwerpunkt im Übungsteil auf der Handhabung von Vektorcoverages. ARC/INFO wurde ursprünglich als vektororientiertes GIS entwickelt. Die im folgenden vorgestellten ebenfalls unterstützten Datenmodelle sollen nur kurz erläutert werden. 2.2.3.1. Grids Dem Coverage im Vektorformat entspricht das Grid im Rasterformat. Grid steht im Englischen für Raster und das entsprechende Softwaremodul von ARC/INFO trägt denselben Namen. Rasterkarten (Grids) wie in Abb. raster sind aus gleich großen quadratischen Zellen als kleinsten Einheiten aufgebaut. D.h. ein GRID-Punkt oder „Pixel“ entspricht in der Regel einem quadratischen Gebiet, d.h. einer Fläche mit einer bestimmten Kantenlänge (Auflösung), nicht einem Punkt! Jeder dieser Zellen ist ein ganzzahliger oder reeller 32 Bit-Wert zugeordnet, welcher z.B. in einen Grauton oder Farbwert umgesetzt werden kann. Dieser steht wiederum für eine beliebige Variablenausprägung. Diese Informationen werden in Value Attribute Tables (VAT) gespeichert und können bei Integer-Grids (also Grids mit ganzzahligen Werten) mit Zusatzinformationen in einer Attributtabelle versehen werden. Die Verortung erfolgt über die X- und Y-Werte der Spalten- und Zeilennummern. Jedes Grid entspricht dabei einer Informationsschicht. 41 Kapitel 2. Der Aufbau von ARC/INFO Im Gegensatz zu den Objekten eines Coverages, die durch eine Folge von X- und Y-Koordinaten definiert werden (Nullpunkt links unten), werden Grids als Spalten- und Zeilennummer gespeichert (Nullpunkt links oben). Abbildung 2-8. Rasterdaten: ein Grid Im Gegensatz zu einfachen Rasterbildern verfügen GRIDs über die Möglichkeit der Sachdatenanbindung, was sie erst zu einem GIS-Datenmodell macht. In den Grid-Attributtabellen (VAT) stehen immer wenigstens die beiden Variablen VALUE und COUNT. VAT stehen dieselben Möglichkeiten der Datenbank-Anbindung offen wie den entsprechenden Attributtabellen eines Coverages. * LN: was ist mit GRIDS mit reellen Zahlen ? Attributtabelle? Besonders geeignet sind Grids zur Darstellung kontinuierlich fließender Übergänge oder von Oberflächen. Weitere Einsatzbereiche sind Fließ- bzw. Diffusionssimulationen. Ein anderer Vorteil liegt in der hohen Geschwindigkeit von Analysen, die im vergleichsweise simplen Aufbau solch eines Rasters begründet liegt. Das Softwaremodul GRID verfügt über mehrere räumliche Analysemöglichkeiten. Durch die Festlegung auf ein bestimmtes Rasterformat werden Objekte mit einer Ausdehnung unterhalb dieser Auflösung nicht mehr dargestellt. Analyseoperationen, die sich auf linien- oder punktförmige geographische Objekte oder Polygone beziehen, (wie z.B. Netzwerkanalysen oder Grundstücksmanagement) sind mit Grids nicht zufriedenstellend zu lösen. Will man die Auflösung eines bestehenden Grids verfeinern, muß daher eine völlige Neuaufnahme der Originaldaten erfolgen. Jedoch sind auf der anderen Seite rein geometrische Generalisierungen relativ einfach durchzuführen. * Vgl. Kap. ?? GRID verfügt über die Möglichkeit, Raster mit unterschiedlicher Auflösung zu überlagern. Keine der beiden Datenstrukturen Raster und Vektor ist grundsätzlich besser, vielmehr hängt es von der jeweiligen Fragestellung und der vorhandenen Datengrundlage ab, mit welchen Datenstrukturen eine Aufgabe optimal gelöst werden kann. Dabei können beide Modelle nebeneinander existieren und es wird in 42 Kapitel 2. Der Aufbau von ARC/INFO ARC/INFO eine gewisse Integration beider Modelle erreicht, da zudem Konvertierungsmöglichkeiten zwischen den unterschiedlichen Datenstrukturen bestehen. 2.2.3.2. Images Bilder können die Aussagekraft der Darstellung vieler Sachverhalte erhöhen. Mit der Tool-Sammlung IMAGE INTEGRATOR verfügt ARC/INFO über die Möglichkeit, u.a. Bilder folgender Formate darzustellen und einzubinden. • ERDAS .GIS und .LAN -Formate • GRASS • RLC • Grids • BIL (Band-interleaved-by-Line) • BIP (Band-interleaved-by-Pixel) • TIFF • Sun-Raster Bilder bestehen aus Bildpunkten (Pixeln), die je einem bestimmten Zahlenwert (z.B.: zwischen 0-255 für 8-Bit Rastergrafiken (Bitmaps)) entsprechen, der in Graustufen oder Farben umgesetzt wird. Reine Schwarz-Weiß-Bilder ohne Graustufen bestehen nur aus Nullen und Einsen. Farben werden durch verschiedene Intensitäten der Farben Rot, Gelb und Blau gemischt. Es werden aber auch andere Farbmodelle wie die Prozessfarben CYMK (Cyan, Yellow, Magenta, Schwarz) oder HSV-Werte (Hue, Saturation, Value) unterstützt. Ein Beispiel ist die Zuordnung der verschiedenen Bänder (jeweils Graustufen) von Satellitenbildern zu jeweils einer Farbe, um zu einem farbigen Ergebnis zu kommen, d.h. die Zuweisung dreier Werte pro Pixel, z.B. für die drei Kanäle Rot, Gelb, Blau. Die entstehenden Monochrombilder werden dann übereinandergelagert. Das Resultat ist ein multispektrales Bild. Typische Beispiele sind Landsat TM oder SPOT-Satellitenaufnahmen. Diese oder anderweitig gescannte Bilder (z.B. Landkarten) können als Hintergrund zu anderen in ARC/INFO erstellten Informationsebenen unterlegt werden oder als Attributdaten gespeichert werden. Im zweiten Fall können sie bei Mausklick auf das zugehörige Objekt angezeigt werden. Anwendungsbeispiele dafür sind in einem Informationssystem gescannte Photos von Gebäuden, Sehenswürdigkeiten oder Straßenabschnitten mit erhöhter Unfallgefahr etc. Images lassen sich auch in Grids umwandeln und können dann bei entsprechender Entzerrung und Georeferenzierung für die Analyse mit herangezogen werden. Dabei sind natürlich wie bei der Einbindung anderer Daten mögliche Fehler- bzw. Maßstabsprobleme zu beachten (vgl. Kapitel Kapitel 1). In Kapitel Kapitel 3 wird die Georeferenzierung von Bildinformationen auf ein Coverage, sowie die OnScreen-Digitalisierung von solchen hinterlegten Rasterkarten erläutert. 43 Kapitel 2. Der Aufbau von ARC/INFO 2.2.4. Dreidimensionale Daten 2.2.4.1. Lattice Ein Lattice bezeichnet in ARC/INFO eine regelmäßig angeordnete Menge von Punkten auf einer Fläche (X,Y-Kordinaten), die durch eine Z-Koordinate eine Oberfläche definieren. Im Prinzip ist ein Lattice also ähnlich aufgebaut wie ein Grid und besitzt in ARC/INFO eine entsprechende Datenstruktur 4. Der Unterschied liegt in der Interpretation der X,Y,Z -Werte. Es handelt sich hier um echte Punktinformationen, während eine Gridzelle eine Fläche darstellt. Abbildung 2-9. TINs und Lattices im Vergleich - Ausgangsdaten und Resultate (aus ARCDOC) In einem Grid erhält die gesamte Zelle (X,Y) einen Wert (Z). In einem Lattice wird der Z-Wert als Höhenangabe eines einzelnen Punktes, dessen Basis den Mittelpunkt der entsprechenden Grid-Zelle darstellt, interpretiert. Die Werte zwischen den bekannten Oberflächenpunkten werden über die übrigen LatticePunkte interpoliert. Für diese Aufgabe stehen in dem TIN-Modul verschiedene Algorithmen zur Verfügung. Sie sind in der Online-Hilfe ARCDOC dargestellt. Die Auflösung muß insgesamt an die feinste benötigte Geländedarstellung angepaßt werden. 2.2.4.2. Dreiecksvermaschung (TIN) TIN ist die Abkürzung für Triangulated Irregular Network (trianguliertes irreguläres Netzwerk oder unregelmäßige Dreiecksvermaschung) und wird zur Darstellung kontinuierlicher Oberflächen, z.B. von Gelände, benutzt. Geländeoberflächen o.ä. bestehen in der Realität aus unendlich vielen Punkten. Nun ergibt sich das Problem, eine geeignete, noch handhabbare Auswahl aus diesen zu treffen, um die Oberfläche möglichst exakt abzubilden. Die nicht explizit gespeicherten Punkte sollen möglichst genau aus den gegebenen interpoliert werden. TIN versucht dies mittels der Grundelemente Dreieck (Triangle), Knoten (Node) und Kante (Edge) zu erreichen, während einfache rasterbasierte Geländemodelle aus einer regelmäßigen Matrix bestehen, die damit keine Rücksicht darauf nehmen kann, ob die Stützpunkte signifikant für die abzubildende Oberfläche sind. 44 Kapitel 2. Der Aufbau von ARC/INFO Abbildung 2-10. Datenquelle (Punkte) für ein TIN Abbildung 2-11. Resultierendes TIN Viele einfache digitale Geländemodelle (Digital Elevation Model, DEM) besitzen ein regelmäßiges Netz von Stützpunkten, ohne Unterscheidung, ob die gewählten Punkte signifikante Änderungen im Gelände darstellen oder ob mehrere Punkte für die Darstellung einer homogenen Fläche „verschwendet“ werden. In einem TIN können dagegen charakteristische Gegebenheiten (Küstenlinien, Talboden, Gipfelpunkte, Höhenzüge...) herangezogen werden, um die Geländeform zu modellieren. Diese charakteristischen Linien (Breaklines), mit bekannten Koordinaten stellen im TIN die Kanten (bzw. Eckpunkte) von Dreiecken dar. * TODO AZ: Saetze? TINs haben gegenüber Grids den Vorteil, daß Daten aus unterschiedlichen Quellen (Punkt-, Linien- und Flächencoverages, ASCII-Dateien...) verarbeitet werden können, die Darstellungsgenauigkeit ist adaptiv, das heißt es werden nur jeweils so viele Dreiecke verwendet, wie es für das jeweilige Relief erforderlich ist: wenige bei Ebenen und viele bei großer Variabilität. Außerdem können Breaklines definiert werden, d.h. Linien, deren Höhenwert nicht durch Interpolation verändert werden darf, so z.B. Küstenlinien. Sind Tins also für die Modellierung realer Oberflächen prädestiniert, besitzen Grids Vorteile bei der Darstellung theoretischer Gebilde wie Kostenoberflächen, Wasserleitfähigkeit etc. sowie der mit solchen Anwendungen verbundenen Modellierung wie der Simulation eines Waldbrandes oder der Planung kostenminimaler Trassen. 45 Kapitel 2. Der Aufbau von ARC/INFO 2.3. Erste Schritte in ARC/INFO 2.3.1. Workspaces Die Coverages in ARC/INFO sind in sogenannten Workspaces organisiert. Das sind Unterverzeichnisse, die ein oder mehrere Coverages enthalten und in denen ein Unterverzeichnis namens info angelegt wird, in welchem die internen Verknüpfungen zwischen den Coverages und den INFO-Tabellen für die Sachattribute durch ARC/INFO verwaltet werden. Neu erstellte Coverages oder ähnliches werden standardmäßig in das gerade aktive Workspace gespeichert. Die Erzeugung von Workspaces und das Wechseln zwischen den Workspaces kann auf der Kommandozeile über die Befehle createworkspace workspace (kurz: cw) bzw. workspace workspace (kurz: w geschehen. ARCTOOLS erstellt jedoch bei jedem Speichern eines Coverages über ARCTOOLS bei Bedarf in dem angegebenen Verzeichnis ein eigenes neues Workspace. Dies führt bei fehlender Umsicht oder Kontrolle unter Umständen zu einem Wildwuchs an Verzeichnissen und Workspaces, so daß es besser ist, bei Projektbeginn eine entsprechende Verzeichnisstruktur zu planen, diese mit createworkspace einzurichten und dann auch darauf zu achten, daß die entsprechenden Coverages hier gespeichert werden. Dies ist besonders dann sinnvoll, wenn mehrere Personen in einem Projekt mitarbeiten, da dann nur einmal die entsprechenden Zugriffsrechte vergeben werden müssen. Bei der Vergabe der Zugriffsrechte auf Betriebssystem- bzw. Netzwerkdateisystemebene ist darauf zu achten, daß insbesondere auch Zugriffsrechte (lesend und schreibend) auf das in jedem Workspace enthaltene Info-Unterverzeichnis gewährt werden müssen, damit das Arbeiten darin möglich ist. Bei Netzwerkverbindungen müssen gegebenenfalls noch Locking-Mechanismen berücksichtigt werden, aber dies ist dann Sache Ihres Netzwerkadministrators. 2.3.2. Grundsätzliche Bedienung Um ARCTOOLS zu starten, muß zunächst ARCauf der Kommandozeile gestartet werden. ARCTOOLS wird dann durch Eingabe von arctools aufgerufen: zeus: arc ... einige Startup-Meldungen ARC/INFO meldet sich mit seinem eigenen Prompt und damit steht nun das gesamte Programmpaket von ARC/INFO zur Verfügung (bzw. die für die lokale Installation lizensierten Module). Um sich einen ersten Eindruck zu verschaffen, kann man zunächst die grafische Bedienoberfläche ARCTOOLS von ARC/INFO starten: Arc: arctools Das Hauptmenü erscheint (vgl. Abbildung 2-12). Aus der Liste kann der gewünschte Unterpunkt durch Mausklick ausgewählt und dann durch Anklicken des OK-Knopfes bestätigt werden. 46 Kapitel 2. Der Aufbau von ARC/INFO Abbildung 2-12. Das ARCTOOLS Hauptmenü Bei Auswahlvorgängen wird der rechte Mausbutton benutzt. Soll eine gewählte Aktion schließlich ausgeführt werden, wird der linke Mausbutton eingesetzt. Bei Eingabe eines expliziten Wertes oder Textstrings in die dafür vorgesehenen Eingabefelder muß diese durch Drücken der return-Taste bestätigt werden. Um die gewählten Menüeinstellungen auszuführen, drückt man den OK oder den Apply-Button (Einstellungen anwenden). Im Unterschied zu OK verschwindet das Menü bei Apply nicht. Sämtliche Funktionen in ARCTOOLS können auch durch Aufruf der entsprechenden Befehle von der Kommandozeile erreicht werden. ARCTOOLS wurde hauptsächlich entwickelt, um Einsteiger nicht mit der unübersichtlichen Befehlsfülle zu überfordern und ihnen das Erlernen der jeweils erforderlichen genauen Syntax zu ersparen. Jedoch wurde nicht die volle Funktionalität von ARC/INFO in ARCTOOLS eingegeben. Das bedeutet, daß einige Funktionen nur über die Kommandozeile erreicht werden können. ARCTOOLS erspart neuen Benutzern zwar das Erlernen und Tippen der konkreten Befehlssyntax, jedoch wurde ARCTOOLS durch die gewachsene Funktionsfülle mittlerweile für Einsteiger relativ unübersichtlich. Der Benutzer muß sich durch zahlreiche Menüs hangeln und deren Struktur erlernen. Unter Umständen kann man daher nach einiger Übung mit der Kommandozeile schneller arbeiten. Durch die steigende Verbreitung und Akzeptanz von Windows-Systemen geht die Bedeutung letzterer für den einfachen Anwender zunehmend zurück. Geht es jedoch darum, eigene Anpassungen vorzunehmen oder das Programm um weitere Funktionen zu erweitern, wird man ohne Kenntnis der Kommandozeilensyntax nicht arbeiten können. Welche Lernkurve nun für welche Anwender die steilere darstellt, hängt sicher von persönlichen Vorkenntnissen und Präferenzen ab. Für die wichtigsten Befehle werden wir in dieser Einführung beide Varianten vorstellen. Für die neue Windows-Version von ARC/INFO (ArcDesktop) stellt sich diese Frage nicht mehr -- sie ist von Beginn an für eine grafische Oberfläche programmiert worden. Die grundsätzliche Befehlssyntax wird im Folgenden angegeben. Da ARCTOOLS in der eigenen Makrosprache AML entwickelt wurde, können zusätzlich erwünschte Befehle durch Neu- oder Umprogrammierung der zugrundeliegenden AMLs in ARCTOOLS eingebunden werden. Zunächst wollen wir unseren Lesern aber nicht vorenthalten, wie man ARC/INFO wieder beenden kann: Arc: quit 2.3.3. Initialisierung der Graphikfenster ARC/INFO benötigt nicht zwangsläufig eine Fensteroberfläche. So ist es möglich, das Programm über eine einfache Terminalverbindung zu steuern, solange keine Graphikausgabe auf dem Bildschirm erforderlich ist. 47 Kapitel 2. Der Aufbau von ARC/INFO Verschiedene Module von ARC/INFO öffnen Graphikfenster unter einer graphischen Benutzeroberfläche wie MS Windows oder X-Window Fenster, um Geometriedaten anzuzeigen, z.B., um sie mit der Maus zu editieren. Unter ARCTOOLS wird dem Benutzer dabei die Initialisierung einiger Umgebungsvariablen abgenommen. So sind auch Größe und Position der Anzeigefenster voreingestellt. Auf der Kommandozeile können diese Einstellungen wie folgt festgelegt werden:5 display 9999 1 display 9999 2 klein, aber gut für Übersicht, identisch zu DISPLAY schmales hochkantiges Fenster 9999 display 9999 3 display 9999 4 größtes Fenster, bei dem noch eine sichtbare Eingabe von Befehlen möglich ist. Das entsprechende Befehlsfenster muß vor der Initialisierung an den unteren Bildschirmrand verschoben werden Full-Screen-Anzeige des ARC/INFO Draw Fensters. Blinde Eingabe ist erforderlich, v.a. geeignet für Demonstrationszwecke 2.3.4. Voreinstellungen beim Programmstart Der Start von ARC/INFO kann vereinfacht werden, wenn Voreinstellungen wie Arbeitsverzeichnis, Initialisierung des Grafikfensters etc. gespeichert werden. Dazu dient eine Datei namens arc.aml. Dies ist eine Makro-Datei, die im Homeverzeichnis des Anwenders abgelegt ist und ausgeführt wird, wenn ARC/INFO im entsprechenden Verzeichnis gestartet wird. Sie könnte z.B. wie folgt aussehen: /* arc.aml /* &station 9999 /* graphisches Display initialisieren workspace digi /* in aktuelles Arbeitsverzeichnis wechseln 48 Kapitel 2. Der Aufbau von ARC/INFO 2.4. Erhalten von Hilfe 2.4.1. Hilfe auf der Kommandozeile usage Befehl * LN: Formatierung ist Sache der Stylesheets (Default: Kommando: Times fett, Replacable: Courier kursiv) gibt eine kurze Syntax-Beschreibung des Befehls mit seinen Optionen aus. Diese Hilfsfunktion können wir bei uns schon bekannten Befehlen anwenden, um die genaue Syntax, die vom Programm erwartet wird, in Erfahrung zu bringen. Für neue Befehle, deren Wirkung und Arbeitsweise uns noch nicht bekannt sind, reicht dies natürlich nicht aus. Falls wir einen Befehl mit falschen Optionen eingeben (z.B. mit Tippfehler oder ausgelassener zwingender Eingabe), wird dies vom Programm in der Regel ebenfalls mit der Ausgabe von usage quittiert. asciihelp Befehl gibt eine genauere textbasierte Erläuterung zur Funktionsweise des Befehls. commands gibt eine Liste der verfügbaren Befehle im jeweiligen Modul aus. help startet die im Folgenden beschriebene Online-Hilfe. 2.4.2. Die Online-Hilfe ARCDOC Abbildung 2-13. Die Online-Hilfe ARCDOC ARCDOC (vgl. Abbildung 2-13) ist ein Hypertext-Hilfesystem für alle Befehle, Begriffe und Konzepte in ARCDOC. Es ähnelt in der Erscheinung den neueren Windows-Hilfesystemen, sodaß man sich als Be- 49 Kapitel 2. Der Aufbau von ARC/INFO nutzer recht schnell darin zurechtfinden kann. Trotzdem sollen kurz die wichtigsten Merkmale dargestellt werden: ARCDOC kann von der ARC-Kommandozeile (oder der Kommandozeile anderer Module) aufgerufen werden: Arc: help Starting ArcDoc Version 7.2.1 Copyright (C) 1982-1998 Environmental Systems Research Institute, Inc. All Rights Reserved Worldwide. [1] 4838 Es ist auch möglich, die Hilfe unabhängig von ARC/INFO zu starten: > arcdoc& Starting ArcDoc Version 7.2.1 Copyright (C) 1982-1998 Environmental Systems Research Institute, Inc. All Rights Reserved Worldwide. [1] 4838 Die Hilfe wird unter UNIX als eigener Prozess gestartet, sodaß die Kommandozeile wieder für die weitere Arbeit zur Verfügung steht. In ARCDOC kann nach Themen bzw. Modulen sortiert nach Befehlsbeschreibungen gesucht werden. Es handelt sich hier um sämtliche in ARC/INFO zur Verfügung stehenden Befehle, wie sie im Zeilenmodus in das Terminalfenster eingegeben werden können. Zu allen Modulen von ARC/INFO lassen sich unter Command References sowohl alphabetische als auch funktionelle Auflistungen der verfügbaren Kommandos anzeigen. Zudem enthält die Hilfe einige grundlegende Artikel zu verschiedenen Programmschwerpunkten und ihrer Handhabung. Die folgenden Abbildungen zeigen die Auswahlmöglichkeiten unter Command References und die jeweiligen weiterführenden Menüs, wenn man auf einen der kleinen Doppelpfeile rechts neben der Modulbezeichnung drückt. Mit Abbildung 2-14 und Abbildung 2-15 sind jeweils ein Beispiel für eine funktionale (für das TIN-Modul) und eine alphabetische (für das ARC-Modul) Aufstellung angegeben. 50 Kapitel 2. Der Aufbau von ARC/INFO Abbildung 2-14. Funktionale Kommandolisten in ARCDOC Abbildung 2-15. Alphabetische Kommandolisten in ARCDOC Eine Suchfunktion (Abbildung 2-16) hilft bei der Suche nach Einträgen in der Online-Hilfe. Zusätzlich listet ein Glossar (Abbildung 2-17) viele der relevanten Begriffe auf und gibt kurze Erläuterungen zu denselben. 51 Kapitel 2. Der Aufbau von ARC/INFO Abbildung 2-16. Suchfunktion in ARCDOC Abbildung 2-17. Glossar in ARCDOC 52 Kapitel 2. Der Aufbau von ARC/INFO 2.4.3. Der Tool Browser Zusätzlich zu ARCDOC verfügen die ArcTools über eine eigene Dokumentation, in der sowohl Hilfetexte als auch die Quelltexte der AML-Programme selbst zu betrachten sind. Um Hilfe-Dateien oder den AMLQuellltext für die Funktionsweise der ARCTOOLS-Menüs zu finden, gibt es den ToolBrowser. Dieser zeigt entweder Hilfe-Dateien oder die zugehörigen AML-Makros oder Menü-Definitions-Dateien an. Die Hilfedateien beziehen sich nur auf die Funktionsweise der AML-Makros von ARCTOOLS, nicht auf die Befehlssyntax im Zeilenmodus. Diese findet man in der Online-Hilfe ARCDOC. Geordnet sind die einzelnen Menüs in sogenannte Tool Libraries. Diese spiegeln vor allem die verschiedenen Module von ARC/INFO wieder. Abbildung 2-18. Das Tool Browser Menü 2.4.4. Weitere nützliche Tools 2.4.4.1. Der Datenbetrachter Der Data Viewer ist ein nützliches Werkzeug, um schnell einen Überblick über die verfügbaren Daten zu erhalten und ihre wesentlichen Eigenschaften abzufragen. Er ist in den ARCTOOLS-Modulen (EditTools, MapTools ...) jeweils im ARCTOOLS-Pulldownmenü zu finden. EditTools ArcTools Data Viewer Mit diesem Menü können schnell Übersichtsgrafiken der Geometriedaten angezeigt werden und die Charakteristika der Datensätze mittels Properties, Describe sowie List abgefragt werden. Außerdem liefert Items eine Beschreibung der zu den Geometrien gehörigen Attributdaten. 2.4.4.2. Umrechung von Maßeinheiten Ein kleines, aber hilfreiches Werkzeug ist das Unit Conversion Tool, mit welchem die Umrechnung verschiedener Maßeinheiten (v.a. Längen, Grad und Flächenmaße) in andere Einheiten möglich ist. Es kann mit diesem Menü jedoch immer nur ein einzelner Wert auf einmal umgerechnet werden. 53 Kapitel 2. Der Aufbau von ARC/INFO Abbildung 2-19. Das Data Viewer Menü Abbildung 2-20. Das Programm zur Konvertierung von Einheiten Weiterführende Literatur: ESRI, 1995, Understanding GIS. The ARC/INFO Method, Cambridge: GeoInformation International. Heather Campbell und Ian Masser, 1995, GIS and Organizations: How effective are GIS in practice?, London: Taylor and Francis. Stanley Aronoff, 1989, Geographic information systems: a management perspective, Ottawa: WDL Publications. Booth Bob, 1999, Getting Started with ArcInfo, Redlands: ESRI. Fußnoten 1. Diese festen Grenzen existieren in der Realität (außerhalb von Verwaltungseinheiten) natürlich in den seltensten Fällen, vielmehr treffen wir auf unscharfe Grenzsäume und Übergangsgebiete, für die aus Gründen der Vereinfachung und Modellbildung die Grenzen festgelegt werden. 2. Es sei denn er/sie ändert sie selbst in INFO. Dies ist ein relativ sicherer Weg, seine Daten für eine weitere Verwendung unbrauchbar zu machen. 54 Kapitel 2. Der Aufbau von ARC/INFO 3. Heute möchte man ja eigentlich immer seamless boundaries, also keine Kartenblätter 4. Interessante Anwendungsmöglichkeiten ergeben sich dadurch, daß so auch vorhandene statistische Attributdaten, die keine topographischen Höhenwerte darstellen, sich als Höhenmodell interpretieren lassen. 5. Die Größe der Fenster kann auch nachträglich mit der Maus verändert werden, aber in Einzelfällen (z.B. wenn in ARCPLOT kein map-Befehl abgesetzt wurde) geht der bisherige Bildschirminhalt dabei verloren. 55 Kapitel 2. Der Aufbau von ARC/INFO 56 Kapitel 3. Projektplanung und Erstellen der raumbezogenen Datengrundlage mit ARCEDIT Das Erzeugen der digitalen Kartengrundlage ist einer der wichtigsten und oft auch aufwändigsten Schritte eines GIS-Projektes. Zunächst geben wir grundsätzliche Hinweise zur Planung und beschreiben dann das Digitalisieren einer Kartenvorlage am Digitalisierbrett und am Monitor. Außerdem geben wir Hinweise zum Import existierender Daten aus anderen Systemen oder Datenquellen. Die Kopplung der räumlichen Geometrien mit Attributdaten unterschiedlichster Art ist eines der Hauptcharakteristika von Geoinformationssystemen. 3.1. Fragestellung und Arbeitsablauf Abbildung 3-1. Arbeitsablauf eines GIS-Projekts Problem Zu Beginn müssen die Problemstellungen untersucht und grundsätzliche Organisationsfragen geklärt werden: Wie wird das Problem momentan gelöst und welche Alternativen gibt es dazu (auch zur Benutzung eines GIS)? Wie soll das Resultat präsentiert werden? Für welche Zielgruppe(n) ist es bestimmt? Nutzen andere gleichzeitig oder künftig dieselben Ausgangsdaten? Wie oft werden die selben Routinen durchgeführt werden? Welche Genauigkeit wird benötigt? Welche Daten sind vorhanden, welche müssten beschafft werden? Daten Die Datengrundlage muß beschafft werden. Falls eine Digitalisierung notwendig wird, kann dieser Schritt viel Zeit und Geld kosten. Das Untersuchungsgebiet, die Kartenprojektion und die notwendigen Datenschichten müssen bestimmt werden. Die Erstellung letzterer beinhaltet zunächst Import/Digitalisierung/Konvertierung, Fehlererkennung und -verbesserung sowie das Erzeugen der Topologie. Dann müssen die Zusatzinformationen (Sach- oder Attributdaten) eingelesen und mit den Raumelementen verbunden werden. Schließlich erfolgen gegebenenfalls die Umwandlung von Digitalisierkoordinaten in geographische Koordinaten sowie Projektionskonvertierungen, um Daten aus unterschiedlichen Quellen in ein einheitliches Format zu bringen und damit untereinander in Beziehung setzen zu können. 57 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Analyse Die eigentliche Analysearbeit beginnt. Durch Flächenverschneidungen, logisches oder räumliches Selektieren, Bufferbildung, statistische Analysen und Verknüpfung mit den übrigen graphischen Datenmodellen werden neue Erkenntnisse gewonnen und in Text oder Bild umgesetzt. Dies geschieht in der Regel in mehreren Schritten. Die Analyse mit ARC ist Gegenstand von Kapitel 4. Präsentation Diese Umsetzung mit anschließender Präsentation der Ergebnisse stellt den letzten Schritt eines GISProjektes dar. Es wird deutlich, daß GIS nicht mit Computerkartographie gleichzusetzen ist, die nur einen kleinen Teil des Gesamtprojektes darstellt. Prinzipiell ist die Kartographie durch Export der Ergebnisdaten bzw. -geometrien auch in anderen spezialisierten Kartographieprogrammen oder DesktopGraphikprogrammen möglich. Selbstverständlich weisen die meisten GIS-Programme wenigstens eingeschränkte kartographische Gestaltungsmöglichkeiten auf. In der Praxis sind es sogar oft die interaktiven Visualisierungsmöglichkeiten und die Einbindung von Sachdaten aus Datenbanken, die einen Großteil der Anwendungen in Verwaltung und Wirtschaft darstellen. Die Visualisierung mit ARCPLOT behandeln wir in Kapitel 6. 3.2. Geometriedaten in ARC/INFO übernehmen/erstellen ARCEDIT und die EditTools aus ARCTOOLS dienen dazu, die Geometrie- und Attributdaten von Coverages zu bearbeiten. 3.2.1. Vorbereitung 3.2.1.1. Kartengrundlage Das Erstellen der Kartengrundlage will sorgfältig geplant sein. Der erste Schritt ist die Vorbereitung auf das Projekt: Welche Daten sind vorhanden, in welcher Form, was muß noch digitalisiert oder aus anderen Systemen importiert werden? 3.2.1.2. Reihenfolge der Arbeitsschritte festlegen Um einen reibungslosen Ablauf zu erreichen, sind zunächst die einzelnen Schritte zu planen. Sobald die notwendige Reihenfolge feststeht und die einzelnen Arbeitsschritte dokumentiert wurden, sollte man einen Zeitplan erstellen, in dem die einzelnen Arbeitsschritte Personen zugeordnet und von diesen bei Vollendung abgehakt werden können. 3.2.1.3. Namensbeschränkungen und -konventionen, Verzeichnisstruktur Für das Projekt sollten im Vorfeld schon Namenskonventionen und eine Verzeichnisstruktur für verschiedene Arbeitsbereiche und Arbeitsschritte festgelegt werden, um spätere Missverständnisse zu vermeiden. Verzeichnisstruktur einrichten (workspaces) 58 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Dann kann ein neues Arbeitsverzeichnis erstellt werden, in das man anschließend wechselt (Abkürzungen für diese Befehle sind jeweils kursiv gedruckt): Arc: createworkspace workspace Arc: workspace workspace /* d.h. cw in der Kurzfassung * AZ: wurde Kommentarzeichen schon eingefuehrt? Namen von Coverages können bis zu 13 Buchstaben Länge besitzen. Da Variablennamen bis zu 16 Buchstaben lang sein dürfen, ist dadurch gewährleistet, daß der Zusatz -ID an den Cover Namen angehängt werden kann. Ein ähnlicher Grund begrenzt den Namen von Annotations und Route-Systems auf elf Stellen. Die Namen der Coverages müssen mit einem Buchstaben beginnen, dürfen jedoch auch Ziffern enthalten (A - Z, 0 - 9), ebenso Binde- und Unterstriche. Eine weitere Beschränkung existiert beim Export in Shapefiles, da die Feldnamen in den zugehörigen DBase-Datenbankdateien ebenfalls einer Größenbeschränkung unterliegen1. Um die im Laufe eines Projekts anfallenden Daten übersichtlich und konsistent zu organisieren, werden beispielsweise die in Tabelle 3-1 aufgeführten Namenskonventionen vorgeschlagen. Tabelle 3-1. Namenskonventionen für Coverages ABB Abbaugebiete GRW Grundwasser ALP Agrarleitplan HOE Höhenlinien/ -punkte ALT Altlasten IMI Immission BIO KLM Klima Biotope BOD Boden LKG Landkreisgrenzen EMI Emission LSG Landschaftsschutzgebiete ERO Erosion LEG Legende ERZ Erzeugungsgebiete NTR Naturräumliche Einheiten EXP Exposition NSG Naturschutzgebiete FNP NEI Neigung Flächennutzungsplan FGW Fließgewässer REL Realnutzung FLR Flurkarte SGW Stillgewässer FRE Funkt. Raumeinheiten STR Straßen GEM Gemeindegrenzen TIF Technische Infrastruktur GEO Geologie VEG Vegetat. Einheiten GEW Gewässer WEG Wassereinzugsgebiete Während der Digitalisierung könnte ein Coverage dann z.B. STR_A1_DIG heißen, nach der Fehlerbereinigung STR-A1_CLE und das fertige und kontrollierte Resultat STR_A1. Weitere Bearbeitungsschritte könnten sich dann in den in Tabelle 3-2 vorgeschlagenen Namen wiederspiegeln. Tabelle 3-2. Namenskonventionen für Bearbeitungsschritte BUF Bufferung UNG Ungenerate TRA Transformation GEN Generate 59 Kapitel 3. Erstellen der raumbezogenen Datengrundlage 3.2.1.4. Kartenmaterial vorbereiten Im nächsten Schritt sollte man das Kartenmaterial auf die Digitalisierung vorbereiten. Dafür ist es hilfreich, den voraussichtlichen Umfang des Projektes zu kennen. Möglichen Zuwachs sollte man schon zu diesem Zeitpunkt einplanen. 3.2.1.4.1. Karten ggfs. auf anderes Material übertragen Daten, die noch nicht in elektronischer Form vorliegen (z.B. weil sie noch von Hand aufgenommen wurden oder aus anderen Gründen nur auf Papier verfügbar sind) müssen für das GIS verwendbar gemacht werden. Sie werden in der Regel mit einem Digitalisiertablett erfaßt. Je nachdem, aus welchem Material die Vorlage besteht, kann sich diese durch äußere Einflüsse (Luftfeuchtigkeit etc.) bis zu mehreren Millimetern zusammenziehen oder ausdehnen und dadurch den RMS-Fehler vergrößern, daher sollten die Karten vor Beginn der Arbeit ggfs. auf ein stabiles Material, z.B. Mylar oder Astralon kopiert werden. * LN: heisst das Astralon? Die Vorbereitung für die eigentliche Digitalisierung beinhaltet das Beschaffen einer geeigneten Arbeitsvorlage (Maßstab, Aktualität). Die relevanten Informationsebenen müssen auf stabile, verzugsunempfindliche Transparentfolien (Astralon) übertragen werden. Eine solche Folie wird auf dem Digitalisierbrett befestigt und das eigentliche Digitalisieren kann beginnen. Um später die einzelnen Kartenschnitte problemlos zusammenfügen zu können, sollte man sich zuvorrechtzeitig über eine konsistente Vergabe von ID’s für die TIC-Punkte 2 klar werden. Dies ist besonders bei Projektgruppen mit mehreren Bearbeitern wichtig, aber auch wenn man alleine mehrere angrenzende Blattschnitte bearbeitet, erspart man sich später viel unnötige Arbeit, wenn solcher „Zuwachs“ bereits vorher berücksichtigt wird. 3.2.1.4.2. TICs bestimmen und markieren TICs markieren Punkte, für die die genaue Lage im Gradnetz bekannt ist. Es ist also sinnvoll, auf der Karte solche Punkte auszuwählen, die an den Schnittpunkten des Gitternetzes liegen. Auf der Karte sollte man die entsprechenden Punkte vermerken und zugleich eine Tabelle mit diesen IDs und den dazugehörigen Koordinaten anlegen. Diese wird später für die Überführung des Coverages von Digitalisierbrett- in Realweltkoordinaten benötigt. Für sämtliche Karten werden markante Punkte (meist in den Ecken der Kartenblätter oder an Gitternetzschnittpunkten) gesucht, für die die exakten Koordinaten feststehen. Für diese werden nun eindeutige Nummern vergeben, wobei es sinnvoll ist, ein solches Raster für eine Reihe von Kartenblättern zu planen (siehe Abbildung 3-2 ). Insbesondere bei größeren Projekten ist ein sogenanntes Mastertic-Coverage unumgänglich. 60 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Abbildung 3-2. Kartenübersicht mit TICs Bei genauerer Betrachtung der Abbildung fällt vielleicht auf, das die Nummern im unteren Teil nicht fortlaufend sind. Falls das Untersuchungsgebiet noch in die angrenzenden Kartenblätter ausgedehnt werden soll, kann man so noch weitere Karten in das Schema einbinden. Grundsätzlich ist aber die einzige Bedingung, dass die TIC-IDs eindeutig sein müssen, also jeweils nur einmal vergeben werden dürfen. 3.2.1.4.3. unklare Stellen markieren Bei der Digitalisierung können verschiedene Fälle auftreten, in denen Startpunkte oder Schnittpunkte nicht eindeutig sind. In solchen Fällen (vgl. Abbildung 3-3) ist es sinnvoll, diese Punkte vor dem Digitalisieren festzulegen und auf der Karte zu markieren, z.B. Schnittpunkte von zwei Linien, die sich im spitzen Winkel schneiden oder den Startpunkt bei Inselpolygonen ohne markante Kanten. Abbildung 3-3. Vorbereitung des Kartenmaterials: nicht eindeutige Start- und Schnittpunkte festlegen * TODO LN: ausformulieren, einordnen Schnittpunkte von Linien in spitzem Winkel (Node festlegen) Start-Nodes bei Inselpolygonen bei Bildschirmdigitalisierung analoges Vorgehen 3.2.1.4.4. Richtung der Linien festlegen In manchen Fällen spielt die Richtung einer Linie eine Rolle, so z.B. wenn ein Flußnetz modelliert werden soll. Eine falsche Fließrichtung eines Flußabschnittes müßte erst aufwändig in den Ausgangsdaten korri- 61 Kapitel 3. Erstellen der raumbezogenen Datengrundlage giert werden. Wenn gar das gesamte Flußnetz ohne Rücksicht auf die Fließrichtung digitalisiert wurde, ist der Aufwand enorm hoch, dies wieder zu korrigieren. Es empfiehlt sich also, bereits vor der Digitalisierung solche Überlegungen in die Planung mit einzubeziehen, auch wenn zu diesem Zeitpunkt z.B. noch keine Netzwerkanalyse geplant ist. 3.2.2. Geometriedaten 3.2.2.1. Digitalisierung Das Eingabegerät für Koordinaten wird mit dem Befehl coordinate mouse digitizer keyboard festgelegt bzw. geändert. In der Regel ist das Eingabegerät auf mouse gestellt, sinnvoll z.B. für Auswahl und Editieren am Bildschirm. Für die Eingabe von Papierkarten wählt man digitizer. Falls Koordinaten anhand vorliegender Werte eingegeben werden sollen, kann man das Eingabegerät auch auf keyboard setzen. Dies dürfte aber eher die Ausnahme sein, bei größeren Koordinatenmengen erledigt man dies sinnvollerweise über die ASCII-Schnittstelle generate. 3.2.2.1.1. Toleranzen Bevor man mit dem Digitalisieren der Kartenelemente beginnt, sollte man noch die folgenden Voreinstellungen für ARCEDIT anpassen: Nodes, d.h. Anfangs- und Endpunkte von Linien (Arcs) werden ab einem bestimmten Abstand voneinander „zusammengeschnappt“, d.h. wenn ein neuer Node innerhalb der nodesnap-Distanz zu einem anderen Node liegt, werden die beiden zusammengezogen. Die Voreinstellung muß gegebenenfalls geändert werden. Diese Einstellungen sind jedoch von den Einheiten der Coverages abhängig - so sind hier bei der Digitalisierung mit dem Digitalisierbrett völlig andere Werte erforderlich als beim Editieren von Coverages in Real-world-Koordinaten am Bildschirm, denen ein Rasterbild hinterlegt wurde. Beim Erstellen eines Coverages wird eine Anzahl von Toleranzgrenzen gesetzt. So z.B. bei der Festlegung der Genauigkeit der Tic-Koordinaten, beim Digitalisieren und Editieren, oder wenn zwei Nodes nachträglich zusammengeschnappt werden. Damit wird also schon während der Erstellung eines Coverages auf die Genauigkeit der gesamten Analyse Einfluß genommen. Andererseits ist das Editieren großer Coverages ohne gewisse Toleranzen zur Automatisierung einzelner Editiervorgänge kaum möglich. Diese Toleranzen werden in eigenen Dateien gespeichert. Sie haben die ARC/INFO-Dateiendung tol bei einfacher und par bei doppelter Genauigkeit. Folgende Begriffe werden immer wieder in Optionen vieler Editier- und Analysebefehle auftauchen: 3.2.2.2. Fuzzy Tolerance Diese Toleranz definiert den kleinsten Abstand zwischen Arc-Koordinaten in einem Coverage, d.h. die minimale Distanz zwischen zwei Punkten (sowohl Nodes als auch Vertices). Die Werte müssen größer Null sein. Es existiert folgende Rangfolge: 62 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Zuerst gilt die Toleranz aus der TOL-Datei des Coverages. Existiert diese nicht und liegen die Extremwerte des Coverages (Boundary) zwischen 1 und 100 wird automatisch ein Fuzzy Tolerance Wert von 0.002 (inch) eingesetzt. Sind die Werte in der BND-Datei größer als 100, so wird die maximale Weite der BND-Werte durch 10000 dividiert. 3.2.2.3. Grain Tolerance Bei Interpolation eines Linienzuges in der Ebene durch Splines gibt die Grain Tolerance die Entfernung zu den äquidistanten Interpolationspunkten an. 3.2.2.4. Weed Tolerance Die Weed Tolerance gibt die minimale Entfernung zwischen den Vertices eines Arcs an. Als Voreinstellung wird 1/1000 der maximalen Ausdehnung (Höhe oder Breite) der BND verwendet. Sie findet z.B. beim Ausdünnen von Arcs (z.B. bei Generate) Verwendung. Nun können die Werte für die unterschiedlichen Toleranzen eingegeben werden. Diese werden zusammen mit dem Coverage gespeichert und bei späteren Editiersitzungen des Coverages wieder aufgerufen. Mittels der „Fadenkreuzknöpfe“ in der Mitte des Fensters kann z.B. die Node Snap Distance mit der Maus auf dem Grafikfenster durch Aufziehen eines Kreises eingestellt werden (rechte Maustaste). * TODO AZ: zu Editiertoleranzen (Snap) vgl. auch Dipl. Gernot + Abb. Arcedit: Arcedit: Arcedit: Arcedit: Arcedit: Arcedit: editdistance 10 weedtolerance 4 nodesnap closest 1 arcsnap closest 1 intersectarcs all add /* Arc hinzufuegen, ab hier wie gehabt Die Toleranzen werden in einer .tol-Datei mit dem jeweiligen Coverage gespeichert. intersectarcs z.B. muß jedoch immer zu Beginn einer Editiersitzung neu eingegeben werden 3. Arcedit: nodesnap closest .05 Alternativ dazu kann man diese Entfernung auch über den Puck oder die Maus einstellen Arcedit: nodesnap closest * und anschließend den so eingestellten Wert abfragen: Arcedit: show nodesnap CLOSEST,0.0399999991059 Jetzt sollten wir noch die angezeigten Informationen anpassen, damit wir auch die neu digitalisierten Elemente sehen können und dann das Element, das eingegeben werden soll, bestimmen: Es existieren mehrere Toleranzen, die z.B. das Aneinanderschnappen zusammengehöriger, aber ungenau digitalisierter Nodes o.ä. innerhalb eines gewissen Fangradius (Snap Distance) erlauben. Diese können individuell angepaßt werden. Das Environment-Properties-Fenster erscheint bei Betätigung von Edit Env in der linken unteren Ecke des Edit-Fensters. 63 Kapitel 3. Erstellen der raumbezogenen Datengrundlage * LN: naechsten Abschnitt ausformulieren, an richtiger Stelle einbauen Toleranzen festlegen tolerances (?) grain weedtolerance nodesnap arcsnap snapenvironment duplicatearcs 3.2.2.4.1. Editfeature festlegen 3.2.2.4.2. Digitalisierbrett Zunächst muß das Digitalisierbrett für ARC/INFO initialisiert werden. Dazu muß das Digitalisierbrett eingeschaltet werden, bevor ARC/INFO gestartet wird. idefix> arc Nun wird ARC/INFO für die grafische Fensteroberfläche und anschließend für das Digitalisierbrett eingerichtet. Eingaben (und Auswahl) auf der bearbeiteten Karte erfolgen nun alle über das Digitalisierbrett/Puck. Soll zwischendurch etwas mit der Maus bearbeitet werden, so gibt man coordinate mouse ein, sobald man damit fertig ist wieder coordinate digitizer. Arc: &TERMINAL 9999 /* ARC/INFO oeffnet nun bei Bedarf Fenster /* fuer die Grafikausgabe von Arc-Modulen Anschließend ARCEDIT starten und neues Coverage erzeugen: Arc: arcedit /* ae (Abk.) Das Digitalisierbrett muß nun noch für ARC/INFO eingerichtet werden. In diesem Beispiel gehen wir von einem Calcomp Drawing Board III aus, das an die erste serielle Schnittstelle angeschlossen ist. Für andere Installationen sind diese Werte entsprechend der Dokumentation abzuändern. unter Solaris Arcedit: digitizer 9100 /dev/ttya unter Windows NT/2000 Arcedit: digitizer 9100 com1 Das weitere Vorgehen ist wieder plattformunabhängig: Die vorgegebene Einstellung erwartet die Eingabe von einzelnen Punkten über den Digitalisierpuck (auch Digitalisierlupe). Eine weitere Möglichkeit ist der Stream-Modus, bei dem man eine Linie entlangfährt und das Digitalisierbrett in festgelegten Abständen Punkte einfügt. Wir beschränken uns auf den Punktmodus, der weniger fehleranfällig und zugleich besser zu kontrollieren ist. Arcedit: coordinate digitizer Arcedit: create ticcov Soll ein bereits existierendes Coverage weiterbearbeitet werden, entfällt natürlich der create-Schritt. Für coordinate digitizer wird in diesem Fall das Coverage angegeben: Arcedit: coordinate digitizer zu_bearbeitendes_coverage 64 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Man wird dazu aufgefordert, mindestens vier Tics eingeben. Diese werden für alle weiteren Kartentransformationen als Kontrollpunkte benötigt. Unter EditTools Edit lassen sich auch die Einstellungen zum Digitalisieren menügesteuert angeben. Die Bedeutung der Schaltflächen und Optionen entspricht dabei den unten beschriebenen Befehlen für die Kommandozeile. Zusätzlich ist das Konfigurieren des Digitalisiertabletts über die Menüs Set Digitizer Device und Digitizer Port Options möglich. Die Einstellungen sind bei Bedarf beim Systemadministrator zu erfragen. Abbildung 3-4. Eingabemethode auswählen (Set Coordinate Entry Device) Abbildung 3-5. Initialisierung des Digitalisierbretts Dazu gibt man zunächst auf der numerischen Tastatur der Digitalisierlupe die Tic-ID ein. Mit der Taste A auf der Digitalisierlupe wird die Eingabe bestätigt. Bei der Eingabe sollte man versuchen, die markierten Punkte genau zu treffen, da dies für die Registrierung der Karte von entscheidender Bedeutung ist. creating /TICCOV Digitize a minimum of 4 tics (from digitizer). Signal end of tic input with Tic-ID = 0 Tic-ID: 1 A A Tic-ID: 2 A A ... Tic-ID: 8 A A Tic-ID: 0 A Sobald man die Eingabe der Tics mit den Tasten 0 und A auf dem Puck beendet hat, wird man aufgefordert, eine erste Kartengrenze zu digitalisieren: 65 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Enter initial boundary Define the box (from digitizer) Dazu zieht man mit dem Puck von unten links nach oben rechts ein Rechteck auf, das etwas größer als die Fläche der zu digitalisierenden Karte ist. Anfangs- und Endpunkt werden markiert, indem man jeweils eine beliebige Taste auf dem Puck drückt. Dadurch hat man nun eine INFO-Datei ticcov.bnd erzeugt, die die Minimal- und Maximalkoordinaten für diese Karte enthält. Diese Koordinaten werden in Digitalisierbrett-Koordinaten (in der Regel in Zoll) gespeichert und sind als x/y-Werte rechts neben dem Pan/Zoom-Menu im ARCEDIT-Grafikfenster sichtbar. Die Tic-Karte ist damit erstellt und sollte erst einmal gespeichert werden: Arcedit: save Saving changes for /TICCOV BND replaced into /TICCOV Die bisherige Arbeit kann man dann überprüfen. Dazu sagt man ARC, welche Informationen angezeigt werden sollen: Arcedit: drawenvironment tic id /* setzt die Zeichenumgebung Arcedit: draw /* baut die Grafikanzeige neu auf Jetzt sollten im ARCEDIT-Fenster die digitalisierten Tics erscheinen. 3.2.2.4.3. Digitalisieren am Bildschirm Es ist auch möglich, die Kartengrundlage als Bitmap in ARCEDIT anzuzeigen, damit dann mit der Maus direkt am Schirm digitalisiert werden kann. Die Vorlagen können sich dann nicht mehr durch Umwelteinflüsse ändern. Durch eine stärkere Vergrößerung der Vorlage ist genaueres Digitalisieren möglich (wenn die Rastergrafik über eine ausreichende Auflösung verfügt, je nach Vorlage um 200-300 dpi). Der vergleichsweise kleine Ausschnitt, der auf dem Bildschirm dargestellt werden kann, macht das Digitalisieren größerer Vorlagen jedoch wieder aufwendiger. Zudem ist nicht immer ein Scanner in der Größe der Vorlage vorhanden, sodaß auch hier erst umständlich mehrere Teile gescannt werden müssen. Ein Vorteil gescannter Karten liegt noch darin, daß es leichter zu beurteilen ist, wie weit die digitalisierten Karten von der Vorlage abweichen, da die digitalisierten Vektorlinien hier direkt über der Vorlage liegen (oder eben nicht ...). Um am Monitor von einer Rasterkarte zu digitalisieren, beginnen wir auch mit dem Erstellen einer TICTabelle. Handelt es sich nur um wenige Karten mit entsprechend wenigen TICs, so können wir einfach mit create mastertic ein neues, noch leeres TIC-Coverage erstellen. In INFO können wir dann jeweils TIC-ID, XTIC und YTIC eingeben. Das so erstellte TIC-Coverage wird nun noch in das in das Koordinatensystem der Rasterkarten transformiert und kann dann als Vorlage für die verschiedenen Ebenen genutzt werden: create neuescover mastertic erstellt ein neues Coverage, das alle TICs bereits enthält. Nun können für die einzelnen Rasterbilder die sogenannten World Files mit register und rectify erstellt werden. Handelt es sich um ein größeres Projekt, bei dem die TICs regelmäßig wiederkehrende Gitternetzschnittpunkte sind, so kann man sich viel Arbeit ersparen, wenn man die Koordinaten zunächst berechnet und dann über generate als TIC-File importiert: 66 Kapitel 3. Erstellen der raumbezogenen Datengrundlage #!/usr/bin/perl # tics.pl - gibt Koordinaten im ARC/INFO GENERATE-Format aus # Diese Werte anpassen $tic=1; # erste TIC-ID $gx=-6; # erster X-Wert $gy=50; # erster Y-Wert $zgx=2; # letzter X-Wert $zgy=56; # letzter Y-Wert $incr=1/6; # Gitternetzabstaende (10 Minuten = 1/6 Neugrad) $ursprung=$gx; # Ursprung merken while ($gy le $zgy) { while ($gx le $zgx) { print "$tic,$gx,$gy\n"; $tic ++; $gx += $incr; } $gy += $incr; $gx =$ursprung; # X-Wert auf den Ursprung zuruecksetzen } print "END\n"; # Generate will wissen, wann die Datei endet Die Ausgabe dieses Programms kann man dann in eine Datei umleiten: idefix> perl tics.pl > tics.gen Über die generate-Schnittstelle kann dann das TIC-Coverage erzeugt werden: Arc: generate mastertics Copyright (C) 1982-2000 Environmental Systems Research Institute, Inc. All rights reserved. GENERATE Version 8.0.2 (Tue Feb 22 08:01:14 PST 2000) Generate: input tics.gen Generate: tics Creating tics with coordinates loaded from tics.gen Generate: quit Zur Kontrolle sehen wir die so erzeugte Datei noch einmal kurz an: Arc: list mastertics.tic Record IDTIC XTIC 1 1 -6.000 2 2 -5.833 3 3 -5.667 4 4 -5.500 5 5 -5.333 6 6 -5.167 YTIC 50.000 50.000 50.000 50.000 50.000 50.000 67 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Mit diesem TIC-Coverage können nun die einzelnen Rasterbilder interaktiv mit register registriert werden und anschließend (bei größeren Projekten im Batch-Modus) mit rectify die World Files erstellt werden (Header-Dateien, die Informationen zu Skalierung und Drehung der georeferenzierten Bilder speichern) * LN: Scherung auch?? Falls kein Digitalisierbrett vorhanden ist oder Daten schon im Rasterformat vorliegen bzw. eingescannt werden können, besteht die Möglichkeit, auch ohne zusätzliche Digitalisier-Hardware direkt am Monitor mit der Maus zu digitalisieren. Dazu müssen die Rasterdaten zunächst georeferenziert werden. Um eine Vorlage am Monitor digitalisieren zu können, muß sie zunächst eingescannt werden. Dabei wird ein Bild als Vorlage optisch abgetastet und die verschiedenen Farbwerte in digitale Form umgesetzt. Zu unterscheiden sind die Farbtiefe (in Bit, d.h. die maximale Anzahl darstellbarer Farben) und die Auflösung in der Einheit dpi dots per inch), die angibt, wieviele Punktinformationen pro Flächeneinheit gespeichert werden. Als Ergebnis erhält man eine Rastergraphik, d.h. ein digitales Bild, das in einem der üblichen Rastergraphikformate gespeichert werden kann. Im professionellen Bereich ist z.B. TIFF verbreitet, aufgrund der Allgegenwart des WWW sind heute GIF und JPEG besonders bekannt. * AZ: wird in V8 png unterstuetzt? Wie in Abschnitt erwähnt, können verschiedene Rastergrafikformate in ARC/INFO eingelesen und dargestellt werden. Insbesondere können sie auch in ein ARC/INFO-eigenes GRID umgewandelt werden, wodurch weitere Analysemöglichkeiten erschlossen werden. 3.2.2.5. Georeferenzieren von Rastergraphiken mit register und rectify Bilddateien, i. d. R. eingescannte Karten, müssen erst an Coverages mit Digitizer- bzw. Real-worldKoordinaten angepaßt werden. Dazu werden mehrere Punkte, deren Lage sowohl auf dem Bild als auch in dem Coverage bekannt sind, verbunden, um so das Bild mit Informationen über dieses Koordinatensystem zu versorgen. Wir werden in diesem Beispiel ein bereits digitalisiertes Coverage mit den Umrissen der Insel Gomera mit dem eingescannten Bild der Vorlage hinterlegen, sodaß wir weitere Informationen der Karte am Bildschirm digitalisieren können. Dazu rufen wir zunächst das Programm register mit den benötigten Parametern auf. Arc: usage register /* Befehlsoptionen ansehen Usage: REGISTER <image> {cover} {cover_color} {band | COMPOSITE} {red_band} {green_band} {blue_band} {ARC | POINT | TIC | ALL} Für unsere Zwecke reicht erst einmal: Arc: register gomera gomera 4 composite 1 2 3 /* unterstuetzte Dateiformate /* werden ohne Angabe der Endung erkannt Es erscheinen mehrere Fenster: image, cover und overlay sowie eine Dialogbox, die aber zunächst noch nicht interessiert. Wir müssen jetzt zunächst in den beiden kleinen Fenstern (image und coverage) einen annähernd deckungsgleichen Bereich auswählen. Dazu sollten wir diese Fenster erst einmal vergrößern. Mit der linken Maustaste können wir nun die momentan angezeigte Box verschieben, mit der mittleren 68 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Maustaste können wir sie in der Größe verändern. Die Größe der Auswahl wird dabei etwas unkonventionell verändert, mit etwas Übung versteht man das Prinzip aber schnell. Wenn man nun mit der rechten Maustaste in eines der beiden kleinen Fenster klickt, werden die beiden Ausschnitte vergrößert übereinandergelegt. Wenn die Ausschnitte genau genug gewählt sind, sodaß man Punkte sowohl auf dem Rasterbild wie auch auf dem Vektor-Coverage erkennt, können wir sogenannte Links einfügen, die für die spätere Transformation dienen. Der Anfang eines solchen Links wird auf dem zu registrierenden Bild markiert (linke Maustaste), das Ziel kann dann entweder über die Tastatureingabe von absoluten Koordinaten oder einen weiteren Klick mit der linken Maustaste markiert werden. Dabei müssen die Links immer in der gleichen Weise gesetzt werden, nämlich vom Soll-Punkt (in unserem Fall auf der eingescannten Karte) zum bekannten Punkt auf dem Vektorcoverage. Hat man einige Links hinzugefügt, kann man durch einen Klick auf Register die bisherige Transformation überprüfen, ggfs. Links löschen und noch weitere hinzufügen. Mit lock image wird die bisherige Transformation im Overlay-Fenster gezeigt. Ist sie weitgehend deckungsgleich, kann man nun durch Save Transformation ein sogenanntes Worldfile erzeugen, mit dem im nächsten Schritt mit rectify das georeferenzierte Bild erzeugt wird. * TODO LN: Worldfile genauer definieren Das Digitalisieren am Monitor unterscheidet sich nicht grundsätzlich von der gleichen Tätigkeit am Digibrett. Einige Unterschiede gibt es aber doch: Wenn eine Karte neu erstellt wird, sind die Bildschirmkoordinaten im Edit-Fenster normalerweise völlig anders als die des Bildes (1 Pixel = 1 Einheit?) Die Auflösung der eingescannten Karte bestimmt also, wo sie auf dem Bildschirm dargestellt wird. Mit einem kleinen Trick kann man vermeiden, daß man lange nach dem Bild suchen muß. Zunächst muß man dazu die Größe des Bildes, das im ArcEdit-Fenster hinterlegt werden soll, in einem Raster-Grafikprogramm bestimmen. Das kann z.B. das Programm sein, mit dem man die entsprechenden Vorlagen eingescannt hat. Dann müssen für das „Roh-“, d.h. nicht georeferenzierte Coverage, die TICs erzeugt werden. Das kann entweder in INFO geschehen (siehe unten) oder noch schneller mit coordinate keyboard und add (siehe Online-Hilfe zu coordinate). Für unser Beispiel haben wir eine Bildgröße von 1919 x 1683 Pixel herausgefunden. Man muß nun zunächst ein entsprechendes coverage erzeugen und die TICs über INFO eingeben. Arc: create gomera.tic Arc: list gomera.tic /* leeres TIC-coverage erzeugen /* die Datei enthaelt noch keine Werte Record IDTIC XTIC YTIC Dieses neu erstellte Coverage ist vorerst noch leer, deshalb öffnen wir es mit INFO. * TODO LN: Hinweis auf Grossschreibung in INFO (oder Umstellung auf Tables?) Arc: info /* ab hier erst einmal Grossschreibung INFO EXCHANGE CALL 06/05/1998 13:31:08 INFO 9.42 11/11/86 52.74.63* Copyright (C) 1994 Doric Computer Systems International Ltd. All rights reserved. Proprietary to Doric Computer Systems International Ltd. ENTER USER NAME> ARC ENTER COMMAND > sel gomera.tic 69 Kapitel 3. Erstellen der raumbezogenen Datengrundlage DATAFILE NOT FOUND! LOOK ALIKES ARE (IF ANY) GOMERA.TIC, GOMERA.BND, (Das war für die, die das mit der Großschreibung nicht geglaubt haben ...) ENTER COMMAND > SEL GOMERA.TIC 4 RECORD(S) SELECTED ENTER COMMAND > ADD 5 IDTIC> /* hier wuerden wir IDs und zugehoerige x/y-Werte /* vergeben, aber da wir einfach RETURN /* gedrueckt haben, wird nichts hinzugefuegt 0 RECORD(S) ADDED Jetzt verlassen wir INFO wieder: ENTER COMMAND > Q STOP Ab hier gilt wieder normale Kleinschreibung. * TODO LN: wo gehoert das Beispiel gleich wieder hin??? /* arcedit.aml /* richtet Arbeitsumgebung beim Start von ArcEdit ein display 9999 3 mape ponet linescale mapscale 60000 ec sedloc bc ponet 7 be arc point ef arc image engl_rlg composite 1 2 3 setdrawsymbol 67 4 setsymbol edit 67 2 de all draw Arc: usage rectify /* Optionen des Befehls ansehen Usage: RECTIFY <in_image> <out_image> {NEAREST | BILINEAR | CUBIC} {DEFAULT | COLORMAP | NONE} {clip_cover | BOX} {xmin} {ymin} {xmax} {ymax} Arc: rectify gomera gomera_rec 70 Kapitel 3. Erstellen der raumbezogenen Datengrundlage 3.2.2.6. Import/Export Zum Einlesen von schon existierenden Daten aus anderen Formaten bzw. Datenbanken existieren diverse Import-Werkzeuge. Hierbei muß wieder zwischen den Importfiltern für Geodaten (Vektoren, Rasterdaten) etc. und den Sachdaten unterschieden werden. Das Arbeiten mit Sachdaten, d.h. mit den Geometrien assoziierten Attributen wird in Kapitel Kapitel 3 behandelt. 3.2.3. Import von Vektorkoordinaten Es existieren Schnittstellen zu den gängigsten Formaten: Dazu gehören: DXF (Austauschformat für CAD-Daten von Autodesk), DIME (US-Behörden), TIGER (US-Behörden, Nachfolger von DIME), DLG (Digital Line Graph), SDTS (Spatial Data Transfer Standard, US), VPF, IGES, DFAD, ETAK (Großer US-Hersteller, z.B. von Strassenatlanten), MOSS (Public Domain), SLF, Shape (ESRI ArcView Format, ohne Topologie). Neben dem Einlesen von Fremdformaten sind insbesondere die Befehle import und generate (bzw. ihre Gegenstücke export und ungenerate) von Interesse. import/export sind für den Austausch zwischen ARC/INFO-Systemen verschiedener Plattformen zuständig, während generate/ungenerate die ASCIISchnittstelle für Geometriedaten darstellen. coord digitizer create tolerances drawenv editfeature add save Wie wir bereits in den vorangegangenen Kapiteln gesehen haben, ist die Datenstruktur von ARC/INFO relativ komplex. Da Coverages in verschiedenen Dateien in jeweils eigenen Unterverzeichnissen gespeichert werden und gleichzeitig noch Verweise auf spezielle Dateien im Info-Unterverzeichnis des jeweiligen Workspaces existieren, können die Coverages nicht einfach auf Betriebssystemebene kopiert werden. Sollen aber Coverages (einschließlich der Sachdaten, etc.) von einem Computersystem zu einem anderen kopiert werden, oder besteht die Notwendigkeit, Coverages in eine einzelne Datei zu packen, kann dies mit dem Befehl export geschehen. Command Tools (2.Hauptmenüleiste) Conversion From Arc Export Die zu exportierenden Datenquellen müssen ausgewählt und ein optionaler Komprimierungsfaktor bestimmt werden. Das gewählte Coverage wird dann als sogenannte Export-Datei herausgeschrieben. Am sichersten - wenn auch am wenigsten Platz sparend - ist es, den Komprimierungsfaktor auf NONE zu setzen, da dann nur ein spezifisches ASCII-Format erzeugt wird. Bei voller Komprimierung wird ein binäres Format erzeugt. Es könnte u.U. auf unterschiedlichen Zielplattformen oder Versionen (z.B. ArcCad) zu Problemen beim Entpacken kommen4. 71 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Abbildung 3-6. Das Export Menü Die Größe der Austauschdatei kann durch die Angabe einer maximalen Zahl von Zeilen begrenzt werden (z.B. um eine Übertragung auf Disketten zu ermöglichen). Passen die Daten nicht in eine einzelne so begrenzte Datei, wird automatisch eine zweite Datei mit der Endung .e01 erstellt. Bei einem nachfolgendem Import auf dem Zielsystem werden alle diese Dateien .e00, .e01, .e02, ... zu dem ursprünglichen Coverage zusammengesetzt. Nicht komprimierte Exportfiles sind leidlich lesbar und das proprietäre Format ist an verschiedenen Stellen im WWW weitgehend dokumentiert.5 Der folgende Auszug eines unkomprimierten Exportfiles eines Coverages mit Double Precision gibt einen Eindruck von diesem Format. EXP ARC 0 /HOME/ARC/SIEDLUNG.E00 2 1 30 1 1 9.2349997E+00 3.0851999E+01 9.0920000E+00 8.8500004E+00 3.0775000E+01 8.3660002E+00 8.3859997E+00 3.0900999E+01 9.2349997E+00 2 29 2 2 9.9569998E+00 2.9636000E+01 9.9519997E+00 1.0193000E+01 3.0811001E+01 1.0141000E+01 9.9569998E+00 2.9636000E+01 3 32 3 3 1.3917462E+01 2.9267170E+01 1.4040217E+01 1.3993000E+01 2.9134001E+01 1.4171000E+01 1.3917000E+01 2.9118999E+01 1.3846000E+01 1.3917462E+01 2.9267170E+01 1 3.0736000E+01 3.0535999E+01 3.0851999E+01 1 3.0811001E+01 2.9622999E+01 1 2.9220713E+01 2.8965000E+01 2.9160999E+01 2 3 6 . . . 8.9540219E-01 5.5209265E+00 1.1721338E-01 1.3128080E+00 5.9643501E-01 4.5692344E+00 SIEDL.TIC IDTIC 4-1 14-1 XTIC 4-1 54-1 YTIC 4-1 94-1 XX 5-1 12 3 12 3 31 32 33 3 50-1 60-1 60-1 30 31 32 3 12 -1 -1-1 -1 -1-1 -1 -1-1 4 123- 72 Kapitel 3. Erstellen der raumbezogenen Datengrundlage 1 2 3 4 2.2417999E+01 2.1438000E+01 1.8730000E+00 2.9370000E+00 3.0136000E+01 1.2678000E+01 1.3797000E+01 3.1254999E+01 EOI EOS 3.2.4. ASCII-Schnittstelle für Vektor-Geometriedaten (GENERATE) Das über Rechnerarchitekturen und Betriebssysteme hinweg am weitesten verbreitete Datenformat ist ASCII. Durch die Befehle generate bzw. ungenerate können die proprietären binären ARC/INFO-Coverages in ASCII-Daten umgewandelt werden. Es werden die vom Benutzer vergebene Kennung jedes Geometrieobjektes (ID) und die zugehörigen Koordinaten mittels ungenerate in eine ASCII-Datei geschrieben. Für Polygone ergibt sich folgende Struktur der ASCII-Datei. 4000 3479694.750000 5475343.500000 3479701.500000 5475354.000000 3479711.250000 5475336.500000 3479711.750000 5475360.000000 3479701.500000 5475354.000000 END 4001 3479616.750000 5475285.000000 3479609.250000 5475287.000000 3479610.750000 5475288.000000 3479610.250000 5475289.000000 3479614.750000 5475276.000000 3479609.250000 5475287.000000 END END Die erste Zeile beginnt mit der ID des ersten Polygons und den X- und Y-Koordinaten des dazugehörigen Labels. Danach folgen die Koordinatenpunkte des Anfangsnodes und der einzelnen Vertices (Stützpunkte) und nach dem Endnode6 ein END zur Markierung des Endes des ersten Polygons. In der ersten Zeile steht die ID des Polygons, dahinter die X- und Y-Koordianten des zugehörigen Label-Punktes. Danach folgen die Koordinatenpaare der einzelnen Vertices, bis ein END das Ende des Polygons markiert. Das erste und letzte Koordinatenpaar jedes Polygons muß übereinstimmen und definiert den entsprechenden PseudoNode. generate erwartet die Daten in einem geringfügig anderen Format. Liegen die Daten in einer anderen Anordnung vor, müssen sie zunächst in diese vorgegebene Struktur gebracht werden. Dies läßt sich durch kleine Routinen in einer beliebigen Programmiersprache (z.B. Perl 7) gut bewerkstelligen. Die entsprechenden Dateien für Linien bzw. Punkte sehen folgendermassen aus: 315 3479701.500000,5475354.000000 3479711.250000,5475336.500000 3479691.250000,5475325.000000 3479711.750000,5475360.000000 73 Kapitel 3. Erstellen der raumbezogenen Datengrundlage 3479701.500000,5475354.000000 END 316 3479606.250000,5475347.500000 3479620.000000,5475353.500000 3479610.750000,5475337.500000 3479606.250000,5475347.500000 END 317 3479609.250000,5475287.000000 3479610.750000,5475288.000000 3479610.250000,5475289.000000 3479614.000000,5475294.000000 3479614.750000,5475276.000000 3479609.250000,5475287.000000 END END Bei den Liniendateien werden die Labelpunkte aus der Polygondatei nicht benötigt. Für Punktdateien müssen nur die einzelnen Punkte mit ID und x/y-Koordinaten angegeben werden: 550 551 552 553 554 555 END END 3479609.250000 3479610.750000 3479610.250000 3479614.000000 3479614.750000 3479609.250000 5475287.000000 5475288.000000 5475289.000000 5475294.000000 5475276.000000 5475287.000000 Das Menü zu Generate ermöglicht neben dem Einlesen der entsprechenden Features über eine Datei auch die interaktive Eingabe der Koordinaten durch den Benutzer. Da letzteres meist recht fehleranfällig und umständlich ist, empfehlen wir für größere Datenbestände das Einlesen über eine zuvor erstellte ASCIIDatei. Beim interaktiven Eintragen von Werten in das Menü muß jeder Eintrag (ID, X, Y) mit Return bestätigt werden. Sind alle Punkte, die eine Linie (oder ein Coverage) definieren sollen, in der Liste Coordinates for the current Line/Polygon enthalten, wird diese Linie oder dieses Polygon mit Add Line oder Add Polygon zur Liste zu erzeugender Features im Generate-Menü hinzugefügt. Wirklich erzeugt werden diese Objekte erst, wenn man im Generate Menü OK aktiviert. 74 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Abbildung 3-7. Das Generate Menü Abbildung 3-8. Das Generate Menü zur manuellen Eingabe (Linien) Verwendet man generate an der Kommandozeile, geht man folgendermaßen vor. generate eröffnet einen interaktiven Dialog, daher sollte man sich die benötigten Informationen vorher notieren. XXX Dialog einfuegen ... 75 Kapitel 3. Erstellen der raumbezogenen Datengrundlage 3.2.5. DXF-Dateien DXF ist als Industriestandardformat, welches die meisten CAD-, Kartographie- oder Grafik-Programme erzeugen oder lesen können, von besonderer Bedeutung. Daher soll diese Variante kurz erläutert werden. DXF ermöglicht es, verschiedene Geometrien nach unterschiedlichen Themen geordnet auf unterschiedlichen Ebenen, den sogenannten Layern, abzulegen. Diese DXF-Informationsebenen können direkt in unterschiedliche ARC/INFO-Coverages umgesetzt werden. CommandTools Conversion To Arc DXF Vor dem eigentlichen Umwandeln in ARC/INFO-Coverages können die DXF-Dateien graphisch angezeigt werden. Dies geschieht mittels des Knopfes ganz rechts neben der Eingabezeile für die DXFEingabedatei auf dem DXF-Conversion-Menü. Es werden dabei grundsätzlich alle Ebenen der DXFDatei auf einmal visualisiert. Jede DXF-Informationsebene kann in der Liste Layers einzeln selektiert werden. Mit der Option ALL werden alle Objekte der ausgewählten Ebenen übernommen. Die Option Graphics übernimmt die reine Geometrieinformation, also Linien und Punkte der ausgewählten Ebene. Die Option Annotiation übernimmt eben diese (also textuelle Anmerkungen) und None ermöglicht das Löschen der Ebenenauswahl. Mit der Option Everything werden alle Informationen aller verfügbarer Ebenen importiert. Beim Einlesen werden die TICs automatisch erzeugt. Ihre X- und Y- Kordinaten entsprechen der minimalen Hülle der eingelesenen Geometriedaten. D.h. die vier Tics definieren nicht unbedingt ein Rechteck, noch müssen ihre Echtweltkoordinaten automatisch bekannt sein. Vielmehr handelt es sich um die minimalen und maximalen X- und Y-Koordinaten der DXF-Geometriedaten. Damit kann es leicht zu Problemen bei der Transformation in Realwelt-Koordinaten kommen, wenn die so erzeugten Coverages mit anderen Coverages zusammengeführt (z.B. überlagert oder aneinander gesetzt) werden müssen und die DXF-Ausgangsdaten ursprünglich noch nicht in Echtweltkoordinaten vorlagen. Man benötigt in den DXF-Originaldaten also Punkte, deren Koordinaten in der realen Welt bekannt sind. Daher ist es am sinnvollsten, immer wenn man nicht direkt in ARC/INFO digitalisiert zusätzliche Kreuzungspunkte, von denen die Koordinaten bekannt sind, mitzudigitalisieren. Diese Kreuzungspunkte können dann später unter EditTools leicht in Tics umgewandelt werden. Mit diesen ist dann eine spätere Transformation in ein gemeinsames Bezugssystem möglich. Der Einlesevorgang von DXF-Dateien kann in dem Shell-Fenster, in dem ARCTOOLS gestartet wurde, verfolgt werden. Im DXF-Conversion-Menü erfolgt keine Statusmeldung zum Umwandlungsprozeß. Für den Export von DXF Dateien aus ARC/INFO werden nur der Name des zu erstellenden Datensatzes Output DXF File und die ARC/INFO-Coverages, die als Datenquelle dienen sollen, benötigt. Weiterhin kann die Anzahl der Nachkommastellen gewählt werden sowie angegeben werden, ob die DXF-Datei binär oder im ASCII-Format gespeichert werden soll. 76 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Abbildung 3-9. Konvertierung von DXF nach ARC/INFO CommandTools Conversion To Arc DXF to Arc Bei Verwendung der Kommandozeile prüft man zunächst mit dxfinfo die vorhandenen Ebenen und importiert anschließend mit dxfarc über einen interaktiven Dialog die benötigten Ebenen. Auch hier gilt wieder: Informationen zu einzelnen Ebenen vorher notieren. XXX Dialog einfuegen ... 3.2.6. Weitere Schnittstellen Einige weitere Schnittstellen gehören nicht zum Standardlieferumfang, können jedoch käuflich erworben werden. Dies betrifft insbesondere einige für den deutschen Markt relevanten Formate, die im im folgenden kurz angesprochen werden: 3.2.6.1. ATKIS / EDBS Die Landesvermessungsämter bieten ihre digitalen Koordinatengrundlagen heute im Wesentlichen als ATKIS-Daten im EDBS-Format an. Diese Daten können mit dem ATKIS-Konverter AvAtkis bzw. AvAtkis Professional der Firma GDV8 in Shapefiles konvertiert werden. Für ARC/INFO selbst existiert die sogenannte ArcEDBS Schnittstelle. Mit dieser können EDBS-Daten nicht nur direkt (ohne den Umweg über Shape-Files) eingelesen, sondern auch exportiert werden. 3.2.6.2. SICAD In Deutschland hat auch das aus dem CAD-Bereich stammende GIS SICAD von Siemens eine gewisse Verbreitung. Zum Einlesen der sogenannten SQD-Dateien kann eine eigene Schnittstelle erworben werden. 77 Kapitel 3. Erstellen der raumbezogenen Datengrundlage 3.2.6.3. Export von Vektorkoordinaten Für die meisten Geodatenformate, die beim Einlesen unterstützt werden, existieren auch Exportfilter. 3.2.6.4. Import und Export von Rasterdaten Die in Kapitel 3 angeführten Formate können eingelesen werden. Diese Rasterbilder können entweder einfach als Hintergrundbild bei der Erstellung von Views hinterlegt werden, oder aber in ein Grid umgewandelt werden, womit ihnen dann die zahlreichen Analysemöglichkeiten (Kartenalgebra) des GRID-Moduls einschließlich der Sachdatenanbindung offenstehen. 3.2.6.4.1. import 3.2.6.4.2. generate 3.2.6.4.3. shape/dxf 3.2.6.5. Fehlerkorrektur Pseudo Nodes werden durch eine Raute dargestellt. Sie repräsentieren Nodes von in sich geschlossenen Arcs (Inseln) oder entstehen, wenn nur zwei Arcs miteinander verbunden werden. Abbildung 3-10. Arcs mit Dangling Nodes 3.2.6.5.1. Nodes 78 Kapitel 3. Erstellen der raumbezogenen Datengrundlage 3.2.6.5.1.1. Dangling Nodes zeigen mögliche Digitalisierfehler wie zu kurz oder zu lang geratene Abschnitte bei Polygonen an. Sie werden durch Quadrate gekennzeichnet. Natürlich kann solch ein sogenannter undershoot (Arc, dessen Endpunkt nicht mit weiterem Arc verbunden ist, sondern kurz davor endet) oder overshoot (Arc, der einen anderen Arc schneidet und darüber hinaus weiter verläuft) auch Absicht sein, z.B. bei der Digitalisierung von Sackgassen. Dangling Nodes ... sind Nodes, die einen Arc nicht mit weiteren Arcs verbinden. Dies kann passieren, wenn beim Digitalisieren ein Arc zu weit bzw. zu kurz an einen Arc herangezogen wurde (außerhalb der snapdistance). In bestimmten Fällen können sie auch beabsichtigt sein, wenn sie nicht Teil eines Polygons sind, sondern z.B. Sackgassen. 3.2.6.5.1.2. Pseudo Nodes Pseudonodes sind Nodes, die eigentlich nicht erforderlich wären (weil von ihnen genau zwei Arcs ausgehen). Sie sind in der Regel unproblematisch und manchmal nötig (z.B. für lange Arcs mit sehr vielen Vertices, da ARC/INFO Arcs mit über 499 Vertices splittet). 3.2.6.5.2. Arcs 3.2.6.5.2.1. Under/Overshoots Undershoots und Overshoots als Spezialfälle von Arcs and Nodes wurden im Kapitel 3 schon erwähnt. Diese Digitalisierfehler können durch die hier angegebenen Funktionen bereinigt werden. Hierbei ist jedoch große Vorsicht geboten. Man muß beachten, welche Arcs (oder anderen Features) tatsächlich ausgewählt sind und wie die Toleranzen eingestellt sind, damit nicht zu viel oder zu wenig „bereinigt“ wird (zur Einstellung der Toleranzen vgl. unten). Fehlende Nodes bei Über-Kreuz-Digitalisierung von Arcs können eingesetzt werden (3. Knopf). Dies wird automatisch mit dem Topologiebefehl clean bewerkstelligt. Generell gilt es bei clean erst die eingestellten Toleranzen zu überprüfen, damit keine ungewollten Änderungen am Coverage durch das Aufeinanderschnappen von Features entstehen (s.u.). Bei wenigen Fehlern ist es vielleicht sicherer, diese nacheinander selbst zu bereinigen, statt eine automatische Korrektur vorzunehmen. Vgl. hierzu auch Abschnitt 4.2.11 zu dissolve und Abschnitt 4.2.12 zu eliminate unterARC. 3.2.6.5.2.2. Überschneidung ohne Node Überschneidungen lassen sich vermeiden, wenn zu Beginn der Editiersitzung intersectarcs all gewählt wird. Nachträglich ist dies nur mit einem Trick möglich: Zunächst müssen alle betroffenen Arcs mit select ausgewählt werden. Nun muß man nur die ausgewählten Arcs um den Abstand 0 verschieben (d.h. gar nicht), dann wird die geänderte Voreinstellung auch nachträglich auf die ausgewählten Elemente angewandt. ! Achtung! 79 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Je nach Einstellung der Toleranzen für arcsnap, nodesnap etc. kann das ungewollte Folgen für Ihre Daten haben. Daher sollten Sie zunächst mit einer Kopie arbeiten und das Ergebnis mit anderer Farbe dem Original hinterlegen (z.B. mit backcoverage und backenvironment. Falls dann an vielen Stellen die neue Version „hervorblitzt“, wurden Arcs oder Nodes verschoben oder entfernt (weedtolerance). Arc: arcedit Arcedit: ec coverage Arcedit: ef arc Arcedit: intersectarcs all Arcedit: sel {many | all} Arcedit: move parallel 0 Arcedit: status /* zeigt momentan eingestellte Toleranzen an 3.2.6.5.2.3. Sliver-Polygone Sogenannte Sliver-Polygone entstehen, wenn z.B. versehentlich mehrere Linien übereinander digitalisiert werden und diese (zwangsläufig) nicht exakt übereinanderliegen. Der Raum zwischen diesen beiden Linien wird nach build bzw. clean ebenfalls zu einem Polygon. Unter ARC können diese Polygone mit dem Befehl eliminate in einen Arc aufgelöst werden. Dazu sollte zunächst geklärt werden, wie groß diese Polygone sind und ob es weitere gewollte Polygone in dieser Größe gibt. Trifft dies nicht zu, erzeugt man mit eliminate ein neues Coverage: Arc: usage eliminate Usage: ELIMINATE <in_cover> <out_cover> {NOKEEPEDGE | KEEPEDGE} {POLY | LINE} {selection_file} {BORDER | AREA} Ein Coverage namens sloppycov wurde bereits mit Labels für die verschiedenen Polygone versehen. Die Attributtabelle sieht folgendermaßen aus: Arc: list sloppycov.pat Record 1 2 3 4 5 6 7 8 9 AREA -40.89763 3.83429 3.02517 2.77270 4.60107 0.00233 4.69292 2.16539 0.00203 PERIMETER SLOPPYCOV# SLOPPYCOV-ID 30.24617 1 0 10.25092 2 8 8.26677 3 10 7.09402 4 6 11.15897 5 25 2.22422 6 0 11.46455 7 18 7.02955 8 16 1.05332 9 0 Wir wissen zugleich, daß keines der Polygone, die enthalten sein sollen die ID 0 besitzt. In diesem Fall ist das Auswahlkriterium für die Sliver-Polygone. einfach: Arc: eliminate sloppycov cleancov 80 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Eliminating polygons in sloppycov to create cleancov Enter a logical expression. (Enter a blank line when finished) >: res sloppycov-ID = 0 >: RETURN Do you wish to re-enter expression (Y/N)? n Do you wish to enter another expression (Y/N)? n 3 features out of 9 selected. Number of Polygons (Input,Output) = Number of Arcs (Input,Output) = Creating cleancov.PAT... 9 53 6 47 Muß nach anderen Kriterien ausgewählt werden, so kann die Auswahl wie auch sonst in Arc/Info durch andere select-Bedingungen erfolgen (resel, asel, usw.). Unter ArcEdit kann man dann das Ergebnis betrachten und die nun überflüssigen Nodes entfernen. Arcedit: ef arc 47 element(s) for edit feature ARC Coverage has no COGO attributes Arcedit: sel all 47 element(s) now selected Arcedit: unsplit none 7 pseudo node(s) removed 3.2.6.5.3. Labels 3.2.6.5.3.1. Fehler in Polygonlabels Arc: labelerrors listet die Labelfehler auf (Polygonnummer und Anzahl der Labels wenn sie ungleich 1 sind). Das Universalpolygon (Nr. 1) hat kein Label, dieser Fehler kann also ignoriert werden. Die so gefundenen Labelfehler in Polygonen können dann in Arcedit ausgewählt werden. 3.2.6.6. Fehlende Labels Fehlende Labels können in ARCEDIT digitalisiert werden. Wenn z.B. von labelerrors in ARC 2 als Fehler ausgegeben hat, kann man dieses fehlende Label folgendermaßen ergänzen: Arcedit: Arcedit: Arcedit: Arcedit: ef poly sel gomera# = 2 /* Fehlerhaftes Polygon ef label add Dabei sollte man darauf achten, keine doppelten Labels zu vergeben: 81 Kapitel 3. Erstellen der raumbezogenen Datengrundlage 3.2.6.7. Doppelte Labels Doppelte Labels müssen ausgewählt und gelöscht werden Arcedit: ef label Arcedit: sel Arcedit: delete 3.2.6.8. Topologie erzeugen Topologische Fehler erkennen und beseitigen Nicht alle scheinbaren topologischen Fehler sind auch wirklich solche. So können z.B. überstehende Arcs statt nichtgeschlossenen Polygonen auch nur Sackgassen o. ä. darstellen. Sowohl Build als auch Clean generieren die Topologie und erzeugen dabei die jeweiligen Feature Attribute Tables, setzen optional Label (das sind die Punkte, an denen z.B. die ID graphisch „aufgehängt“ wird) und berechnen für die Polygone Umfang und Flächeninhalt (für Linien die Länge). Der Unterschied zwischen den beiden Befehlen besteht darin, daß Build ein absolut fehlerfreies Coverage voraussetzt. Findet es z.B. sich überkreuzende Arcs ohne Node am Schnittpunkt, bricht build mit einer entsprechenden Fehlermeldung ab. clean hingegen nimmt einige Korrekturen selbständig und im Rahmen der gesetzten Fehlertoleranzen (Dangle Length, Fuzzy Tolerance etc.) vor. Sind die eingestellten Toleranzen jedoch zu groß, können ungewollte Verzerrungen und Modifikationen des Coverages entstehen. Da in jedem Fall das Resultat sorgfältig auf Fehler untersucht werden sollte, ist das eigenhändige „bewußte“ Editieren des Ausgangscoverages mit anschließendem „sicherem“ build vorzuziehen. Hilfreich ist die bereits erläuterte Möglichkeit, Coverages als Hintergrundcoverages in einer anderen Farbe einzublenden. Damit treten eventuelle Veränderungen zwischen verschiedenen Bearbeitungsständen deutlicher hervor. Das Menü zur Erzeugung der Topologie findet sich unter CommandTools: CommandTools Edit Topology Eine zweite Möglichkeit befindet sich direkt in EditTools: EditTools Edit Build Bei clean können drei Optionen angegeben werden: Ausgabecoverage, Dangle Length und Fuzzy Tolerance. Die Dangle Length gibt an, bis zu welcher Größe überstehende Arcs (mit Dangling Nodes) entfernt werden. Wird ein Ausgabecoverage angegeben, so wird das bereinigte Coverage unter einem neuen Namen gespeichert, ansonsten wird das aktive Ursprungscoverage entsprechend geändert. Clean führt immer ein Intersect durch, d.h. das automatische Setzen von Nodes in die Schnittpunkte sich überkreuzender Arcs. Ist dies nicht gewünscht - z.B. bei Brücken - muß build verwendet werden. Bei build kann das Coverage nicht umbenannt werden, sondern es wird ein entsprechender Feature Attribute Table erzeugt oder ein bestehender ersetzt. Das Verändern der IDs oder weiterer Variablen für jedes Feature erfolgt im Table Editor unter Edit, wie im vorherigen Kapitel beschrieben. Liegt schon eine Polygonstruktur vor und soll auf diese Weise auf die PAT zugegriffen werden, ist Label als das zugehörige Edit Feature zu wählen: 82 Kapitel 3. Erstellen der raumbezogenen Datengrundlage 3.2.6.9. Koordinatentransformation / Projektion Bei der Digitalisierung mit einem Digitalisiertablett überträgt dieses Koordinaten an den Computer, die auf dessen eigenem internen Koordinatensystem beruhen. Sollen Abfragen durchgeführt werden, die räumliche Messungen beinhalten, müssen diese in ein geographisches Koordinatensystem umgewandelt werden. Wie schon erwähnt, dienen hierzu Tics als Referenzpunkte. Für diese müssen die Koordinaten im geographischen Koordinatensystem gefunden und angegeben werden. Die Koordinaten der übrigen Features eines Coverages werden auf diesen Angaben beruhend umgerechnet. Zusätzlich muß für eine exakte Lagegenauigkeit der Koordinaten eine Projektion in die entsprechende Kartenprojektion ausgeführt werden. Da es sich beim Digitalisiertablett jedoch um eine ebene Fläche handelt und die Grundlage für Kartenblätter des Gauß-Krüger Systems ebenfalls ebene Flächen sind, ist in diesem speziellen Fall nur eine Transformation des Koordinatensystems, aber keine Projektionsänderung notwendig. Es steht eine große Anzahl an Projektionen zur Verfügung. Die Projektion eines Coverages wird in der Datei PRJ gespeichert. 3.2.6.9.1. Transformation in das Gauss-Krüger System transformiert. * TODO LN: was stand hier??? Grundsätzlich gibt es mehrere Möglichkeiten, ein Coverage nach der Digitalisierung mit Digitizer-Koordinaten in das Gauss-Krüger-System mit den Echtwelt-Koordinatenwerten zu transformieren. So könnte man schon beim Digitalisiervorgang selbst ein entsprechendes Referenzcoverage mit den korrekten Koordinaten für die Tics verwenden. Gehen wir jedoch davon aus, daß die Digitalisierung noch ohne Echtweltkoordinaten durchgeführt wurde. Zunächst muß ein Coverage existieren, in dem nur die TICs stehen. Dieses wollen wir TICCOV nennen. Dieses Master-TICCOV muß entsprechend editiert werden. D.h. den X- und Y-Koordinaten der ursprünglichen Tics werden die entsprechenden X- und Y-Werte im Gauss-KrügerSystem übergeben. Dies geschieht, indem ARCEDIT aufgerufen wird. Das TICCOV wird als Coverage geöffnet (entweder gleich mit der Angabe Edit Feature: TIC, oder mit Change Edit Feature (im Edit-Pulldownmenü). Dann wird im Edit Tics Menü der Knopf Table Editor gedrückt. Wenn dieser erscheint, müssen die Tics zum Editieren gewählt werden (Feature Selection-Fenster). Dann erfolgt die Aktivierung von Edit im Table Editor: Es öffnet sich ein Fenster, das die Tics mit ihren IDs und Koordinatenwerten enthält. Letztere können über die Tastatur geändert werden. Die Arbeit mit dem Table Editor wurde in Kapitel 3genauer erläutert. ! Achtung! Die Reihenfolge der Tics muß mit derjenigen in den später zu transformierenden Coverages übereinstimmen! Das TICCOV muß am Ende gespeichert werden. EditTools File Save (as) Damit wurde ein TICCOV erzeugt, das für eine Transformation benutzt werden kann. Das TransformFenster befindet sich unter CommandTools. (CommandTools kann von EditTools aus über das ToolsPulldown-Menü, Auswahl: Command Tools aufgerufen werden). 83 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Abbildung 3-11. Das Transform Coordinates Menü CommandTools Edit Coordinates Transform In die erste Zeile muß das Coverage, das transformiert werden soll, eingetragen werden (ein Druck auf die rechte Maustaste öffnet einen Dateiauswahldialog). In die zweite Reihe kommt das oben erzeugte TICCOV (auf demselben Weg). ! Wichtig Das Resultats-Coverage erhält den Namen des hier angegebenen Coverages! Dies bedeutet, daß das TICCOV vorher umbenannt werden muß. Sonst werden alle Informationen aus dem zu transformierenden Coverage dort hineingeschrieben und es ist nicht mehr als Referenzcoverage für die Transformation eines weiteren Coverages geeignet. Sollen nur die Tics und Projektionsinformationen eines Coverages übernommen werden, kann man dies im Kommando-Fenster durch die Eingabe von: create vorlagecoverage nurtics erreichen. 3.2.7. Andere Projektionen In vielen Projekten ist das Arbeiten mit Daten aus unterschiedlichen Quellen und damit unterschiedlichen Koordinatensystemen und Kartennetzentwürfen notwendig. Um diese Daten gemeinsam analysieren zu können, müssen sie in ein einheitliches Bezugssystem überführt werden. Die reine Transformation bei affinen Netzentwürfen wurde oben erläutert. Bei diesen wird vorausgesetzt, daß ein rechtwinkliges Koordinatensystem verwendet wird. Bei kleinmaßstäbigen Karten, bei denen der Netzentwurf beachtet werden muß, bedarf es einer zusätzlichen Projektion der Tics und weiterer vorbereitender Arbeiten, wie dem Ausmessen der Kartenvorlage und Updaten der Tics. Bei der Projektion können mitgelieferte Kartenprojektionen zum Einsatz kommen, es ist jedoch auch möglich, eigene Projektionen mittels verschiedener Parameter zu definieren. 9 Erst nach all diesen Schritten kann das projezierte Coverage transformiert werden. Im nachfolgenden Beispiel sind als Datengrundlage Daten des Digital Chart of the World (DCW) vorhanden. Deren Inhalt soll nun mit einer älteren10 Karte im gleichen Maßtstab verglichen werden. Dazu muß zunächst ermittelt werden, welche Projektionen den beiden Quellen zugrunde liegen. Für den DCW konsultiert man hierzu das mitgelieferte Data Dictionary. Auf der Papierkarte sind die erforderlichen Informationen direkt vermerkt 11. 84 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Tabelle 3-3. DCW layers Publikationsdatum: 1993 Quelle: Operational Navigational Charts redaktioneller Stand: ? Maßstab: 1:1.000.000 Projektion: Geographisch Einheiten: Dezimalgrad Datum: WGS84 Tabelle 3-4. WORLD 1: 1.000.000, Edition 3-GSGS Publikationsdatum: 1956 Quelle: Ordnance Survey Quarter Inch to One Mile redaktioneller Stand: 1946-48 (with corrections) Projektion: Transverse Mercator Einheiten: Meter Datum: OGB_B (Ordnance Survey of Great Britain 1936) Spheroid: Airy scale factor at central meridian 1.00000000 longitude of central meridian 2 0 0.000 latitude of origin 49 0 0.000 false easting (meters) 400000.00000 false northing (meters) -100000.00000 Mit diesen Informationen kann man nun in ARC/INFO die Projektion der Daten in das neue System vornehmen: projectcompare NONE PARTIAL FULL projectdefine interaktive Eingabe der Projektionsinformationen eines Coverage/Grid/TIN project Umwandlung eines Coverage etc. in anderes Koordinatensystem projectcopy Die Projektionsinformation eines Coverage etc. wird in ein anderes Coverage etc. kopiert (und ggfs. bisher existierende Datei .prj überschrieben) Eine Projektionsdatei für das obige Beispiel sähe so aus: INPUT PROJECTION GEOGRAPHIC UNITS DD DATUM EUR_G PARAMETERS OUTPUT PROJECTION TRANSVERSE UNITS METERS DATUM OGB_B THREE PARAMETERS 85 Kapitel 3. Erstellen der raumbezogenen Datengrundlage 1.00000 2 0 0.000 49 0 0.000 400000 -100000 END * TODO LN: ergaenzen? Beispiel: Mit dieser soll ein vorhandenes Coverage projeziert werden. Der besseren Übersicht wegen haben wir vorher ein neues Workspace angelegt, das die Daten in der neuen Projektion enthalten soll. project cover clline eng_pro/clline ponetpro.prj * TODO AZ: Prj-Datei? Abb? 3.2.8. Sachdaten Wie wir im Kapitel Kapitel 1 gesehen haben, ist die Kopplung von räumlichen Geometrien und Attributdaten unterschiedlichster Art eines der Hauptcharakteristika von Geoinformationssystemen. Die Verknüpfung beider Welten geschieht in ARC/INFO über sogenannte Feature Attribute Tables. Es wurde angedeutet, daß hier neben einer systeminternen ID, die durch das #-Zeichen gekennzeichnet wird, eine vom Benutzer zu vergebende Kennungsnummer - die sogenannte Cover-ID - für jedes Raumobjekt vergeben werden kann. Es handelt sich bei dieser ID jedoch nicht um einen zwingendermaßen eindeutigen Schlüssel im Sinne relationaler Datenbanken, d.h. Duplikate sind möglich. Es ist jedoch sehr zweckmäßig jedem Raumobjekt auch benutzerdefiniert eine eindeutige Nummer zuzuordnen, um eine individuelle Behandlung zu ermöglichen. Das Aggregieren der Objekte zu Gruppen von Raumobjekten (Features) ist immer durch die Verwendung weiterer Variablen möglich. Beim Gebrauch der Hilfe oder Handbücher muß beachtet werden, daß für INFO-Datenbanken und relationale Datenbanken im Englischen manchmal eine unterschiedliche Terminologie Verwendung findet: In INFO-Dateien entsprechen die Records den Rows in relationalen Datenbanken. Die Columns in letzteren stimmen wiederum mit den Items in INFO-Dateien überein. Gemeint sind jeweils Reihen und Spalten, d.h. Tupel (also Beobachtungen) und Variablen (vgl. Abbildung 3-12. Abbildung 3-12. Terminologie für Datenbanken record row attribute column item tupel Es existieren zwei Möglichkeiten, Sachdaten mit Geometrien zu verknüpfen. Die erste wurde schon kurz angesprochen - die jeweiligen Feature Attribute Tables (FAT, bei Punkten oder Polygonen also die PAT, bei Arcs die AAT) werden einfach um weitere Items, also Spalten oder Variablen erweitert. Diese einfache und schnell realisierbare Variante besitzt aber auch Nachteile, nämlich fehlende Flexibilität und die Vermengung von Benutzerdaten mit Systemdaten. Außerdem ist keine Normalisierung möglich. Die zweite Möglichkeit besteht im Verknüpfen (Join/Relate) von anderen Tabellen - einerseits Info-Tables, anderer- 86 Kapitel 3. Erstellen der raumbezogenen Datengrundlage seits externer Datenbanktabellen - mit den Feature Attribute Tabellen über ein geeignetes, d.h. in beiden Tabellen vorkommendes Attribut. Beide Varianten werden hier vorgestellt. 3.2.9. Die INFO-Datenbank Die Datenbank INFO hat ihre Ursprünge in den 70er Jahren und ist für heutige Verhältnisse eine etwas gewöhnungsbedürftige Datenbank. Daher sind in ARCTOOLS einige AML-Makros integriert, die den Umgang mit den in INFO gespeicherten Sachdaten vereinfachen sollen. 12 Zunächst gibt es jeweils die Auswahlmöglichkeit Manage Info-Files in den Arc Pulldownmenüs zur konsistenten Verwaltung derselben. Dies ermöglicht wie bei Coverages oder den anderen Datentypen von ARC/INFO das konsistente Kopieren, Umbenennen, Löschen etc. von Info-Tabellen. Dazu gibt Abbildung XXX einen Überblick. Weiterhin sind in CommandTools einige der wichtigsten Befehle verfügbar. 3.2.9.1. Hinzufügen von Attributen Mit AddItem können neue Variablen definiert werden. Wie erwähnt, müssen neue Variablen jeweils hinter der Variablen Cover-ID stehen. Es existieren verschiedene Datentypen, die neben dem Namen der zu erstellenden Variablen (und natürlich der Ursprungs- und der Zieldatei) angegeben werden müssen. Daran gekoppelt sind Angaben über Länge des Speicherplatzes und der Darstellung sowie gegebenenfalls Anzahl der Dezimalstellen. Weitere Angaben zu den Datentypen folgen weiter unten. Nicht mehr benötigte Variablen werden durch DropItem aus der Tabelle gelöscht. Damit wird die gesamte Spalte gelöscht. Der Name der Datei wird standardmäßig beibehalten, es kann optional jedoch auch ein neuer Name angegeben werden, damit die Daten nicht völlig verloren sind. Abbildung 3-13. Das Add Items Menü CommandTools Edit Info Tables Add Item 87 Kapitel 3. Erstellen der raumbezogenen Datengrundlage CommandTools Edit Info Tables Drop Item 3.2.9.2. Erstellen eigener INFO-Tabellen Oftmals ist es notwendig, in ARC/INFO eigene Tabellen zu erzeugen, z.B. um darin Sachdaten abzulegen. Aber auch für Lookup-Tables oder Symbol-Tabellen bei der Visualisierung werdensogenannte INFOTables verwendet. Es gibt mehrere Wege, zu dem Menü zu gelangen, das die Definition einer INFOTabelle ermöglicht. Insbesondere findet sich diese Möglichkeit unter Command Tools: CommandTools Edit Info Tables Define Table Hier muß der Name der zu erstellenden Tabelle eingegeben werden. Danach kann nacheinander der Typ mehrerer Attribute festgelegt werden. Dazu sind jeweils folgende Angaben notwendig: Item name Item type Name des Attributes Datentyp des Attributes Item width Decimals Breite der für die Variable vorgesehenen Spalte Anzahl der Dezimalstellen (falls möglich). Folgende Datentypen stehen zur Auswahl: B Binary Integer (2 oder 4 Byte lange) ganze Zahl F I Floating Number (2 oder 4 Byte lange Dezimalzahl Integer Ganzzahl mit 1 Byte pro Stelle. Maximal 16 Stellen B C Number Dezimalzahl mit 1 Byte pro Stelle. Maximal 16 Stellen D Date Datum: TT/M/JJ oder TT/MM/JJJJ. Intern: JJJJ/MM/TT. Character Zeichen (z.B. Buchstaben) bis max. 320 Zeichen 3.2.9.3. Einlesen von ASCII-Tabellen In den CommandTools gibt es außerdem die direkte Möglichkeit, ASCII-Dateien in INFO-Tabellen einzulesen. Dazu muß zunächst über Define die Struktur einer INFO-Tabelle definiert werden. Dies wurde im vorangehenden Abschnitt angesprochen. Wichtig ist, daß die ASCII-Datei eine mit der Zieldatei verträgliche Struktur aufweist (richtige Feldtypen und -längen). Mit init erstellt man eine neue INFO-Datei, mit append hängt man Daten an eine bestehende an. 13 88 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Abbildung 3-14. Das ASCII Table to INFO Menü CommandTools Edit Info Tables Add from ASCII 3.2.9.4. Bearbeiten von INFO-Dateien Um Attribute in einer INFO Tabelle zu bearbeiten, muß man zunächst im Edit Info Table Menü im ersten Feld eine INFO-Datei angegeben werden (ein Klick mit der rechten Maustaste im Info-File-Feld öffnet einen Dateiauswahldialog). Es wird die Liste der in dieser INFO-Datei verfügbaren Variablen in der Item List angezeigt. Mittels der Pfeile können nun die Variablen ausgewählt werden, die editiert werden sollen, indem sie in die zweite Liste geschoben werden. Wird diese Auswahl mit Apply bestätigt, erscheint ein Table-Editor Menü, wie es im Kapitel 3 abgebildet ist. Edit CommandTools Info Tables Edit Table Die Funktionalität und Handhabung entspricht dem dort Beschriebenen. Zusätzlich können mit dem Menü Dropfeatures für ein Coverage die zu einem bestimmten Feature-Typ gehörigen Attribute gelöscht werden. CommandTools Edit Info Tables Drop Features 3.2.9.5. Erstellen von Indizes Ein Index auf ein Attribut ermöglicht einen schnelleren Zugriff auf die Attributdaten, wenn nach den Werten dieser Variablen gesucht wird. Damit ist ein Index vor allem ein Mittel zur Steigerung der Performance bei Anfragen an das System. Indizes sind besonders für solche Variablen sinnvoll, über die häufig Suchanfragen durchgeführt werden. Wenn z.B. oft anhand der Werte der Variablen Flußtyp gesucht wird, sollte diese Variable einen Index erhalten. Bei Änderung der Werte muß auch der Index neu aufgebaut werden. 3.2.9.6. Berechnung neuer Variablen Neue Variablen können auch durch Berechnung aus existierenden Attributen und Konstanten gewonnen werden. Das Item Calculator Menü ermöglicht einfache Berechnungen, ohne daß ein Export in andere Programme wie z.B. eine Tabellenkalkulation oder Statistikprogramme notwendig wird. 89 Kapitel 3. Erstellen der raumbezogenen Datengrundlage 3.2.9.7. Verknüpfen mehrerer Tabellen Es muß bei der Verknüpfung zwischen zwei Tabellen zwischen einem Join (physische Speicherung) und einem Relate (temporäre, logische Verknüpfung) unterschieden werden. Ein Join fügt zwei Tabellen dauerhaft und physisch in eine einzige Tabelle zusammen, während Relates nur logische Verknüpfungen zwischen zwei Tabellen darstellen, die beide an ihrem Ort verbleiben, jetzt aber nach außen wie eine Tabelle erscheinen. Ein Relate ist damit flexibler und dynamischer und daher für häufig sich ändernde Daten und Tabellen in externen Datenbank-Systemen geeignet. Bei jedem Connect zu der externen Datenbank werden die Tabellen neu verknüpft. Dadurch ist die virtuelle Resultattabelle immer auf dem neuesten Stand, auch wenn sich die Ausprägungen in einer Tabelle verändert haben. Allerdings sind Relates etwas weniger performant, da die Tabellen bei jedem Starten des Relate neu verknüpft werden müssen. Zwei INFO-Dateien können durch Join in eine einzige Datei zusammengefügt werden. Standardmäßig enthält die Resultatdatei denselben Namen wie die Input-Datei. Dies kann selbstverständlich geändert werden. Es muß ein sogenanntes Relate Item gewählt werden, über das verknüpft wird. Dieses muß in beiden Dateien identisch existieren. In der Regel werden dies ein FAT und eine Attributdatei mit weiteren Variablen sein. Schließlich wird noch das Attribut angegeben, hinter dem die neuen Items angefügt werden sollen. Bei Feature Attribute Tables darf generell frühestens hinter der Cover-ID des Eingabe-Coverages ein neues Feld eingefügt werden. Die möglichen Argumente bei einer zeilenorientierten Eingabe lauten: in_info_file Tabelle, an die die neuen Variablen angehängt werden join_info_file out_info_file Tabelle, die an die erste angehängt wird Ergebnistabelle relate_item start_item Schlüsselfeld, das in beiden Tabellen identisch ist Attribut, hinter dem die neuen Sachdaten eingefügt werden. Es existieren drei Optionen für die Verknüpfung. Linear Ordered Link Beide Tabellen können unsortiert sein. Für jeden Item-Wert der ersten Tabelle wird jede Zeile der zweiten Tabelle durchsucht, bis der entsprechende Eintrag gefunden ist. Diese Option ist relativ langsam. Das Join_info_file muß aufsteigend nach dem Relate_Item sortiert sein. Beide Tabellen können unsortiert sein. Das korrespondierende Feld des Joininfo_file ist die Recordnummer. Damit ist keine Suche notwendig, womit diese Option am schnellsten ist. 3.2.10. Anbindung externer Sachdaten ARC/INFO kann mit drei Datenbankstrukturen umgehen: • Feature Attribute Tables • sonstige INFO Datenfiles 90 Kapitel 3. Erstellen der raumbezogenen Datengrundlage • Relationale Datenbank-Managementsysteme (RDBMS) ARC/INFO verfügt standardmäßig über Schnittstellen zu verschiedenen RDBMS. Dazu zählen Oracle, Ingres, Informix, Sybase, Rdb. Die relationalen Datenbanken sind als eigenständige Produkte im Gegensatz zu den beiden erstgenannten nicht direkt in ARC/INFO integriert, können aber mit dem DATABASE INTEGRATOR eingebunden werden (vgl. Online-Hilfe). 3.2.11. Anbindung an eine Oracle Datenbank Es folgen einige Informationen zur Verwendung von Oracle mit ARC/INFO: Oracle ist ein weit verbreitetes kommerzielles relationales Datenbank-Management-System (RDBMS), das für verschiedene Plattformen verfügbar ist. Wenn eine Verbindung zu Oracle aufgebaut werden soll, müssen zunächst die erforderlichen Umgebungsvariablen gesetzt werden. Dies ist von der lokalen Installation abhängig und wird durch entsprechende Skripte erreicht. Nun kann man ein Relate (unter Manage Relates) zu Oracle erzeugen, indem man die Datenbank mittels DBMS Connect anspricht und sich bei ihr als Benutzer anmeldet. Manage Relates Relate DBMSConnect Um eine Verknüpfung einer Tabelle in Oracle mit einer Tabelle in INFO zu erzeugen, muß in Oracle eine Tabelle mit entsprechender Struktur exisitieren, d.h. eine Tabelle mit einer Variablen mit entsprechendem Typ zum Erzeugen eines Joins. Eine erste Möglichkeit, in Oracle eine Tabelle zu erzeugen, besteht darin, nach der Initialisierung der Oracle-Umgebung in einem Terminal direkt das zu Oracle gehörende Programm sqlplus zu starten und dort die entsprechenden Tabellen mittels SQL-Statements anzulegen. Sqlplus ist die zeilenorientierte Standard-Benutzerschnittstelle zu Oracle. Es folgt ein kleines Beispiel in SQL (Stuctured Query Language14) zum Erzeugen einer Tabelle mit dem Namen MYTABLE und den Variablen SCHLUESSELID, EINEVARIABLE und PFLICHTEINGABE in Oracle: CREATE TABLE MYTABLE SCHLUESSELID INTEGER NOT NULL, EINEVARIABLE CHAR(40), PFLICHTEINGABE INTEGER NOT NULL; Mittels SQL könnten dann die Daten mit folgender beispielhafter Anweisung in sqlplus eingegeben werden. INSERT INTO MYTABLE VALUES (1, ’Buchstaben’, 200); Wie man an den folgenden Menüeinträgen von CommandTools sieht, ist in der aktuellen Version von ARC/INFO auch mittels ARCTOOLS das Absetzen von SQL-Statements zu einer verknüpften Datenbank, bzw. das Anzeigen von dort abgelegten Tabellen oder Variablen, etc. möglich. * TODO LN: Abbildung Menueeintraege 91 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Es können INFO-Tabellen direkt in Tabellen des angebundenen DBMS umgewandelt, d.h. in das DBMS eingelesen werden. Dies funktioniert auch umgekehrt, wobei die Variablentypen in die in INFO verfügbaren Typdefinitionen umgesetzt werden. 3.2.11.1. DBase-Dateien (DBF) Im PC-Bereich liegen Daten oft im dBase-Format (*.DBF) vor, bzw. können leicht in dieses konvertiert werden, da sehr viele PC-Datenbanken oder Tabellenkalkulationen dBase-Dateien verarbeiten können. Damit steht neben ASCII eine recht universell einsetzbare Schnittstelle zu Sachdaten aus der PC-Welt zur Verfügung. Insbesondere verwendet ARCVIEW für Windows dBase als Tabellenformat. Die Befehle zum Im- bzw. Export von dBase-Tabellen in ARC/INFO sind nicht in ARCTOOLS integriert, sondern müssen in der ARC-Kommandozeile aufgerufen werden. * stimmt das noch fuer V 8? 3.2.11.1.1. Import von dbase-Tabellen mit dbaseinfo Importiert dBase-Tabellen in das Datenbanksystem INFO. Arc: usage dbaseinfo DBASEINFO <dbase_file><info_file> {DEFAULT | DEFINE} 3.2.11.1.2. Export von dbase-Tabellen mit infodbase Exportiert INFO-Tabellen aus ARC/INFO als dBase-Tabelle Arc: usage infodbase INFODBASE <info_file><dbase_file> {DEFAULT | DEFINE} Da INFO weitergehende Definitionen von Spalten unterstützt als dBase, kann es hier zu Veränderungen in der Datendefinition kommen. So werden Spaltennamen auf max. 10 Zeichen gekürzt oder Leerzeichen durch „_“ ersetzt. Falls die ersten 10 Zeichen einer Variablen nicht eindeutig sind, müssen die Namen entsprechend abgeändert werden. Sollen Daten an ARCVIEW weitergegeben werden, sollte man dies also schon bei der Definition der Attributtabellen berücksichtigen. 3.2.11.2. INFO 92 Kapitel 3. Erstellen der raumbezogenen Datengrundlage 3.2.11.3. Tables 3.2.11.4. externe DB 3.2.12. Speichern einer Sitzung als Makro Die gesamte Edit-Sitzung kann auch als AML-Makro abgespeichert werden. Dazu gibt es einen MakroRecorder, der die einzelnen durchgeführten Befehle mitprotokolliert und im Klartext einschließlich ihrer Optionen in einer ASCII-Text-Datei speichert. Dies ermöglicht die bequeme Automatisierung von Standardaufgaben, indem wiederkehrende Befehlsfolgen als Makro ausgeführt werden können. Die Datei kann in einem normalen Texteditor bearbeitet werden, um das Makro allgemein nutzbar zu machen oder an spezielle Bedürfnisse anzupassen. Es können z.B. Variablen für Dateinamen automatisch vergeben oder als Argument beim Aufruf des Makros übergeben werden. Neben der reinen Wiedergabe einer Abfolge von Befehlen beinhaltet die Arc Macro Language Elemente höherer Programmiersprachen wie Bedingungen oder Schleifen, sodaß man auch selbständig Programme erstellen kann. Eine Einführung in die Programmierung mit AML bietet Kapitel 8. * LN: ab hier alte Fassung, muss noch einsortiert werden! Sollen mehrere verschiedene Informationsebenen von dieser Vorlage digitalisiert werden, so bietet es sich an, die Vorlage entprechend oft zu kopieren. Neben dem schon vorgestellten Befehl copy ist in diesem Fall auch create zu verwenden, wenn man ein Vorlagecoverage für Tics und Boundary angibt: Arcedit: usage create Usage: CREATE <out_cover> {tic_bnd_cover} Arcedit: create bodendig ticcov Creating coverage bodendig The edit coverage is now NUTZDG01 Use COORDINATE DIGITIZER DEFAULT to orient NUTZDG01 if required. In das neue Coverage werden dabei nur die TICs und die Kartenbegrenzung (Boundary) übernommen. So brauchen die TICs nicht jeweils neu digitalisert werden. Das Kartenblatt muß auch erst dann neu registriert werden, wenn es zwischenzeitlich vom Digitalisierbrett abgenommen und neu befestigt wurde. Andere Einflüsse, die die Registrierung beeinflussen und erneut erforderlich machen können sind Schwankungen der Temperatur und Luftfeuchtigkeit, durch die sich das Material (insbesondere Papier) ausdehnen oder zusammenziehen kann. Da dies nicht zwangsläufig einheitlich für die gesamte Fläche passiert, ist zu überlegen, ob die Karte vorher auf ein verformungsstabileres Material übertragen werden soll. Aber auch die Übertragung von Hand und anschließende Digitalisierung eröffnet natürlich neue Fehlerquellen. Um mit dem Vorgang der erneuten Registrierung einer Karte vertraut zu werden, lösen wir nun zunächst die Karte vom Digitalisierbrett und befestigen sie erneut. Die Karte wird sich nun zwangsläufig nicht mehr an der gleichen Stelle wie zuvor befinden. Dadurch, daß man nun erneut die Tics mit dem Puck anfährt, erhält das Programm die Möglichkeit, die veränderte Lage relativ zur ursprünglichen Digitalisierung zu berücksichtigen. Der Grad der Übereinstimmung spiegelt sich im Root Mean Square (RMS)-Fehler wider. Arcedit: coordinate digitizer default 93 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Digitize a minimum of 4 tics (from digitizer). Signal end of tic input with Tic-ID = 0 Tic-ID: Tic-ID: ... Tic-ID: Tic-ID: 1AA 2AA 8AA 0A Scale (X,Y) = (1.000,1.000) RMS Error (dig,map) = (0.002,0.002) Der RMS-Fehler zeigt das Ausmaß der Übereinstimmung von ursprünglichen und neuen Koordinatenpunkten an. Je niedriger er liegt, desto genauer war die Digitalisierung (oder Transformation). Er sollte unter 0.004 liegen, bei weniger genauen Vorlagen darf er auch etwas größer sein. Falls der Fehler zu hoch liegen sollte, muß man die Karte erneut registrieren bis der RMS-Fehler in einem akzeptablen Bereich liegt: Arcedit: coordinate digitizer ticcov Abbildung 3-15. Digitalisieren von Arcs und Polygonen * TODO LN: Abbildung korrigieren ... Arcedit: drawenvironment arc node labels ids Arcedit: editfeature arc /* ef (Abk.) 0 element(s) for edit feature ARCS Arcedit: add --------------------Options-------------------1) Vertex 2) Node 3) Curve 4) Delete vertex 5) Delete arc 6) Spline on/off 7) Square on/off 8) Digitizing Options 9) Quit (Line) User-ID: 401 Points 0 94 Kapitel 3. Erstellen der raumbezogenen Datengrundlage 0 arc(s) added to /HOME/ARC/NUTZDG01 Arcs sind aus mindestens zwei Nodes (Anfangs- und Endpunkten) und bei Bedarf zusätzlichen Vertices (Hilfspunkten) zusammengesetzt (vgl. digi) (A-C)). Man beginnt eine Linie mit einem Node (Taste 2 ) und folgt dem Verlauf der Linie entlang und gibt dabei für jede Richtungsänderung der Linie eine 1 für einen Stützpunkt (Vertex) auf dem Puck ein. Der Endpunkt wird wiederum mit einer 2 gesetzt. Man kann nun eine weitere Linie digitalisieren oder die bisherigen abspeichern. Pro Linie sind maximal 499 Vertices möglich, bei einer größeren Anzahl wird die Linie automatisch getrennt und eine neue Linie begonnen. Je nachdem, was digitalisiert wird, bietet es sich an, die IDs gleich mit Werten zu belegen, z.B. der Höhe in Metern über NN bei Höhenlinien. Dazu gibt man nach add zunächst 8 für die Digitalisieroptionen ein, dann kann man z.B. mit der Taste 3 auf dem Puck das automatische Hochzählen der IDs bei neuen Linien verhindern. Dies ist dann hilfreich, wenn man mehrere Einzelobjekte mit der gleichen ID eingeben muß. Dann betätigt man noch einmal Taste 8, um dann mit Taste 1 die neue User-ID festzulegen. Nun kann man mit Taste 2 wieder einen neuen Arc beginnen. -------------------------DIGITIZING OPTIONS------------------------1) New User-ID 2) New Symbol 3) Autoincrement OFF 4) Autoincrement RESUME 5) Arctype line 6) Arctype box 7) Arctype circle 8) Arctype centerline 9) Quit Dazu wählen wir im ARCEDIT-Fenster den Bereich aus, der bearbeitet werden soll: PAN/ZOOM Extent 3.2.12.1. Editieren der Datengrundlage 3.2.12.1.1. Korrektur angrenzender Coverages 3.2.12.1.2. Anpassen von Elementen Zusammenschnappen 3.2.13. INFO-Dateien anlegen * Noch einbauen: Erzeugen der Topologie ggfs. Import/Export Transformation / Projektion (Vorbereitung der) Eingabe von Attributwerten 95 Kapitel 3. Erstellen der raumbezogenen Datengrundlage 3.3. Sachdaten hinzufügen/bearbeiten 3.3.1. Tabellen erzeugen Bevor wir eine Tabelle erstellen können, müssen wir zunächst festlegen, welche Daten darin abgelegt werden sollen, damit wir einerseits nicht unnötig Speicherplatz verbrauchen und andererseits alle benötigten Werte darin speichern können. INFO speichert seine Daten in Zeilen mit fester Feldlänge. Wurde also beispielsweise ein Textfeld mit einer Länge von 20 Zeichen definiert, so wird dieser Platz für jeden Datensatz gebraucht, unabhängig davon, ob dieses Feld mit einem Wert belegt ist. Daher beginnen wir mit einer kurzen Zusammenstellung der wichtigsten Datenformate in INFO. Weitere Informationen finden sich in der Online-Hilfe zu define. Feldtyp interne Länge Beschreibung B (binär) 1-4 bytes Zahl, die als binärer Integer gespeichert wird Zeichenkette mit fester Länge C (Zeichenkette) 1-4096 bytes D (Datum) 8 bytes F (Fließkomma) 4-8 bytes I (Integer) 1-16 bytes Internes Datumsformat: JJJJMMTT. Das Ein- und Ausgabeformat ist vom Benutzer definierbar. Als Fließkomma gespeicherte Zahl Integer. Es sind keine Kommastellen zulässig. Info speichert Integer als Zeichenketten Beim Erstellen der Tabelle muß man beachten, daß keine von ARC/INFO verwendeten Dateiendungen verwendet werden dürfen (z.B. .aat, .pat, .tic, .bnd, .tat, .txt, .nat, .add usw.). Wir rufen dazu zunächst Info auf: Arc: info INFO EXCHANGE CALL 01/07/1998 06:07:13 INFO 9.42 11/11/86 52.74.63* Copyright (C) 1994 Doric Computer Systems International Ltd. All rights reserved. Proprietary to Doric Computer Systems International Ltd. US Govt Agencies see usage restrictions in Help files ENTER USER NAME>ARC Dort erstellen wir für die Bodennutzung eine neue Datei namens bonutz.dat und definieren ihre Feldeigenschaften. Die Felder haben alle feste Längen: ENTER COMMAND >DEFINE BONUTZ.DAT ITEM NAME, WIDTH [OUTPUT WIDTH] TYPE [DECIMAL PLACES] [PROT.LEVEL] 1 ITEM NAME>BO_NUTZ_TR-ID Die Länge gibt an, mit wieviel Bytes pro Datensatz dieses Feld angelegt wird: 96 Kapitel 3. Erstellen der raumbezogenen Datengrundlage ITEM WIDTH>4 ITEM OUTPUT WIDTH>5 ITEM TYPE>B 5 ITEM NAME>BN-CODE ITEM WIDTH>3 ITEM OUTPUT WIDTH>3 ITEM TYPE>I 8 ITEM NAME> /* einfaches Return beendet den Dialog ODD RECORD LENGTH ROUNDED UP TO EVEN Die richtige Eingabe der Feldeigenschaften kann über items kontrolliert werden. ENTER COMMAND > ITEMS DATAFILE NAME: BONUTZ.DAT 07/01/1998 2 ITEMS: STARTING IN POSITION COL 1 5 ITEM NAME BO_NUTZ_TR-ID BN-CODE 1 WDTH OPUT TYP N.DEC 4 5 B 3 3 I - ALTERNATE NAME Nun wählen wir die Datei aus, um sie zu bearbeiten: ENTER COMMAND >SEL BONUTZ.DAT 0 RECORD(S) SELECTED Wir möchten die bisher noch leere Tabelle mit Datensätzen füllen: ENTER COMMAND >ADD 1 BO_NUTZ_TR-ID>0 BN-CODE>0 2 BO_NUTZ_TR-ID>1 BN-CODE>100 3 BO_NUTZ_TR-ID>2 BN-CODE>200 4 BO_NUTZ_TR-ID>3 BN-CODE>300 5 BO_NUTZ_TR-ID> /* einfaches Return zum Beenden der Eingabe 4 RECORD(S) ADDED Das Ergebnis können wir in INFO überprüfen: ENTER COMMAND >LIST $RECNO BO_NUTZ_TR-ID BN-CODE 1 0 0 2 1 100 97 Kapitel 3. Erstellen der raumbezogenen Datengrundlage 3 4 2 3 200 300 ENTER COMMAND >Q STOP Die Inhalte der INFO-Dateien können auch in ARC betrachtet werden: Arc: list bonutz.datcommand> Record BO_NUTZ_TR-ID BN-CODE 1 0 0 2 1 100 3 2 200 4 3 300 3.3.2. Attributdateien über joinitem verbinden Die fertige externe Tabelle können wir nun mit joinitem an die Attributtabelle anhängen: Arc: usage joinitem Usage: JOINITEM <in_info_file> <join_info_file> <out_info_file> <relate_item> <start_item> {LINEAR | ORDERED | LINK} Mit unseren Beispieldaten sähe dies folgendermassen aus: Arc: joinitem bo_nutz_tr.pat bonutz.dat bo_nutz_tr.pat bo_nutz_tr-id bo_nutz_trid Joining bo_nutz_tr.pat and bonutz.dat to create bo_nutz_tr.pat Mit angefügtem Feld aus der Datentabelle sieht die Polygonattributtabelle nun so aus: Arc: list bo_nutz_tr.pat Record AREA PERIMETER BO_NUTZ_TR# BO_NUTZ_TR-ID BN-CODE 1 -0.034 0.865 1 0 0 2 0.000 0.178 2 2 200 3 0.006 0.960 3 1 100 4 0.000 0.149 4 3 300 5 0.000 0.112 5 4 400 [...] 36 0.000 0.042 36 3 300 37 0.000 0.038 37 4 400 3.4. Relate erzeugen Um ein Relate zu definieren, erzeugen wir zunächst eine externe Tabelle, auf die über relate zugegriffen werden soll: 98 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Arc: info INFO EXCHANGE CALL 01/07/1998 12:08:37 INFO 9.42 11/11/86 52.74.63* Copyright (C) 1994 Doric Computer Systems International Ltd. All rights reserved. Proprietary to Doric Computer Systems International Ltd. ENTER USER NAME>ARC ENTER COMMAND >DEFINE BONUTZ.LUT ITEM NAME,WIDTH [OUTPUT WIDTH],TYPE [DECIMAL PLACES] [PROT.LEVEL] 1 ITEM NAME>BN-CODE ITEM WIDTH>3 ITEM OUTPUT WIDTH>3 ITEM TYPE>I 4 ITEM NAME>NUTZUNGSART ITEM WIDTH>14 ITEM OUTPUT WIDTH>15 ITEM TYPE>C 18 ITEM NAME> /* einfaches Return zum Beenden ODD RECORD LENGTH ROUNDED UP TO EVEN ENTER COMMAND >SEL BONUTZ.LUT 0 RECORD(S) SELECTED Diese Tabelle füllen wir nun mit Werten: ENTER COMMAND >ADD 1 BN-CODE>100 NUTZUNGSART>Weideland 2 BN-CODE>200 NUTZUNGSART>Oedland 3 BN-CODE>300 NUTZUNGSART>verlassen 4 BN-CODE>400 NUTZUNGSART>Sonderkulturen 5 BN-CODE>500 NUTZUNGSART>Ackerbau 6 BN-CODE>600 NUTZUNGSART>Forstwirtschaft DATA TOO WIDE FOR ITEM /* unsere maximale Breite: 14 Zeichen NUTZUNGSART>Forst 7 BN-CODE>700 99 Kapitel 3. Erstellen der raumbezogenen Datengrundlage NUTZUNGSART>bebaut 8 BN-CODE> /* Return 7 RECORD(S) ADDED Relates sind zunächst nur temporär und können interaktiv angelegt werden. Sollen sie in einer späteren Sitzung wiederhergestellt werden, so müssen sie als Info-Datei gespeichert werden. Arc: list bonutz.lut Record BN-CODE NUTZUNGSART 1 100 Weideland 2 200 Oedland 3 300 verlassen 4 400 Sonderkulturen 5 500 Ackerbau 6 600 Forst 7 700 bebaut Arc: relate add Relation Name: bodnutz Table Identifier: bonutz.lut Database Name: info INFO Item: bn-code Relate Column: bn-code Relate Type: ordered Relate Access: rw Relation Name: /* Return, falls kein weiteres Relate folgt Arc: relate list Relate Name: BODNUTZ Table: bonutz.lut Database: info Item: BN-CODE Column: bn-code Relate Type: ORDERED Relate Access: RW Diese Verbindung sollte man dann abspeichern: Arc: relate save relations 1 Relates saved to file relations Damit ist dieses Relate auch zwischen den Sitzungen in einer Info-Datei abgespeichert. Nun kann man zum Beispiel unter ArcPlot eine Liste ausgeben, die die Datensätze der beiden Tabellen temporär zusammenführt. Arc: arcplot /* oder kurz: ap Copyright (C) 1982-1997 Environmental Systems Research Institute, Inc. All rights reserved. ARCPLOT Version 7.1.1 (Thu Feb 6 23:26:50 PST 1997) Arcplot: list bo_nutz_tr poly bn-code bodnutz//nutzungsart Record bn-code bodnutz//nutzungsart 100 Kapitel 3. Erstellen der raumbezogenen Datengrundlage 1 0 2 200 3 100 4 300 5 400 6 700 7 500 8 400 9 700 10 400 ... 34 200 35 700 36 300 37 400 38 700 39 700 *************** Oedland Weideland verlassen Sonderkulturen bebaut Ackerbau Sonderkulturen bebaut Sonderkulturen Oedland bebaut verlassen Sonderkulturen bebaut bebaut * TODO LN: Unterkapitel mergen / Reihenfolge 3.5. Erstellen der Geometrie/Rohdaten in ARCEDIT 3.5.1. Grundfunktionen EditTools stellt verschiedene Funktionen des ARCEDIT-Moduls zur Verfügung, die z.B. zum Erstellen und Editieren von Coverages und den zugehörigen beschreibenden Daten benutzt werden können. Das Hauptmenü enthält neben Help fünf Pulldownmenüs. Das erste heißt Arctools und enthält ebenso wie File grundsätzliche Funktionen und erscheint daher in MapTools und CommandTools in sehr ähnlicher Form. Daher werden die Einträge des ArcTools-Pulldownmenüs nur an dieser Stelle ausführlich beschrieben: Commands... Change workspace... ermöglicht interaktiv die Verwendung von ARCEDIT-Kommandos (in den anderen Menüs die Befehle der entsprechenden Module) wechselt das Workspace Manage Coverages... verwaltet Coverages Manage Info Tables... Relates... verwaltet INFO-Tabellen entsprechen virtuellen Joins zu Tabellen. Damit lassen sich Zusatzinformationen in- oder externer Datenbanken verfügbar machen. Tool browser... Zeigt Kurzbeschreibung, Hilfe und Quelltexte von AML- oder Menu-Files an. Quit beendet Edit Tools. * TODO LN: Abbildung dazu? In dem Pulldownmenü File befinden sich die üblichen Befehle wie das Erstellen eines neuen Coverages oder einer neuen Datentabelle mit New..., bzw. das Öffnen schon existierender mit Open... Mit Remove... werden die entsprechenden Coverages oder INFO-Tabellen ohne Speichern der Veränderungen vor 101 Kapitel 3. Erstellen der raumbezogenen Datengrundlage dem letzten Save... oder Save as... geschlossen. Das Kopieren, Umbenennen und Löschen von Coverages und Workspaces darf nur in ARC/INFO und nicht auf Betriebssystemebene erfolgen, damit die entsprechenden Angaben der zu jedem Workspace gehörigen Dateien im INFO-Verzeichnis korrekt mitgeführt werden. In diesen sind nämlich z.B. die Pfadangaben zu den Coverage-Dateien gespeichert. Diese Funktionen stehen auf der Kommandozeilenebene mit copy, rename, kill und copyworkspace zur Verfügung. Unter ARCTOOLS findet man die entsprechenden Befehle sowohl in EditTools als auch in MapTools oder GridTools unter Handling Coverages. Die CommandTools stellen unter Edit folgende Befehle über Menüeinträge bereit: * TODO LN: Abbildung Topology ... • Build features • Eliminate • Dissolve • Region clean • Region dissolve • Drop features • Create labels • Centroid labels • Renumber nodes * TODO LN: Abbildung Coordinates ... • Transform coverage • Project coverage • Define projection * TODO LN: Abbildung INFO tables ... • Add from ASCII • Add items • Alter item display • Calculate • Define table • Drop items • Drop features • Edit tables 102 Kapitel 3. Erstellen der raumbezogenen Datengrundlage • Extract items • Index items • Join items • Redefine items • Rename items * TODO LN: Abbildung External DBMS ... • Connect • Column info • Show tables • SQL statement • SQL builder • INFO -> DBMS • DBMS -> INFO * TODO LN: Abbildung Image ... • Rectify • Register * TODO LN: Abbildung Cogo ... • New COGO coverage • Add COGO items • Arcs to COGO arcs • Calculate legal • Cover to COGO cover • Remove COGO items • Convert field data • Create COGO covers EditTools ArcTools Manage Coverages /Coverage Manager Werden nur Coverages eines bestimmten Feature Types gewünscht, können diese ausgewählt werden. Dabei ist zu beachten, daß ein Coverage selbst ein Unterverzeichnis ist und deshalb zwei Spalten erscheinen, in denen die Namen der Verzeichnisse gleich sind. Wird ein Coverage gewählt, kann auch der Inhalt des zugehörigen INFO-Feature-Tables aufgelistet werden (List Table), oder seine Struktur durch Item Info (= Variablendefinition) angezeigt werden. 103 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Zunächst erläutern wir anhand von bereits bestehenden Coverages die Grundfunktionen von ARCEDIT bzw. ARCTOOLS. Bevor wir in ARCEDIT wechseln, orientieren wir uns in ARC über die vorhandenen Daten: Arc: listworkspaces /* ARC/INFO-Arbeitsverzeichnisse anzeigen List of workspaces at location: /DATA/MONTANA Available workspaces -------------------ADMIN GARFIELD Arc: listcoverages Workspace: /DATA/MONTANA EX3 Available Coverages ------------------FORESTTOWN INDTOWN TOWNS LANDUSE LUTOWNS Items cover Der nach oben zeigende Pfeil in der linken oberen Ecke wechselt in das nächsthöhere Verzeichnis. workspace .. Die entsprechenden ARC-Kommandos lauten copy, rename, describe und kill. Die Syntax für die Kommandozeile liefert wie erwähnt usage Befehl. EditTools ArcTools Manage Coverages /Coverage Manager Rename Usage: RENAME <old_geo_dataset> <new_geo_dataset> Das folgende PopUp Fenster erscheint z.B. wenn man ein Coverage auswählt und dann die Schaltfläche Describe drückt. EditTools ArcTools Manage Coverages Coverage Manager Describe 104 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Abbildung 3-16. Das Describe Coverage Popup Menü 3.5.2. Öffnen eines Coverages Zunächst muß das Coverage geöffnet und dabei die zu editierende Feature Class angegeben werden. Dies geschieht durch EditTools File Open Coverage Das Menü Das Select an Edit Coverage erscheint. 105 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Abbildung 3-17. Select an Edit Coverage Menü Existiert noch kein zu bearbeitendes Coverage, kann auch ein völlig neues erstellt werden (siehe weiter unten und vergleiche Kapitel Kapitel 3). 3.5.3. Darstellung der Editiergrundlage Unter Display werden die in Draw Environment... angegebenen Feature classes durch Draw... auf dem Bildschirm dargestellt. Mit Back Environment... können noch weitere Coverages oder z.B. ein (Satelliten-)Bild als Hintergrund unterlegt werden (z.B. um die Orientierung während des Editierens zu erleichtern). EditTools Display Draw Environment (General) Sollen beispielsweise zusätzlich die Dangling Nodes angezeigt werden, muß Dangle Apply Cancel gewählt werden. Cancel läßt dabei nur das Menü wieder verschwinden. Das Aussehen (Farbe, Größe,...) der editierten Feature Types kann durch Change symbolset... geändert werden. Dies ist ebenso wie die Zoom-Werkzeuge Pan Zoom... ein auch in anderen Tools MapTools) an verschiedenen Stellen auftauchender Menüpunkt. 106 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Abbildung 3-18. Das Change Symbolset Menü EditTools Display Change Symbolset 3.5.4. Hintergrundcoverages und -bilder Als Hintergrundbilder können Coverages des Gebietes (backcoverage) oder Pixelgraphiken wie Satellitenbilder (backimage) angegeben werden. Bedingung ist jeweils, daß eine Georeferenzierung über Tics vorliegt, die dem zu bearbeitenden Coverage entspricht. Hintergrundcoverages dienen nur der Orientierung und können nicht editiert werden. Allerdings können die Features in Hintergrundcoverages als Schnappobjekte dienen, auf deren Koordinaten die editierten Objekte des Hauptcoverages zusammenschnappen. Die Standardeinstellung für Hintergrundgraphiken ist ein Grauwertbild. Der Integer-Wert gibt an, welches Band eines Multiband-Bildes selektiert wird. Es besteht aber auch die Möglichkeit, mehrere Farbbänder von Satellitenbildern gleichzeitig anzuzeigen. Dazu wird Composite gewählt. Hier kann bestimmt werden, welches Band im roten, grünen oder blauen Kanal visualisiert wird. Bei Coverages werden wie beim General Draw Environment auch die jeweiligen Features einzeln aktiviert oder deaktiviert. * TODO LN: Abb. EditTools Display Draw Environment (Back) Mit New... können jeweils weitere Hintergrundcoverages oder -bilder über einen Dateiauswahldialog ausgewählt werden. EditTools Display EditTools Display Back Object Environment (Image) Back Draw Environment (Image) Add Image 3.5.5. Auswahl der zu editierenden Elemente Die eigentlichen Editierbefehle finden sich im Edit Menü. Mit Change Edit Feature... muß zunächst die zu editierende Feature Class bestimmt werden. Je nach Wahl derselben erscheint unter Feature Edit Menu... ein passendes Edit... Menü. Auf deren Handhabung gehen wir später ein. EditTools Edit Change Edit Feature 107 Kapitel 3. Erstellen der raumbezogenen Datengrundlage 3.5.5.1. Graphische Auswahl Durch Graphic selection ... kann man das aktuelle Eingabemedium für Koordinaten (z.B. Maus oder Digitizer) zur Auswahl der am Schirm verfügbaren Features benutzen. EditTools Edit EditTools Graphical Selection Edit Graphical Selection More Die durch die Abfrage ausgewählten Features werden in Abhängigkeit von der Wahl der Optionen (New, Add to, Subset, Remove) zu einer Menge schon ausgewählter Features hinzugefügt (Add to), oder bilden eine Untermenge schon gewählter Features (Subset). Mit New wird eine völlig neue Menge von Features ausgewählt, während Remove die neu gewählten Features von einer vorherigen Auswahl entfernt. 3.5.5.2. Logische Auswahl Sollen die Features dagegen durch logische Verknüpfungen selektiert werden, kann dies durch Attribute selection... geschehen. Dazu müssen natürlich Variablen mit Ausprägungen vorhanden sein. Die zugehörige Attributtabelle (Feature Attribute Table) wird bei der Erzeugung der Topologie (vgl. Build, Clean) erstellt. Im Prinzip können beliebig komplexe logische Abfragen als Auswahlkriterium spezifiziert werden. Als Operanden dienen die Attribute im Feature Attribute Table oder direkt eingegebene numerische Werte. Edit EditTools Logical Selection Als logische Operatoren sind gleich (eq), ungleich (ne), größer(gleich) (gt), kleiner(gleich) (lt) und für Text (Characterstrings, Zeichenketten) Enthaltensein (CN, contain), Nichtenthaltensein (NC, not contain) oder IN für Enthaltensein in einer Menge numerischer Konstanten oder Charakterstrings verfügbar. Durch die Boolschen Operatoren Und (AND), Oder (OR) und Exklusives Oder (XOR) können zusammengesetzte Abfragen formuliert werden. 3.5.6. Editieren oder Erzeugen eines Coverages Zunächst muß das Coverage unter Angabe der zu editierenden Feature Class geöffnet werden. Dies geschieht durch: EditTools File Open Coverage Das Menü Select an Edit Coverage erscheint. Existiert noch kein zu bearbeitendes Coverage, kann ein neues erstellt werden. Die Eingabe der Features kann dann wie unter Digitalisieren oder Digitalisieren am Bildschirm beschrieben geschehen. Zunächst benötigt das Coverage einen Namen. Der Feature Typ muß gewählt werden. Optional ist ein Source Coverage anzugeben, von dem die Geometrieinformationen übernommen werden. Wichtig ist das Erstellen der Tics. Standardmäßig werden sonst die TIC-Ids 1 bis 4 und die Eckkoordinaten 0,0 bis 1,1 vergeben. Im Add Tics Menü können nun beutzerdefinierte Kennummern (IDs) und Koordinatenwerte für die mindestens vier Tics eingeben werden. Dies kann numerisch über die Tastatur oder graphisch per Maus oder Digitizer geschehen. 108 Kapitel 3. Erstellen der raumbezogenen Datengrundlage 3.5.7. Editieren von Arcs Wurde ein zu editierendes Coverage (Editcoverage) erstellt oder ausgewählt, erscheint für die Feature Class Arc das Edit Arcs and Nodes Menü. Für die entsprechenden anderen Feature Classes erscheinen ähnliche Menüs, die weiter unten gezeigt werden. Zum Einfügen neuer Arcs wird Add gewählt. Nun kann am Bildschirm mit der Maus digitalisiert werden (analog zum Arbeiten mit Puck am Digitalisierbrett). Die Umsetzung der Digitalisierpucktasten auf die Maus-Tastatur-Kombination wird in Abbildung amausdig veranschaulicht. Abbildung 3-19. Erweiterte Maustastenbelegung zum Digitalisieren Mit dem rechten Mausknopf (auf dem Digitizer-Puck die Taste 2) wird der Anfangsnode an einer gewünschten Stelle in dem angezeigten Coverage gesetzt. Mit dem mittleren Mausknopf (Taste 1 auf dem Digitalisierpuck) setzt man den Verlauf des Arcs durch Festlegen der Vertices (vgl. Kapitel 3) als Zwischenpunkte fest. Das Ende des Arcs wird wiederum durch Druck des linken Mausknopfes festgelegt. Nun kann an anderer Stelle ein erneuter Anfangsnode gesetzt werden. Der Add-Vorgang wird durch Eingabe einer 9 auf der Tastatur (oder strgrechte Maustaste) beendet, wie es auch im Shell- oder DOS-Fenster (unter NT) (ab jetzt einheitlich Kommando-Fenster genannt) angegeben ist. Beim Digitalisieren mittels eines Digitizers läuft im Prinzip der gleiche Vorgang ab - der Text im KommandoFenster ist der gleiche. Wichtig ist, daß sich bei der Eingabe der im Kommando-Fenster beschriebenen Optionen (z.B. 9 für Ende), die Maus auf dem Zeichenbildschirm befinden muß, um wirksam werden zu können. Bei sämtlichen folgenden ARCEDIT-Funktionen sollte der Text im Kommando-Fenster genau beachtet werden, da mehrmals Tastatureingaben erwartet werden. Edit Tools File Open/New Coverage Der gesamte Editiervorgang besteht aus einem Wechselspiel zwischen den Auswahl-Menüs (logische bzw. graphische Selektion) und dem eigentlichen Edit-Menü, in dem die Editierbefehle ausgewählt werden und dem graphischen Editieren im Graphikfenster. Zusätzlich wird an einigen Stellen die Tastatur zur Eingabe von Optionen verwendet (z.B. die 9 zum Beenden eines Editiervorganges im Graphikfenster). Je nach Befehl müssen entweder nur eines, genau zwei oder beliebig viele Features ausgewählt sein damit er angewendet werden kann. Der zweite Knopf Delete im Menü wird nach demselben Prinzip benutzt. Durch ihn werden die angewählten (Feature Edit Menü) Arcs gelöscht. Besonders wichtig ist der dritte Knopf in der obersten Reihe OOPS. Er macht nach und nach bis zum letzten Speichern (Save) je einen früheren Bearbeitungsschritt rückgängig. Damit werden Transaktionen 109 Kapitel 3. Erstellen der raumbezogenen Datengrundlage durch das Speichern eines Zustands vom Benutzer realisiert. 3.5.7.1. Verschieben und Kopieren von Arcs Die zweite Reihe von Schaltern, Duplicate und Move verschiebt (die beiden letzten Schalter) Arcs, bzw. läßt den ursprünglichen Arc an seiner Stelle und kopiert einen zweiten an die gewählte Stelle. Die Pfeilrichtung auf den Knöpfen deutet an, ob diagonale oder nur Parallelverschiebungen zur Seite erlaubt sind. Die meisten der komplexeren Editierfunktionen dieses Menüs benötigen zum Gebrauch etwas Erfahrung, die am besten durch häufiges Probieren gewonnen wird. Durch etwas Kreativität ist fast jedes gewünschte Resultat erreichbar. 3.5.7.2. Editieren von Nodes Ähnliches gilt für die Nodes. Es sind jeweils die bei den einzelnen Funktionen erscheinenden Optionen im Kommandofenster zu beachten. Beispielsweise erfolgt das Verschieben eines Knoten über dessen Selektion und einer nachfolgenden Eingabe der Ziffer 4 über die Tastatur. Erst dann kann der Zielpunkt des Knotens mit der Maus angeklickt werden. Die Ziffer 4 kann auch über gleichzeitiges Drücken der Shift-Taste und der der mittleren Maustaste aktiviert werden (vgl. Abbildung 3-19). Abbildung 3-20. Das Edit Menü Zum Einfügen eines neuen Knotens (Node) muß ein Arc gewählt sein. Dann kann der 1. Knopf unter Edit Nodes gedrückt und schließlich die Position des einzufügenden Arcs angeklickt werden. Das Herausnehmen eines überflüssigen Knotens ist nur möglich, wenn bestimmte Einstellungen im EditEnvironment-Fenster entsprechend eingestellt sind. Hier muß bei Unsplit Item OFF gewählt werden, da das Herausnehmen nur möglich ist, wenn die beiden selektierten Arcs dieselbe ID (allgemeiner: die gleichen Ausprägungen bzgl. der aktiven Variablen) aufweisen. 110 Kapitel 3. Erstellen der raumbezogenen Datengrundlage 3.5.7.3. Weitere Editierfunktionen Weitere Editierfunktionen finden sich im Menü More Arc Editing, das erscheint, wenn im Menü Edit Arcs and Nodes auf die Schaltfläche More Arc Editing gedrückt wird. EditTools EditTools Region File File Open Edit Coverage (Arc) Open Edit Coverage (Arc) Edit Arcs and Nodes Edit Arcs and Nodes More Arc Editing More Arc Editing Create Abbildung 3-21. Das More Arc Editing Menü Wird im Menü More Arc Editing auf die Schaltfläche Create Region gedrückt, kann mit dem folgenden Menü eine Region Subclass definiert werden. Dazu wird der neue Subclass Name in das entsprechende Feld eingetragen und eine ID angegeben. Apply überträgt den Namen in die Subclass-Liste. 3.5.7.4. Ändern der Geometrie Weiterhin gibt es verschiedene Möglichkeiten die Eigenschaften eines Arcs zu verändern. Unter Modify Shape befinden sich z.B. Funktionen, um eine Kurve zu vereinfachen, d.h. zu glätten, indem überflüssige Zwischenpunkte (Vertices) aus dem Arc herausgenommen werden. Dies wird z.B. bei Generalisierungen, zur Verminderung des Speicherbedarfs oder der Erhöhung der Geschwindigkeit verwendet. Es können selbstverständlich auch zusätzliche Vertices eingefügt werden. 3.5.7.5. Editieren von Vertices Unter More Arc Editing finden sich die Schaltflächen für die entsprechenden Befehle zum Editieren von Vertices. Es besteht die Möglichkeit, diese einzeln zu verschieben, zu löschen oder hinzuzufügen. 3.5.7.6. Drehen und aneinanderschnappen Die Schaltfläche Rotate and Snap auf dem Menü Edit Arcs and Nodes öffnet das Menü Rotate and Snap, in dem einzelne Arcs rotiert werden können, in dem vor allem aber auch verschiedene Möglichkeiten bestehen, um interaktiv Nodes aufeinander, bzw. Arcs und Nodes etc. aufeinander schnappen zu können, indem z.B. Radien angegeben werden, innerhalb derer z.B. benachbarte Nodes aufeinanderschnappen und verschmelzen sollen. 111 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Abbildung 3-22. Optionen beim Node to Arc Snapping EditTools File Open Edit Coverage (Arc) EditTools File Open Edit Coverage (Arc) Arc (Nove & Snap) Edit Arcs& Nodes Edit Arcs& Nodes Rotate and Snap Rotate & Snap Node- Statt wie sonst (siehe oben) werden die Optionen nicht über das Standard-Eingabefenster (die Shell) abgefragt, sondern es wird ein eigenes PopUp-Fenster angezeigt. Der Effekt und die über die Tastatur einzugebenden Optionen sind dieselben). 3.5.8. Editieren anderer Feature Classes Die anderen Feature Classes eines Coverages haben ihre eigenen Edit ... Menüs, wobei die Funktionalität sehr ähnlich, aber meist eingeschränkter ist. Typische Befehle sind das Hinzufügen, Löschen, Kopieren, Verschieben etc. ausgewählter Geometrieelemente. Ausserdem können mittels des Table Editors die zugehörigen Attribute inspiziert und verändert werden. Man gelangt zu den einzelnen Menüs in EditTools entweder indem man ein Coverage mit der entsprechenden Feature Class und der korrespondierenden Option öffnet, oder in Edit EditTools Change Edit Feature die aktuelle Feature Class eines geöffneten Coverages ändert. Außerdem besteht meist die einfache Möglichkeit, die aktuelle Auswahl in ein anderes Coverage (Put to Cover) zu speichern oder aus einem anderen Coverage Objekte zu laden (Get from Cover). EditTools File Open EditCover/New Cover EditTools File Editor Edit Open EditCover/New Cover Change Edit Feature Change Edit Feature Label Label -Edit Label Table EditTools Env File Open EditCover/New Cover Change Edit Feature Label -Edit Label 112 Edit Kapitel 3. Erstellen der raumbezogenen Datengrundlage Abbildung 3-23. Das Arc Environment Menü EditTools Open EditCover/New Cover EditTools Open EditCover/New Cover EditTools Open EditCover/New Cover Change Edit Feature Change Edit Feature Change Edit Feature Tics Tic -Edit Tics Table Editor Poly Wie schon ausgeführt, werden nur die Koordinaten für die Feature Classes Arc, Label Point, Annotation, Tic, Link und Coverage Extent explizit gespeichert. Im Gegensatz dazu werden Polygons, Routes und Sections topologisch definiert. In vielen Anwendungen ist ist die Genauigkeit der Koordinaten von besonderer Bedeutung. Die Koordinaten können entweder als einfach-genaue reelle Zahlen mit sechs oder sieben signifikanten Stellen oder solchen mit doppelter Genauigkeit, normalerweise 13 bis 14 Stellen, benutzt werden. Bei der Durchführung einer GIS-Analyse muß der Frage der Datenqualität besondere Beachtung geschenkt werden. Maßstabsfragen, Digitalisiergenauigkeit und viele weitere Punkte spielen eine Rolle. Sie können das Ergebnis erheblich beeinflussen. Verschiedene, sich summierende Fehlerquellen können die Genauigkeit und damit die Aussagekraft von Daten stark vermindern (vgl. Kapitel 1). Es muß daher überprüft werden, ob durch Speicherung der Koordinaten in doppelter Genauigkeit eine objektiv nicht gegebene Genauigkeit vorgetäuscht wird, wenn die Auflösung der einzelner Datenquellen weit darunter liegt. Edit Arcs EditTools Nodes Edit Environment Mit dem Tracing Environment wird die Umgebung für das Vektorisieren von Grids eingestellt. EditTools Edit Arcs and Nodes Trace Environment 3.5.9. Vergabe von Kennummern Im Folgenden wird kurz das Editieren der zu einer Geometrie gehörigen Attribute erläutert. Sollen für einzelne ausgewählte oder alle Features (im Beispiel hier: Arcs, entsprechendes gilt aber auch für die anderen Feature Types) Attribute verändert werden, so kann im Edit Arcs and Nodes Menü (bzw. dem entsprechenden Edit Menü für die anderen Feature Typen (z.B. Polygons, Tics) auf den Schalter Table Editor unter der Überschrift Attributes gedrückt werden. Falls schon Attribute für den jeweiligen Feature-Typ existieren, erscheint das Menü Table Editor. Abbildung 3-24 zeigt das entsprechende Menü für einen Arc Attribute Table (AAT). 113 Edit Kapitel 3. Erstellen der raumbezogenen Datengrundlage Abbildung 3-24. Das Table Editor (AAT) Menü Wenn stattdessen eine Warnung erscheint, muß zuvor noch die Topologie - und damit die entsprechende Tabelle - erzeugt werden (vgl. Kapitel 3). Zunächst müssen über die bekannten Auswahlverfahren (z.B. graphische Selektion) die zu bearbeitenden Features (hier Arcs) in die aktuelle Auswahlliste aufgenommen werden. Nun können im Table Editor Menü über List die Ausprägungen der Attribute der ausgewählten Features (hier Arcs) angezeigt werden. OpenCoverage EditTools Edit Arcs and Nodes Table Editor List Der Schalter Edit erlaubt es, die Werte dieser Sachattribute zu editieren. Ausgenommen sind die vom System errechneten Attribute, wie z.B. die Länge. Dies kann z.B. dazu genutzt werden, den einzelnen Arcs benutzerdefinierte IDs oder sonstige Variablenausprägungen interaktiv zuzuweisen. EditTools Open Coverage Edit Arcs and Nodes Table Editor Edit Dabei wird zunächst der Arc (um im Beispiel zu bleiben) mit der niedrigsten internen ID aktiviert. Seine Variablen (Items in der AAT) stehen damit zum Verändern zur Verfügung und er wird im Grafikfenster gelb hervorgehoben, sodaß man sieht, welchen Arc man gerade bearbeitet. Mit der return-Taste springt man zum nächsten Arc und kann diesen bearbeiten. So können der Reihe nach alle Arcs (allgemeiner Features) in der aktuellen Auswahlliste editiert werden. Add macht die Änderungen in der Tabelle wirksam. Bei calc kann nur ein einzelner Wert pro Variable eingegeben werden. Allen gerade ausgewählten Features wird mittels calc der gleiche Wert zugewiesen. EditTools OpenCoverage EditArcs & Nodes Table Editor Calc Wie schon erwähnt, können die anderen Feature Types über entsprechende Table Editor Menüs editiert werden. EditTools Edit Change Edit Feature Es kann jeweils nur auf die gerade selektierten Elemente zugegriffen werden, d.h. gegebenenfalls sind zuvor alle auszuwählen. * Vgl. Kapitel graph./logische Selektion * LN: bis hier alte Fassung - einsortieren! Weiterführende Literatur: ESRI, 1995, Understanding GIS. The ARC/INFO Method, Cambridge: GeoInformation International. Michael Zeiler, 1999, Modeling Our World: The ESRI Guide to Geodatabase Design, Redlands: ESRI. 114 Kapitel 3. Erstellen der raumbezogenen Datengrundlage Fußnoten 1. Die Feldnamen dürfen maximal 10 Zeichen lang sein (längere werden abgeschnitten) und keine Punkte oder Bindestriche enthalten (werden in einen Unterstrich umgewandelt). 2. Referenzpunkte im Coverage, für die die Koordinaten bekannt sind 3. Oder in die Datei arcedit.aml im aktuellen Verzeichnis oder .arcedit im Homeverzeichnis eingegeben werden, die jeweils beim Start von ARCEDIT ausgeführt werden. 4. So kann z.B. das Import-Tool von ARCVIEW 3.1 nur unkomprimierte Exportfiles importieren. 5. Zwei Beispiele hierfür findet man unter http://www.ccwr.ac.za/~lynch2/arc_e00.html" (http://www.ccwr.ac.za/~lynch oder eine aktualisierte Version unter http://pages.infinit.net/danmo/e00/docs/v7_e00_cover.html)" (http://pages.infini Dies ist jedoch nur von Interesse, wenn man für eine eigene Anwendung eine Im- oder Exportschnittstelle zu ARC/INFO erstellen will/muß. 6. Der Endnode ist je nach angegebener Option beim generate-Befehl identisch mit dem Anfangspunkt. Dies wird für den Import bei manchen Kartographie-Programmen benötigt. 7. http://www.perl.org/ 8. http://www.gdv.com/ 9. Hilfestellung zu Projektionen bieten z.B. Snyder, John. P. (1994): Map Projections: A Working Manual. (USGS Professional Paper 1395), 3. Auflage und die die WWW-Seiten von A. Voser unter http://www.geocities.com/CapeCanaveral/1224/mapref.html. 10. In diesem Fall war tatsächlich der Stand zu dieser Zeit von Interesse - unsere Kartensammlung verfügt auch über aktuelleres Material :) 11. Falls die erforderlichen Informationen auf der Karte fehlen, sind sie möglicherweise an anderer Stelle dokumentiert, beispielsweise in einem Begleitband zum Kartenwerk oder auf den schon oben erwähnten Mapref WWW-Seiten von A. Voser. Sind gar keine Informationen verfügbar, so müssen verschiedene Varianten probiert werden, bis man eine weitgehende Deckung mit den vorhandenen Daten erreicht (indem man z.B. eine eingescannte und registrierte Karte als Hintergrund darstellt und die Linien der projezierten Daten darüberlegt und auf Übereinstimmung prüft). 12. Alternativ gibt es noch das Modul TABLES, welches einen etwas vereinfachten Zugang zu INFO bereitstellt. 13. XXXX unterschiedliche Beschränkungen von INFO und Tables beachten ... 14. Ein Tutorial zu SQL kann unter http://www.dcs.napier.ac.uk/~andrew/sql/ oder http://sqlcourse.com aufgerufen werden. 115 Kapitel 3. Erstellen der raumbezogenen Datengrundlage 116 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools Zu den wichtigsten geometrischen Analysefunktionen eines Vektor-GIS gehören Flächenverschneidungen und das Generieren von Pufferzonen. Andere Funktionen beziehen sich dagegen auf Linienstrukturen (Pfadanalyse, Dynamic Segmentation). * TODO AZ: ergaenzen: Potential etc. 4.1. Geographische Analyse ARC/INFO stellt eine große Fülle von Analysemethoden zur Verfügung. Im Rahmen dieser Einführung können wir diese nicht alle ausführlich vorstellen. Für ausgefallenere Anwendungen verweisen wir auf die ausführliche Online-Hilfe und die mit dem Programm mitgelieferte Literatur. ARC/INFO verfügt über eine große Fülle von Befehlen und Analysemethoden. Diese können im Rahmen einer solchen Einführung selbstverständlich nicht in allen Einzelheiten behandelt werden. Für eine Übersicht über die grundsätzlichen Analysemöglichkeiten sei auf die einschlägigen Lehrbücher verwiesen. Die dort angegebenen schematischen Übersichten stellen jedoch meist Idealvorstellungen dar, die kaum ein kommerzielles GIS vollständig erfüllen wird. Dies gilt besonders für den akademischen Bereich, da hier immer ausgefallenere und spezialisiertere Analysemethoden gewünscht werden. Im Vergleich zu anderen GIS-Produkten ist ARC/INFO vor allem im Analysebereich ein recht mächtiges Programm. * TODO: konkrete Literaturhinweise (BILL 1999 ...) Die Einbindung eigener Programme einer beliebigen Programmiersprache ist über die Skriptsprache AML (Arc Marcro Language) möglich. Seit der Version 7.2 (ODE, Open Developers’ Environment) ist auch der Aufruf von ARC/INFO-Funktionen mittels anderer Programmiersprachen über ODE möglich. Darauf können wir hier nicht eingehen. Folgende Schritte sind für die räumliche Analyse erforderlich: • Auswahlkriterien definieren • Reihenfolge der Auswahl festlegen • in ARC/INFO-Befehle übersetzen (Handelt es sich um eine einmalige Operation oder ist eine Automatisierung über Skripte sinnvoll? Ist es sinnvoll oder notwendig, ein neues Coverage zu erstellen?) • In MapTools, ARCPLOT oder ARCVIEW anzeigen und gegebenenfalls die Auswahl weiter einschränken oder neue Kriterien festlegen Anhand unserer Beispieldaten und schematischer „Idealcoverages“ werden wir nun die wichtigsten Analysemöglichkeiten in den vektororientierten Modulen von ARC/INFO vorstellen. Die verwendeten Daten und eventuell erforderliche Vorarbeiten werden in Abschnitt 4.5.2 beschrieben. 117 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools 4.2. Verschneidungsoperationen und Bufferbildung In vielen Fällen wird GIS mit dem Schichtenmodell gleichgesetzt. Dies ist im Hinblick auf aktuelle Entwicklungen bei objektorientierten GIS zwar eine unzulässige Einschränkung des Begriffs GIS, zeigt aber die Bedeutung dieses Konzepts. ARC/INFO verfügt über verschiedene Möglichkeiten der überlagerung und Verschneidung unterschiedlicher Informationsebenen. Es besteht ein grundsätzlicher Unterschied zwischen darstellender und topologischer Überlagerung. Ist die darstellende Überlagerung auch in Kartographieprogrammen möglich, so bleibt die topologische Überlagerung Geographischen Informationssystemen vorbehalten. Man kann natürlich auch in ARC/INFO eine fast beliebige Anzahl einzelner Informationsebenen (des gleichen Gebiets) grafisch Übereinanderlegen, etwa so, wie wenn man einzelne Klarsichtfolien mit gemeinsamen Passpunkten (den TICs entsprechend) übereinanderlegen und projezieren würde. Die Attributdaten der einzelnen Coverages bleiben getrennt von der Geometrie, die wir als Ergebnis erhalten. Im Gegensatz dazu werden bei einer topologischen Verschneidung die bisherigen Geometrien und Attributdaten durch verschiedene Operationen miteinander verbunden bzw. neu erstellt und man erhält so eine neue Informationsebene mit entsprechend neuer Topologie. Als wichtigste Befehle sind union, intersect, identity und erase zu nennen. Diese Programme kann man entweder direkt an der Kommandozeile ausführen oder über entsprechende AMLs in den Command Tools, Analysis aufrufen. In ARCTOOLS geben die Symbolabbildungen in den Menüs Hinweise auf die Wirkungsweise der jeweiligen Befehle. Eine ausführliche Diskussion der Befehle, die auch die Wirkung auf die Attributtabellen berücksichtigt, findet man in der Online-Hilfe ARCDOC. Die verschiedenen Befehle sind (mit Einschränkungen) jeweils für die unterschiedlichen Kombinationen der Feature Typen verfügbar. CommandTools macht eine Reihe unterschiedlicher Befehle verfügbar, die nicht direkt in die Themenkreise „Erzeugen der Koordinatengrundlage“ (EditTools) oder „Visualisierung“ (MapTools) fallen. Dazu gehören vor allem Befehle zur Analyse, aber auch die Behandlung von Sachdaten, Erzeugung der Topologie, Kartenprojektion und Transformation, Import / Export, Geocoding oder 3D-Funktionalität. Dieser Tool-Picker kann ebenfalls in MapTools unter dem Menüpunkt Analysis und in EditTools unter dem Menüpunkt Edit aufgerufen werden. Bei Anklicken desselben erscheinen zwei Fenster mit mehreren Pull-Down Menüs, die teilweise weitere Seitenmenüs enthalten, aus denen dann die eigentlichen Funktionen gewählt werden können. Für jede dieser Funktionen öffnet sich beim Anwählen jeweils mindestens ein Fenster, in welchem die verwendeten Coverages oder Datenquellen angegeben werden können. Die verschiedenen Optionen der einzelnen Befehle können dort meist durch Buttons o.ä. angewählt werden. Insbesondere soll auf den Help-Button hingewiesen werden, in dem die Funktionsweise und die Optionen der jeweiligen Funktion erklärt werden. Mit diesem erhält man eine Hilfe zum Bedienen der Auswahlmöglichkeiten des jeweiligen ARCTOOLSFensters. Dies hat mit der allgemeinen ARC/INFO-Online Hilfe ARCDOC zunächst nichts zu tun. Letztere kann gleichzeitig daneben gestartet werden, um dem Benutzer mit Information zu den zugrundeliegenden Konzepten oder der zeilenorientierten Befehlssyntax und Funktionalität zu dienen. Es folgt eine Übersicht der Menüeinträge unter Analysis in den CommandTools von ARCTOOLS Overlay ... • Areaquery 118 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools • Identity • Intersect • Point-node • Union • Update Map Sheets ... • Append • Clip • Erase • Mapjoin • Split Proximity ... • Buffer • Buffer regions • Near • Point distance • Thiessen Extract ... • Form letters • Area Query • Region Query • Select • Select Regions Tabular ... • Frequency • Report Writer • Summary statistics DynSeg ... • Event Source env • Event transform • Event overlay 119 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools • Event dissolve • Event pullitems • Route/Poly overlay Geocoding ... • Standardize file • Create address cover • Update address cover • Address errors • Match addresses • Scoring Rules Surface ... • Contour • Line of sight • Profile • Visibility • Cut fill • Volume Animation ... • MPEG encoder • MPEG player Auf Dynamic Segmentation, Extract und Geocoding kann in diesem Rahmen nicht weiter eingengangen werden. 3D Oberflächen (Surface...) und Animationen werden in Kapitel 7 besprochen. In Folgenden werden wir die wesentlichen Vektor-Verschneidungsoperationen anhand von Beispielen und Übungen erläutern. 4.2.1. Union Durch die union-Operation werden zwei Coverages miteinander verbunden. Alle Elemente beider Coverages bleiben im Ergebniscoverage erhalten. Schneiden sich Linien bzw. Polygone, so werden an den Schnittpunkten neue Nodes eingefügt und gegebenenfalls neue (kleinere) Polygone gebildet, die eine eigene Topologie besitzen. Die Optionen join oder nojoin geben an, inwieweit die Attribute der PAT in das Ergebnis-Coverage übertragen werden sollen. Bei join werden alle weitergegeben, bei nojoin nur die coverage#. über relate können weitere Attribute in anderen Dateien ausgewählt werden. Die Ausgangscoverages bleiben unverändert erhalten.1 120 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools Abbildung 4-1. Das Union Menü CommandTools Analysis Overlay Union Usage: UNION <in_cover> <union_cover> <out_cover> {fuzzy_tolerance} {JOIN | NOJOIN} 4.2.1.1. Polygoncoverage ? Übung Zu einer Karte, die als Coverage vorliegt (in_cover), sollen aus einem zweiten Coverage (union_cover) Flächen hinzugefügt werden. Das Ergebniscoverage (out_cover) enthält die Flächen beider Coverages. Dort, wo sich Elemente beider Coverages überdecken, werden an den Schnittpunkten Nodes eingefügt und so neue Polygone erstellt. Besitzen die neuen Polygone die gleichen Attributwerte wie benachbarte Polygone, so ist es möglich, die Grenzen zu diesen mit dissolve zu entfernen und so wieder größere Flächen mit einheitlichen Attributwerten zu erhalten. in_cover union_cover out_cover i_poly op_poly outunion Arc: union i_poly op_poly outunion 121 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools Unioning i_poly with op_poly to create outunion Sorting... Intersecting... Assembling polygons... Creating new labels... Creating outunion.PAT... ** Item "AREA" duplicated, Join File version dropped ** ** Item "PERIMETER" duplicated, Join File version dropped ** ** Item "AREA" duplicated, Join File version dropped ** ** Item "PERIMETER" duplicated, Join File version dropped ** ? Übung Verschneiden Sie die Coverages climveg und natparks unter Verwendung des Befehls union und erläutern Sie das Ergebnis. Beachten Sie die Attributtabelle des Ausgabecoverages. Hat die Reihenfolge der Coverages (in_cover, union_cover) einen Einfluß auf das Ergebnis? Coverages: indianres, natparks Arc-Befehle: union, list, describe, arcplot ArcPlot-Befehle: mapextent, arcs Vorgehensweise: Lesen sie zunächst den Eintrag zu union in der Online-Hilfe ARCDOC. Führen Sie die union-Operation mit beiden Coverages durch. Betrachten Sie dann mit list die resultierenden Attributtabellen (Hinweis: die Polygonattributtabelle endet auf .pat). 4.2.2. Identity Es werden zwei Coverages angegeben, das sogenannte In-Coverage, das vollständig übernommen wird, sowie das sogenannte Identity-Coverage, das eine Polygon-Topologie besitzen muß. Vom Identity-Coverage werden nur diejenigen Features übernommen, die sich mit den Features des In-Coverages überschneiden. Abbildung 4-2. Das Identity Menü CommandTools Analysis Overlay Identity Usage: IDENTITY <in_cover> <identity_cover> <out_cover> {POLY | LINE | POINT} {fuzzy_tolerance} {JOIN | NOJOIN} 122 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools 4.2.2.1. Punktcoverage Beispiel 4-1. Baumbestand Für einen Forstbezirk existiert ein Punktcoverage, das alle Bäume von über 2m Höhe beinhaltet (in_cover). Die Forstverwaltung besitzt ebenfalls Karten der einzelnen Flurstücke, die den jeweiligen Zeitpunkt der Bepflanzung der verschiedenen Flächen enthalten (identity_cover). Als Ergebnis einer identity-Operation mit diesen beiden Coverages erhält man ein Punktcoverage, welches alle Baumstandorte aus dem Eingabecoverage enthält. Als Attributwert erhalten sie zusätzlich die ID der Polygone des identity_covers, in das sie fallen. Aus dem Ausgabecoverage (out_cover) ist jetzt das Alter der einzelnen Bäume zu entnehmen. in_cover identity_cover out_cover i_point op_poly identpt figs/i_pointmap figs/op_polymap figs/outidptmap Arc: identity i_point op_poly identpt point Producing identity of i_point with op_poly to create identpt Overlaying points... Creating identpt.PAT... ** Item "AREA" duplicated, Join File version dropped ** ** Item "PERIMETER" duplicated, Join File version dropped ** ** Item "AREA" duplicated, Join File version dropped ** ** Item "PERIMETER" duplicated, Join File version dropped ** ? Übung Verschneiden Sie die Coverages largcity und natparks unter Verwendung des Befehls identity und beschreiben Sie die Wirkungsweise des Befehls anhand des Ergebnisses. Coverages: Arc-Befehle: largcity, natparks identity Vorgehensweise: 123 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools 4.2.2.2. Liniencoverage Beispiel 4-2. Tarifgrenzen für ÖPNV-Netz Nach einer Neuordnung des Nahverkehrs in einem Verkehrsverbund sollen für das gesamte öPNV-Netz, das in einem Coverage mit Linien für Straßen- und Schienenverkehr (in_cover) zusammengefaßt wurde, die Tarife vereinheitlicht werden. Dazu werden Tarifgrenzen festgelegt und diese in einem Polygoncoverage (identity_coverage) festgehalten. Die einzelnen Polygone dieses Tarifgrenzencoverages enthalten nun als Attributwert die Tarifregion. Verschneidet man nun mit dem Befehl identity den Netzplan mit dem Tarifgrenzencoverage, so werden an den Tarifgrenzen Nodes in die Linien des Verkehrsnetzes eingefügt. Das out_cover enthält so neben den ursprünglichen Informationen des Liniennetzes die Zugehörigkeit der Streckenabschnitte zu den einzelnen Tarifzonen. in_cover identity_cover out_cover i_line op_poly outidentli figs/i_linemap figs/op_polymap figs/outidlimap Arc: identity i_line op_poly outidentli line Producing identity of i_line with op_poly to create outidentli Sorting... Intersecting... Assembling lines... Creating outidentli.AAT... ** Item "FNODE#" duplicated, Join File version dropped ** ** Item "TNODE#" duplicated, Join File version dropped ** ** Item "LPOLY#" duplicated, Join File version dropped ** ** Item "RPOLY#" duplicated, Join File version dropped ** ** Item "LENGTH" duplicated, Join File version dropped ** ? Übung Verschneiden Sie die Coverages river und natparks unter Verwendung des Befehls identity. Wie wirkt der Befehl auf Geometrie und Attributwerte? Coverages: river, natparks 124 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools Arc-Befehle: identity Vorgehensweise: 4.2.2.3. Polygoncoverage Beispiel 4-3. Nunavut Das in_cover enthält die Außengrenzen des neuen Territoriums Nunavut, das am 1. April 1999 aus dem bisherigen Nordwest-Territorium entsteht. Ein Polygoncoverage des Nordwest-Territoriums, das die bekannten Erzlagerstätten enthält (identity_cover), soll mit Hilfe des Befehls identity auf die Ausdehnung des neuen Territoriums Nunavut zurechtgeschnitten werden. Die neue Karte (out_cover) enthält die Informationen der größeren Karte, allerdings nur für die uns interessierende Region. Hierbei werden die Polygone des In-Coverages in kleinere Einheiten unterteilt. in_cover identity_cover out_cover i_poly op_poly outidentpy Arc: identity i_poly op_poly outidentpy Producing identity of i_poly with op_poly to create outidentpy Sorting... Intersecting... Assembling polygons... Creating new labels... Creating outidentpy.PAT... ** Item "AREA" duplicated, Join File version dropped ** ** Item "PERIMETER" duplicated, Join File version dropped ** ** Item "AREA" duplicated, Join File version dropped ** ** Item "PERIMETER" duplicated, Join File version dropped ** ? Übung 125 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools Verschneiden Sie die Coverages indianres und natparks unter Verwendung des Befehls identity und erläutern Sie die Wirkungsweise im Unterschied zu union. Beachten Sie dabei auch wieder die Wirkung auf die Attributtabellen. Coverages: indianres, natparks Arc-Befehle: identity Vorgehensweise: 4.2.3. Intersect intersect erstellt ein neues Coverage, indem es die Elemente zweier Coverages übereinanderlegt. Das Ergebniscoverage enthält nur diejenigen Teile der Elemente, die in Input und Intersect-Coverage die gleichen Flächen abdecken. Jedes Element im Ergebniscoverage erhält die Attribute der Polygone des IntersectCoverages, in die es fällt. Abbildung 4-3. Das Intersect Menü CommandTools Analysis Overlay Intersect Usage: INTERSECT <in_cover> <intersect_cover> <out_cover> {POLY | LINE | POINT} {fuzzy_tolerance} {JOIN | NOJOIN} 4.2.3.1. Punktcoverage Beispiel 4-4. Brunnenstandorte und Altlasten Das Eingabecoverage (in_cover) beinhaltet alle Brunnenstandorte in einem Landkreis als Punktinformation. Die Attributtabelle enthält neben interner ID (COVER#) und User-ID (COVER-ID) weitere Attributfelder zu Brunnentyp, Bohrtiefe, Wasserleistung, Alter, Wasserqualität. Ein weiteres Coverage enthält Polygone aller Flächen, die aufgrund ihrer früheren Nutzung als Industrie- oder Lagerflächen altlastenverdächtig sind. Nutzt man das Altlastencoverage nun als intersect_cover, so erhält man mit intersect als Ergebniscoverage (out_cover) ein Punktcoverage, das alle Brunnenstandorte enthält, die sich auf möglicherweise kontaminiertem Untergrund befinden. Diejenigen Brunnen aus dem Eingabecoverage, die sich nicht auf altlastenverdächtigen Flächen befinden, erscheinen nicht im Ergebniscoverage. 126 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools in_cover intersect_cover out_cover i_point op_poly outintpt Arc: intersect i_point op_poly outintpt point Intersecting i_point with op_poly to create outintpt Overlaying points... Creating outintpt.PAT... ** Item "AREA" duplicated, Join File version dropped ** ** Item "PERIMETER" duplicated, Join File version dropped ** ** Item "AREA" duplicated, Join File version dropped ** ** Item "PERIMETER" duplicated, Join File version dropped ** ? Übung Bestimmen Sie mit Hilfe des Befehls intersect die Orte, die innerhalb von National Forests liegen. Wem gehören die entsprechenden Waldstücke? (Hinweis: Beachten Sie die Erklärungen zu den Attributtabellen in den Metadaten.) Wo liegen die Unterschiede in der Wirkungsweise zu identity und union? Coverages: Arc-Befehle: towns, natforest intersect Vorgehensweise: 4.2.3.2. Liniencoverage Beispiel 4-5. Krötenwanderung Von einem Straßennetz (in_cover) sollen diejenigen Streckenabschnitte ermittelt werden, die durch Feuchtgebiete (enthalten im Coverage intersect_cover) verlaufen und so verstärkt von Krötenwanderungen betroffen sind. Mit intersect erhält man ein Liniencoverage (out_cover), das nur die gesuchten Abschnitte enthält, die in die Feuchtgebiete aus dem intersect_cover fallen. Mit den so erhaltenen Informationen kann man nun z.B. die Zahl der aufzustellenden Warnschilder und die Länge des notwendigen Schutzzaunes ermitteln. 127 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools in_cover intersect_cover out_cover i_line op_poly outintli figs/i_linemap figs/op_polymap figs/outinlimap Arc: intersect i_line op_poly outintli line Intersecting i_line with op_poly to create outintli Sorting... Intersecting... Assembling lines... Creating outintli.AAT... ** Item "FNODE#" duplicated, Join File version dropped ** Item "TNODE#" duplicated, Join File version dropped ** Item "LPOLY#" duplicated, Join File version dropped ** Item "RPOLY#" duplicated, Join File version dropped ** Item "LENGTH" duplicated, Join File version dropped ** ** ** ** ** 4.2.3.3. Polygoncoverage Beispiel 4-6. Erosionsgefahr Zu einem Untersuchungsgebiet existiert ein digitales Geländemodell und eine Karte der landwirtschaftlichen Nutzung. Aus dem Geländemodell wurden verschiedene Neigungstypen anhand ihrer Hangneigung klassifiziert. Für diese Untersuchung wurden alle Polygone, die eine Hangneigung von mehr als 10 Prozent aufweisen ausgewählt und in ein eigenen Coverage geschrieben (in_cover). Ein weiteres Coverage enthält diejenigen Flächen, auf denen Mais oder Zuckerrüben angebaut werden (intersect_cover). Mit intersect erhält man diejenigen Flächen, die zugleich eine Hangneigung von mehr als 10 Prozent aufweisen und auf denen obengenannte Produkte angebaut werden. Als Ergebnis erhält man die besonders erosionsgefährdeten Flächen. in_cover intersect_cover out_cover i_poly op_poly outintpy figs/bsp1 figs/bsp2 figs/bsp_intersect 128 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools Arc: intersect i_poly op_poly outinpy Intersecting i_poly with op_poly to create outinpy Sorting... Intersecting... Assembling polygons... Creating new labels... Creating outinpy.PAT... ** Item "AREA" duplicated, Join File version dropped ** ** Item "PERIMETER" duplicated, Join File version dropped ** ** Item "AREA" duplicated, Join File version dropped ** ** Item "PERIMETER" duplicated, Join File version dropped ** ? Übung Verschneiden Sie die Coverages indianres und natparks unter Verwendung des Befehls intersect. Erläutern Sie die Funktionsweise von intersect anhand dieses Beispiels. Coverages: indianres, natparks Arc-Befehle: intersect Vorgehensweise: 4.2.4. Clip Diejenigen Elemente eines Input-Coverages werden ausgewählt, die vollständig innerhalb der Aussengrenzen eines anderen Coverages (Clip-Coverage) liegen, der Befehl wirkt also wie ein Plätzchenausstecher. Bei dem Clip-Coverage muß es sich immer um ein Polygon-Coverage handeln. Die Außengrenzen der Polygone dieses Coverages definieren die Begrenzung, jenseits derer die Features des sogenannten Input-Coverages abgeschnitten werden. Es kann aus den unterschiedlichsten Feature-Typen ausgestanzt werden. 129 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools Abbildung 4-4. Das Clip Menü CommandTools Analysis Map Sheets Clip Usage: CLIP <in_cover> <clip_cover> <out_cover> {POLY | LINE | POINT | NET | LINK | RAW} {fuzzy_tolerance} 4.2.4.1. Punktcoverage Beispiel 4-7. Gefährdete Standorte von geschützten Pflanzen Aus einer Kartierung mit Punktmarkierungen für das Vorkommen bestimmter Orchideenarten (in_cover) sollen diejenigen Elemente ausgewählt werden, die sich auf Bauerwartungsland (clip_cover) befinden. Die gefährdeten Standorte finden sich dann im Ergebnis-Coverage out_cover. in_cover clip_cover out_cover i_point op_poly outclippt Arc: clip i_point op_poly outclippt point Clipping i_point with op_poly to create outclippt. Overlaying points... Creating outclippt.PAT... ? Übung Verschneiden Sie die Coverages indianres und towns unter Verwendung von clip. Erklären Sie die Wirkung des Befehls clip anhand dieses Beispiels. Wo liegen die Unterschiede zu identity? 130 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools Coverages: indianres, towns Arc-Befehle: clip Vorgehensweise: 4.2.4.2. Liniencoverage Beispiel 4-8. Naturschutzgebiet Diejenigen Abschnitte eines Wegenetzes, die durch ausgewiesene Naturschutzgebiete verlaufen, sollen ausgewählt werden. in_cover clip_cover out_cover i_line op_poly outclipli Arc: clip i_line op_poly outclipli line Clipping i_line with op_poly to create outclipli. Sorting... Intersecting... Assembling lines... Creating outclipli.AAT... ? Übung Verschneiden Sie die Coverages natparks und highway unter Verwendung von clip. Coverages: natparks, highway Arc-Befehle: clip Vorgehensweise: 131 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools 4.2.4.3. Polygoncoverage Beispiel 4-9. Landnutzung einer Gemeinde Die Landnutzung innerhalb der Grenzen einer Gemeinde soll aus einem größeren, anhand einer Luftbildauswertung ermittelten Datenbestand herausgelöst werden. in_cover clip_cover out_cover i_line op_poly outclippy Arc: clip i_poly op_poly outclippy Clipping i_poly with op_poly to create outclippy. Sorting... Intersecting... Assembling polygons... Creating new labels... Creating outclippy.PAT... ? Übung Verschneiden Sie die Coverages indianres und natparks unter Verwendung von clip. Coverages: Arc-Befehle: indianres, natparks clip Vorgehensweise: 4.2.5. Erase Entfernt diejenigen Elemente eines Input-Coverages, die innerhalb der ausgewählten Polygone des EraseCoverages liegen. 132 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools Erase wirkt wie das Gegenstück zu Update oder Clip. Hier werden jedoch die Features des Input Coverages, die von den Flächen des Erase Coverages überdeckt werden, gelöscht - quasi „ausradiert“. Das Erase-Coverage muß ebenfalls Polygontopologie besitzen. Entsprechend zu Clip gibt es sechs Möglichkeiten der Wahl von Feature Typen. Die jeweiligen GeometrieObjekte und ihre Attribute werden gelöscht. Abbildung 4-5. Das Erase Menü CommandTools Analysis Map Sheets Erase Usage: ERASE <in_cover> <erase_cover> <out_cover> {POLY | LINE | POINT | NET | LINK | RAW} {fuzzy_tolerance} 4.2.5.1. Punktcoverage Beispiel 4-10. Kahlschlagflächen Aus einem Eingabe-Coverage mit Baumstandorten sollen Kahlschlagsflächen herausgeschnitten werden. in_cover erase_cover out_cover i_point op_poly outerpt Arc: erase i_point op_poly outerpt point Erasing i_point with op_poly to create outerpt 133 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools Overlaying points... Creating outerpt.PAT... ? Übung Verschneiden Sie die Coverages largestcity und natforest unter Verwendung von erase. Coverages: Arc-Befehle: largestcity, natforest list, erase Vorgehensweise: 4.2.5.2. Liniencoverage Beispiel 4-11. Schienennetz Aus einem Schienennetz-Coverage sollen diejenigen Bereiche herausgeschnitten werden, die von einem Mitbewerber übernommen werden. in_cover union_cover out_cover i_line op_poly outerli Arc: erase i_line op_poly outerli line Erasing i_line with op_poly to create outerli Sorting... Intersecting... 134 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools Assembling lines... Creating outerli.AAT... ? Übung Erstellen Sie mit erase ein Straßencoverage, aus dem die Straßen entfernt wurden, die durch Nationalparks verlaufen. Coverages: Arc-Befehle: listcoverages list reselect clip Vorgehensweise: 4.2.5.3. Polygoncoverage Beispiel 4-12. Landbedeckung Das Stadtgebiet, aus dem sämtliche Wasserflächen herausgenommen werden, ergibt die Landfläche. in_cover union_cover out_cover i_poly op_poly outerpy 135 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools Arc: erase i_poly op_poly outerpy Erasing i_poly with op_poly to create outerpy Sorting... Intersecting... Assembling polygons... Creating new labels... Creating outerpy.PAT... ? Übung Entfernen Sie aus dem Coverage mit der Klimaxvegetation (climveg diejenigen Flächen, die in irgendeiner Form unter Schutz stehen fishwildl, natforest, natparks. Coverages: Arc-Befehle: climveg, fishwildl, natforest, natparks erase Vorgehensweise: 4.2.6. Update Ersetzt den Teil eines Input-Coverages der durch das Update-Coverage abgedeckt wird. Beide Coverages müssen Polygon-Topologie besitzen. Die Optionen lauten: poly (Polygone und PAT werden aktualisiert) und net (auch Arcs und AAT werden aktualisiert), außerdem keepborder (Außengrenze des Update Coverage wird nach Einfügen in das Input Coverage gespeichert) oder dropborder (wird weggelassen). Abbildung 4-6. Das Update Menü CommandTools Analysis Overlay Update Usage: UPDATE <in_cover> <update_cover> <out_cover> {POLY | NET} {fuzzy_tolerance} {KEEPBORDER | DROPBORDER} 136 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools Beispiel 4-13. Aktualisierung von Karten Die Grundlage für einen Teil einer Karte wurde aktualisiert und neu digitalisiert. Dieser Teil soll nun den veralteten Teil auf der Karte ersetzen. in_cover update_cover out_cover i_poly upd_poly updpy Arc: update i_poly upd_poly updpy Updating i_poly with upd_poly to create updpy Comparing i_poly and upd_poly items ... Sorting... Intersecting... Assembling polygons... Creating new labels... Creating updpy.PAT... ? Übung Ersetzen Sie im Coverage a die in b enthaltenen Flächen. Coverages: Arc-Befehle: listcoverages list reselect clip Vorgehensweise: 4.2.7. Split Teilt ein Coverage entsprechend einem Split-Coverage in mehrere. Die Auswahl erfolgt anhand der ange- 137 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools gebenen Attributwerte. Abbildung 4-7. Das Split Menü CommandTools Analysis Map Sheets Split Usage: SPLIT <in_cover> <split_cover> <split_item> {POLY | LINE | POINT | NET | LINK | RAW} {fuzzy_tolerance} Beispiel 4-14. Kreisgrenzen Coverage mit Landesgrenzen wird in Einzelcoverages mit Kreisgrenzen geteilt. in_cover split_cover out_cover(s) op_poly i_poly teil2 figs/op_polymap figs/i_polymap figs/teil2 138 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools Arc: list i_poly.pat Record AREA 1 -42.000 2 10.500 3 10.500 4 10.500 5 10.500 PERIMETER I_POLY# I_POLY-ID 26.000 1 0 13.000 2 2 13.000 3 3 13.000 4 4 13.000 5 5 Arc: split op_poly i_poly i_poly-ID poly Fuzzy tolerance will be calculated or set from the TOL file When done entering coverages type END or a blank line. Enter the 1st coverage: teil2 Enter item value: 2 Enter the 2nd coverage: teil4 Enter item value: 4 Enter the 3rd coverage: Done entering coverage names (Y/N)? y Do you wish to use the above coverages (Y/N)? y Filtering polygons and sorting... Intersecting... Building Split Table... Splitting... ? Übung Teilen Sie das Coverage landuse anhand der in counties enthaltenen Flächen in mehrere Coverages. Coverages: landuse, counties Arc-Befehle: list split Vorgehensweise: 139 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools 4.2.8. Mapjoin ARC/INFO-Coverages repräsentieren einen Kartenausschnitt. Soll ein Gebiet analysiert werden, das größer als ein solches Coverage ist, muß aus zwei oder mehr Einzelcoverages ein neues Coverage zusammengesetzt werden. Diese Aufgabe leistet der Befehl Mapjoin für Polygon- oder Netzwerkcoverages (mit Polygonen und Arcs). Die Attributdateien werden dabei durch einen Join verbunden und die Topologie wiederhergestellt. Mittels der Option Template kann ein Coverage gewählt werden, dessen Feature Class die Feature Classes angibt, die verknüpft werden sollen. mapjoin und append können bis zu 500 Coverages gleichzeitig zusammenfügen. Diese werden nacheinander in der Zeile Input Coverages gewählt und erscheinen nach Return in der sich darunter befindlichen Liste. Mit Delete selected können ausgewählte Coverages aus der Sammlung gelöscht werden. Selbstverständlich muß für das neu entstehende Coverage ein Name unter Output coverage angegeben werden. Die Option unter Calculate ID offsets bestimmt, ob die IDs für das neu entstehende Coverage beibehalten oder neu durchnumeriert werden sollen. Abbildung 4-8. Das Mapjoin Menü CommandTools Analysis Map Sheets Map Join Usage: MAPJOIN <out_cover> {feature_class...feature_class | template_cover} {NONE | FEATURES | TICS | ALL} {clip_cover} 140 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools Beispiel 4-15. Teildigitalisierungen zusammenfassen Verschiedene Teilbereiche eines Gebietes wurden von verschiedenen Personen digitalisiert und sollen jetzt zusammengeführt werden. in_cover in_cover out_cover op_poly i_poly teil2 figs/op_polymap figs/i_polymap figs/teil2 ? Übung Verbinden Sie die durch split geteilten Coverages durch mapjoin wieder zu einem Coverage. Coverages: Arc-Befehle: listcoverages list reselect clip Vorgehensweise: 4.2.9. Append Append funktioniert ähnlich wie Mapjoin. Es vereinigt Coverages in ein Einzelcoverage, ohne jedoch die Topologie neu zu erstellen, d.h. build oder clean ist erforderlich, bevor das Coverage weiterverwendet werden kann. Dies ist oft der sicherere Weg, da das Resultat unter der Kontrolle des Bearbeiters bleibt und damit jeder Schritt nachvollzogen werden kann. append verfügt über eine größere Auswahl zusammenfügbarer Feature Classes. Es können bis zu 500 Coverages auf einmal zusammengefügt werden. 141 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools Abbildung 4-9. Das Append Menü CommandTools Analysis Map Sheets Append Usage: APPEND <out_cover> {NOTEST | template_cover | feature_class...feature_class} {NONE | FEATURES | TICS | ALL} Beispiel 4-16. Landkreis Gemeindegrenzen wurden einzeln digitalisiert und georeferenziert und sollen jetzt ein ein Coverage mit den Gemeindegrenzen des gesamten Landkreises überführt werden. union_cover union_cover union_cover teil2 teil4 teil2u4 figs/teil2 figs/teil4 figs/teil2u4 Arc: append teil2u4 Enter Coverages to be APPENDed (Type END or a blank line when done): ===================================================================== Enter the 1st coverage: teil2 Enter the 2nd coverage: teil4 Enter the 3rd coverage: Done entering coverage names (Y/N)? y Do you wish to use the above coverages (Y/N)? y Appending coverages... ? Übung Verbinden Sie die durch split geteilten Coverages durch append wieder zu einem Coverage und erstellen Sie die Topologie neu. Coverages: Arc-Befehle: listcoverages list reselect clip Vorgehensweise: 142 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools 4.2.10. Reselect Wählt Elemente eines Coverages nach den vorgegebenen Kriterien aus und schreibt diese Untermenge in ein neues Coverage. Zur Auswahl der Objekte werden logische Ausdrücke angegeben. Die gerade aktuellen Ausdrücke müssen in der Liste Current Expressions stehen. Das Erstellen neuer Auswahlkriterien wird durch das Logical Expression-Menü erleichtert, das durch Drücken der 3-Taste (rechte Maustaste) in dem Eingabefeld erscheint. Für das Ergebniscoverage muß ein neuer Name angegeben werden. Abbildung 4-10. Das Reselect Menü CommandTools Analysis Extract Select Usage: RESELECT <in_cover> <out_cover> {in_feature_class} {selection_file} {out_feature_class} Beispiel 4-17. Ackerflächen nach Besitzern Ein Coverage mit Ackerflächen soll in Einzelcoverages für jeden Besitzer aufgeteilt werden. in_cover reselected ganz teil figs/teil2u4 figs/teil4 143 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools Arc: reselect ganz teil Reselecting POLYGON features from GANZ to create TEIL Enter a logical expression. (Enter a blank line when finished) >: reselect ganz-id in {3,4} >: Do you wish to re-enter expression (Y/N)? n Do you wish to enter another expression (Y/N)? n 2 features out of 5 selected. Reselecting polygons... Number of Polygons (Input,Output) = 5 3 Number of Arcs (Input,Output) = 12 7 Creating TEIL.pat... 6 unique nodes built for /DATA/TEIL ? Übung Fügen Sie die Coverages a und b zusammen und erzeugen Sie die Topologie neu. Coverages: Arc-Befehle: listcoverages list reselect clip Vorgehensweise: 4.2.11. Dissolve Durch Dissolve werden benachbarte Flächen verschmolzen, wenn die Attribute beider Polygone dieselben Ausprägungen aufweisen. Abbildung 4-11. Das Dissolve Menü CommandTools Edit Topology Dissolve 144 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools Usage: DISSOLVE <in_cover> <out_cover> <dissolve_item | #ALL> {POLY | LINE | NET | REGION.subclass} Beispiel 4-18. Nahtlose Kartenübergänge Durch mapjoin aneinandergefügte Coverages weisen durch die Kartengrenzen noch Grenzen zwischen Polygonen mit identischen User-IDs auf. Diese werden durch dissolve aufgelöst. union_cover union_cover diss_poly dissd4 figs/diss_poly figs/dissd Arc: dissolve diss_poly dissd diss_poly-ID Dissolving diss_poly by diss_poly-ID to create dissd Creating dissd.PAT format... Creating dissolve table... Dissolving... Number of Polygons (Input,Output) = 5 Number of Arcs (Input,Output) = 9 Creating dissd.PAT... 3 3 4.2.12. Entfernen von Restflächen mit Eliminate Bei der Verschneidung nicht vollständig deckungsgleicher Linien können kleine Restflächen - sogenannte Sliver Polygons - entstehen2. Diese können mit der Funktion eliminate entfernt werden. Dies kann über den maximalen Flächeninhalt oder die Kantenlänge gesteuert werden, die ein Polygon mindestens besitzen muß, um als vollwertiges Polygon anerkannt zu werden, und der Funktion Eliminate nicht zum Opfer zu fallen. Eliminate löst ausgewählte Polygone auf, indem sie sie den benachbarten Polygonen mit der größten gemeinsamen Grenze zuschlägt. Unter CommandTools erfolgt die Auswahl der Lösch-Kriterien im Logical Expression Builder, den man durch Druck der rechten Maustaste im Feld Logical Expression erhält. 145 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools Abbildung 4-12. Das Eliminate Menü CommandTools Edit Topology Eliminate Usage: ELIMINATE <in_cover> <out_cover> {NOKEEPEDGE | KEEPEDGE} {POLY | LINE} {selection_file} {BORDER | AREA} Beispiel 4-19. Doppelt digitalisierte Linien Beim Digitalisieren von Polygonen wurde eine Linie versehentlich zweimal übereinander digitalisiert. Nach der erneuten Erstellung der Topologie sind dadurch zahlreiche Mini-Polygone entstanden. Diese werden anhand der Größe ihrer Fläche ausgewählt und den jeweiligen Nachbarpolygonen zugeschlagen. 4.3. Entfernungsberechnungen 4.3.1. Buffer: Erzeugung von Pufferzonen Eine der bekanntesten Analysefunktionen eines GIS ist die Pufferbildung (Buffering). Das zugehörige Fenster findet sich in CommandTools unter Analysis. Mit diesem lassen sich Pufferzonen eines bestimmbaren Radius um Flächen, Linien, Punkte oder Nodes generieren. Dadurch wird als Ergebnis ein neues Coverage erzeugt, welches logischerweise Polygonstruktur, d.h. auch schon Topologie aufweist. 146 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools ! Wichtig Die Pufferzonen in der Ergebnistabelle werden geometrisch und über die Attributwerte definiert. Dazu dient das Feld INSIDE in dem Ausgabecoverage: Ein Wert von 100 besagt, daß die Fläche innerhalb des Puffers liegt, ein Wert von 0 bezeichnet außerhalb liegende Flächen. Bei der weiteren Auswertung bzw. Visualisierung von Ergebnissen muß daher gegebenenfalls erst der Puffer mit reselect ausgewählt werden. Usage: BUFFER <in_cover> <out_cover> {buffer_item} {buffer_table} {buffer_distance} {fuzzy_tolerance} {LINE | POLY | POINT | NODE} {ROUND | FLAT} {FULL | LEFT | RIGHT} Beispiel 4-20. Pufferzone um Schnellstraßen Es sollen Flächen identifiziert werden, die bis zu 250 m von einer Schnellstraße entfernt sind. * TODO LN: Abbildungen dazu mit 0, 100 Werten, verschiedenen Optionen (round, flat) Coverages: Arc-Befehle: Vorgehensweise: Arc: buffer railroads rail3000 # # 3000 Buffering ... Sorting... Intersecting... Assembling polygons... Creating new labels... Finding inside polygons... Dissolving... Building nodes... Creating rail3000.PAT... Statt der Angabe einer einfachen Pufferdistanz ist auch die Verwendung eines sogenannten BufferTable möglich. In diesem befindet sich eine Spalte mit der Buffervariablen. Diese muß einer der Variablen in der AttributeTable des Input-Coverages entsprechen. Jeder Ausprägung derselben ist eine Pufferdistanz zugeordnet. Diese trägt den obligatorischen Namen DIST. Dadurch können unterschiedliche Weiten der Pufferzonen um Raumobjekte mit unterschiedlichen Variablenausprägungen erzeugt werden. Falls eine Variable des Input-Coverages direkt als Distanzwert dienen soll, kann diese mittels Buffer Item angegeben werden. Als weitere Option kann angegeben werden, ob die Puffer einseitig (Links/Rechts) oder beidseitig um die Arcs erzeugt werden sollen. Außerdem wird durch die Optionen Round oder Flat angegeben, wie die Enden behandelt werden sollen (abgerundet oder flach abgeschnitten). 147 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools 4.4. Entfernungsberechnungen Die folgenden Befehle finden sich nach Auswahl von Proximity im Analysis-Pulldownmenü der Command Tools. 4.4.1. Near Der Befehl Near wird benutzt, um die Entfernung jedes Punktes in einem Coverage zu dem nächsten Arc (oder Point oder Node) eines zweiten Coverages zu berechnen. Damit können beispielsweise Attribute eines Punkt-Features dem nächstgelegenen Arc zugeschrieben werden, oder umgekehrt. Ein Anwendungsbeispiel sind Adressenbereiche für Straßenabschnitte. * TODO LN: Kommandozeilenversion, Abbildung Near ist für drei Feature Classes und damit mit folgenden Optionen anwendbar: LINE Die Entfernung von einem Punkt zu einem Arc wird berechnet. Diese wird als neuer Item zusammen mit der internen Nummer (Name#) des nähesten Arcs im Near-Coverage standardmäßig in die PAT des Input Coverages geschrieben. POINT Die Entfernung zwischen zwei Punkten (in den beiden unterschiedlichen Coverages) wird berechnet und (genauso wie bei LINE) mit der internen ID in die PAT des Input Coverages geschrieben. NODE Die Entfernung zwischen Punkten und Nodes wird bestimmt. Diese wird wieder zusammen mit der internen ID des nächstgelegenen Nodes im Near Coverage der PAT des Input Coverages hinzugefügt. Weiterhin kann ein maximaler Suchradius angegeben werden (Search Radius). Liegt das nächstgelegene Feature nicht innerhalb dieser Distanz, wird es nicht dem Ergebnis-Coverage hinzugefügt. Schließlich kann der Defaulteintrag der internen ID des nächsten Punktes dahingehend erweitert werden, daß auch seine X- und Y-Koordinaten mitgespeichert werden. Dies bewirkt die Auswahl des LocationKnopfes. No Location behält die Standardeinstellung. Als Output Coverage muß ein neuer Name für das neu zu erstellende Coverage angegeben werden. 4.4.2. Entfernungsmatritzen zwischen Punkten Die Funktion Point-Distance errechnet Entfernungstabellen zwischen den Punkten und den Nodes der entsprechenden Punkt- bzw. Node-Coverages. 4.4.3. Thiessen-Polygone Die Funktion thiessen berechnet aus einem Punktcoverage Polygone, indem um jeden Punkt Grenzlinien mit maximal möglichem Abstand gezogen werden. D.h. jeder Punkt auf einem Geradenstück zwischen zwei der sogenannten Thiessen-Polygone ist von dem Mittelpunkt des entsprechenden Polygons gleich 148 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools weit entfernt. Die ursprünglichen Punkte dienen also als Mittelpunkte zu erzeugender flächenmaximaler Polygone. Diese Analysemethode geht davon aus, daß bei einer zweidimensionalen Verteilung von Punkten die beste Annäherung an andere Punkte durch den nächstgelegenen Punkt erfolgt. D.h.: Alle Punkte, die in dem entstandenen Polygon liegen, sind wahrscheinlich eher durch dem Punkt im Zentrum des Polygons gut repräsentiert, als mit jenen in den benachbarten Polygonen. Burrough, 1998, 114f. diskutiert die Nachteile dieser Methode. Sie eignet sich vor allem für qualitative (nominale) Daten. * TODO LN: Abbildung dazu: Punkte, Thiessen-Polygone (evtl. Delaunay-Dreiecke grau dahinterlegen) Usage: THIESSEN <in_cover> <out_cover> {proximal_tolerance} Arc: thiessen largcity citythiess Loading points from coverage largcity... Triangulating... Creating Thiessen structure... Constructing arc/polygon topology ... Generating polygon attributes ... 4.4.4. Abschlußübung Zum Abschluß dieses Kapitels erhalten Sie noch einmal die Möglichkeit, den Umgang mit den vorgestellten Analysewerkzeugen zu üben. Es ist durchaus möglich, daß Sie auf verschiedenen Wegen zum Ziel gelangen. Benutzen Sie für diese Übung die Coverages für den gesamten Staat Montana. Sie müssen diese dazu nicht in Ihr Verzeichnis kopieren. Es reicht aus, jeweils den kompletten Pfad zu einem Verzeichnis mit Leseberechtigung anzugeben. Arc: intersect /data/towns /data/landuse lutowns point Intersecting /data/towns with /data/landuse to create lutowns Overlaying points... Creating lutowns.PAT... ** Item "AREA" duplicated, Join File version dropped ** ** Item "PERIMETER" duplicated, Join File version dropped ** ** Item "AREA" duplicated, Join File version dropped ** ** Item "PERIMETER" duplicated, Join File version dropped ** ? Übung Ein Investor möchte eine Restaurantkette Fried Green Tomatoes eröffnen und dazu geeignete alte Bahnhöfe in Montana finden. Er wendet sich an Sie, um ihm dabei behilflich zu sein. Wir 149 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools gehen in diesem Fall (hypothetisch) davon aus, daß jeder Ort, der auf einer Bahnlinie liegt über einen Bahnhof verfügt (oder früher darüber verfügt hat) und daß alle Bahnhöfe in Orten mit unter 700 Einwohnern inzwischen aufgegeben wurden (und somit potenziell zur Verfügung stehen). Markterhebungen haben ergeben, daß potenzielle Kunden in mittleren bis größeren Städten zu finden sind und diese bereit sind, bis zu 12 km von ihrem Heimatort zurückzulegen. Reisende auf den Interstate-Highways würden einen Umweg von bis zu 8 km auf sich nehmen. Um die Auswahl einzuschränken gelten also folgende Kriterien: • maximal 12 km (Luftlinie) von einem Ort mit mindestens 3000 Einwohnern • ODER maximal 8 km (Luftlinie) von einem Interstate Highway entfernt Welche Orte sollte sich der Investor näher ansehen? Wie viele Schulen gibt es an diesen Orten? Konzentrieren Sie sich für diesen Aufgabenteil auf die Analyse. Die ansprechende Darstellung in einer Karte stellen wir in Kapitel 6 vor. 4.5. Weitere Werkzeuge - Die Productivity Tools Die Produktivity Tools umfassen eine Sammlung weiterer Funktionen in ARCTOOLS unter: MapTools View Produktivity Tools Zu diesen Productivity Tools zählen Kommandos, die in früheren Versionen nur von der Kommandozeile aus aufzurufen waren und jetzt eine graphische Benutzeroberfläche erhalten haben, oder die ab der Version 7 tatsächlich neu hinzugekommen sind, wie die später erläuterten Animations-Tools. Abbildung 4-13. Das Productivity Tools Menü 4.5.1. Geokodieren von Adressen Abbildung 4-14. Das Productivity Tools Menü 150 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools Besonders für marktwirtschaftliche Aufgabenstellungen ist das sogenannte Geokodieren (Geocoding), nämlich das Zuweisen von Adressen, bzw. Adressbereichen zu digitalen Kartengrundlagen, insbesondere Strassenabschnitten), von immenser Bedeutung. Dies gilt für fast alle Firmen, die große Adressenbestände angesammelt haben und nun z.B. analysieren wollen, wo ihre Kunden überhaupt herstammen und welche Charakteristika deren Nachbarschaften aufweisen. Dies kann dazu dienen, das Standortnetz der Filialen zu optimieren, oder um Werbemaßnahmen gezielter durchführen zu können. Gerade in den letzten Jahren hat die Bedeutung des sogenannten Geomarketing deutlich zugenommen. * TODO AZ: paar Takte zu Geocoding 4.5.2. Auswahl anhand von Attributdaten mit reselect Als Datenmaterial für Analyseübungen stehen Daten über den Nordwesten der USA (EPA-Region 8) im ARC/INFO-Exportformat unter folgender Addresse zur Verfügung: http://www.epa.gov/region8/maps/gisdata.html Da die Daten für den gesamten Bundesstaat zu umfangreich sind, müssen wir zunächst das Untersuchungsgebiet auf jeweils eine oder mehrere Counties beschränken 3. Dazu bedienen wir uns des ARCBefehls reselect. Anhand ihrer IDs werden die Counties aus dem Staaten-Coverage ausgewählt und in in ein Einzelcoverage geschrieben, das jeweils nur die Grenzen des einzelnen County enthält. In Verbindung mit clip können wir nun aus den verschiedenen Montana-Coverages die uns interessierenden Counties herausschneiden. Coverages: Arc-Befehle counties listcoverages, list, reselect, clip Vorgehensweise Attributtabelle zu Coverage counties ansehen, IDs heraussuchen, mit reselect gesuchte Polygone auswählen und in neues Coverage im eigenen Arbeitsverzeichnis schreiben, mit clip alle Coverages auf County-Ausdehnung zurechtschneiden. Zunächst ermitteln wir mit Hilfe der Attributtabelle die IDs der uns interessierenden Counties:list Arc: list /home/arc/montana/counties.pat 1 AREA = ************ PERIMETER = 3152173.000 COUNTIES# = 1 COUNTIES-ID = 0 NAME = FIPS = 0 ACRES = 0 SQMILES = 0.00 COVNAME = 2 AREA = ************ PERIMETER = 513007.500 COUNTIES# = 2 COUNTIES-ID = 1 NAME = LINCOLN FIPS = 53 151 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools ACRES SQMILES COVNAME = 2351827 = 3674.73 = LINCOLN 3 AREA PERIMETER COUNTIES# COUNTIES-ID NAME FIPS ACRES SQMILES COVNAME = ************ = 284337.750 = 3 = 2 = SHERIDAN = 91 = 1091958 = 1706.18 = SHERIDAN Mit Hilfe dieser Information wählen wir die interessierenden Polygone aus und erstellen ein neues Coverage mit diesem Inhalt.4 reselect counties count4 poly Reselecting POLYGON features from COUNTIES to create COUNT4 Enter a logical expression. (Enter a blank line when finished) >: reselect counties-ID = 4 >: Do you wish to re-enter expression (Y/N)? n Do you wish to enter another expression (Y/N)? y >: aselect counties-ID = 18 >: Do you wish to re-enter expression (Y/N)? n Do you wish to enter another expression (Y/N)? n 2 features out of 58 selected. Reselecting polygons... Number of Polygons (Input,Output) = 58 3 Number of Arcs (Input,Output) = 244 15 Creating COUNT4.pat... Creating COUNT4.AAT... 15 unique nodes built for /HOME/LNUECKER/MONTANA/COUNT4 Wenn wir nun noch einmal die Polygon-Attributtabelle ansehen, erscheinen nur noch die beiden ausgewählten Polygone (und natürlich das Universalpolygon). Arc: list count4.pat 1 AREA PERIMETER COUNT4# COUNT4-ID NAME FIPS ACRES SQMILES COVNAME 2 AREA PERIMETER = ************ = 906912.062 = 1 = 0 = = 0 = 0 = 0.00 = = ************ = 457402.219 152 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools COUNT4# COUNT4-ID NAME FIPS ACRES SQMILES COVNAME = 2 = 4 = GLACIER = 35 = 1943478 = 3036.68 = GLACIER 3 AREA PERIMETER COUNT4# COUNT4-ID NAME FIPS ACRES SQMILES COVNAME = ************ = 449509.844 = 3 = 18 = MCCONE = 55 = 1716828 = 2682.54 = MCCONE 1 Mit Hilfe des Befehls clip können jetzt die einzelnen Coverages auf County-Format verkleinert werden. Arc: usage clip Usage: CLIP <in_cover> <clip_cover> <out_cover> {POLY | LINE | POINT | NET | LINK | RAW} {fuzzy_tolerance} Je nach Featuretyp des in_cover muß line, point oder poly angegeben werden. Arc: clip /home/arc/montana/river count4 c4river line Clipping /home/arc/montana/river with count4 to create c4river. Sorting... Intersecting... The specified tolerance 0.09994255 is below the minimum resolution for this data - intersections will be detected with a tolerance of 0.20553636 instead. Assembling lines... Creating /HOME/ARC/MONTANA/C4RIVER.AAT... Overlaying annotation... Dies wiederholt man nun für alle Coverages: FWSLPL (poly) ab29 (Fish and Wildlife Service Lands) AUTOBLN (line) rd16 (Highways) IRPL (poly) ab9 (Indian Reservations) LANDNPL (poly) lu23 (Major Land Uses) CVPL (poly) lu26 (Climax Vegetation) STPT (point) ct4 (Largest City in each County) OPT (point) ct107 (Montana Cities and Towns) STPL (poly) ct2 (Montana Cities) BEZPL (poly) ab42 (1995 Legislative Districts) GITTERLAT (poly) cf2 (1 degree lat./long grid) FISHWILDADM (poly) ab44 (Fish, Wildlife and Parks Regions) WALDPL (poly) ab13 (National Forests with Ownership) 153 Kapitel 4. Räumliche Analyse in ARC und mit CommandTools NATPARKPL (poly) ab28 (National Park Service Lands) HYDPOL (poly) hd47 (Surface Water Supply Index) EISENBLN (line) rr5 (Railroads ca. 1965) HYDPLLN (poly,line) hd49 (Simplified Hydrography) EINZUGPLLN (poly, line) hd52 (River Basins) BEVDPL (poly), ab135 (Population Density by Block Group) Zusätzlich liegen auf County-Basis Daten zur Verteilung der Bevölkerungsgruppen vor. Weiterführende Literatur: Peter A. Burrough und Rachael A. McDonnell, 1998, Principles of Geographical Information Systems, Oxford: OUP. Graeme F. Bonham-Carter, 1994, Geographic Information Systems for Geoscientists: Modelling with GIS, Oxford: Pergamon/Elsevier. Stewart Fotheringham und Peter Rogerson, 1994, Spatial Analysis and GIS, London: Taylor & Francis. Fußnoten 1. In der Voreinstellung JOIN bleiben die Attributwerte der Ursprungspolygone erhalten. Wählt man nur diejenigen Polygone aus, die in der entsprechenden User-ID einen Wert ungleich 0 besitzen, kann man das ursprüngliche Coverage rekonstruieren. Dieser Befehl kann nur auf zwei Polygoncoverages angewandt werden. 2. Diese können auch bei fehlerhafter Digitialisierung entstehen, wenn z.B. eine Linie zweimal übereinander digitalisiert wird und zwangsläufig nicht genau aufeinander zu liegen kommt. 3. Gilt für einen späteren Teil der Übung 4. Der reselect-Befehl existiert in ähnlicher Form auch in anderen ARC/INFO-Modulen. Es ist z.B. in ARCPLOT möglich, nur einen Teil der Elemente eines Coverages auszuwählen und anzuzeigen, ohne das Coverage selbst zu ändern oder ein neues erstellen zu müssen. 154 Kapitel 5. Netzwerkanalyse Netzwerke sind durch Linien verbundene Systeme, entlang derer Bewegungen von Menschen, Materialien, Informationen etc. stattfinden. Linienhafte Prozesse lassen sich in Geographischen Informationssystemen modellieren bzw. simulieren 5.1. Netzwerkanalyse - Tourenplanung Zunächst sollen die Grundlagen der Tourenplanung kurz angerissen werden. Routenplanung hat im Allgemeinen eine möglichst gute Einbindung vorgegebener Zielpunkte in eine zusammenhängende Reiseroute 1 einer Person zum Ziel. Grundlagen für die computergestützte Routenfindung sind dabei: • Streckennetz als topologisches Vektormodell • attributierte Streckenabschnitte • Algorithmen zur mathematischen Ermittlung der kürzesten Wege • Bedingungen für die Anwendung der Algorithmen auf das Streckennetz Im Bereich Tourenplanung können drei Grundfragen unterschieden werden: 5.1.1. Kürzester Weg Das Problem des kürzesten Weges (engl. „shortest path“) liegt allen Ansätzen zugrunde, die zurückzulegende Wegstrecke bezüglich der Wegkosten zu optimieren versuchen. Für die Wahl des kürzesten Weges müssen die Alternativstrecken, die zwei oder mehrere Orte miteinander verbinden, bewertet und verglichen werden. 5.1.2. Gravitation Das Problem der Gravitation betrifft die Suche nach dem nächstgelegenen Objekt einer bestimmten Objektart oder den Objekten einer Art innerhalb eines definierten Abstandes zum Ausgangspunkt. Eine Frage könnte also lauten: „Wo ist der nächste Briefkasten?“ oder „Welches sind die am nächsten gelegenen Restaurants?“ 5.1.3. Traveling-Salesman-Problem (TSP) Das TSP als kassisches Problem der Informatik beinhaltet die Ausgangsfragestellung für die Tourenplanung. Es handelt sich hierbei um die Ermittlung einer Besuchsroute durch eine durch Verkehrswege verbundene, gegebene Menge von Zielorten. Start und Ziel sind identisch, die einzelnen Routen bilden also eine Tour. Zielsetzung ist die Minimierung der zurückgelegten Entfernung (GRUPP 1987). 155 Kapitel 5. Netzwerkanalyse In der Regel basiert die Bewertung einer Strecke auf den durch sie verursachten Wegkosten. Diese basieren meist auf der Streckenlänge oder Zeit (als Quotienten aus Entfernung und Geschwindigkeit). Diese Wegkosten müssen aber in Abhängigkeit der Fragestellung modifiziert werden. Auf Grundlage solcher Routenalgorithmen wurde z.B. im Deep Map Projekt Programme zum Vorschlagen indiviueller Besichtigungstouren für Touristen entwickelt (Zipf und Röther 2000). Für den Benutzer dieser Module werden Strecken berechnet, die in Abhängigkeit individueller Angaben bezüglich des Verkehrsmittels, der zur Verfügung stehenden Zeit und persönlicher Präferenzen unterschiedlich ausfallen und auch die zu besuchenden Zielorte (Sehenswürdigkeiten auswählen). Eine Streckenbewertung für touristische Belange muß dabei Faktoren berücksichtigen, die von den für die Routenplanung üblichen Kriterien abweichen. Die Anforderung „kürzeste Strecke“ wird dabei durch „geringste individuelle Wegkosten“ als Maß für „attraktivste Strecke“ ersetzt. In realen Situationen sind Distanz oder Zeit nicht die einzigen Größen, wenn es darum geht, die für den Benutzer passende Tour zu ermitteln. So sind neben „harten“ Attributen wie Streckenlänge und benötigte Zeit, sowie die aus ihnen zu ermittelnden ökonomischen, ökologischen und sonstigen Kosten auch „weiche“ Streckeneigenschaften denkbar, die sich eher an subjektiven Eindrücken orientieren. 5.1.4. Netzwerkanalysen mit den Productivity Tools Unter der Kategorie Network befindet sich eine ganze Sammlung von Tools, die das Arbeiten mit Netzwerken sowie deren Analyse erleichtern. Dazu gehören Pathfinding oder Allocation Modeling. Unter der Option Location-Allocation befindet sich ein eigenes Pulldownmenü mit einer ganzen Reihe von weiteren Verzweigungen (vgl. Abb.). Abbildung 5-1. Das Productivity Tools Menü, Type = Network und das Location-Allocation-Pulldownmenü Ab Version 7.0 enthält ARC/INFO solche ArcTools-Menüs, die den Benutzer z.B. bei der Suche nach kürzesten oder kostengünstigsten Strecken unter Einbeziehung verschiedener Orte in einem Netzwerk unterstützen. Anwendungsbeispiele finden sich in der Logistik, Tourenoptimierung oder ähnlichem. Das PathfindingTool kann zwei Dinge finden: Einen Path, das ist die kürzeste (oder abhängig von einer Variablen am wenigsten aufwendige) Strecke in einem Netzsystem oder eine Tour. Letzteres wäre der effizienteste Weg zu mehreren Orten oder Haltestellen. Was wird für die Streckenfindung benötigt? Zunächst benötigt man ein Network Link Coverage, das als Link Thema im aktiven View gespeichert wird. Dieses Link-Thema enthält außer der Information über den Pfad zum Network Link Coverage die Variable Item, die den Widerstand auf dem Netzwerk definieren soll. Optional können noch Tabellen angegeben werden, die die Abbiegevorschriften definieren (Turn Table) oder Variablen, die Barrieren (Barriers) angeben. 156 Kapitel 5. Netzwerkanalyse Alle diese Informationen bestimmen die Kosten oder den Widerstand, der aufzubringen ist, wenn man sich durch das Netzwerk fortbewegt. Beispiele wären finanzielle Kosten (z.B. Fahrpreise im öPNV, Geschwindigkeitsbeschränkungen oder einfach die Entfernung). * TODO LN/AZ: erweitern Weiterführende Literatur: N. N., 2001, N.N., N.N.. Fußnoten 1. Die Begriffe Route und Tour werden in der Literatur nicht einheitlich verwendet. Im Allgemeinen versteht man unter einer Route die Wegstrecke zur Verbindung zweier oder mehrerer Punkte, wobei der Zielpunkt nicht gleich dem Ausgangspunkt ist. Eine Tour hingegen bezeichnet eine Rundreise, die im Allgemeinen der Besichtigung oder des Besuches mehrerer Objekte dient und zum Ausgangspunkt zurückführt. In diesem Sinne sollen die Begriffe Route und Tour im folgenden verwendet werden. Eine Tour kann in ihre einzelnen Routen und diese wiederum in Abschnitte zerlegt werden. Ziel der Tour ist, im Gegensatz zur Route, nicht das Erreichen des Zielpunktes, sondern vielmehr der Besuch der auf dem Weg liegenden Objekte. Wird von der Optimierung ganzer Fuhrparks gesprochen, ist von Tourendisposition (BARTELME, 1994) die Rede. 157 Kapitel 5. Netzwerkanalyse 158 Kapitel 6. Visualisierung ARC/INFO bietet verschiedene Möglichkeiten zur Ausgabe von Analyseergebnissen, sei es auf dem Bildschirm, auf Papierkarten oder in Form animierter Bildsequenzen. Auch hier kann die Auswahl von Features über die Attributtabellen eingeschränkt werden. In ARC/INFO gibt es mehrere Möglichkeiten zur Visualisierung von Analyseergebnissen. Neben der Bildschirmausgabe spielt die Ausgabe auf Papierkarten immer noch eine große Rolle. ARCTOOLS ermöglicht die interaktive Kartenerstellung. Einzelne Elemente werden über Menüs und Dialogboxen ausgewählt. Verschiedene Kartenlayouts sind vordefiniert und können verwendet werden. Die Karten werden in der Regel am Bildschirm entworfen. ARCPLOT wird dagegen über die Kommandozeile oder zuvor erstellte AMLs bedient. So ist es möglich, das Erscheinungsbild der Karten sehr genau festzulegen und eine große Zahl ähnlicher Karten, bei denen sich nur einzelne Variablen ändern, ohne Benutzereingriff erstellen zu lassen. Die Karten werden in der Regel vorher entworfen. Hilfreich ist es hierbei, das Layout vorher auf kariertem Papier einzuzeichnen, um die so ermittelten x- und y-Werte direkt in das Makro bzw. an der Kommandozeile eingeben zu können. * TODO AZ: verstaendlicher formulieren 6.1. Kartenerstellung mit ARCPLOT 6.1.1. Ausgabemedium Mit dem Befehl display trifft man die Auswahl des Ausgabemediums (Bildschirm, verschiedene Dateiformate). Für die Kartenausgabe empfiehlt es sich, das Layout zunächst am Bildschirm zu entwickeln und erst dann in ein Ausgabeformat umzuändern. Es ist auch möglich, nur einzelne Kartenelemente als Dateien zu exportieren und diese dann in anderen Graphikanwendungen einzubinden. Befehl Ausgabe display 9999 (graphischer) Bildschirm display 1040 display 1040 2 Graphics File (gra) Encapsulated PostScript (eps) 6.1.2. Angaben zur Kartengröße Um die Größe des Ausgabemediums und die Verhältnisse der einzelnen Kartenelemente zueinander festzulegen, müssen verschiedene Maße voreingestellt werden. Dazu dienen die folgenden Befehle: mapextent Ausschnitt aus der Karte, der angezeigt werden soll (kann ganzes Coverage sein oder Ausschnitt, der in Koordinaten angegeben wird) 159 Kapitel 6. Visualisierung pageunits Vorgabewert ist Zoll, deshalb sollte hier cm angegeben werden, um DIN-Formate komfortabler eingeben zu können. pagesize maplimits Die Größe des Kartenblattes in pageunits Die Ausdehnung des momentan aktiven Kartenausschnittes mapunits mapscale Karteneinheit Maßstab der Karte in Karteneinheiten mapposition mapinfo Ausrichtung der Karte innerhalb der maplimits Gibt momentane Einstellungen in Arcplot aus Die wichtigsten Kartenparameter werden in Abbildung 6-1 wiedergegeben. display bezeichnet die komplette Anzeige, also in der Regel das Fenster mit der Graphikausgabe. pagesize zeigt das zur Verfügung stehende Papierformat an, während mapextent einen rechteckigen Bereich für die Ausgabe von Karten reserviert. Der Kartenbereich, der dargestellt werden soll, wird mit maplimits definiert und muß etwas kleiner als die Werte für mapextent sein, falls Beschriftungen von Punktsignaturen über den Bereich der Karte hinausgehen, ansonsten kann er identisch sein. Abbildung 6-1. Wichtige Kartenparameter 6.1.3. Auswahl von Signaturen und Farbskalen Je nach Ausgabegerät (Bildschirm, Plotter, Farb- oder Schwarzweißdrucker) gibt es daran jeweils angepaßte Signaturendateien, die über einen Symbolschlüssel angesprochen werden können. Die Signaturdateien enthalten bis zu 999 Symbole. Es ist auch möglich, eigene Signaturdateien zu erstellen. Folgende Befehle kommen zum Einsatz: textfont textquality legt die Schriftart für das aktuell gültige Textsymbol fest sollte auf kern gesetzt werden - so werden die Abstände zwischen verschiedenen Buchstabenkombinationen besser angepaßt. textsize move Fontgröße in Punkt Position des folgenden Elements 160 Kapitel 6. Visualisierung text Text, der an der durch move festgelegten Position erscheinen soll. Die Ausrichtung wird mit cc usw. angegeben. shadeset Auswahl der Flächensignaturendatei. Kann mehrmals gewechselt werden, es ist jeweils das zuletzt angegebene Shadeset maßgebend. lineset Auswahl der Liniensignaturendatei markerset shadesymbol Auswahl der Punktsignaturendatei Legt aktuelles Flächensymbol fest linesymbol markersymbol Legt aktuelles Liniensymbol fest Legt aktuelles Punktsymbol fest textsymbol Legt aktuelles Textsymbol fest 6.1.4. Ausgabe von Coverage-Elementen arcs Zeichnet die (ausgewählten) Arcs eines Coverages mit der gerade gültigen Liniensignatur nodes polygons Zeichnet die Anfangs- und Endpunkte von Arcs mit der Aktuellen Punktsignatur (Winkel kann angegeben werden) Zeichnet die Polygonaußengrenzen mit der aktuellen Liniensignatur labels points Zeichnet die Polygonlabels mit der aktuellen Punktsignatur Zeichnet Punkte mit dem aktuellen Punktsymbol tics arclines Zeichnet die Tics mit einem speziellen Symbol Zeichnet die Linien eines Coverages mit verschiedenen Signaturen (z.B. entsprechend Attributwert) labelmarkers pointmarkers Zeichnet Polygonmarkierungen mit Polygonsignaturen für Attributwerte Zeichnet Punktelemente mit Punktsignaturen entsprechend den Attributwerten polygonshades Färbt Polygone den Attributwerten entsprechend ein polygontext Gibt den Inhalt eines Attributfeldes als Text aus 6.1.5. Benennung von Coverage-Elementen Attributinformationen der auf der Karte ausgegebenen Geometrieelemente können als Text ausgegeben werden. arctext polygontext Beschriftet Arcs mit Attributwerten Setzt Text aus Attributtabelle zur Kennzeichnung in Polygonflächen pointtext tictext Markiert Punktelemente mit Text aus Attributtabelle Setzt Text aus Attributtabelle neben Tic-Signaturen nodetext pointtext Beschriftet Nodes entsprechend ihren Attributwerten Beschriftet Punkte entsprechend ihren Attributwerten 161 Kapitel 6. Visualisierung 6.1.6. Eingrenzen der Auswahl (ARCPLOT) Im Gegensatz zu reselect unter ARChandelt es sich in ARCPLOT nur um eine temporäre Auswahl, die die darunterliegenden Coverages selbst nicht verändert. Mit writeselect und readselect läßt sich die Abfrage speichern. Dabei wird nur die Abfrage selbst gespeichert, nicht aber ihr Ergebnis. reselect Wählt anhand eingegebener Kritereien eine Teilmenge aus dem aktuellen Coverage aus aselect Fügt der momentanen Auswahl nach vorgebenenen Kriterien ausgewählte Elemente hinzu unselect writeselect Entfernt nach angegebenen Kriterien Teile der momentan ausgewählten Menge Speichert die Abfragekriterien readselect Greift auf gespeicherte Abfragekriterien zurück. 6.1.7. Kartographische Elemente hinzufügen Zu einer vollständigen Karte gehören neben der reinen Geometrieinformation noch weitere Elemente wie eine Legende, Kartentitel, Maßstabsangaben und ggfs. Nordpfeile. Diese Elemente lassen sich mit den folgenden Befehlen realisieren. line Zeichnet Linie draw box Verbindet letzten Endpunkt mit neuem Endpunkt Zeichnet Rechteck circle patch Zeichnet Kreis Zeichnet gefülltes Rechteck spot shade Zeichnet gefüllten Kreis Zeichnet gefülltes Polygon (aus mindestens 3 und maximal 500 Punkten) text textfile Gibt Text aus (Position muß zuvor mit move festgelegt werden) Gibt Textdatei aus (Position muß zuvor mit move festgelegt werden. marker keyarea Gibt das momentane Punktsymbol aus. Legt Bereich fest, in dem die Legende erscheinen soll keymarker keyline Zeichnet eine Legende für Punktsignaturen Zeichnet Legende für Liniensignaturen keyshade Zeichnet Legende für Polygonsignaturen 6.1.8. Ausgabe auf Papier oder in Dateien Soll das Ergebnis nicht nur einmalig am Bildschirm ausgegeben werden, so kann es mit den folgenden Befehlen gespeichert und in andere Grafik- bzw. Druckerformate exportiert werden. display 1040 gibt Dateien in .gra-File aus (Default). Zusätzlich ist auch die Ausgabe in Postscript oder verschiedene Grafikformate möglich. 162 Kapitel 6. Visualisierung map erstellt eine Kartendatei, die wieder ausgegeben werden kann plot Zeichnet .gra-Files etc. neu. In der folgenden Übung sollen verschiedene ARC-Befehle der letzten Sitzungen wiederholt werden und das Ergebnis mit ARCPLOT ausgegeben werden. Verwenden Sie den usage-Befehl und die Online-Hilfe von ARC/INFO, um die genaue Befehlssyntax für die einzelnen Befehle herauszufinden. Verwenden Sie die AML-Beispieldateien als Ausgangsmaterial (bsplot0.aml und bsplot1.aml). Fügen Sie in das Makro Kommentare (/*)ein, die die einzelnen Befehle näher erläutern. Erstellen Sie eine Karte der Größe DIN A3 aller Counties, bei der die County-Polygone entsprechend ihrer ID eingefärbt werden (shadeset colornames.shd) und die County-Namen in den Polygonen angegeben werden (polygontext. Erstellen Sie sich (auf Papier) eine Tabelle mit den LUC (Landuse Codes) aus landuse und der entsprechenden Beschreibung. Erstellen Sie ein Keyfile und geben Sie neben der Karte auch eine Legende an. * TODO LN: Keyfile erstellen Erstellen Sie eine Karte eines der folgenden Counties: Flathead, Lincoln, Madison, Garfield, Yellowstone, Beaverhead. Die Karte soll folgende Informationen enthalten: Eisenbahnnetz (schwarz), Straßennetz (rot), Flüsse (blau), Waldflächen (hellgrün). Beachten Sie die Reihenfolge, in der die einzelnen Elemente auf dem Bildschirm bzw. der Karte dargestellt werden. Fügen sie den Maßstab sowie eine Legende hinzu, einen Nordpfeil nur dann, wenn die Karte nicht nach Norden ausgerichtet ist. Bestimmen Sie für die Counties der vorangegangenen Übungsaufgabe diejenigen Flächen, die als mostly cropland klassifiziert wurden (landuse). Erstellen Sie eine Karte aller Flächen, die die beiden obigen Bedingungen erfüllen und maximal 800 m von einem Fluß entfernt liegen. Erstellen Sie eine Karte, die die Ergebnisse der Suche nach Restaurantstandorten präsentiert. Zur Orientierung sollten Sie neben den Standorten (markerset template.mrk, markersymbol 1022) folgende Informationsebenen einfügen: highways, railroads, hydrogr, natforest. Wählen Sie sinnvolle Farben und Liniensignaturen aus und beachten Sie dabei die Zeichenreihenfolge (Strassen sollen z.B. nach Wald gezeichnet werden und nicht umgekehrt) Dokumentieren Sie jeweils die einzelnen Arbeitsschritte und erstellen Sie ein AML-Makro, das eine Karte im Format A4 produziert. Eine Möglichkeit, die Karte aus der obigen Übung zu produzieren, sähe so aus: Wir beginnen mit einem Kommentar, der vom Programm ignoriert wird, uns aber später auf einen Blick den Zweck des Makros in Erinnerung ruft. /* karte.aml /* erzeugt A4-Karte von Garfield County, Montana 163 Kapitel 6. Visualisierung Um wiederkehrende Eingaben zu vermeiden bzw. das Makro schnell für ein anderes County umschreiben zu können, ist es sinnvoll, wiederkehrende Werte mit Variablen zu belegen. Variablen müssen definiert werden, bevor man sich auf sie beziehen kann. Einen Sonderfall stellt die Direktive &args dar, die als erster Befehl im Programm erscheinen muß. Jedes Wort nach &args wird zur Variablen. Ruft man nun das Programm wie folgt auf Arc: &run karte.aml garfield so wird die erste Variable hinter &args mit dem Wert garfield belegt. Arc: &args cover1 Da wir das Programm von ARCaufgerufen haben, wechseln wir in ARCPLOT. &station 9999 arcplot Falls wir dieses Makro schon benutzt haben, existiert möglicherweise bereits eine Map Composition mit dem gleichen Namen. Das Programm würde in diesem Fall mit einer Fehlermeldung abbrechen. Daher prüft dieser Programmteil, ob bereits eine Map Composition existiert und löscht diese gegebenenfalls. Die Variable cover1 wird jeweils gegen den beim Programmaufruf angegebenen Name ersetzt. &if [exists %cover1%map -directory] &then &do killmap %cover1%map &type %cover1%map wurde geloescht &end Jetzt können wir eine neue Map Composition erstellen. map %cover1%map Wir wollen die Karte zunächst am Bildschirm betrachten. Deshalb geben wir als Display zunächst den Bildschirm an. Wenn wir unsere Karte auf einem Postscript-Drucker ausgeben wollen, müssen wir die Zeile display 9999 3 mit einem Kommentarzeichen versehen und dafür die Kommentare vor den zwei folgenden Zeilen entfernen. Das Makro verwendet dann die 1040-Variante von display. Den Name der Ausgabedatei geben wir in der nachfolgenden Zeile an. display 9999 3 /* display 1040 2 /*%cover1%.eps Jetzt legen wir einige Voreinstellungen für unsere Karte fest. mape %cover1% /* Kartenausdehnung shadeset color.shd /* Farbtabelle fuer Polygone festlegen lineset color.lin /* Farbtabelle fuer Linien festlegen pageunits cm /* Masseinheit der Seite pagesize 29.7 21 /* Seitengroesse A4 maplimits 1 1 28.7 20 /* Maximale Kartenausdehnung box 0.9 0.9 28.8 20.1 /* Rahmen um Karte 164 Kapitel 6. Visualisierung mappos cen cen mapunits meters mapscale 750000 textset font.txt textsymbol 6 textquality kern textsize 8 pt /* /* /* /* /* /* /* Karte soll zentriert dargestellt werden Meter als Einheit Masstab Schrifttabelle Schriftart Schriftsatzqualitaet Textgroesse Nun können wir die Polygone, die dargestellt werden sollen auswählen. resel %cover1% poly %cover1%-id ne 0 Die so eingeschränkte Auswahl für das beim Aufruf angegebene Coverage wird so beim nächsten Zeichenbefehls für dieses Coverage wirksam: polygonshades %cover1% %cover1%-id Nur die über reselect ausgewählten Polygone werden gezeichnet. Die Farbe wird aus dem Attributwert luc ermittelt. Die übrigen Elemente werden komplett gezeichnet, die Farbe können wir direkt angeben: arclines hydrogr 5 arclines railroads 7 arclines highways 13 arcs %cover1% Schließlich benötigen wir noch die kartographischen Elemente: /* Kartentitel textsize 24 pt move 5.5 18.3 Text ’Fried Green Tomatoes - Locations’ cc /* Legende textsize 12 pt keyarea 2 15 8 17.5 /* legt Bereich fuer die Legende fest keyseparation 0.2 0.2 Die eigentlichen Legenden werden mit Hilfe externer Keyfiles erstellt. Dabei sollte man darauf achten, daß am Dateianfang und Dateiende je eine Leerzeile enthalten sind. keyshade keyshade.key keyline roads.key nobox Das Keyfile roads.key kann eine einfache ASCII-Textdatei sein. Sie hat folgendes Format: .12 Interstate .15 Highway .17 Regional Road .19 165 Kapitel 6. Visualisierung Local Road textsize 14 pt move 18.6 22 text ’1:750.000’ Wir können ARCPLOT verlassen und das Ergebnis mit gv betrachten oder auf einem Postscript-Drucker ausgeben. q gv %cover1%.eps& 6.2. Ausgabe mit MapTools 6.2.1. Erzeugen von Themes und Views Ein View zeigt ein oder mehrere Themes geographischer Daten, welche denselben Raumausschnitt mittels unterschiedlicher Daten beschreiben. Dabei ist ein Theme eine Ansammlung geographischer logisch zusammengehöriger Objekte, wie sie für Coverages, Tins, Grids o.ä. erstellt wurden, d.h. ein Oberbegriff für letztgenannte Elemente. Zu den mit einem View abgespeicherten Daten gehören neben den aktiven Themes, oder der Kartengröße (Map Extent) beispielsweise noch die zur Darstellung der einzelnen Objekte und Ausprägungen etc. benutzten Zeichen. 6.2.1.1. Erstellen / öffnen eines Views Wie gewohnt wird ARCTOOLS gestartet und Map Tools OK gewählt. Das MapTools-Fenster erscheint. Abbildung 6-2. Das Map Tools Hauptfenster Zunächst benötigen wir das unter View erscheinende Pull-Down-Menü. Ein neuer View wird mit New... erstellt (dies wird im nächsten Abschnitt (Editieren eines Views) sinngemäß erläutert). 166 Kapitel 6. Visualisierung Abbildung 6-3. MapTools mit View Pulldownmenü Mit Open unter dem View-Pulldownmenü wird ein schon existierender _view (vor Version 7: .view) Datei geladen. Der View wird (nach gewisser Zeit) zusammen mit dem Theme Manager auf dem Bildschirm dargestellt. In letzterem wird in der Draw List das aktive Theme benannt. Sind mehrere Themes vorhanden, werden mit Draw alle aufgeführten (in der angezeigten Reihenfolge) dargestellt (mit Draw choice nur das unterlegte Theme). Mittels der >>-Pfeile können die Themes in die Draw List aufgenommen werden und umgekehrt. Die Reihenfolge bei Draw kann dementsprechend durch die xx-Pfeile verändert werden. Auf den in der Themes-Liste gewählten Themes werden mit den darunter befindlichen Knöpfen verschiedene Operationen wie Erstellen, Editieren, Löschen oder Kopieren von Themes ausgeführt. Abbildung 6-4. Der Add New Theme Manager Abbildung 6-5. Das Theme Manager Menü 6.2.1.2. Editieren eines Views Nach Wahl des Edit...-Knopfes bzw. nach MapTools View New erscheint je nach gewähltem Theme und Feature Class das entsprechende Properties- Menü - z.B. das Polygon Coverage Properties -Fenster, in dessen ersten beiden Zeilen das Theme mit Name und Pfad angegeben wird. Die übrigen Einträge machen Angaben zur Darstellungsweise der benutzten Symbole etc. Zur Veränderung der Polygonumrandung muß das Polygon outlines Feld gewählt werden. Es sind nur die in einem bestimmten Lineset gespeicherten Gestaltungsmöglichkeiten verfügbar. Werden andere gewünscht, muß ein neuer Lineset gewählt bzw. erstellt werden. 167 Kapitel 6. Visualisierung Die Wahl eines neuen Lineset geschieht genauso wie bei den Shadesets für die Füllmuster der Polygone, in dem nach Betätigen des Knopfes Advanced... erscheinendem Fenster. In diesem kann mit Symbolset... aus verschiedenen Dateien, in denen die unterschiedlichen Farbreihen und Muster gespeichert sind, gewählt werden. Die Namenskonvention ist Name.SHD (Shadeset) für Polygonfüllmuster, Name.LIN (Lineset) für die die Linienarten enthaltende Datei sowie Name.MRK (Markerset) für Punktsymboldateien, sogenannte Markersets. In der Map-Liste hat man unter Preferences die Möglichkeit, die Line-, Marker- oder Shadesets für eine Kartenkomposition jederzeit zu ändern. Abbildung 6-6. Das Polygon Coverage Properties Menü 6.2.1.3. Klassenbildung u. Farbzuweisung (View-/Legendenerstellung) Der Discrete Legend Editor hat den Zweck, die Legende für die spätere kartographische Umsetzung in einer Map zu definieren, d.h. den unterschiedlichen Variablenausprägungen geeignetet zu klassifizieren und diesen Klassen Farben und Namen zuzuordnen. D.h. es wird schon hier die Legende für eine spätere kartographische Darstellung in einer Map definiert. Zuächst muß dazu die darzustellende Variable unter Attribute (rechte Maustaste über dem Strich drücken) ausgewählt werden. Dann kann sie mit Classify... nach verschiedenen Methoden klassifiziert werden. Abbildung 6-7. Discrete Legend Editor (Bsp. für Linien-Coverages Die Werte der Klassengrenzen tauchen in der Value-Meaning Scrollingliste des Discrete Legend Editor Menüs auf. Nun können den Klassen Farben zugeordnet werden: • Unterlegen einer Klasse durch Anklicken in der Value-Meaning Scrollingliste dunkel • Wählen einer Farbe in der rechten Scrollingliste • Eintragen eines Klassennamen in das Feld Meaning, wie er später in der Legende erscheinen soll • Bestätigen durch den Add-Button (bzw. Update, falls schon Zuweisungen existieren). 168 Kapitel 6. Visualisierung Abbildung 6-8. Das Classification - Menü Die Bedeutung der Werte (Meaning), d.h. die Klassennamen werden an die entsprechende Stelle in der Value-Meaning Scrollingliste geschrieben. Nach OK werden die Zuweisungen in einer LookupTable (*.lut) gespeichert. Auf diese wird von nun an immer zugegriffen, wenn dieser View visualisiert wird. Später bei der Kartenerstellung werden die Klassennamen in der Legende aufgeführt. Selbstverständlich muß der View zuvor gespeichert werden. View MapTools Save (as) Zusätzlich besteht unter MapTools View Save as Macro die Möglichkeit, die View-Definition direkt als AML-Makro zu speichern. Dieses AML kann man gegebenenfalls leicht editieren oder erweitern oder Namen durch Variablen austauschen. Der Vorteil hierbei ist, daß man das Ergebnis schon vorher gesehen hat. So kann man den Nordpfeil interaktiv an eine passende Stelle rücken oder die Wirkung von Farbe überprüfen. Der Dialog unterscheidet sich nur durch das standardmäsige Setzen der Namenserweiterung .aml. Abbildung 6-9. Der Save File as Macro Dialog 6.2.1.4. Variablenausprägung als Text Im Polygon Coverage Properties Menü kann mittels Text... auch die Ausprägung einer Variaben zusätzlich zu einer eventuellen Choropletendarstellung als Text in die Polygone (bzw. an die Linien oder Punkte) gesetzt werden. Die Darstellung des Textes kann editiert werden. Im erscheinenden Coverage Text Properties Fenster wird die Variable (Attribute), deren Ausprägungen angezeigt werden soll, gewählt. Ebenso sind die entsprechenden Fonts, Farben, Größen etc. festzulegen. Bei den Größenangabe der Fonts ist zu beachten, daß dies explizite Werte sind, die bei einer Größenveränderung der Karte nicht automatisch angepaßt werden, sondern einzeln geändert werden müssen. Standardmäßig wird nur der Text innerhalb eines Polygons angezeigt, der auch vollständig in dieses paßt. Standardmäßig sind alle Variablen, die in der .PAT (.AAT, .NAT) zu Verfügung stehen für Zeichen- oder Analyseoperationen aktiviert. Sie müssen nur noch ausgewählt werden. 169 Kapitel 6. Visualisierung Abbildung 6-10. Das CoverageText Properties Menü 6.2.2. Weitere Hilfsmittel beim Umgang mit Views 6.2.2.1. Zoomen Durch Wahl von Pan/Zoom... im View-Menü erscheint das abgebildete Fenster. Durch diese Zoom-Tools kann die Ausschnittgröße verändert werden. Ihre Wirkung kann spielerisch erlernt werden. Dabei kann dieselbe Funktion mehrmals hintereinander ausgeführt werden. Durch den rechten Mausknopf wird die Funktion abgebrochen. Abbildung 6-11. Das Zoom Menü 6.2.2.2. Abfragewerkzeuge Im View-Pulldown-Menü existiert der Button Tools... . Dieser aktiviert Hilfsmittel die, ein gewähltes Polygon identifizieren, über die zu ihm gehörigen Variablenwerte Auskunft geben, das Zoom-Fenster öffnen oder räumliche oder logische Selektierungsmöglichkeiten ermöglichen. Durch das Snapshot-Tool können schnell Arbeitskarten ausgedruckt werden. Dieses wird durch Mausdruck auf den Kamera-Schaltfläche im Tools-Fenster aktiviert. Abbildung 6-12. Das Tool Menü Es müssen die Ausgabegröße (Output size) -standardmäßig sind Inches vorgesehen - und das ZielDateiformat angegeben werden. 170 Kapitel 6. Visualisierung Weitere Optionen geben an, ob um die Seite ein einfacher Rahmen gezeichnet wird (Include border around page), und ein über ArcTools außer Angabe des Textes nicht weiter formatierbarer Titel (links oben) hinzugefügt wird. Die Dateien wird entweder gespeichert oder kann direkt an einen installierten Drucker gesendet werden (Send to output using). Es ist also keine ganz freie Definition der Papiergröße oder gar die Einbeziehung zusätzlicher weiterer Elemente möglich. Hierzu ist das Erstellen einer Karte, d.h. eines Map Layouts unter MapTools Map notwendig. Dies wird im nächsten Kapitel genauer erklärt. Abbildung 6-13. Das Snapshot Menü 6.3. Kartenerstellung Bisher wurde die Erzeugung von Views dargestellt. Nun soll das Ergebnis der Analysearbeit kartographisch umgesetzt, d.h. in einer vollständigen Karte dargestellt werden. Views dienen hier der Wiedergabe des eigentlichen thematischen Karteninhaltes. Im Gegensatz zum View kann eine Karte (Map) jedoch weitergehende Gestaltungsmerkmale beinhalten. Mit MapTools wurde ansatzweise eine Kartographiesoftware in ARC/INFO integriert. Diese soll einige Arbeitsschritte wie das Erstellen von Legenden, Maßstäben, Windrosen, Beschriftungen, etc. erleichtern. Dabei wird die Ausstattung von spezialisierten Kartographieprogrammen jedoch nicht erreicht. Darüber hinaus gehende Gestaltungsmöglichkeiten bietet die zeilenorientierte Arbeitsweise in ARC/INFO, die wegen ihrer Mächtigkeit aber auch sehr komplex ist. Auf der Grundlage von AML haben Drittanbieter weitere spezialiserte Kartographiemodule geschaffen, die bei Bedarf zusätzlich erworben werden können. Eine weitere Möglichkeit besteht darin, die Karte mittels des Produktes ARCVIEW von ESRI zu erstellen, das für die unterschiedlichsten Plattformen (Windows, Unix, Macintosh) verfügbar ist. Da schon diverse Publikationen zu ARCVIEW existieren, wollen wir auf diese Möglichkeit in diesem Rahmen nicht näher eingehen. Es sollen nur kurz die Vor- und Nachteile gegenübergestellt werden. Vorteile von ARCVIEW • preisgünstiges Desktop-System für viele Platformen. • auch unter Standard-PCs zu verwenden, daher für einen breiten Personenkreis interessant (es kann parallel an der Kartenerstellung mit Avenue gearbeitet werden, ohne ARC/INFO-Lizenzen zu nutzen). • Für Anwender mit Windows-Erfahrung verhältnismäßig einfach zu bedienen. 171 Kapitel 6. Visualisierung • Durch die objektorientierte Makrosprache Avenue anpaß- und erweiterbar. Die Automatisierung von Arbeitsabläufen ist dadurch möglich. • Vorgabe von Default-Layouts für die Kartengestaltung ist möglich. • Leichter Import von Geometie- und Sachdaten aus ARC/INFO in ArcView. • Sachdaten werden in der Regel in DBF-Dateien gehalten, so daß andere Windows-Applikationen diese leicht mitbenutzen können. Nachteile • ArcView hat einen geringeren Funktionsumfang als ARC/INFO. • Sachdaten und Geometrien werden in der Regel aus ARC/INFO exportiert, d.h. sie liegen damit u.U. doppelt vor - mit all den Problemen der Integrität, Sicherung und Aktualisierung. • In ARC/INFO erstellte Views sind nicht verwendbar. Wir werden im Folgenden die Kartenerstellung mit den MapTools erläutern, da diese in ArcTools integriert sind und mittlerweile auch schon ohne die zeilenorientierte Befehlseingabe sehr unfangreiche Möglichkeiten bieten. Außerdem kann man die in ARC/INFO schon erstellten Views direkt verwenden. Zum erlernenen von ArcView verweisen wir auf die entsprechenden Fachbücher. Aus den früher erstellten Views soll nun eine komplette Karte (d.h. mit kartographischen Elementen wie Legende, Nordpfeil, Titel etc.) erstellt werden. Es können selbstverständlich mehrere Views (mit jeweils mehreren Themen (Themes) in einer Karte gemeinsam dargestellt werden. Diese Karte kann letztendlich in ein Grafikformat umgewandelt werden, das eine Hardcopyausgabe per Drucker oder die Weiterverarbeitung in einer Graphiksoftware (z.B. Adobe Illustrator, Corel Draw) ermöglicht. Dies wird in Kapitel Kapitel 6 erläutert. Die folgenden Arbeitschritte werden zunächst alle unter den Folgemenüs des Pulldownmenüpunktes Map in MapTools ausgeführt. Zur Erstellung einer neuen Karte muß hier MapTools Map New... gewählt werden. Zunächst wird das grobe Layoutschema festgelegt, also das Format, Größenangaben, oder die Anordnung der Kartenelemente zueinander. Bei Drücken des Schaltknopfes Custom... können einige Angaben zur Seitengröße etc. frei definiert werden. Abbildung 6-14. Das Map Menü Layout Properties Templates OK 172 Kapitel 6. Visualisierung Abbildung 6-15. Das Map Template Menü Abbildung 6-16. Seiteneigenschaften: Das Page Properties Menü Nun ist zwar eine untitled.lyt-Datei definiert, jedoch enthält sie noch keinerlei kartographische Elemente, sondern nur „Reservierungen“ für diese. Doch erscheinen der Map Object Manager sowie das Add new Object Menü schon auf dem Bildschirm. Es empfiehlt sich, statt eines vorgefertigten Templates, eigene Layoutschablonen zu erstellen. Grundsätzlich sollte in einem Projekt eine Template.lyt Datei erstellt werden, in der die immer wiederkehrenden Kartenelemente und ihre Position gespeichert sind und nur durch den jeweils benötigten View aktualisiert werden brauchen. Dies erleichtert das automatisierte Erstellen einer großen Anzahl von Karten mit einheitlicher Gestaltung. 6.3.1. Der Map Object Manager Durch Add New Object können die Objekte View (der eigentliche Karteninhalt), scalebar (Maßstab), text strings (Zeichenketten), text file (ganze Textblöcke aus normalen Textdateien), North arrow (Nordpfeil), oder einfache gestalterische Elemente wie Rechtecke mit oder ohne Füllung, Linien, Kreise etc. nacheinander in die Karte aufgenommen werden und durch Wahl der Schaltfläche Edit nachträglich verändert werden. Es ist möglich mehrere Elemente gleichen Types zu verwenden. Dazu müssen ihnen bei dem Erstellen mit New oder Copy zur Identifizierung neue Namen verliehen werden. Abbildung 6-17. Der Map Object Manager 173 Kapitel 6. Visualisierung Abbildung 6-18. Das Add New Object Menü 6.3.2. Einstellung der Zeichenumgebung Zur genaueren Positionierung der einzelnen kartographischen Objekte kann ein Hilfsgitter mittels Snap to grid... über die Kartenfläche gelegt werden. Ist in diesem Fenster zusätzlich Grid Snap aktiviert, wird das gerade bearbeitete Objekt dem der Maus nächstgelegenen Gitterpunkt zugeordnet. Der Abstand der Gitterpunkte kann hier ebenfalls bestimmt werden. Abbildung 6-19. Das Snap to Grid Menü Mit Preferences... im Map-Menü können wiederum wie bei den Views im View-Menü die StandardFarbreihen (Shadesets, Linesets,...) bestimmt werden. Ebenfalls im Map-Menü befindet sich unter Page setup... die Möglichkeit, die Kartengröße zu verändern. Dabei muß berücksichtigt werden, daß dadurch alle Kartenobjekte betroffen werden. Wenn es sich wie bei Textfonts um absolute Werte handelt, werden diese nicht automatisch angepaßt. Eine Auswahl von DIN-Seitengrößen wird durch Wahl von cm als Pageunits ermöglicht. Standardmäßig sind die amerikanischen Seitengrößen in Zoll vorgegeben. 6.4. Hinzufügen neuer Kartenobjekte Die Fenster, die beim Hinzufügen der einzelnen Kartenobjekte erscheinen, ähneln sich und sind durch eigenes Probieren relativ leicht handzuhaben. Deshalb werden an dieser Stelle nur das grundsätzliche Vorgehen und Besonderheiten einiger wichtigster Kartenelemente beschrieben. Das beim erstmaligen Aufruf eines bestimmten Objektes (Add new object) erscheinende PropertiesFenster ist mit dem beim Editieren (Edit... im Map Object Manager) erscheinenden identisch. MapTools Map New/Open Map Map Object Manager Add New Object View 6.4.1. View 174 Kapitel 6. Visualisierung Wählt man View als den wichtigsten Teil einer Karte aus, so erscheint das View Properties-Menü. Mit Druck des rechten Mausknopfes in dessen zweiter Zeile -- unter View file -- erscheint wie gewohnt der Dateidialog zum Suchen einer *.view-Datei. In der ersten Zeile des Menüs mit der Bezeichnung identifier wird der Typ des kartographischen Objekts eingetragen. Dieser Name kann vom Benutzer frei geändert werden. Dies macht wie erwähnt dann Sinn, wenn mehrere Objekte des gleichen Typs benutzt werden (z.B. Textstring, Box,...). Einen ersten Eindruck vermittelt ein Preview. Abbildung 6-20. Das View Properties Menü Nun kann die Position des Views angepaßt werden. Dabei bestehen die Möglichkeiten, dies automatisch erledigen zu lassen, konkrete Eckkoordinaten des View origin anzugeben, oder nach Betätigen des Fadenkreuz-Knopfes bei Auto Scale, einfach mit der Maus am Bildschirm das gewünschte Fenster aufzuziehen. Mit view origin kann dieser in eine der vier Ecken der Karte oder ins Zentrum gerückt werden. Der errechnete Maßstab wird unter Scale angezeigt. Er kann editiert werden, was selbstverständlich auf die Darstellungsgröße des Views Auswirkungen hat. Schließlich können mit Line properties Farbe und Gestaltung der Gebietsgrenzen verändert werden, sofern sie mit Umrandung (Outline) dargestellt werden sollen. Basierend auf dem aktuellen Kartenmaßstab und der Einheit wird die gegenwärtige Seitengröße unter Current Pagesize angegeben, ebenso die Needed Pagesize, d.h. die minimale Größe zur Darstellung des gesamten Views. Die zum Schluß gewählten Einstellungen von Scale (Maßstab) und Unit (Maßeinheit) werden später beim Editieren des Maßstabes benötigt. Man sollte sie sich daher unbedingt notieren. Nach einem letzten Preview werden die Einstellungen mit OK festgehalten (noch temporär, d.h. Speichern ist nötig). MapTools View Save as... 6.4.2. Legende Zur Erstellung einer Legende muß im Add New Object Menü key gewählt werden. Add New Object key Abbildung 6-21. Das Key Properties Menü 175 Kapitel 6. Visualisierung Im erscheinenden Key Properties Fenster wird zunächst der entsprechende View gewählt. Die Lage und Größe der gesamten Legende kann unter Limits angegeben werden (vgl. oben). Weitere Optionen sind Größe der Rechtecke mit den Farbzuweisungen (width und height), ihr Abstand zueinander (spacing), das Aussehen ihrer Umrandung (box(ed)) und des Textes. Die jeweiligen Größen können für die Legenden der drei Darstellungstypen (für die verschiedenen Themes eines Views), Flächen (Shade), Linien (Line) und Punktsymbole (Marker) einzeln gewählt werden. Sämtliche Legendenelemente für einen Key müssen aber in der zuerst aufgezogenen Limits-Box Platz finden. Werden mehrere Views (sinnvollerweise nebeneinander und nicht direkt übereinander) dargestellt, kann selbstverständlich für jeden eine eigene Legende gezeichnet werden. In diesem Fall erscheint unter View nach Betätigen der rechten Maustaste eine Auswahlliste mit den gerade aktuellen Views. 6.4.3. Maßstab Ein Maßstab wird mit Wahl von scalebar Add New Object angelegt. Im Scale Bar Properties- Menü müssen nun die bei der Einbindung des Views in die Karte gewählten Maßstabs- und Einheiten-Werte (Scale, Units) angegeben werden. Plazierung und Wahl der Linien- und Textoptionen erfolgen entsprechend wie unter View beschrieben. Weitere Gestaltungsmöglichkeiten sind die Unterteilung des Maßstabes in Intervalle, sowie die dargestellte Länge. Diese wird durch die Angabe des Wertes bei End definiert. Wird der Maßstab unverhältnismäßig dick und mit großer Beschriftung gezeichnet (unter Bar Height: und Text...) kann es zu einer ungewollten Überlagerung der Angabe der Maßstabsgröße und des Maßstabes selbst kommen, da die Anpassung des Abstandes der einzelnen Elemente zueinander offensichtlich nicht fehlerfrei funktioniert.xxxxxxx Abbildung 6-22. Das Scalebar Properties Menü 6.4.4. Nordpfeil Unter Add New Object North Arrow erscheint ein Menü aus dem man sich eine passende Windrose oder Pfeilsymbol auswählen kann. Dies geschieht duch Anklicken des gewünschten Exemplars in der linken Auswahlliste. Die Auswahl erscheint dann im rechten Graphikfeld. Nicht nur Ort, Größe und Farbe können definiert werden, sondern auch der Winkel. Standardmäßig zeigt die Nordspitze senkrecht zum oberen Kartenrand. 176 Kapitel 6. Visualisierung Abbildung 6-23. Das North Arrow Properties Menü 6.4.5. Text, Rahmen, Grafik etc. Abbildung 6-24. Das Text String Properties Menü Das Einfügen zusätzlicher Kartenelemente wie Text (text) für Titel, Quellenangaben etc., einen Rahmen um die gesamte Karte oder ihrer Teile mittels Neatline, etc. bereitet nach Durchführung der bisher beschriebenen Schritte sicherlich keine grundsätzlichen Schwierigkeiten mehr. Sinnvolle Objektarten sind Textblöcke aus Textdateien, Postscript- oder ARC/INFO-Graphiken (Images) z.B. für Logos etc. oder rechteckige Flächen (Primitives: Shaded Boxes), die sich beispielsweise gut für farbige Hintergrundgestaltung eignen. Unter der Schaltfläche Symbol properties... verbirgt sich folgendes Menü mit weitreichenden Gestaltungsmöglichkeiten für Text. Abbildung 6-25. Das Text Symbol Properties Menü Abbildung 6-26. Das More Text Symbol Properties Menü 177 Kapitel 6. Visualisierung Als weitere Kartenelemente sind eine ganze Reihe von Graphikprimitiven wie Linien, Punktsymbole (Marker), Rechtecke oder Polygone als Map Objects verfügbar. Das Menü für Rechtecke mit Flächenfarben (Box Fill) sieht folgendermaßen aus: Abbildung 6-27. Das Shaded Box Properties Menü Hier könen mittels Shade properties die Füllfarben der Rechtecke bestimmt werden. Zusätzlich sind dann mittels CUSTOM... noch völlig freie Farbdefinitionen möglich. Dabei ist zu beachten, daß die Ausgabe der Farben am Bildschirm und auf einem Drucker oft unterschiedlich ausfällt. Daher sollten geeignete ShadeSets definiert werden. Es existiert die Option full page, mit der das gesamte Kartenblatt gefüllt wird. Bei fast allen Menüs besteht die Möglichkeit, mittels Preview die Veränderungen vorab anzusehen, bevor sie mit OK entgültig übernommen werden. Es können verschiedene ShadeSets gewählt werden, in denen die Farb- und Musterausprägungen für Flächenfüllungen gespeichert sind (ebenso gilt dies für Line-Sets bei Linien oder MarkerSets für Punktsymbole). Zusätzlich besteht über den letzten Eintrag CUSTOM... der jeweiligen Scrolling-Liste die Möglichkeit, eigene Symbole und Farben zu definieren. Die Definition einer benutzerdefinierten Farbe erfolgt über das abgebildete Custom Color Properties Menü. Abbildung 6-28. Das Shade Properties Menü Abbildung 6-29. Das Custom Color Properties Menü 6.4.6. Erstellen von Diagrammen in Karten Außerdem gibt es die Möglichkeit direkt aus INFO-Tabellen Graphiken und Diagramme (Balkendiagram- 178 Kapitel 6. Visualisierung me, oder Punktplots etc.) zu erstellen. Dafür existieren die Diagrammtypen Point, Bar, Line und Shade. Die Einstellungen werden im Graph Properties Menü vorgenommen. Add New Map Object Graph Es muß eine Info-Tabelle als Datenquelle gewählt werden und in der Karte ein Rechteck aufgezogen werden, in dem das Diagramm positioniert werden soll. Abbildung 6-30. Das Graph Properties Menü 6.4.7. Speichern der Karte Sobald Sie mit der Kartengestaltung zufrieden sind, kann im ursprünglichen MapTools Menü die Karte gespeichert werden. File MapTools Save... bzw. Save as... Die Endung _lyt (in den Versionen vor Version 7 .lyt) wird zur Kennzeichnung eines Kartenlayouts an den Namen angehängt. Unter: MapTools Tools Properties zeigt ein Popup-Menü einige Metainfomationen wie das Erstallungsdatum, den Berarbeiter oder verwendete Farbreihen zu der aktuellen Karte an und erlaubt es, Bemerkungen hinzuzufügen. Abbildung 6-31. Das Layout Properties Menü 6.5. Drucken einer Karte Wurde eine Karte in ARCTOOLS erstellt und als Map Layout (_lyt) gespeichert, kann diese sehr leicht in ein weiteres Grafikformat umgewandelt werden. Hierzu zählen das ARC/INFO-eigene Graphics FileFormat (.gra), das als Grundlage für weitere Druckoptionen dient oder verschiedene Industriestandards wie (Encapsulated) Postscript, CGM (Computer Graphics Metafile) oder Adobe Illustrator. Außerdem 179 Kapitel 6. Visualisierung werden diverse druckerspezifische Formate (Calcomp, HPGL,...) unterstützt. Wichtig dabei ist, sich über gewisse Plattformabhängigkeiten der verschiedenen Formate kundig zu machen, bzw. über die Unterschiede einzelner Versionen der Formate. Wurde eine Karte z.B. in eine Postscript-Datei geschrieben, kann diese direkt an einen Potscript-fähigen Drucker gesendet werden, entsprechendes gilt natürlich für HPGL oder RTL. Unter UNIX funktioniert dies z.B. mit dem Befehl: lpr -Pdruckername dateiname.ps, wobei -Pdruckername die gewünschte Druckerwarteschleife darstellt, unter DOS mit: copy Dateiname.ps lpt1 (wenn an LPT1 ein Postscriptdrucker angeschlossen ist). Eine ARC/INFO-(Encapsulated) Postscript-Datei (encapsulated) beginnt mit %!PS-Adobe-2.0 EPSF-1.2 %%Creator: ARC/INFO Version 7.1.1 und endet mit %%EOF Dies kann man sich z.B. in einem Texteditor anzeigen lassen. Unter Unix bedient man sich der Kommandos head und tail. Folgendermaßen gelangt man zu den entsprechenden Menüs: Map MapTools MapTools Map Create Metafile Plotting... Im Menü Plotting utilities kann z.B. direkt ein an den Rechner angeschlossener und konfigurierter Drucker gewählt werden oder der Ausdruck gegebenenfalls rotiert werden, wenn z.B. im Querformat gedruckt werden soll. i Tip: Bitmaps in Karten Beim Erstellen von Karten, die Bitmaps beinhalten, können die Druckdateien schnell sehr groß werden und so eventuell gar nicht gedruckt werden. Um dies zu vermeiden und dennoch eine hohe Druckauflösung zu erreichen, sollte man die Auflösung von in Karten enthaltenen enthaltenen Bitmaps (z.B. bei display) auf die Hälfte bis ein Viertel der Auflösung des Ausgabegerätes reduzieren, z.B. bei einem 600-dpi-Plotter auf 200 dpi. Dies reicht in der Regel immer noch für eine Wiedergabe ohne auffällig große Pixel. Die Auflösung der Vektorgraphik bleibt davon unberührt. Wichtig ist hierbei nicht die tatsächliche Auflösung der Bitmaps sondern die Einstellung der Option Resolution beim display-Befehl. 6.6. ArcPress 180 Kapitel 6. Visualisierung Abbildung 6-32. Die Metafile Format und Plotting Utilities Menüs Weiterführende Literatur: Hilary M. Hearnshaw und David J. Unwin, 1994, Visualization in Geographical Information Systems, Chichester: John Wiley. Alan M. Maceachren und D. R. Fraser Taylor, 1994, Visualization in Modern Cartography, Oxford: Pergamon/Elsevier. Heidrun Schumann und Wolfgang Müller, 2000, Visualisierung: Grundlagen und allgemeine Methoden, Berlin, Heidelberg: Springer. 181 Kapitel 6. Visualisierung 182 Kapitel 7. Geländemodelle ARC/INFO stellt verschiedene Möglichkeiten zur Verfügung, digitale Höhenmodelle zu erstellen und zu visualisieren oder zur Visualisierung mit anderen Produkten zu exportieren. * TODO AZ: schmissigere Einfuehrung, BILDER 7.1. Erzeugung eines Triangulated Irregular Networks als Datengrundlage Eine beliebte, da relativ realitätsnahe (z.B. im Vergleich zu Quadraten als) Modellierungsform Basis für ein Höhenmodell, ist die sogenannte unregelmäsige Dreiecksvermaschung (Triangular Irregular Network - TIN). Weitere Möglichkeiten von 3D-Datenmodellen in ARC/INFO sind die in Kapitel Kapitel 3 beschrieben Module GRID und LATTICE. Zum Erstellen eines Geländemodells als TIN müssen Sie in Command Tools unter Conversion Surface Tin Builder auswählen. Das Tin Builder Menü erscheint. Als Formate für Oberflächen unterstützt ARC/INFO TINs und Lattices. TINs können aus verschiedenen Datenquellen erzeugt werden (Punkt-, Linien, Flächen-coverages, d.h. zunächst müssen die Ursprungsdaten in ein Coverage umgewandelt werden), direkt wird das DEM (Digital Elevation Model) -Dateiformat unterstützt (Im- und Export). Weiterhin können aus den ARC/INFO-Datentypen Grid und Lattice TINs generiert werden. Da fast alle Bilddaten in ein Grid überführt werden können, stehen sehr viele Optionen zur Erzeugung von TINs zur Verfügung. Als Grundlage einer Oberfläche für einen 3D-View können auch direkt Lattices oder Grids verwendet werden. Abbildung 7-1. Das TIN Builder Menü Der Name des zu erzeugenden TINs muß bei Output Tin angegeben werden. Unter Add: können die unterschiedlichen Datenquellen angegeben werden: • Coverages • Lattices • Generate (Schnittstelle für ASCII-Daten, vgl. Kapitel Import) 183 Kapitel 7. Geländemodelle Die korrespondierenden Menüs erscheinen nach dem Betätigen der entsprechenden Schaltfläche und sind in den nachfolgenden Abbildungen dargestellt. Als Source identifier kann für jede Datenquelle ein Name angegeben werden. Diese erscheint im Tin Builder Menü dann in der Liste Source identifiers. Edit ermöglicht das Verändern der Parameter schon eingebundener Datenquellen und mit Delete wird die Datenquelle aus der Liste der für dieses zu erzeugende TIN vorgesehenen Datenquellen (source identifiers) gelöscht. Die eigentliche Datenquelle (Pfad und Datei) wird jeweils in den Eingabefeld unter dem Source Identifier angegeben (bzw. erhält man mit der rechten Maustaste in diesem Feld wie üblich einen Dateiauswahldialog). Es werden dabei jeweils nur die Feature Typen angezeigt, die durch die Optionsschaltflächen (je nachdem: Point, Line, Poly, ...) ausgewählt wurden. Unter Surface Feature Types wird dann die zur Erstellung der Oberfläche zu verwendende Variable (Keyword oder ID angegeben. Der Pfeil ermöglicht die Auswahl einer Variablen in einem Popup-Fenster, daneben sind weitere Angaben zur Oberflächendefinition möglich. Abbildung 7-2. Das TIN Source Menü Abbildung 7-3. Das TIN Source Menü (Generate) Abbildung 7-4. Das TIN Source Menü (Lattice) Das folgende Menü erscheint, wenn unter TIN Coverage Source Identifier Menü die Schaltfläche Expression betätigt wird. TIN TIN Cover Source Cover Source Expression Expression Select by Attribute Select by Attribute Weiter ist es durch Betätigen der Schaltfläche Properties im TIN Builder Menü u.a. möglich, einen Überhöhungsfaktor (Zvalue) für das zu erstellende TIN anzugeben. Diese Angaben zusammen definieren 184 Kapitel 7. Geländemodelle das zu erzeugende TIN und werden unter dem bei Tin-Identifier angegebenen Namen gespeichert. Dort können sie mittels Open auch zum späteren Edititeren wieder geladen werden. Abbildung 7-5. Das TIN Properties Menü Erst ein Apply unten links auf dem TIN-Builder-Menü erzeugt das TIN aus den gewählten Datenquellen mit den entsprechenden Parametern. 7.1.1. Umwandeln von TINs in Lattices ARC/INFO erlaubt weitestgehend das Konvertieren von internen Datensätzen in ein anderes unterstütztes Format. Im Rahmen von 3D-Daten sind natürlich TINs und Lattices nahe verwandt, so daß eine Umwandlung möglich ist. Das Umwandeln von TINS in Lattices geschieht im Tin to Lattice Menü. Dieses befindet sich unter: Conversion CommandTools Surface Tin to Lattice Hier muß neben dem zu verwendenden TIN-Datensatz und dem Namen des zu erstellenden Lattices die Zellgröße des für die Erstellung des Lattices zu verwendenden Gitternetzes (Grid) angegeben werden. Abbildung 7-6. Das TIN to Lattice Menü 7.1.2. Export von 3D-Daten Unter CommandTools Conversion Surface finden sich noch weitere Konvertierungstools, die alle nach einem ähnlichen Schema funktionieren, und daher hier nicht gesondert erklärt werden sollen. Hierzu zählen z.B.: • Tin to Coverage • Tin to Region 185 Kapitel 7. Geländemodelle • Tin to Grid • Tin to VRML (vgl. nächsten Abschnitt) • aber auch Lattice to DEM (Digital Elevation Model) und umgekehrt. Abbildung 7-7. Das Export from ARC / TINs and Lattices Menü 7.1.3. Umwandlung von TINs in VRML Als Beispiel soll der Export von 3D-Geländemodellen aus TINs (Triangular Irregular Network) in das VRML 1.0 -Format dargestellt werden (VRML = Virtual Reality Modelling Language). Leider existiert dafür zunächst noch kein Import-Filter. TINs werden dabei als das VRML-Konstrukt „IndexedFaceSet“ exportiert und mit einer höhenabhängigen Standardfarbbelegung von grün über braun bis weiß (alternativ: Graustufen) versehen. Vom gespeicherten TIN ausgehend ist die Angabe eines Überhöhungsfaktors für die Z-Koordinate möglich. Es werden die reinen TIN Daten exportiert. D.h. der komplette Export eines 3D-Views einschließlich überlagerter Satellitenbilder oder Vektorinformationen in ARC/INFO selbst ist noch nicht vorgesehen. Hier hilft der ArcView 3D Spatial Analyst weiter. Aber da sich die vorliegende Einführung auf ARC/INFO konzentrieren will, werden wir auf die Möglichkeiten dieses Produktes nicht weiter eingehen. Abbildung 7-8. VRML-3D Geländemodell von Heidelberg Im TIN to VRML Conversion Menü muß wie üblich das Input Tin angeben und ein Name für die zu erzeugende VRML-Datei (Output world file) mit der Dateiendung .wrl für „world“ bestimmt werden. Als Optionen kann neben den beiden Standardfarbskalen Color oder Grey wiederum nur ein optionaler Überhöhungsfaktor angegeben werden. 186 Kapitel 7. Geländemodelle Abbildung 7-9. Das TIN to VRML-Menü 7.1.4. Virtuelle 3D Welten mit VRML GIS-Programme wie ARC/INFO verfügen zwar über die Möglichkeit 3D-Geländemodelle darzustellen und sogar Videos von virtuellen Durchflügen durch diese Geländemodelle zu erzeugen, doch sind damit zwei Nachteile verbunden: Entweder werden alle Rohdaten und Zugang zur Software benötigt, dann können nach einiger Einarbeitungszeit Darstellungen des Geländemodells aus fast beliebiger Perspektive gewonnen werden. Dadurch ist der mögliche Benutzerkreis jedoch stark eingeschränkt. Verzichtet man auf die Interaktivität, so kann das Geländemodell auf vorgegebenen Flugrouten in einem Video dargestellt werden. Da diese Videos aus dem weltweiten Internet geladen werden können und keine Einarbeitung in die Bedienung erfolgen muß, stehen sie einem sehr breiten Publikum zur Verfügung. Der Betrachter hat aber keinen Einfluß mehr darauf, welche Auschnitte des dargestellten Geländes in welcher Auflösung präsentiert werden. * TODO LN: Verweis auf Abschnitt zum Erstellen von 3D-Mpeg-Videos VRML ermöglicht dagegen sowohl die plattformunabhängige Bereitstellung der virtuellen Welten im WWW, als auch die Interaktivität mit dem Betrachter, da er sich in der dargestellten Welt beliebig dreidimensional bewegen kann. Die Erstellung eines einfachen VRML-Geländemodells ist durch die beschriebenen Exportmöglichkeiten in Arc/Info sehr einfach. Komplexer wird es, wenn auch Gebäude o.ä. als VRML-Objekte erzeugt werden sollen. Als Zusatzprodukt zu ARCVIEW wird von ESRI der sogenannte ARCVIEW 3D-Analyst angeboten. Mit diesem sind auch VRML-Export von 3D-Objekten wie Häusern als Quader, bessere Farbzuweisungen etc. möglich. In ARC/INFO selbst existiert noch keine VRML-Schnittstelle für geometrische Objekte wie Gebäude. Daher müssen die VRML-Dateien von Hand (bzw. über ein Makro) erzeugt werden. Ein mögliche Vorgehensweise wird skizziert: Zunächst werden die Grundrisse einiger Gebäude digitalisiert. Diese Daten wurden aus ARC/INFO als ASCII-Datei mittels Ungenerate exportiert und dann die entsprechenden VRML-Befehle hinzugefügt. Dabei wurde das VRML-Konzept des Extrusionskörpers gewählt. D.h. die Gebäudegrundrisse werden entlang einem zu definierenden Vektor extrudiert und mit einer Boden- und Deckelplatte versehen. Damit ist eine schematische Darstellung der Gebäude möglich. Realistischere Darstellungen (z.B. Dächer etc.) wären deutlich aufwendiger zu realisieren (z.B. über TINs). Als weitere Schritte in Richtung realistischerer VR-Welten ist der Einsatz von Texturen oder die Animation einzelner Objekte in VRML zu realisieren. Es gibt diverse VRML-Autorenwerkzeuge, die bei diesen Aufgaben unterstützen. Eine gute Zusammenstellung bietet im WWW das Web3D Repository unter http://www.web3d.org/vrml/vrml.htm 187 Kapitel 7. Geländemodelle Abbildung 7-10. Ausschnitt einer VR-Welt der Heidelberger Altstadt direkt aus ARC/INFO Insgesamt scheinen die ersten Resultate mit VRML erfolgversprechend zu sein und ermuntern zu weiteren Versuchen. VRML stellt ein geeignetes Medium sowohl für offene interaktive Informationssyteme (Stadt, Tourismus, Umwelt, ...), als auch für Lehrzwecke oder die Präsentation komplexer Forschungsergebnisse dar. Durch die Einbeziehung von Animation einzelner Objekte, als auch deren Farbe können bis zu 5 Dimensionen gleichzeitig dargestellt werden. Durch diese Eigenschaften bietet es sich als Erweiterung bisheriger statischer Computerkartographie oder GIS an. Entsprechende erste Beispiele lassen sich im WWW leicht finden. Gewisse Probleme bereiten die Geschwindigkeit komplexerer VRML-Welten und die Handhabung kartographischer Projektionen. Das erstere Problem verringert sich mit dem Aufkommen leistungfähigerer preiswerter 3D Graphikkarten und Prozessoren und das zweite Problem wird durch die Arbeitsgruppe Geo-VRML des VRML-Consortiums angegangen. 7.2. 3D-Visualisierung Es soll kurz die Vorgehensweise zur Erstellung von 3D-Ansichten (3D Views) in ARC/INFO skizziert werden: Zunächst muß ein neuer View angelegt werden. MapTools View NEW (vgl. Erzeugung von 3D-Views in Kapitel 7) Alternativ, kann dort natürlich auch ein existierender 2DView durch Open geladen werden. Damit dieser View dreidimensional dargestellt werden kann, muß ein Geländemodell hinzugeladen werden. Dazu muß in MapTools View der Menüeintrag Load Surface gewählt werden. Es erscheint das Surface Properties Menü. Abbildung 7-11. Das Surface Properties Menü Die Standard-Einstellung des Oberflächentyps (Surface Type) der Dreiecke ist FLAT (also zweidimensional). Es gibt neben TIN noch die Möglichkeit, ein Lattice als Datenquelle für Oberflächen auszuwählen. Wir wählen TIN und geben im Feld Surface den Pfad zu einem vorher erstellten TIN an (Rechte Maustaste in der Eingabezeile des Menüs liefert Auswahlmenü). 188 Kapitel 7. Geländemodelle Mit Surface Resolution kann bestimmt werden, wieviele Punkte entlang der längsten Achse zur Interpolation benutzt werden sollen. Je größer die Zahl, desto feiner die Interpolation, aber auch desto höher die Rechenzeit. Als Interpolationsmethode ist meist Linear vorzuziehen, da Smooth eine erheblich höhere Rechenzeit benötigt und die Resultate je nach Auflösung der Grunddaten kaum unterschiedlich sind. Lediglich für High-End-Visualisierungen oder begrenzte Ausschnitte ist Smooth die angebrachtere Variante. Der Zfactor gibt den Überhöhungsfaktor in die dritte Dimension (ausgehend von den TIN-Daten) an. OK aktiviert die Einstellungen. Nun kann eine Oberfläche über das Geländemodell gefaltet und angezeigt werden. Doch hierzu muß noch eben diese Flächeninformation mit den Raumobjekten, die über das Geländemodell gefaltet (drapiert) werden soll, ausgewählt werden. Möglich ist dies mit allen 2D-Datentypen, die ARC/INFO kennt - von Coverages der unterschiedlichen Typen (Linien, Polygone, Punkte), über einfache Gitternetze (Mesh), hin zu Satellitenbildern, Grids oder den Triangulationsdaten (Tin) selbst. * TODO AZ: Bsp. fuer verschiedene Varianten 7.2.1. Erstellen und Anzeigen des dreidimensionalen Themas Die verschiedenen Kanäle eines Satellitenbildes oder aber Vektorinformationen aus Coverages sowie eigentlich alle 2D-Datentypen, die in einem View visualisiert werden können, können auch über das zuvor geladene Geländemodell gelegt werden. Das Beispiel eines Mehrkanal-Satellitenbildes wird im folgenden ausgeführt: Unter Add New Theme in Categories Grid auswählen und unter Theme classes Grid composite (da mehrere Bänder). Es erscheint der Grid Composite Property Sheet. Add New Theme Categories: Grid Theme classes: Grid composite Abbildung 7-12. Der Grid Composite Property Sheet Nun muß angegeben werden, in welchem Farbmodell (RGB = Rot-Grün-Blau versus HSV Hue-SaturationValue und CMYK = Cyan-Magenta-Gelb-Schwarz) die Satellitenkanäle interpretiert werden sollen. Für jede Farbe muß also ein Grid ausgewählt werden, welches die Farbinformation des jeweiligen Satellitenbandes enthält (rechte Maustaste). Die Grids müssen natürlich zuvor georeferenziert, d.h. auch in ein einheitliches Koordinatensystem gebracht worden sein und dieselbe Gebietsgröße abdecken. Informationen dazu finden sich unter Register Images. Außerdem muß das Geländemodell dasselbe Koordinatensystem (und Gebietsgröße) besitzen. Die Beschreibung des Transformierens von Coverages in unterschiedliche Koordinatensysteme findet sich im Kapitel 3. Falls die Koordinaten der Rohdaten nicht schon im richtigen Bezugssystem vorliegen, müssen bei einem Geländemodell zunächst die Ausgangsdaten vor der Erzeugung des TINs durch den Tin Builder (vgl. vorherige Abschnitte) in das gewünschte Zielsystem transformiert werden. 189 Kapitel 7. Geländemodelle Eine andere (einfache) Option wäre es, ein einfaches Gitternetz über die Oberfläche zu legen. Dazu muß im Add new Theme Menü als Theme Class: Mesh (unter der Category: Tin) selektiert werden. Es erscheint das Mesh Properties Menü: Abbildung 7-13. Das Mesh Properties Menü Hier können verschiedene Darstellungstypen als Parameter bestimmt werden: Fishnet Lines along X gekreuztes Gitternetz Linien entlang der x bzw. Y Achse Diagonal Diagonale Linien (quer zu Seitenkanten) Ebenso kann die Anzahl der darzustellenden Linien eingegeben werden. Einerseits ist es möglich eine einheitliche Farbe für das gesamte Mesh auszuwählen (unter Symbol); es kann jedoch auch ein Attribut des gewählten TINs farbig angezeigt werden. Variablen, die immer für ein TIN errechnet werden, und damit auf alle Fälle zur Auswahl stehen, sind: elevation slope Höhe Hangneigung aspect Hangrichtung Die genaue Farbdarstellung kann durch zusätzliche Optionen oder Farbtabellen (Lookup-Tables) spezifiziert werden. Mit OK landet das Mesh in der Themes-List des Themes Manager und muß noch in die Draw-Liste geschoben werden (mittels des Pfeiles nach Rechts). Zum Anzeigen muß man schließlich Draw anwählen. Abbildung 7-14. 3D-Mesh Es existieren weitere interessante Parameter und Befehle beim Erstellen der 3D-Views. Dazu zählen Optionen wie SCENEFOG für die Simulation von Nebel, SCENEHAZE für die Simulation atmosphärischer Dunsterscheinungen, und SCENESKY mit dem die Farbübergänge für den Hintergrund bestimmt werden können. Die entsprechenden Parameter sind in der Online-Hilfe für das Modul ARCPLOT (bzw. TIN) dokumentiert. 190 Kapitel 7. Geländemodelle 7.2.2. Orientierung des Geländes Vom View-Pulldown-Menü ausgehend wird mit Orient camera... die Position des Betrachters, also der Blickwinkel verändert. Preview stellt zunächst die Standardwerte dar. Mit den Pfeilen kann nun die Position verändert werden. Deren Wirkung wird mit Preview überprüft. Default stellt den Anfangszustand wieder her. Stärkere Effekte werden durch die Direct input...- und Preferences...- Menüs erreicht. Abbildung 7-15. Das Camera Orientation & Advanced Camera Orientation Menü Abbildung 7-16. Das Camera Preferences Menü 7.2.3. Virtuelle Durchflüge durch Geländemodelle Zu den weitergehenden Funktionen zählt die Möglichkeit, Animationen virtueller Flüge durch Geländemodelle zu erzeugen und diese Simulation als MPEG-Video auszugeben. Dabei werden auf einer frei definierbaren Flugroute Bilder des vom virtuellen Flugzeug aus sichtbaren dreidimensionalen Geländeausschnitts erzeugt und diese dann in eine Mpeg-Datei kodiert. Mpeg-Videos können auf fast allen Betriebssystemen abgespielt werden, sofern ein geeigneter Mpeg-Player (die Software zum Abspielen dieser Videos) installiert ist. Der Mpeg-Encoder von ARC/INFO unterstützt offenbar z.Zt. nur MPEG-1 mit 8-bit Farben, was u.U. zu Problemen mit einigen Windows Mpeg-Viewern führen kann. Es existieren jedoch auf allen Plattformen Viewer, die die erzeugten Videos korrekt wiedergeben. Insbesondere existieren Plug-Ins für WWW-Browser wie Netscape, die dies ermöglichen. Somit steht auch einer Einbindung solcher Computervideos in WWW-Seiten nichts mehr entgegen (außer der Dateigröße oder Copyright-Bestimmungen). Videos von virtuellen Flügen über Heidelberg und den angrenzenden Odenwald stehen beispielsweise auf der WWW-Homepage des Geographischen Institutes der Universität Heidelberg unter folgender Adresse zur Verfügung: http://www.geog.uni-heidelberg.de/wisogeo/edv/flights.html.de 191 Kapitel 7. Geländemodelle Abbildung 7-17. Einzelbild aus einem der Videos Grundlage der Videos ist ein digitales Geländemodell. Aus den digitalisierten Höhenlinien des Gebietes wurde ein TIN erzeugt, auf das drei Bänder von Landsat-TM Satellitenaufnahmen als Composite Grid projiziert wurden. Die drei Bänder repräsentieren dabei die Werte des RGB-Farbmodells. Zusätzlich wurden in den verschiedenen Videos weitere digitalisierte Vektorinformationen (z.B. Strassennetz, Stadtteilgrenzen, etc.) als zusätzliche Informationsebenen über das Satellitenbild gelegt. Es können jeweils verschiedene Überhöhungsfaktoren angegeben werden. 7.2.3.1. Definition der Flugparameter durch den Flight Path Generator Der Flight Path Generator automatisiert die wesentlichen Schritte bis zur Erzeugung des fertigen digitalen Videos. Das entsprechende Menü befindet sich unter: MapTools View ProductivityTools Flight Path Generator Abbildung 7-18. Das Productivity Tools Menü (Type = Animation) Es muß zunächst ein View mit Geländemodell (3D) geladen werden (vgl. vorhergehende Kapitel). Der View wird im Plot-Fenster zweidimensional dargestellt und man kann mit der Maus (zu verwenden wie ein Digitizer, vgl. Kapitel 3) Punkte, sogenannte Critical Points, absetzen, die den 2D-Verlauf der Flugbahn definieren. Dies beendet man mit der vom Digitalisieren bekannten Taste 9. Die Flugroute wird in ARC/INFO insgesamt durch die Angabe von Raumpunkten (x-y-z-Koordinaten), die das virtuelle Flugzeug auf alle Fälle berühren muß, definiert. Der Verlauf der Flugroute zwischen diesen Stützpunkten wird interpoliert. Nach dem Setzen der 2D-Punkte muß also zu jedem der Critical Points noch die Höhe (der Z-Wert) angegeben werden. Dazu klickt man den Punkt in der Liste der Critical Points an und editiert die Angabe Elevation im nebenan befindlichen Feld. Abbildung 7-19. Das Flightpath Menü und Optionen Menü 192 Kapitel 7. Geländemodelle MapTools View ProductivityTools Flight Path Bei der Angabe der Flughöhen ist darauf zu achten, daß das virtuelle Flugzeug nicht unter die Oberfläche des Geländemodells gerät, da dies zu Fehlermeldungen führt. Dies kann durch die Wahl der Option Relative bei der Spezifikation der Flugroute vermieden werden, da die Z-Werte nun als Höhe über der 3D-Oberfläche und nicht als absolute Höhenangabe interpretiert werden. Entsprechend einer wählbaren Inter-Frame-Distance wird die Entfernung zwischen zwei zu generierenden Einzelbildern des Geländemodells angegegeben. Wenn alle verwendeten Daten für das Gauß-KrügerSystem georeferenziert wurden, entspricht die eingegebene Zahl hier der Einheit Meter. Unterschiedliche Angaben bewirken dabei eine Veränderung der scheinbaren Fluggschwindigkeit. Zu große Distanzen bewirken eine unnatürlich ruckartige Flugsimulation, während zu kleine Distanzen sehr viele Bilder generieren. Letzteres führt einerseits zu immens großen Datenmengen andererseits aber auch zu einer flüssigeren Wiedergabe. Abbildung 7-20. Das Flyby Viewing Options Menü Da der „virtuelle Pilot“ in einem solchen 3D-Flug z.B. bei einem Steigflug standardmäßig in den (weniger interessanten) Himmel (oder auf den Rand des verfügbaren Datensatzes) schauen würde, können als zusätzliche Parameter die horizontale und vertikale Blickrichtung (horizontal / vertical viewing) bezüglich der Flugbahn spezifiziert werden. Abbildung 7-21. Das Flight Frame Generator Menü Nun wird die Flight-Table (*.flt) erstellt. Diese wird in den danach als nächstes am Schirm erscheinenden Menü eingelesen und die übrigen Parameter abgefragt. z.B. wird die Dimensionierung des Videos (Höhe und Breite auf dem Bildschirm) in Pixel oder das verwendete Bildformat angegeben. Nach der Bestätigung der Einstellungen durch OK fragt ARC/INFO, ob die Einzelbilder (snapshots) erzeugt werden sollen. Die Berechnung der Einzelframes im Batch-Modus bringt Geschwindigkeitsvorteile, da die explizite Visualisierung jedes Frames am Bildschirm bei der Erzeugung entfällt. Ansonsten kann die Berechnung der Einzelbilder (Frames) plus die anschließende Kodierung des Mpeg-Videos bei realen Daten sehr leicht mehrere Stunden beanspruchen. 193 Kapitel 7. Geländemodelle Abbildung 7-22. Das Mpeg-Encode Menü Statt langwierig einen komplexen Flugpfad zu definieren, besteht auch die etwas einfachere Möglichkeit einen einfachen Rundflug auf einer Kreisbahn auszuwählen. Hierzu muß man nur den Mittelpunkt und Radius des Kreises eingeben, bzw. diesen interaktiv mit der Maus setzen, indem man auf den "Fadenkreuz"Knopf drückt und den Kreis auf der Kartengrundlage aufzieht. Die übrigen Parameter (Inter-frame distance, Elevation, Roll, Viewing options) entsprechen der Situation bei einem allgemeineren Flugpfad. Ausnahme ist, daß natürlich nur eine bestimmte Höhe (Elevation) sowie die Drehung des Flugzeuges um die Längsachse (Roll) für den gesamten Rundflug angegeben werden kann. Es ist sinnvoll, die Wirkung der Parameter bei einem konkreten Datensatz an sehr kleinen Beispielen und kurzen Flügen auzuprobieren, da sonst u.U. sehr lange auf ein Ergebnis gewartet werden muß, das dann doch wieder verworfen wird. Abbildung 7-23. Der Circular Flight Path Generator 7.2.3.2. Abspielen der Videos In ARC ist ein MPEG-Player integriert, der das Abspielen der erzeugten (oder anderer) MPEG-Videos (mit 8-Bit Farbtiefe) ermöglicht. Als einzige Option ist hier das endlose Anspielen des Videos (Looping) möglich, es existieren aber sowohl unter Windows wie unter Unix zahlreiche frei erhältliche Wiedergabeprogramme für MPEG-Videos. Abbildung 7-24. Der interne MPEG-Player 194 Kapitel 7. Geländemodelle 7.3. 3D Analyse 7.3.1. Interpolieren von Höhenlinien Statt aus Höheninformationen wie z.B. digitalisierten Höhenlinien eine Dreiecksvermaschung zu generieren, ist auch der umgekehrte Weg möglich: Statt die Höhenlinien in ein TIN umzuwandeln, besteht die Möglichkeit aus TIN-Daten oder Lattice-Punkten Höhenlinien zu interpolieren. Das entsprechende Menü findet sich in CommandTools Conversion Contour Mit der rechten Maustaste können im Feld Input Surface Model die Eingabedaten (Tin oder Lattice) gewählt werden. Für das zu erzeugende Coverage muß ein Name eingetragen werden (Output Line Coverage). Abbildung 7-25. Das Surface Menü Abbildung 7-26. Das Contouring Tool Menü Durch das Contour Intervall wird der gewünschte Abstand der Höhenlinien bestimmt. Die Seed Contour gibt die Basis an, von der aus die Höhe der anderen Höhenlinien (sowohl ober- als auch unterhalb errechnet werden). Der Default-Wert ist 0.0. Die Höhenwerte der Linien werden der unter Contour Value angegebenen Variable zugewiesen. Der Default-Name dieser Variablen ist Contour. Die Weed Tolerance bestimmt einen Grenzwert (Threshold) zur Ausdünnung von Linien während der Generierung der Höhenlinien. Default ist das 0.001-fache der Länge der längsten Seite der Input Surface. Der Z-factor bestimmt den optionalen Überhöhungsfaktor. Um zum Beispiel von Ausgangsdaten in Meter Ergebnishöhendaten in Feet zu erhalten, müßte der Faktor 3.288 gewählt werden. Der Smoothness Factor beeinflußt die Weichheit der Interpolation der Höhenlinien bei Tins. 1 bedeutet eine lineare Interpolation. Werte zwischen 2 und 10 erzeugen weichere Kurven. Der Defaultwert 1 (linear) ist die schnellste Option. 195 Kapitel 7. Geländemodelle 7.3.2. 3D-Sichtbarkeitsanalysen Für Sichtbarkeitsanalysen muß als Eingabeformat für die 3D-Daten der Datentyp Grid benutzt werden. D.h. vorher müssen gegebenenfalls vorliegende Daten aus einem anderen Format (TIN, Lattice, DEM etc.) in ein Grid umgewandelt werden. Das Ergebnis kann als Polygon-Coverage oder Grid ausgegeben werden (Visibility output). Als Sampling-Methode kann zwischen den Optionen Frequency oder Observers gewählt werden: Frequency Jedem Ausgabeort wird als Zahl zugewiesen, wie oft dieser gesehen werden kann. Observers Jedem Ausgabeort wird die ID des Observerortes zugewiesen, von dem aus der Ort gesehen werden kann. Abbildung 7-27. Das Visibility Menü 7.3.3. Volumen unter einem 3D-Modell berechnen Zum Berechnen des Volumens unter einem Gelände muß schlicht ein Geländemodell (TIN) angegeben werden. Das entsprechende Menü erhält man in Command Tools unter: Command Tools Analysis Surface Volume Abbildung 7-28. Das Volume Calculation Menü Optional kann das Ergebnis in eine Datei ausgegeben werden oder es erscheint als Popup-Menü. TIN ZMIN ZMAX DATUM AREA VOLUME UNITS = /AFS/GEOG.UNI-HEIDELBERG.DE/HOME = 145.500 = 850.500 = 0.000 = 220915904.00000 = 66463449088.00000 = Meters 196 Kapitel 7. Geländemodelle ZUNITS ZFACTOR = None = 1.000 Das Volumen beträgt also 66463449088 m3. 7.3.4. Veränderung von 3D-Oberflächen verfolgen Sollen die Unterschiede zwischen zwei 3D-Modellen eines Gebietes von unterschiedlichen Zeitpunkten bestimmt werden, ermöglicht dies das Menü Cut and Fill. Anwendungsbeispiele sind z.B. das Modellieren eines Bergsturzes oder die Bestimmung der Auswirkungen von Bauarbeiten (Bauaushub oder Aufschüttung) mit Hilfe eines Geländemodells. Es werden dabei ein Lattice und ein Polygon-Cover erzeugt. Die Höhen-Werte (Z-Values) des Output Lattice stellen dabei den Änderungsbetrag der Cut-And-FillOperation (also, z.B. der Bauarbeiten) dar. Negative Z-Werte deuten die Gebiete des Before Lattice an, die aufgefüllt wurden, während positive Werte für Abtragungen stehen. Abbildung 7-29. Das Cut & Fill Calculation Menü Das Output Cover, dessen Koordinaten in double precision (vgl. Kapitel 3) gespeichert werden, enthält diejenigen Gebiete als Polygone, die als Auffüllungsbereich, oder Abtragungsgebiet errechnet wurden. In der PAT wird eine Variable mit dem Namen CF-CODE erzeugt, deren Werte die Regionen mit Cut, Fill, No Change oder NODATA identifizieren. Der Höhenmaßstab kann durch Änderung des Zvalues angepaßt werden. Weiterführende Literatur: N. N., 2001, N.N., N.N.. 197 Kapitel 7. Geländemodelle 198 Kapitel 8. Die Makro-Programmierung mit AML AML ist eine in ARC/INFO integrierte Skriptsprache, mit deren Hilfe einzelne Programmbefehle zu Batch-Programmen zusammengefügt werden können, um wiederkehrende Aufgaben zu automatisieren. Darüber hinaus ist es möglich, die Ausführung von ARC/INFO-Anweisungen von Bedingungen abhängig zu machen, innerhalb des Programmes über Variablen auf Dateinamen, Coverage-Elemente etc. zuzugreifen und schließlich sogar eine komplette grafische Benutzerschnittstelle für eine auf ARC/INFO basierende Anwendung zu programmieren. 8.1. Was ist AML Ein Beispiel für eine grafische Oberfläche ist ARCTOOLS, welches einen Großteil von ARC/INFO über eine Fensteroberfläche zugänglich macht, jedoch sind auch zahlreiche von der Kommandozeile aufzurufende Unterprogramme von ARC/INFO als AML realisiert. Auf der anderen Seite ist es auch möglich, eine abgespeckte Oberfläche mit eigenen Menüs und Kommandos für eine ganz spezielle Aufgabe zu programmieren, die sämtliche nicht benötigte Funktionalität vor dem Endanwender verbirgt. Im Rahmen dieser Einführung können wir nur einen kurzen überblick über die Möglichkeiten dieser Makrosprache geben, die ausreichen sollte, wiederkehrende Aufgaben zu automatisieren. Von diesem Grundstock aus kann man dann selbst seine Programmierkenntnisse vertiefen. Empfehlenswert ist in diesem Zusammenhang das Buch von ESRI zu AML1. 8.2. Wie funktioniert die Arc Macro Language Jedes ARC-Kommando, egal, ob es von Hand eingegeben wurde oder von einem Makro an das Programm gesendet wurde, wird vom AML-Prozessor interpretiert, bevor es an das gerade aktive ARC/INFOProgramm (ARC, ARCPLOT etc.) weitergegeben wird. Im Falle eines Makros werden ARC/INFO keine Anweisungen, Funktionen oder Variablen zugeführt, sondern diese ausgewertet und deren Interpretation dann an ARC/INFO selbst zur Ausführung weitergegeben. 8.3. Wie erzeuge ich ein AML-Programm Es gibt zwei Möglichkeiten, ein AML zu erzeugen. Wenn man bereits weiß, wie das Makro aussehen soll, kann man es direkt in einen Texteditor eingeben und dann mit der Endung .aml abspeichern. Die Endung wird (zumindest unter Unix) nicht vom Programm benötigt, ist aber sinnvoll, um AML s von anderen Dateien unterscheiden zu können. Als Texteditor ist jeder Editor geeignet, der Dateien ohne versteckte Steuerzeichen editieren und als ASCII-Text abspeichern läßt. Insbesondere unter Unix bietet sich hier Emacs 2 an, da hierfür eine spezielle AML-Umgebung3 existiert, die z.B. Schleifen und Bedingungen in AML-Programmen übersichtlich einrückt und verschiedene Eingabeerleichterungen zur Verfügung stellt. Es existiert aber auch eine NT-Version dieses Editors. 199 Kapitel 8. Die Makro-Programmierung mit AML display 9999 2 arcedit editcover river drawenvironment arc node error editfeature arc nodesize dangle .2 nodecolor dangle 2 nodesize pseudo .15 nodecolor pseudo 5 draw &return Aufgerufen werden AMLs von der Kommandozeile eines ARC/INFO-Programmes. Die ausführliche Variante sieht so aus: Arc: &run meinaml.aml Die Dateiendung wird nicht unbedingt benötigt: Arc: &run meinaml Und selbst das läßt sich noch abkürzen: Arc: &r meinaml Man könnte natürlich auch noch kürzere Programmnamen vergeben ... Die zweite Möglichkeit besteht darin, Eingaben an der Kommandozeile von ARC/INFO-Programmen mitprotokollieren zu lassen, etwa wie ein Makrorekorder unter Windows. So sieht man das Ergebnis jedes Einzelschrittes sofort. Um ein sogenanntes Watch-File zu erzeugen, müß am Prompt Arc: &watch gefolgt von einem Dateinamen eingegeben werden. Alle nun eingetippten Befehle werden in der angegebenen Datei abgespeichert, bis man die Aufnahme mit Arc: &watch &off beendet. Anhand unseres ersten Beispiels wollen wir kurz die Arbeitsweise demonstrieren: Die gespeicherte Datei river.wat hat folgenden Inhalt: Alle eingegebenen Befehle stehen in der Datei in |> <| mit dem jeweiligen Programmprompt davor. Dieses Watch-File kann jetzt entweder mit Arc: &runwatch vegetation.wat ausgeführt werden oder mit Arc: &cwta vegetation.wat vegetation.aml (conv_watch_to_aml) in ein AML-Programm umgewandelt werden. Das Ergebnis-AML muß allerdings noch in einem Editor nachbearbeitet werden: arcedit 200 Kapitel 8. Die Makro-Programmierung mit AML display 9999 2 arcedit editcover river drawenvironment arc node error editfeature arc nodesize dangle .2 nodecolor dangle 2 nodesize pseudo .15 nodecolor pseudo 5 draw &watch &off So sollte zum Beispiel jedes AML mit einer &return-Direktive beendet werden, damit das Programm wieder die Kontrolle an die Tastatur zurückgibt. Die bisherige letzte Zeile (&watch &off) wird nicht benötigt. Es empfiehlt sich auch, Kommentare einzufügen, damit andere Nutzer des Programmes die Wirkungsweise verstehen können - oder man selbst nach mehreren Monaten noch weiß, wozu genau dieses Programm eigentlich überhaupt gut war. Alles, was in einer Zeile hinter der Zeichenfolge /* steht, wird als Kommentar angesehen und nicht interpretiert. Unsere bearbeitete Datei könnte dann so aussehen. /* river.aml /* 12.03.01 /* /* legt Zeichenumgebung und editfeature arc fuer river fest display 9999 2 arcedit editcover river drawenvironment arc node error editfeature arc nodesize dangle .2 nodecolor dangle 2 nodesize pseudo .15 nodecolor pseudo 5 draw &return 8.3.1. Vereinfachungen bei der Programmierung 8.3.1.1. Zeilenumbruch Falls eine Befehlszeile länger als eine Zeile im Editor ist, so muß der Rechner wissen, dß die Befehlszeile in der nächsten Zeile fortgeführt wird. Wird dies nicht markiert, so meldet der Rechner einen Fehler und beendet das AML vorzeitig mit einer Fehlermeldung. Arc: build [-getcover * -poly ~ Arc: � Die Tilde (~) gibt an, daß die Eingabe in der nächsten Zeile fortgeführt wird und erst an deren Ende ausgeführt wird. 201 Kapitel 8. Die Makro-Programmierung mit AML 8.3.1.2. Mehrere Aktionen in einer Zeile Mehrere Aktionen in einer Zeile werden durch Semikola getrennt. Arcedit: ef arc; sel many; delete Jeder einzelne Befehl muß normalerweise in einer Zeile stehen. Jedoch können mehrere Befehle durch Semikola (;) getrennt in einer Zeile hintereinander stehen. Sie werden wie einzelne Zeilen behandelt und entsprechend nacheinander abgearbeitet. 8.3.1.3. Erweiterungen Wird mit mehreren Coverages gearbeitet, die entsprechend benannt wurden, braucht nicht jedes Coverage einzeln ausgeschrieben zu werden. Die anzufügenden Zeichen werden in geschweiften Klammern zwischen Ausrufezeichen gesetzt und jeweils an den vorhergehenden Namen angehängt: Arcplot: mapextent boden {!1 2 3!} geologie wird interpretiert als: Arcplot: mapextent boden1 boden2 boden3 geologie oder Arcplot: mapextent {!laub nadel misch!}wald wird zu: Arcplot: mapextent laubwald nadelwald mischwald 8.3.1.4. Zeilenwiederholung Wird auf mehrere Coverages die gleiche Befehlsfolge angewandt, so muß nicht für jedes Coverage eine eigene Zeile eingegeben werden. Die Namen der Coverages können in normale Klammern und Ausrufezeichen gesetzt werden. Arcplot: arcs (!waelder fluesse boden besitzer!) noids entspricht: Arcplot: Arcplot: Arcplot: Arcplot: arcs arcs arcs arcs waelder noids fluesse noids boden noids besitzer noids Angaben in Klammern und Ausrufezeichen \verb*/(! !)/ werden wie einzelne Zeilen im Input interpretiert. 202 Kapitel 8. Die Makro-Programmierung mit AML 8.3.1.5. Zeichenketten und Sonderzeichen Zeichenketten mit Leer- und/oder Sonderzeichen müssen in Hochkommata stehen ("), um als Gesamtheit interpretiert zu werden, z.B.: "Heidelberg_Boden" "Klima Teilbereich Niederschlag" "Heidelberg_Schloss1.001" "Stock=****" 8.3.1.6. Operatoren Es gibt eine Vielzahl von Operatoren, um verschiedene Operationen wie Addition, logisches UND, NICHT, IST GLEICH usw. auszuführen. • Arithmetische () • Logische () • Relationale () Operatoren müssen in Leerzeichen eingeschlossen sein, damit es keine Fehlermeldung gibt, außer wenn + oder - als Vorzeichen verwendet werden. 8.4. AML-Elemente AML verfügt über Anweisungen, Variablen und Funktionen. 8.4.1. Variablen Variablen sind Mittel zum Speichern von dynamischen Informationen. In der AML-Programmiersprache gibt es folgende Variablentypen: • Zeichenfolgen (Character Strings) • Ganzzahlige Werte (Integer) • Fließkommazahlen (Real) • Boole’sche Ausdrücke (Wahr, Falsch) • Ausdrücke, die die obengenannten Typen verknüpfen 8.4.1.1. Setzen von Variablen Mit &setvar werden Variablen gesetzt, die Kurzschreibweise hierfür lautet: &sv. Es gibt drei untereinander austauschbare Möglichkeiten, Variablen zu setzen: 203 Kapitel 8. Die Makro-Programmierung mit AML &sv incover := landnutzung &sv incover = landnutzung &sv incover landnutzung Der Variablenname darf dabei nicht länger als 32 Zeichen sein. Im Programm selbst werden Variablen dann am Prozentzeichen "‘\verb/\%/"’ erkannt, das den Variablennamen umgibt. Nur bei der Deklaration stehen die Variablen nicht zwischen zwei Prozentzeichen. Haben wir also weiter oben die Variable \verb/incover/ mit einem Wert belegt, so können wir uns weiter unten im Programm darauf beziehen: build %incover% Die Variablen werden nicht als Typ deklariert, sondern es wird festgelegt, welche Reichweite die jeweiligen Variablen besitzen. Mit &sv kann nur eine Variable festgelegt werden. So wird &sv a b c = 0 als &sv a =: b c = 0 interpretiert. Alles rechts von =: wird als zusammenhängender Textstring (mit Leerzeichen) angesehen, d.h. die Variable a enthält als Wert die Zeichenfolge b c = 0, während es keine Variablen b und c gibt. 8.4.1.2. Löschen von Variablen Da für die Variablen Speicherplatz zugewiesen wird, empfiehlt es sich, nicht mehr gebrauchte Variablen explizit zu löschen. Dies geschieht durch &delvar .cover oder &delvar var1 var2. Es ist auch möglich, Platzhalter zu verwenden. So kann man z.B. alle globalen Variablen, die mit einem c beginnen, folgendermaßen löschen: &dv .c* 8.4.1.3. Lokale und globale Variablen Der Unterschied zwischen den Typen besteht in der jeweiligen Reichweite der Variablen. 8.4.1.3.1. Lokale Variablen Lokale Variablen gelten nur in dem AML, in dem sie gesetzt wurden, können also auch nur innerhalb dieses AMLs verändert werden. Lokale Variablen speichern Informationen, die nicht in anderen AMLProgrammen benötigt werden, z.B. Zählvariablen. Alle lokalen Variablen werden gelöscht, wenn das AML beendet wird. In zwei verschiedenen AMLProgrammen können also Variablen den gleichen Namen erhalten, sofern sie nur lokal definiert sind. 8.4.1.3.2. Globale Variablen Die Reichweite der globalen Variablen geht über ein einzelnes AML hinaus. Sie gelten für alle AMLProgramme der laufenden ARC/INFO-Session. Sie werden in der Regel benutzt, um Informationen zwischen AML-Programmen auszutauschen. Die Variablen werden so lange gespeichert, bis sie gelöscht werden oder die Programm-Session beendet wird. 204 Kapitel 8. Die Makro-Programmierung mit AML Abgesehen von ihrer Reichweite verhalten sich lokale und globale Variablen identisch. Globale Variablen werden folgendermaßen definiert: &sv .cover 0 strassen wobei der vorangestellte Punkt wichtig ist, da er die Variable als global markiert. Aufgerufen werden sie entsprechend: build %.cover% line Zum besseren Verständnis soll dies noch einmal an zwei AMLs erläutert werden: /* bsp1.aml /* /* Wirkung von lokalen und /* globalen Variablen &sv VAR = strassen &sv .VAR2 = 16 &r bsp2.aml &s VAR1 = %.VAR4% &ty %.VAR2% &return und /* bsp1.aml /* /* Wirkung von lokalen und /* globalen Variablen &sv VAR = strassen &sv .VAR2 = 16 &r bsp2.aml &s VAR1 = %.VAR4% &ty %.VAR2% &return Die Variable VAR1 ist lokal und VAR2 ist global. VAR3 nimmt nach Aufruf von bsp2.aml den Wert von \verb/VAR2/ an. \verb/VAR3/ ist lokal und wird nach Beendigung von bsp2.aml gelöscht. \verb/VAR4/ 205 Kapitel 8. Die Makro-Programmierung mit AML ist global und gibt ihren Wert an bsp1.aml ab. Sie wird erst gelöscht, wenn sie zerstört wird oder die ARC/INFO-Session beendet wird. 8.4.1.4. Variablenverkettungen Mit &s kann man Variablen verknüpfen, z.B.: Zeichenketten mit Zeichenketten Integer mit Integer &s path := /home/lnuecker/montana Integer mit Character &s a:= 2 &s counter:= %counter% -1 Integer mit &s beta := 2 + ne 2 Logical Integer mit Real &s z := 2 + 3,1415 8.4.1.5. Indexvariablen Um zu zeigen, daß Variablen in einem direkten Zusammenhang stehen, kann man sie mit einem gleichen Namen und einem sich ändernden Index versehen. &s &s &s &s &s &s cover1 cover2 cover3 cover4 cover5 cover6 := := := := := := landnutzung geologie strasse fluesse klima boden Da nur der Index verändert wird, bietet sich folgende Variablendefinition an: &s cover%nummer% = landnutzung In nummer wird gespeichert, welchen Wert cover annimmt. Hier hat nummer den Wert 1 und cover den Wert landnutzung. Möchte man wissen, welchen Wert cover hat, bedient man sich der [value]-Funktion. &type [value cover\%nummer\%] gibt bei einer mit 4 belegten Variable nummer das Ergebnis von [value cover4] aus. Auf dem Bildschirm wird daher fluesse ausgegeben. 8.4.1.6. Anzeigen von Variablen und deren Werten Befehl zeigt an &listvar (&lv, &l) globale, lokale und Programmvariablen und deren Werte 206 Kapitel 8. Die Makro-Programmierung mit AML Befehl zeigt an &listglobal globale Variablen und ihre Werte (&lg) &listlocal (&ll) lokale Variablen und ihre Werte &listprogram (&lp) Programmvariablen und ihre Werte Wenn kein Variablenname angegeben ist, werden alle Variablen aufgelistet. Ein * kann als Wildcard benutzt werden. Wenn der Name der Variablen bekannt ist, meldet &lv .cover z.B. zurück: GLOBAL .COVER LANDNUTZUNG d.h. eine globale Variable namens .cover ist mit dem Wert landnutzung belegt. 8.4.1.7. Übertragen von Argumenten/Variablen Mit der Anweisung &args können Variablen schon beim Aufruf des AML-Programms über dem Programm mitgegebene sog. Argumente mit Werten besetzt werden. Dies bietet sich z.B. an, wenn ein AML erstellt wurde, das je eine Informationsebene in Kartenform ausgeben soll. Der Coveragename kann nun als Argument mitgegeben werden, ohne daß das Programm für jeden Aufruf neu modifiziert werden muß. Vereinfacht könnte das AML so aussehen: /* karte.aml &args cover1 cover2 /* Vorder- und Hintergrund /* beim Aufruf mitgeben arcplot mape %cover% arclines %cover1% 2 /* Hintergrund in rot ausgeben arclines %cover2% 4 /* Vordergrund in blau ausgeben Beim Aufruf werden die Variablen gegen die mitgegebenen Argumente ersetzt und die entsprechenden Coverages ausgegeben. Werden weniger Variablen beim Programmaufruf angegeben als vom Programm erwartet, erhalten die entsprechenden Werte von &args einen leeren Textstring ("") als Inhalt. Angenommen, wir rufen unser obiges Beispiel folgendermaßen auf: &r karte.aml fluesse erhalten wir für unser Programmbeispiel folgende Variablenbelegungen: 207 Kapitel 8. Die Makro-Programmierung mit AML cover1 = fluesse cover2 = "" Es werden nur so viele Variablen mit Werten belegt wie sie durch &args erwartet werden. Werden mehr Argumente mitgegeben, verfallen die restlichen. Dies läßt sich durch :rest verhindern. In diesem Fall werden alle übrigen Argumente der letzten &arg-Variablen als zusammenhängender String übergeben. Nehmen wir an, &args wurde wie folgt definiert: &args feld wald wiese:rest Aus der Eingabe: &r mein.aml mais tanne klee mohn ergibt sich folgende Variablenbelegung: feld = mais wald = tanne wiese = klee mohn 8.4.1.8. Reservierte Variablen Diese Variablen wurden vom Programm selbst gesetzt und dürfen daher auch nicht vom Anwender als Variablenname für eigene Variablen verwendet werden oder mit eigenen Werten belegt werden. Eine ausführliche Liste ist in der Online-Hilfe ArcDoc oder dem AML User’s Guide unter &describe zu finden. 8.4.1.8.1. Coverage-/Grid-/Tin-Variablen Diese Variablen enthalten Informationen über einzelne Coverages oder andere Geodatensätze (z.\,B.: wurde Topologie erzeugt?) Sie beginnen jeweils mit drei Buchstaben, z.B. DSC, gefolgt von einem $-Zeichen und dem zu beschreibenden Aspekt, z.B. DSC$COVER für den Namen eines Coverages. Mit der Variable DSC$QEDIT läßt sich prüfen, ob ein Coverage editiert wurde: &args cover &describe %cover% &if %DSC$QEDIT% &then build %cover% &else &type Das Coverage wurde nicht editiert &return 8.4.1.8.2. Cursorposition (PNT$) Diese Variablen werden für die graphische Eingabe benutzt, z.B. beim Digitalisieren und liefern Informationen über den Cursor (welche Maustaste wurde gedrückt, an welcher Stelle des Schirms befindet sich der Cursor?) 208 Kapitel 8. Die Makro-Programmierung mit AML 8.4.1.8.3. AML-Status-Variablen (AML$) Informationen über den aktuellen Zustand des AMLs können über diese Variablen abgefragt werden, z.B.: hat der Anwender das AML-Programm durch eine nicht vorhergesehene Eingabe zum Absturz gebracht?). AML$SEV liefert beispielsweise folgende Informationen über den Erfolg einer Operation für die zuletzt abgearbeitete Zeile. Dabei haben die Rückmeldungen folgende Bedeutung: 0 1 kein Fehler Warnung 2 Fehler AML$MESSAGE speichert jeweils die letzte Warnung oder Fehlermeldung, AML$MENUKEY den letzten Ta- stendruck. 8.4.1.8.4. Programmvariablen Im Unterschied zu lokalen und globalen Variablen werden diese Variablen vom Programm selbst vereinbart, nicht vom Benutzer. Jede dieser Variablen fängt mit einem : an. Es handelt sich um nur lesbare Variablen, d.h. sie können nicht anders belegt werden. Wenn ARC/INFO gestartet wird, wird eine Variable :program angelegt. &if %:program% = arc &then &describe %cover% ... &else &system arc describe %cover% In diesem Fall wird &describe direkt ausgeführt, wenn das aktuell laufende Programmodul ARC ist, andernfalls wird über die shell eine neue ARC/INFO-Instanz gestartet und im Anschluß der describeBefehl darin aufgerufen. 8.4.2. Funktionen und Anweisungen AML stellt neben Variablen Funktionen (functions) und Anweisungen (directives) zur Verfügung. AML bietet ein breites Spektrum an Funktionen, die zum Teil auch schon Menüs und Auswahlfelder bieten, z.B.: • Aufforderung zur Benutzereingabe (ja/nein, Dateiname, Arc/Polygon etc.) • Anzeigen einer Liste mit Auswahlmöglichkeit • Zeichenketten-Manipulationen (z.B. Ausgabe in Großbuchstaben) • Überprüfen der Existenz von Dateien, Coverages etc. 209 Kapitel 8. Die Makro-Programmierung mit AML Funktionen stehen immer in eckigen Klammern ([ ]). Auch sie können soweit abgekürzt werden, wie sie noch eindeutig sind. Anweisungen dienen z.B. dazu, Variablen zuzuweisen oder den Programmablauf je nach Erfüllung von Bedingungen oder Entscheidungen des Anwenders zu steuern. Verschiedene Anweisungen (z.B. &sv oder &if ... &else) haben wir bereits oben im Abschnitt zu Variablen kennengelernt. Anweisungen sind niemals selbst ein Programm, sondern weisen das AML an, Operationen durchzuführen. Sie beginnen immer mit einem & (kaufmännisches und, Ampersand). Die Anweisungen können in ihrer Buchstabenfolge soweit abgekürzt werden, wie sie von anderen Anweisungen eindeutig identifizierbar bleiben. 8.4.2.1. Anzeigen einer Liste mit Auswahl AML bietet eine breite Palette von Befehlen, die Listen erzeugen. Alle diese Befehle fangen mit [GET ...] an, z.B.: build [getcover * all] poly Mit [getcover] wird eine Liste aller (-all) vorhandenen Coverages angezeigt. Mit * wird vom Benutzer ein Coverage ausgewählt. Es existieren folgende Auswahlfunktionen: • getchar • getchoice • getcover • getfile • getgrid • getitem • getlibrary • getsymbol • getunique • gettin 8.4.2.2. Existenzüberprüfung von Objekten Oft werden in ARC/INFO Coverages und Attributtabellen verändert. Die Funktion [exists] prüft, ob alle Objekte, die benötigt werden, auch existieren. [exists] gibt eine Boolesche Variable zurück, die entweder .true (wenn das Objekt vorhanden ist) oder .false (wenn es nicht vorhanden ist) ist. Diese Funktion wird meist im Zusammenhang mit einer &if-Anweisung gebraucht. &if [exists strassen -cover] &then &ty "Das Coverage existiert" &else &ty "Das Coverage existiert nicht" 210 Kapitel 8. Die Makro-Programmierung mit AML 8.4.2.3. Erhalten von Attributinformationen Mit [listitem] und [iteminfo] kann man Informationen über Items (Spalten) in Coverages oder in INFOFiles erhalten. Mit [listitem] kann man alle Items oder einzelne Items, z.B. vom Typ character auflisten. Mit [iteminfo] erhält man die genaue Beschreibung eines Items. Arc: <command>&sv</command> items := [listitem strassen -line -char] Arc: <command>&ty</command> items NAME CLASS Items wird einer Liste aller Character-Items des Coverages gleichgesetzt. Das Ergebnis ist dann name und class Arc: &ty [iteminfo strassen -line name -def] 25,25,C,0 Hiermit kann z.B. die Datentypdefinition eines items abgefragt werden. In diesem Fall wäre das Ergebnis eine Ein- und Ausgabeweite von jeweils 25 Zeichen, das Feld wäre als Zeichenkette (character) definiert und hätte keine Dezimalstellen. 8.4.2.4. Anzeigen der momentanen Einstellungen Mit [show] kann man sich gesetzte Definitionen anzeigen lassen. Die Funktion liefert real, integer, character und boolesche Werte. [show liefert die Werte der momentanen Kartengröße. mapextent] [show program] gibt den Name des derzeit laufenden Programms aus. [show graphic] zeigt an, ob das gerade laufende Programm mit Graphikfunktion implementiert ist oder nicht [show&menu] zeigt die Position eines Digitalisiermenüs an Die [show]-Funktion liefert alle Definitionen, die möglich sind. Es ist darauf zu achten, daß die Funktion mit ihren Parametern aus dem richtigen Modul heraus aufgerufen wird (z.B. ARCEDIT, ARCPLOT, ARC etc.), sonst funktioniert die Abfrage nicht. 211 Kapitel 8. Die Makro-Programmierung mit AML 8.4.2.5. Verschachtelte Funktionen So viele Funktionen wie benötigt werden können auch verschachtelt werden. Arc: &sv xmin := [extract 1 [show mapextent]] extract übergibt den ersten Wert der [show]-Funktion an die Variable xmin. Dasselbe Beispiel könnte auch so aussehen: Arc: &ty [iteminfo strassen -line [extract 1[listitem strassen -line -char]] def] 8.4.2.6. Entscheidungen und Bedingungen 8.4.2.6.1. IF-THEN (Wenn ... dann) Die Anweisung nach &then wird nur ausgeführt, wenn die Bedingung hinter &if zutrifft, also den Wert .true annimmt. &if [getchar ’Buchstabe eingeben’] = A &then &r a.menu Wenn A eingegeben wird, wird das Menümakro a.menu ausgeführt. Mehrere Entscheidungen können auch verschachtelt werden. &describe %cover% &if [exists %cover% -poly] and &DSC$EDIT &then build %cover% poly Existiert also ein Polygoncoverage, dessen Geometrie bearbeitet wurde, wird ein build ausgeführt, um die Topologie neu zu konstruieren. Der Befehl in der letzten Zeile ist dabei wieder ein normaler ARC-Befehl. Existiert jedoch kein Polygoncoverage, so bricht das Makro an dieser Stelle mit einer Fehlermeldung ab. Besser ist es so: &if [exists %cover% -poly] &then &do &describe %cover% &if %DSC$EDIT% 212 Kapitel 8. Die Makro-Programmierung mit AML &then build %cover% poly &end Hier wird durch die vorherige Prüfung auf Existenz des Coverages verhindert, daß das Makro an dieser Stelle abbricht. 8.4.2.6.2. IF-THEN-ELSE (Wenn ... dann ... sonst) Es gilt zu beachten, daß jedem &else ein dazugehöriges &if vorangehen muß. Das vorhergehende Beispiel ließe sich wie folgt erweitern: &if [exists %cover% -poly] &then &do &describe %cover% &if %DSC$EDIT% &then build %cover% poly &else &ty ’Auf dieses Coverage muss kein build angewandt werden’ &end &else &ty ’Das Polygoncoverage %cover% existiert nicht’ Um mehr als zwei Auswahlmöglichkeiten zu erhalten, können die Bedingungen verschachtelt werden. Dabei ist darauf zu achten, daß nur soviel wie nötig und nicht soviel wie möglich verschachtelt wird, da hierunter die übersichtlichkeit leidet. Hierzu zwei Beispiele: &if [response ’Sind sie ein Gallier (y/n)?’] eq y &then &if [response ’Spinnen die Roemer (y/n)?’] eq y &then &ty ’Sie sind ein Gallier!!!’ &else &ty ’Na, na, na, Sie sind wohl ein Roemerfreund?’ &else &ty ’Vorsicht vor den Galliern, Roemer!’ oder &s zahl = [response ’Geben Sie eine Zahl ein’ 0] &if [type %zahl%] lt 0 213 Kapitel 8. Die Makro-Programmierung mit AML &then &if %zahl% ge 0 &then 8.4.2.6.3. SELECT-WHEN (Wähle ... wenn) Verschachtelte Anweisungen werden schnell unüberschaubar. Mit select ... when bietet AML eine Alternative hierzu. Betrachten wir zunächst eine Auswahl über verschachtelte &if ... &else Konstruktionen: &if [show editfeature] = arc &then &menu arc.menu &else &if [show editfeature] = tic &then &menu tic.menu &else &if [show editfeature] = label &then &menu label.menu &else &if [show editfeature] = node &then &menu node.menu &else &ty ’Kein Menue fuer dieses Feature vorhanden übersichtlicher läßt sich dies mit &select realisieren: &select[show editfeature] &when arc &menu arc.menu &when tic &menu tic.menu &when label &menu label.menu &when node &menu node.menu &otherwise &ty ’Kein Menue fuer dieses Feature vorhanden’ &end 214 Kapitel 8. Die Makro-Programmierung mit AML Wenn &select ausgeführt wird, prüft der Makroprozessor die &when-Anweisungen der Reihe nach durch. Trifft eine Bedingung zu, so wird der nachstehende Menübefehl ausgeführt. Trifft keine der &whenBedingungen zu, so wird die Anweisung nach &otherwise ausgeführt, daher sollte spätestens hier ein Befehl stehen, der in jedem Fall ausgeführt werden kann, da sonst ein AML-Fehler auftritt. Die &select-Anweisung muß mit einer &end-Anweisung beendet werden. Soll in einem &when-Fall bei verschiedenen Bedingungen der gleiche Befehl ausgeführt werden, können iese in einer Zeile, durch Kommata getrennt, eingegeben werden. Ausgeführt werden kann jedoch immer nur ein Statementbefehl hinter &when. Sollen hier mehrere Befehle ausgeführt werden, so ist es besser, sie in einen &do ... &end-Block einzubetten: &select [username] &when digitize &r digitize.aml &when edit, plot, verify &do &s wahl := [getchoice Plot; Edit; Verify -prompt ’Wahl eingeben’] &r %choice%.aml &end &when manage &r manage.aml &otherwise &ty ’Sie haben keine Berechtigung, ein Programm zu starten’ &end 8.4.2.6.4. GOTO Mit &goto kann man an eine beliebige Stelle im Programm springen. Die Zeile, in die gesprungen werden soll, beginnt mit &label. &if [response ’Wollen Sie aufhoeren (y/n)?’] eq y &then &goto save ... ... &label save save quit Durch &goto-Anweisungen geht die übersicht über den Programmablauf schnell verloren. Es sollte nur als Notlösung eingesetzt werden. Generell ist von der Verwendung von &goto abzuraten und es existiert wohl nur noch als Zugeständnis an hartnäckige BASIC-Programmierer ... 215 Kapitel 8. Die Makro-Programmierung mit AML 8.4.2.7. Schleifen Abläufe, die sich in gleicher Form für verschiedene Elemente wiederholen, können zur Vereinfachung in verschiedene Schleifen eingebunden werden und dort nacheinander abgearbeitet werden. 8.4.2.7.1. Zählschleifen (&DO ... &TO ... &BY ... &END) Bei einer bekannten Anzahl von Durchläufen, z.B. beim Lesen oder Eingeben von Daten, kann man Zählschleifen benutzen. Die Zählvariable wird hierbei nach jedem Durchgang um einen festgelegten Wert erhöht bzw. erniedrigt. &do i := 1 &to 11 &by 2 list %cover%%i%.pat &end Zählschleifen können auch mit einer Bedingung versehen werden. &do i := 1 &to 11 &by 1 &while %num% ne 11 <statement ... statement> &end Die Schleife wird beendet, wenn die definierte Zahl der Durchläufe erreicht ist. 8.4.2.7.2. WHILE-Schleifen Für while-Schleifen wird die Abbruchbedingung vor dem Beginn der Schleife festgelegt. &sv continue = .true &do &while %continue% &r machdies.aml &s [query ’Neue Operation (y/n)?] &end Solange die Bedingung für continue wahr ist, wird die Schleife ausgeführt 4. Erst bei .false, d.h. wenn man ein n eingibt, wird sie beendet. Wenn continue .false wird, wird die Schleife jedoch noch einmal durchlaufen. Soll dies nicht geschehen, so muß die Abbruchbedingung hinter &while geschrieben werden. &sv continue = .true &do &while [query ’Neue Operation (y/n)?’] &end 216 Kapitel 8. Die Makro-Programmierung mit AML 8.4.2.7.3. UNTIL-Schleifen Bei until-Schleifen muß die Abbruchbedingung nicht vor Beginn der Schleife definiert werden. &do &unitl %done% &r machdas.aml &sv [query ’Ende der Operation (y/n)?’] &end Die Schleife wird immer fragen, ob die Operation noch einmal durchgeführt werden soll. Wenn der logische Ausdruck .true ist, wird die Schleife beendet. 8.4.2.7.4. LIST-Schleifen Eine solche Schleife führt für jedes Element einer Liste die Operationen innerhalb dieser Schleife durch. Die Schleife kann auch mit &while und &until eine Abbruchbedingung erhalten, so daß die Schleife nicht für die ganze Liste durchgeführt wird. Das Beispiel zeigt eine Schleife, die überprüft, ob zu einem Coverage die dazugehörigen INFO-Files existieren. &sv cover = [response ’Coveragenamen eingeben:’] &do ext &list pat aat tic bnd &if [exists &cover%.%ext% -info] &then &ty Info-Datei %cover%.%ext% ist vorhanden &end 8.4.2.7.5. REPEAT-Schleifen Diese Schleife sollte am Ende mit &until oder &while beendet werden. Macht man das nicht, muß man sie mit &return beenden, da wir sonst eine Endlosschleife produzieren. &do kreis = 1 &repeat %kreis% + 1 &until %done% &r berechnung.aml &if [response ’noch einmal (y/n)?] eq n &then &sv done = .true &end 217 Kapitel 8. Die Makro-Programmierung mit AML 8.4.2.7.6. Verschachtelte Schleifen Bei verschachtelten Schleifen wird zuerst die innerste Schleife komplett abgearbeitet, dann die nächstäußere, bis die äußerste Schleife durchlaufen wurde. Im folgenden Beispiel belegen wir eine 3x3-Matrix mit Zahlen. &do 8.4.2.8. Routinen (Module) AML-Routinen entsprechen Modulen oder Prozeduren in anderen Programmiersprachen. Sie werden für häufig wiederkehrende Abläufe, etwa zur Fehlerbehandlung oder bei Bedingungen, benutzt. Sie können komplexe &do-Blöcke ersetzen. Entweder werden diese Teile separat in einem eigenen AML abgelegt oder sie stehen am Ende des Programmes in einem separaten Block. Stehen sie am Ende des Programmes, bezeichnet man sie als Routinen. Andernfalls kann man sie als Bibliotheken betrachten. Routinen sind Unterprogramme innerhalb eines AML-Makros. Der Hauptteil des Programmes muß mit &return beendet werden, sonst werden die Routinen ausgeführt, obwohl sie möglicherweise im Hauptprogramm gar nicht aufgerufen wurden. Mit &call ruft man Routinen vom Hauptprogramm her auf. Routinen beginnen mit &routine. Mit &stop oder &return hören sie auf. Folgt auf das &return kein &inform, &warning oder &error, so springt die Routine an die Stelle des Hauptprogramms zurück, von der aus das Unterprogramm aufgerufen wurde und führt den nächsten Befehl aus. Folgt dagegen eine der drei vorgenannten Anweisungen, wird das AML beendet. /* meinedit.aml - startet ArcEdit /* mit dem angegebenen Coverage, feature /* und station-file &args cover feature station &if [null %station%] &then &do &s fehlertyp = keindisplay &call usage &end &if not [exists %cover% -cover] &then &do &s fehlertyp = coverfehler &call usage &end &if [keyword %feature% anno arc label link node tic] le 0 &do &s fehlertyp = falschelem 218 Kapitel 8. Die Makro-Programmierung mit AML &call usage &end ... ... &return /*Ende des Hauptprogramms &routine usage /* zeigt Fehler und korrekte Syntax an &select %fehlertyp% &when keindisplay &ty ’Fehler bei Angabe des Station-Files’ &when coverfehler &ty ’Coverage existiert nicht’ &when falschelem &ty ’Feature muss anno, arc, label, link, node oder tic sein’ &end ... ... &return &inform usage: meinedit <cover> <feature_class> <station_file> Das Programm wird nach Aufruf und Durchführung der Routine abgebrochen, da die Eingabe falsch war. In den anderen möglichen Fällen, d.h. bei richtiger Eingabe, läuft das AML bis zum Schluß. Mit &return wird es beendet, so daß die anschließenden Routinen ohne den &call-Aufruf nicht gestartet werden können. 8.5. Dateien und Datenbanken AML-Programme können nur ASCII-Dateien lesen. Mit den Funktionen [delete], [exists], [getfile], [filelist] und [open] können die üblichen Dateioperationen durchgeführt werden. Im Beispiel wird eine Menudatei ausgewählt und deren Name an eine Variable übergeben. &sv meinedatei = [getfile *.menu -file -noext ’Menudatei auswaehlen’] Die AML-Funktionen erlauben es, Dateien zu erzeugen, zu löschen, Zeilen anzuhängen, Dateien zu öffnen und zu schließen. Die file Unit ist ein AML-Zähler, den der AML-Prozessor mit der aktuell geöffneten Datei verknüpft. Sie ist die interne Stellverteterzahl für die Datei. Statt also den wirklichen Dateinamen zu benutzen, nimmt der AML-Prozessor die file unit. Die aktuelle Zahl kann mit Hilfe von [open] ausgelesen und einer Variablen zugewiesen werden. Diese Variable vertritt dann die Datei, wann immer sie gebraucht wird. [open] stellt also die Verbindung zwischen der wirklichen Datei und der Stellvertreterzahl her. 219 Kapitel 8. Die Makro-Programmierung mit AML &sv fileunit = [open test.dat openstat -append] In diesem Beispiel liefert [open] die file unit, mit der die Datei test.dat im weiteren Verlauf der AML-Session vertreten wird, an den AML-Prozessor. Gespeichert wird die File Unit in der Variablen fileunit5. Ab diesem Zeitpunkt wird nur noch diese Variable benutzt, um Operationen mit der Datei durchzuführen. &s string = [response ’Zeichenkette, die angehängt werden soll:’] &s writefile = [write %fileunit% %string%] Die [write]-Funktion hängt also an die Datei, die mit der Variablen fileunit verknüpft ist, die Zeichenkette an, die in der Zeile zuvor eingegeben worden ist. Die status variable gibt den Status einer ausgeführten Lese-, Schreib- oder Anfügeoperation an. Diese Variable hat den Wert Null (0), wenn die Operation erfolgreich war. In den anderen Fällen, die zum Abbruch führen, hat die erhält die Variable andere Werte. Bei den Funktionen [open] und [read] werden Variablen an benutzterdefinierte Variablen innerhalb des Funktionsaufrufes übergeben. Daher gibt es die status variable bei diesen beiden Funktionen nicht. Ein record ist eine Zeile in einer Datei. Eine Zeile kann ein Leerzeichen, Zeichenketten etc. enthalten. Zeilen können nur der Reihe nach abgearbeitet werden. Um also die zehnte Zeile einer Datei lesen zu können, muß das Programm zuerst die vorherigen neun Zeilen lesen. Dies geschieht mit [read]. 8.5.1. Öffnen einer Datei Bevor man mit einer Datei arbeiten kann, muß diese geöffnet werden. Dies geschieht mit der Funktion [open]. Maximal 20 Dateien können gleichzeitig geöffnet werden. Die Syntax lautet: Arc: usage [open <file> <status_variable> <-read | -write | -append>] wobei file der Name der Datei ist. Mit -read usw. wird angegeben, auf welche Weise die Datei angesprochen werden soll. Die status_variable gibt an, wie die Operation verlaufen ist. Sie kann folgende Werte haben: 0 100 Datei erfolgreich geöffnet keine freie file unit mehr verfügbar 101 102 Datei nicht gefunden (-read) kann die Datei nicht öffnen (-read, -append) 220 Kapitel 8. Die Makro-Programmierung mit AML 103 kann die Datei nicht erzeugen (-write, -append) 8.5.1.1. Datei lesend öffnen (-read) Mit der -read-Option wird eine Datei geöffnet, die nur gelesen werden kann. Wenn man also in die Datei schreiben will, so wird das Programm einen Fehler melden und mitteilen, daß dies nicht möglich ist. Wenn eine Datei erfolgreich geöffnet wurde, ist der Wert der status_variable Null. Folgendes Beispiel verdeutlicht dies: &s fileunit = [open datei openstat -r] 8.5.1.2. Datei mit Schreibberechtigung öffnen (-write) Mit der -write-Option wird eine Datei geöffnet, die entweder beim Speichern die alte Datei überschreibt, oder eine neue Datei unter dem gewählten Namen anlegt, sofern sie nicht vorhanden ist. Eine Datei die mit -read geöffnet wurde kann nicht gleichzeitig mit -write geöffnet werden. Wenn die Operation erfolgreich war, hat die Variable den Wert Null. Bevor man mit der Datei arbeitet, sollte man prüfen, ob sie auch erfolgreich geöffnet wurde: &if [exists %file%] &then &do &s fileunit = [open datei openstat -w] /* Pruefen, ob die Datei erfolgreich geoeffnet wurde &if %openstat% ne 0 &then &do &return &inform Kann die Datei nicht oeffnen &end &else /* Lesen der Datei &end &else &type Die Datei %file% ist nicht vorhanden . . . &return 221 Kapitel 8. Die Makro-Programmierung mit AML 8.5.1.3. An Datei anfügen (-append) Diese Funktion wird benutzt, um Zeilen an das Ende einer Datei anzufügen. Auch hier gibt es die Möglichkeit, diese, sofern sie noch nicht existiert, als neue Datei zu speichern. Dies kann folgendermaßen geschehen: &s fileunit := [open datei openstat -a] [open] gibt eine file unit-Nummer aus, die von den anderen Operationen gebraucht wird ([read], [write] oder [close]). Die file unit hat entweder einen Wert zwischen 1 und 20 oder den Wert 100, wenn schon 20 Dateien geöffnet sind. Der Wert der Funktion [open] hat entweder einen Wert zwischen 1 -20 oder den Wert Null, wenn die file unit den Wert 100 hat. 8.5.1.4. Lesen einer Zeile aus einer Datei Wenn eine Datei mit der -read-Option erfolgreich geöffnet worden ist, kann die [read]-Funktion dazu benutzt werden, Zeilen zu lesen. Diese Funktion kann jedoch nur ganze Teile einer Zeile lesen. Einzelne Zahlen oder strings können nicht erfasst werden. Mit [extract], [before], [after] und [substr] kann der Nutzer auch solche Teile einer Zeile lesen. Die Syntax der Funktion ist folgende: Arc: usage [read <aml_file_unit> <status_variable>] wobei aml_file_unit/ die file unit ist, die [open] zurückgibt. status_variable gibt an, ob die Leseoperation erfolgreich war oder nicht. &s fileunit := [open [getfile] openstat -r] &s linie := [read %fileunit% readstat] Mit [getfile] erhält man eine Liste der verfügbaren Dateien. Die daraus ausgewählte Datei wird mit [open] geöffnet. Solange die Datei nicht leer ist, wird die Variable linie auf die erste Zeile gesetzt. Sind in der Zeile Leerzeichen vorhanden, wird der Wert von [read] in Anführungszeichen zurückgegeben. Sind sie nicht gewünscht, so kam man dies mit [unquote] unterdrücken. &s linie := [unquote [read %fileunit% readstat]] 222 Kapitel 8. Die Makro-Programmierung mit AML Die maximale Länge einer Zeile darf 1024 Zeichen nicht überschreiten. Wenn Leerzeichen darunter sind, darf die Zeile nicht mehr als 1022 Zeichen haben. Wenn die Zeile länger ist, wird sie von hinten entsprechend abgeschnitten. Immer wenn die Funktion [read] aufgerufen wird, wird auch die status-variable neu gesetzt. Sie kann folgende Werte annehmen: 0 Zeile wurde erfolgreich gelesen 100 101 Die file unit ist nicht zum Lesen bereit Fehler beim Lesen 102 103 Ende der Datei Es ist nicht möglich, die Datei wieder zu öffnen (Dateien zwischen Arc-Programmen können geschlossen und automatisch wieder geöffnet werden) 104 Die Zeile wurde auf 1024 Zeichen abgekürzt Die [read]-Funktion liefert nur jeweils eine Zeile. Will man mehrere Zeilen gleichzeitig ansehen, so kann man mit Hilfe von Schleifen realisieren. Im folgenden Beispiel werden alle Zeilen der Reihe nach auf dem Bildschirm ausgegeben, bis das Ende der Datei erreicht ist. Zuvor wird geprüft, ob die Datei auch richtig geöffnet wurde. &args datei /* Fehlersuch &if [null %datei%] &then &return &inform Es wurde kein Dateiname eingegeben! &s fileunit = [open %datei% openstat -r] &if openstat ne 0 &then &return &error Fehler beim öffnen der Datei /* Lesen der Zeilen &s zeile = [read %fileunit% readstat] &do &while %readstat% ne 102 &type %zeile% &s zeile = [read %fileunit% readstat] &end /* Schließen der file unit &s closestat = [close %fileunit%] &return Sollen nur einige Zeilen, bzw. Bestimmte Zeilen aus der Datei gelesen werden, so bieten sich weitere Schleifen an, um dies zu erreichen: &args datei /* Fehlersuch &if [null %datei%] 223 Kapitel 8. Die Makro-Programmierung mit AML &then &return &inform Es wurde kein Dateiname eingegeben! &s fileunit = [open %datei% openstat -r] &if openstat ne 0 &then &return &error Fehler beim öffnen der Datei /* Uebergehen der ersten zehn Zeilen &do i = 1 &to 10 &s zeile = [read %fileunit% readstat] &end /* Lesen ab der 10. Zeile bis zum Ende &s zeile = [read %fileunit% readstat] &do &while %readstat% ne 102 &type %zeile% &s zeile = [read %fileunit% readstat] &end /* Schließen der file unit &s closestat = [close %fileunit%] &return Die ersten zehn Zeilen werden also nur gelesen, aber von allen anderen Operationen ausgeschlossen. Der Benutzter bekommt es gar nicht mit, daß sie gelesen werden. 8.5.1.5. Schreiben einer Zeile in eine Datei ähnlich wie die [read]-Funktion funktioniert auch die [write]-Funktion. Die Datei muß mit [open] geöffnet werden. Danach kann an das Ende der Datei eine Zeile angehängt werden. Die Syntax ist folgende: Arc: usage [write <aml_file_unit> <record>] wobei aml_file_unit die file unit ist, die [open] zurückgibt. status_variable gibt an, ob die Schreiboperation erfolgreich war oder nicht. Im Unterschied zur [read]-Funktion besitzt die [write]-Funktion keine Statusvariable, die angibt, ob die Operation beendet ist. Der Status der Operation wird aber durch die Variable, die [write] liefert, angezeigt: 0 100 Die Zeile wurde erfolgreich geschrieben Die Datei ist nicht offen zum Schreiben 101 102 Während des Schreibens ist ein Fehler aufgetreten Es ist nicht möglich, die Datei wieder zu öffnen (Dateien zwischen Arc-Programmen können geschlossen und automatisch wieder geöffnet werden) 224 Kapitel 8. Die Makro-Programmierung mit AML Die Zeile, die in die Datei geschrieben wird, kann einen Textstring, einen Wert einer AML-Variablen oder eine Mischung beider enthalten. Wenn die Zeile Leerzeichen enthält, so muß sie in Anführungszeichen stehen, damit [write] sie als eine zusammenhängende Zeile versteht. Die Anführungszeichen werden jedoch nicht mitgespeichert. Folgendes Beispiel verdeutlicht die Möglichkeiten von [write]: &args datei /* Fehlersuche &if [null %datei%] &then &return &return Es wurde kein Dateiname eingegeben! &s fileunit = [open %datei% openstat -w] &if openstat ne 0 &then &return &error Fehler beim Oeffnen der Datei /* Schreiben einiger Zeilen in die Datei &s writestat = [write %fileunit% KeineLeerzeile] &s writestat = [write %fileunit% ’Mit Leerzeichen’] /* Schreiben in die Datei mit Hilfe einer Variablen &s zeile = in einer Variablen gespeicherte Textzeichen &s writestat = [write %fileunit% [QUOTE %zeile%]] /* Schreiben einer Zeile die eine Variable enthaelt &s writestat = [write %fileunit% [QUOTE Die Zeile enthaelt %zeile%] /* Schließen der file unit &s closestat = [close %fileunit%] &return Nachdem das AML-Programm durchlaufen wurde, sind der Datei folgende Zeilen angehängt worden: KeineLeerzeile Mit Leerzeichen Textzeichen, die in einer Variablen gespeichert sind Diese Zeile enthaelt in einer Variablen gespeicherte Textzeichen 8.5.1.6. Schließen einer Datei Mit [close] wird eine Datei geschlossen. Die dazugehörige file unit wird wieder frei für eine weitere Nutzung. [close aml_file_unit I -all] Die Dateien können einzeln oder mit -all alle auf einmal geschlossen werden. Den Status der Operation gibt die [close]-Funktion aus: 225 Kapitel 8. Die Makro-Programmierung mit AML 0 Datei erfolgreich geschlossen 101 102 file unit Nummer ist falsch oder existiert nicht Die file unit ist nicht offen Im folgenden Beispiel werden alle Dateien geschlossen: &s closestat = [close -all] 8.5.1.7. Löschen einer Datei Mit [delete| können Dateien, Verzeichnisse oder INFO-Dateien gelöscht werden. Eine Datei muß immer geschlossen sein, bevor sie gelöscht werden kann. [DELETE <file> {-FILE I -DIRECTORY I WORKSPACE I -INFO}] Den Status der Operation gibt der Wert an, den [delete] zurückgibt: 0 Löschung erfolgreich durchgeführt 100 Kann die Datei, das Verzeichniss oder die INFO-Datei nicht löschen Man kann z.B. eine spezielle Routine schreiben, die alle temporären Dateien löscht, bevor das Programm beendet wird: ... &routine exit &if [variable unit] &then &do &sv closestat [close %unit% &if %closestat% = 0 &then &do &dv fileunit &sv delstat = [delete %tmp_file%] &end &else &ty Fehler beim Schließen der file unit %fileunit% Error~ Code: %closestat% &end 226 Kapitel 8. Die Makro-Programmierung mit AML 8.5.1.8. Anzeigen von vorhandenen Dateien und Spalten Während einer Arc-Session kommt es häufig vor, daß man bestimmte Objekte löschen will, eine Dateiliste braucht usw. Dies geschieht mittels der Funktionen [filelist] und [listitem]. Diese Funktionen erlauben es, Dateien zu erzeugen, in denen nur bestimmte Objekte aufgelistet sind. Das folgende Beispiel erzeugt eine Datei, die alle Dateien enthält, die in diesem Verzeichnis vorhanden sind. Dies können Systemdateien, Logdateien, ARC/INFO-Dateien usw. sein. &s numobs = [filelist * datei.list -file] Der * ist ein Platzhalter (wildcard), und zeigt an, daß alle Dateien ausgewählt werden sollen. Das Ergebnis einer solchen Operation könnte folgendermaßen aussehen: arc.aml ae.aml ae.menu ap.aml choice.menu classify.aml coverlist.list digi.menu grid.aml log reset.aml studies.aml tin.aml tin.list tin.menu temp.aml xit.menu Meistens sollen es aber nicht alle Dateien sein, sondern nur bestimmte. Welche Dateien es sein sollen, kann man selbst festlegen. Folgende Zeile erzeugt eine Datei, in der nur die AML-Dateien angezeigt werden: &s numobs = [filelist *.aml datei.list -file] Dies zeigt dann nur noch die Dateien mit .aml-Endung im aktuellen Verzeichnis an. Mit der -type Option können beliebige Objekte ausgewählt werden, seien es Grids, workspaces, INFODateien oder coverage-Elemente wie arc, poly etc. Die nächste Zeile zeigt ein Beispiel, um sich alle Polygoncoverages anzeigen zu lassen. Die zweite Zeile gibt dann den Wert der Variablen an. &s numobs = [FILELIST *.aml poly.list -cover -poly] &lv numobs 227 Kapitel 8. Die Makro-Programmierung mit AML Die Ausgabedatei hätte z.B. diesen Inhalt Verkehr Flächennutzung Gewässer Boden Geologie Klima Niederschlag Die Funktion [filelist] übergibt an die Variable numobs einen integer-Wert, der darüber Auskunft gibt, ob die Operation erfolgreich war oder nicht. Wenn ja, dann zeigt die Variable an, wieviele Objekte in die Datei geschrieben worden sind. Im obigen Beispiel hat die Variable numobs den Wert 7, da sieben Coveragenamen in der Datei abgelegt worden sind. Die Rückgabewerte haben folgende Bedeutung: -2 Zu viele Objekte. Es wurde keine Datei erzeugt, da es mehr als 400 Stück sind. -1 Konnte die Datei nicht erzeugen, da keine Schreibrechte für das Ausgabeverzeichnis der Datei vorliegen. Es wurde keine Datei erzeugt. 0 Die Datei wurde erzeugt, bleibt aber leer. In dem Verzeichnis oder Workspace gab es keine Objekte, die dem Suchkriterium entsprachen. Die Datei wurde mit der Anzahl der entsprechenden Objekte erzeugt. Die Zahl gibt an, wieviele. größer als 0 8.5.1.9. Zugriff auf INFO-Tabellen Alle AML-Funktionen, die ein Argument -info haben, können auf INFO-Dateien zugreifen. [filelist] erzeugt eine Datei mit allen INFO-Dateien wie .pat, .aat oder .lut. Die Beispielzeile erzeugt eine Datei mit allen lookup tables, die im Suchpfad liegen. &sv numobs = [filelist *.lut lookuptables.list -full -info] Die [exists]-Funktion erlaubt es zu prüfen, ob eine Datei vorhanden ist. Nützlich ist die Funktion in Verbindung mit Abfragen. Nur wenn ein Coverage vorhanden ist, kann auch mit ihm gearbeitet werden. &if [exists boden.rel -info] &then relate restore boden.rel 228 Kapitel 8. Die Makro-Programmierung mit AML Mit [delete] werden INFO-Dateien gelöscht. &sv delstat = [delete tmp.dat -info] In diesem Beispiel wird die Funktion dafür benutzt, alle temporären Info-Dateien zu löschen. Mit den [get...]-Funktionen kann man auch auf Info-Dateien zugreifen. Die -info Option von [getfile] ermöglicht es, Info-Dateien anzuzeigen. Das Beispiel zeigt, wie man eine Lookup-Tabelle aus der Liste der vorhandenen Tabellen auszuwählen kann: &sv table = [getfile *.lut -info] [getitem] erlaubt den Zugriff auf einzelne Items. Das Beipiel zeigt einen Programmausschnitt, der benutzt wird, um Polygone mit Hilfe einer Lookup-Tabelle einzufärben. Erst wird das Coverage ausgewählt, dann das Item und schließlich die Lookup-Tabelle: &sc coverage = [getcover * -poly ’Bitte wählen Sie eine Coverage aus, ~ dessen Polygone eingefärbt werden sollen.’] &sv spalte = [getitem %coverage% -poly ’Bitte waehlen Sie ein lookup ~ table item.’] &sv lookup = [getfile * .lut -info ’Bitte waehlen sie eine ~ Lookup-Tabelle aus.’] polygonshades %coverage% %ispalte% %lookup% Dieses Programm beinhaltet aber keine Abfrage, ob die Werte in dem gewählten Item vom Typ Integer sind. Sind es Real-Werte, so bricht das Programm an dieser Stelle mit einer Fehlermeldung ab. Verhindern kann dies die Funktion [iteminfo]. Diese Funktion gibt eine genaue Beschreibung eines ausgewählten Items aus. Die Syntax ist folgende: Arc: usage [iteminfo <specifier> <-type> <item> {-definition | -redefined | -indexed | -exists | fulldef}] Die drei Optionen \verb/-redefined/, \verb/-indexed/, \verb/-exists/ geben als Rückgabewert \verb/.true/ oder \verb/.false/ aus, je nachdem, ob das Item neu definiert wurde, indiziert ist oder überhaupt existiert. Wichtiger für uns ist jedoch \verb/-definition/, denn damit wird die genaue Definition des Items ausgegeben. Wird \verb/[iteminfo]/ z.B auf ein Item \verb/cover#/ angewandt, so erhält man \verb/4,5,B,0/. Dabei steht 4 für die item-Breite, 5 für die output-Weite, B für den item-Typ und 0 für die Anzahl der Dezimalstellen. Es läßt sich daran leicht überprüfen, ob ein item auch wirklich einen Integer-Wert besitzt. 229 Kapitel 8. Die Makro-Programmierung mit AML Das Beispiel zeigt einen umfangreicheren Ausschnitt aus einem Programm. Dieser Teil dient dazu, Polygone einzufärben. Auch hier wird zunächst überprüft, ob ein Item vorhanden ist, bzw. ob das Item Integer-Werte besitzt. Falls dies nicht der Fall ist, gibt das Programm eine Fehlermeldung aus.[iteminfo] mit der -exists-Funktion und [getitem] mit der -integer-Option aufgerufen. Beide sorgen dafür, daß nur Items benutzt werden, die vorhanden sind bzw. richtige Werte haben. /* Flaechenfaerbung.aml &sc coverage = [getcover * -poly ’Bitte waehlen Sie eine Coverage aus, ~ deren Polygone eingefaerbt werden sollen.’] &if [query ’Wollen Sie eine lookup-Tabelle benutzen’] &then &sv spalte = [getitem %coverage% -poly ’Bitte waehlen Sie ein Lookup ~ Table Item.’] &sv lookup = [getfile * .lut -info ’Bitte waehlen sie eine ~ lookup-Tabelle aus.’] &IF not [iteminfo %lookup% -info %spalte% -exists] &then &return %spalte% ist nicht vorhanden [after [after %lookup !] !] polygonshades %coverage% %spalte% vorhanden [after [after %lookup !] !] &end &else &do &sv spalte = [getitem %coverage% -poly -integer ’Bitte wählen Sie ~ ein item aus, mit dem die Polygone eingefärbt werden sollen.’] &if [null %spalte] &then &return Kein Integer-Item ausgewählt! polygonshades %coverage% %spalte% &end &return Die Funktion [getunique] geht einen Schritt weiter. Mit ihr ist es möglich, einzelne Variablen aus einem Item auszulesen. Dem Anwender werden also alle Records eines Items angezeigt, die den selben Wert haben. Das Beispiel zeigt ein Programm, das den Benutzer auffordert, eine Datei, ein Item und schließlich einen Wert anzugeben. Danach wechselt das Programm in TABLES, wählt die Records aus und gibt dem Benutzter eine Liste der ausgewählten Records auf dem Bildschirm aus. So etwas ist dann sinnvoll, wenn der Benutzter die Möglichkeit haben soll, selbst zu entscheiden, welche Flächen oder Linien usw.~er auswählen will. Das Programm kann also leicht verändert für viele Teile in ARC/INFO übernommen werden (z.B. ARCEDIT, ARCPLOT). &sv infodatei = [getfile * -info] & sv spalte = [getitem %infodatei% -info] &sv wert = [getunique %infodatei% -info %spalte%] tables select [after [after %infodatei% !] !] reselect %spalte% = [quote %wert%] list 230 Kapitel 8. Die Makro-Programmierung mit AML 8.6. Menüs Menüs sind elementare Bestandteile einer graphischen Oberfläche. Durch sie wird es erst möglich auf einfache Weise Coverages zu manipulieren, Grids zu erzeugen, Variablen zu setzten, Text einzugeben usw. Gegenüber einfachen, kommandozeilenorientierten Programmen ist jedoch zu beachten, daß bei derBereitstellung einer graphischen Oberfläche die Vereinfachung für den Anwender mit einer größeren Komplexität auf der Programmierungsseite einhergeht. Die Zahl der möglichen Eingaben zu jedem Zeitpunkt der Programmausführung steigt mit der Zahl der Widgets und Eingabemöglichkeiten, während der Benutzer bei einem kommandozeilenorientierten Programm einfacher zur „richtigen“ Reihenfolge bei der Eingabe „gezwungen“ werden kann. Der gelegentliche Anwender will sich selten mit den mannigfaltigen Eingabemöglichkeiten auseinandersetzen, wenn er es über eine Grafische Oberfläche einfacher haben kann. Deshalb bietet AML eine reiche Auswahl an verschiedenen Menüformen. • Pulldown menu, screen menu • Sidebar menu, screen menu • Matrix menu, screen menu • Key menu, key menu • Tablet menu, paper menu • Digitizer menu, paper menu • Form menu, screen menu Es gibt vier Menues für die Manipulation am Bildschirm, zwei für den Einsatz mit Digitizern und eines für die Tastatur. Der Aufruf von Menus erfolgt durch: &menu name.menu oder kurz: &m name Wichtig ist, daß die Menus auch in der richtigen Umgebung aufgerufen werden. ARCPLOT-Befehle sollten nur in einem Menu auftauchen, das in ARCPLOT aufgerufen wird, ansonsten kommt es zwangsläufig zu Fehlermeldungen. Die Ziffern, mit denen die menu-Datei beginnt, legen fest, welche Art Menü ausgeführt werden soll. 231 Kapitel 8. Die Makro-Programmierung mit AML 8.6.1. Pulldown Menu Das Pulldown Menu besteht aus einem Haupt-Menubalken, der eine Anzahl wählbarer Menupunkte auflistet. Verzweigt man in eines dieser Pulldown-Menus, erscheint entweder eine weitere Liste von Optionen (subchoices) oder es wird eine direkte Funktion sofort ausgeführt. Das Menu-Programm besteht je Aussage (statement) aus zwei Punkten: visible choice action wobei die ausführbare Option (action) durch ein Leerzeichen (blank) von dem Text getrennt sein muß, der im Pulldown Menu aufgelistet wird. 1. Zeile: Kennummer des Menus (Pulldown = 1). Der nachfolgende Text ist ein Kommentar, der auch mit den üblichen Zeichen (/*), an jeder beliebigen Stelle des Programmes stehen kann. 2. bis nte Zeile: Die einzelnen Aussagen auf oberster Ebene, sowie die Aussagen auf nachfolgenden Ebenen. Die Position (1. Spalte, 2. Spalte usw.) entscheidet, ob eine Aussage im Haupt- oder Untermenu erscheint. z.B.: 1 Beispiel Pulldown Menu DRAW UNI arcs fn UNI-str arclines uni-str CLEAR QUIT Enthalten sichtbare Menüeinträge Leerzeichen, so müssen sie zwischen Hochkommata gesetzt werden, sonst wird das erste Wort als visible choice, das zweite als action gewertet und die restlichen Wörter fallen weg. Direkt ausfürbare Optionen wie clear und quit sind visible choice und action in einem. Die Aussagen können sich über mehrere Zeilen erstrecken, wenn an jedem Zeilenende die Tilde (~) benutzt wird. Dabei ist es egal, ob die Folgezeile am Zeilenanfang beginnt oder nach einem Leerzeichen. Titel von Pulldown Menus werden beim Aufruf des Menus vergeben, z.B. &m text.menu &stipe ’Menu zur Textmanipulation’ Der Text muß von Hochkommata eingeschlossen werden, wenn er Leerzeichen enthält. 8.6.2. Sidebar Menu Das Sidebar-Menu ist in fast allen Punkten identisch mit dem Pulldown-Menu. Der einzige Unterschied liegt in der Richtung der Darstellung des Menus. Beim Pulldown-Menu werden die Untermenus nach unten aufgeklappt (=pulldown), hier werden die Unterpunkte nach der Seite aufgeklappt. 232 Kapitel 8. Die Makro-Programmierung mit AML 2 Beispiel Sidebar-Menu DRAW UNI arcs fn UNI-str arclines uni-str CLEAR QUIT 8.6.3. Matrix Menu Im Gegensatz zu den Pulldown- und Sidebar-Menus bietet diese Menu alle Wahlmöglichkeiten direkt an. Es gibt keine Untermenus oder Verzweigungen. Wenn ein Button angewählt wird, wird sofort ein Befehl ausgeführt. Das Menu passt sich automatisch so an, sodaß alle Wahlmöglichkeiten dargestellt werden können. Zu Beginn muß die Anzahl der Optione bekannt sein, die in diesem Menu benötigt wird. Damit vereinfacht sich die Gestaltung erheblich. Die Position des Menus am Bildschirm kann genau festgelegt werden. Definiert wird das Matrix-menu in der 1. Zeile, 1. Spalte mit 3 Matrix Menu. In der 2. Zeile wird die Ausrichtung und Bildschirmposition festgelegt. 1. Zahl 0 Querformat mit links-rechts Ausdehnug 1 Hochformat mit oben-unten Ausrichtung 2. Zahl -1 0 linksbündige Anordnung am Bildschirm zentrierte Anordnung am Bildschirm 1 rechtsbündige Anordnung am Bildschirm Die 3. Zeile gibt den Titel des Menus an. Soll das Menu keinen Titel keinen Titel haben, so kommt als dritte Zeile eine Leerzeile. Alle weiteren Zeilen bestehen wieder aus den bekannten visible choice und action, also dem angezeigten Begriff und der damit verbunden Operation. Dabei ist es egal, ob innerhalb der Zeile in der 1. Spalte mit der Zeile begonnen wird, oder ob ein oder mehrere Leerzeichen vor der visible choice stehen. Die Länge der Namen die auf dem Bildschirm erscheinen sollen, sind auf 32 beschränkt. Die Anzahl der Namen auf 100. Hinter einem Einzelbefehl dürfen nicht mehr als 4096 Zeichen stehen. In den Untermenus können keine weiteren Verzweigungen definiert werden, es sei denn, ein weiteres AML wird aufgerufen, in dem eine weitergehende Auswahl getroffen werden kann. Dieses Beispiel zeigt den Einsatz eines Matrixmenus. Nach dem drücken der verschiedenen Buttons werden die Kommandos direkt ausgeführt. Im Beispiel werden verschiedene Coverages dargestellt, wenn ein Button gedrückt wird. /* Exmatrix.menu 3 0 0 Select a coverage to draw Streets ARCLINES STREET TYPE ’Bus routes’ ROUTELINES STREET BUS RT_NO Soils POLYGONSHADES SOILS SOIL_TYPE SOIL.LUT 233 Kapitel 8. Die Makro-Programmierung mit AML Rivers ’Power poles’ ’Chemical sites’ POLYGONSHADES RIVER RIVER_TYPE RIVER.LUT LIST POLES.PAT INFO POINTMARKERS CHEMSITES CLASS 8.6.4. Key Menu Key-Menus werden benutzt, wo Kommandos eingegeben werden müssen. Diese Menüform eignet sich für Computer, die keine Grafikfenster unterstützen. Der Benutzer wird gebeten einen Buchstaben entsprechend seiner Wahl einzugeben. In der 1. Zeile wird wie auch bei den anderen Menus die Ziffer, in diesem Fall die vier für Key menu. In der 2. Zeile gibt eine Ziffer an, wie viele visible choice und help text Zeilen folgen, die auf dem Bildschirm erscheinen sollen. Dabei werden die Hilfstexte, zur Erläuterung mit einem Fragezeichen aufgerufen, außer wenn das Fragezeichen selbst eine Option ist. Der übrige Text im Key-Menu-Programm besteht aus jeweils einem Zeichen, das einen Buchstaben repräsentiert, der vor den Anweisungen, Kommandos oder Funktonen steht, die bei der Eingabe des Buchstabens ausgeführt werden. 4 Key menu 7 County Datenbank Bitte geben Sie zur Auswahl einen Buchstaben an! E - Ethnien G - Einkommen B - Bevoelkerung S - Schulbildung Q - Beenden /* Bis hierher werden die Zeilen, die nach /* der Sieben kommen auf dem Bildschirm angezeigt. E &R ethnien.aml [RESPONSE Welche Ethnie?] G &R Einkommen.aml B &menu BEVOELKERUNG.MENU &pulldown S &R bildung.aml Q QUIT 8.6.5. Tablet und Digitizer Menu Beides sind sogenannte Papiermenus, die gewöhnlich auf einem Zeichenbrett oder Digitalisiertablett angebracht werden. Der Benutzter korrespondiert mit dem Computer über die Digitalisiermaus. Der Ort an dem die einzelnen Befehlsfelder auf dem Papier eingezeichnet ist, wird genau festgelegt. Wenn man ein Befehlsfeld mit der Maus anklickt wird der entsprechende Befehl ausgeführt. Bei diesem Menu ist die Planungsphase sehr wichtig, da die Befehle über Koordinaten auf dem Papiermenu positioniert werden. Daher sollte man sich das Menulayout vorher genau aufzeichnen. 234 Kapitel 8. Die Makro-Programmierung mit AML In der 1. Zeile steht wie bei allen anderen Menus die Codeziffer für die Menuart. Fünf für Tablet Menu und sechs für Digitizer Menu. In der 2. Zeile legen zwei Integerwerte die Anzal der Spalten und Zeilen fest. Die Positionierung der einzelnen Befehlsfelder erfolgt über diese Koordinaten. Die übrigen Zeilen beschreiben die einzelnen Zellen des Menus mit ihren Optionen in der Form: {1. Zellkoordinat} {2. Zellkoordinate} [Option] {string} . Jede dieser Zeilen beginnt mit der Koordinatenangabe für Spalte und Zeile der Zelle. Das 2. Koordinatenpaar dient in Verbindun mit den 1. Zellkoordinaten dazu, Zellen mit gleicher Option und eine neue Zelle zu definieren, die all diese Zellen umfaßt. Fehlt die 2. Koordinate, ist je Zeile nur eine Zelle beschrieben. Die Optionen nach den Koordinatenangaben bestehen aus einem Code, der festlegt, wie der Text, der unter string eingegeben wird, genutzt wird. In Abhängigkeit von dem Code der Optionen wird der Text entweder direkt ausgeführt, oder mit anderen Eingaben in den temporären Puffer geschrieben und erst danach ausgeführt. Werden die Optionen übersprungen, wird die Standardoption 3 (Texteingabe mit Return) gesetzt. Enthalten Befehle oder strings Leerzeichen, müssen sie in Hochkommata gesetzt werden. Soll beim Ausführen einer Zelle eine Codenummer und kein Text eingegeben werden, wird dies durch ein Leerzeichen in Hochkommata (’ ’) dargestellt. Die Bedeutung der einzelnen Codeziffern: 0 keine Operation, wird nicht ausgeführt. 1 2 wenn mehr als ein Wort eingegeben wird, wird der Text in den Puffer geschrieben. sind zusätzliche Optionen erforderlich, z.B. editfeature in Arcedit, werden sie in den Pufffer geschrieben. 3 wenn die Eingabe komplett ist, werden sie nach einem automatisch angefügten return (carriage return) in den Puffer geschrieben eine Keyboard-/ Tastatureingabe wird erwartet. 4 5 6 7 8 die aktuelle Eingabe kann gelöscht/ bearbeitet werden, sofern sie noch nicht beendet ist. entspricht der backspace-Taste auf der Tastatur. gemischte Eingabe zwischen Tastatur und Menu, Abschluß erfolgt mit Return (return). gemischte Eingabe, 1. Teil im Menu, der 2. Teil erfolgt über die Tastatur mit Return (return). Beispiel für ein solches Menu: /* Beispiel eines Tablet Menus 5 4 4 1 1 2 EDITFEATURE 2 1 3 ARC 235 Kapitel 8. Die Makro-Programmierung mit AML 3 4 1 3 1 3 1 2 3 4 1 1 2 2 3 3 4 4 4 4 3 3 2 4 2 4 8 5 3 3 LABEL NODE 2 3 MOVE 2 4 3 3 SELECT MAN 3 3 ADD EDIT SAVE &RETURN Wählt man z.B. EDITFEATURE an, so wird es in den Puffer geschrieben und der Rechner wartet auf weitere Eingaben, wie ARC oder NODE, die dem Code entsprechend direkt ausgeführt werden. 8.6.5.1. Form Menu Dieses Menu ist das bei weitem mächtigste der vier Bildschirmmenus. Es können viele verschiedene Eingabemöglichkeiten in einem einzigen Menu kombiniert werden: 8.6.5.1.1. Input fields Texteingabefeld, z.B. Coveragename. Das Feld kann so gestaltet werden, daß es nur bestimmte Angaben akzeptiert; wie z.B. eine Zahl, ein Buchstabe, eine Systemdatei oder x,y - Koordinate. 8.6.5.1.2. Choice fields Sie bieten die Möglichkeit, aus einer Anzahl von Wahlmöglichkeiten eine bestimmte auszuwählen. Z.B. feature class wie poly, line oder point. Nur eine Option kann gewählt werden, nicht mehrere gleichzeitig. 8.6.5.1.3. Slider fields der Schiebebalken bietet die Möglichkeit, Werte in einem definierten Intervall durch Bewegen des Balken zu wählen. Z.B. die Fuzzy tolerance oder die Farbwerte für das RGB- oder CYM-System. 8.6.5.1.4. Button wird gedrückt, um eine Funktion auszuführen. Ein Quit-Button wird das Kommando QUIT ausführen und das Programm beenden. 8.6.5.1.5. Scrolling list of devices in einem Popupmenu kann eine Auswahl getroffen werden, ohne daß die Auswahl selbst in das Input-Feld geschrieben werden muß. Das spart Schreibarbeit, so muß nur noch die Maus benutzt werden, um eine Wahl zu treffe. 236 Kapitel 8. Die Makro-Programmierung mit AML 8.6.5.1.6. Check box bietet die Möglichkeit, Einstellunge wie z.B. on/ off oder ja/ nein ein und abzuschalten. Denkbar ist aber auch eine check box, in der man die draw environment Einstellungen bestimmen kann. Was wird dargestellt (arc, node), was nicht (tic, label). 8.6.5.1.7. Display field zeigt aktuellen Status der Anwendung an. Kann vom Benutzer nicht manipuliert werden. Kann sich in Interaktionen mit anderen Eingaben ändern, und dadurch das display field aktualisieren. Z.B. Ein Button zeigt an, in welchem Programm man arbeitet, ist es Arcplot, so steht unter dem Button Arcplot, ist es Tin so steht Tin darunter. Eine andere Möglichkeit ist in Arcedit anzuzeigen, ob eine Coverage bearbeitet wurde, und somit neu gespeichert werden muß. So kann das display field anzeigen, daß noch gespeichert werden muß 8.6.5.1.8. Setbutton ein Knopf, der eine AML-Variable auf einen bestimmten Wert setzt. Er sieht wie ein button aus, kann auch durch einen icon dargestellt werden. Man nennt diese Elemente auch widgets. 8.6.5.2. Die Arbeitsweise eines Form Menus Auswählen, schieben, drücken oder eingeben sind alles Interaktionen mit den Eingabemöglichkeiten. AML ist über die Eingabemanipulationen durch das Setzen von Variablen informiert. Einfacher gesagt, ist die Eingabemanipulation eine graphische Möglichkeit &SETVAR zu benutzen. Läuft ein AML ab, wird jede Zeile des Programmes gelesen und vom AML-Prozessor ausgeführt. Wird dabei die Anweisung &SETVAR entdeckt, wird die Variable gesetzt. Formmenus dagegen speichern die Eingaben in einem Puffer, der möglicherweise an den AML-Prozessor übergeben wird. Formmenus sind quasi wie eine Leitung zwischen dem Benutzer und dem Prozessor zu verstehen, die bis zur Bestätigung die Möglichkeit offenläßt, die Variablenbesetzung zu ändern. Erst wenn der Benutzter es will, wird die Variable auch gesetzt. 8.6.5.2.1. Setzen von Variablen durch das Ausführen von Eingaben Die häufigste Form der Eingabemöglichkeit ist der button. Wird er gedrückt, entspricht dies einer gleichzeitigen Bestätigung, die Variable wird übergeben. Die zweite Methode der Ausführung kommt bei der interaktiven Nutzung von check box, choice, input oder slider fields zur Anwendung. Wie beim button erfolgt auch hier eine direkte Eingabe bei der alle Variablen gesetzt werden bevor eine Bestätigung erfolgt. Eine zusätzliche Return-Angabe mit einer Eingabemöglichkeit erlaubt Menus ohne buttons. Z.B. kann bei einem slider, der mit Return gekoppelt ist, auf einen zusätzlichen button verzichtet werden, da die Wahl durch das schieben und loslassen bestätigt wird. In den beiden oben erläuterten Fällen werden die Variablen erst mit der Return-Sequenz übergeben. Es gibt noch eine dritte Möglichkeit, bei der die Variablenübergabe direkt nach der Änderung der Eingabemög- 237 Kapitel 8. Die Makro-Programmierung mit AML lichkeit übergeben wird. Es muß keine Return-Sequenz vorhanden sein. Dies wird durch den Parameter %FORMOPT erreicht. Ein Formmenu setzt nicht nur Variablen und übergibt Einstellungen an den Processor. Vielmehr liegt seine Fähigkeit auch darin, sicherzustellen, daß einer Variable ein geeigneter Wert übergeben wird. Z.B. kann eine Variable in einem slider nur einen genau festgelegten Wertbereich annehmen. Diese Fähigkeit eines Formmenus läßt sich außerhalb der Menuebene mit der [RESPONSE ...] Funktion erreichen. 8.6.5.2.2. Wie erzeugt man ein Formmenu? Soll das Menu zusätzlich Icons enthalten, so wird neben dem Texteditor noch ein Iconeditor benötigt (der ARC-Befehl PLOTICON konvertiert ein Plotfile in ein Icon). Vor dem Schreiben des Menus sollte ein Entwurf über Zweck, Form, Layout und Funktion des Menus angefertigt werden. Der Menutypcode 7 steht in der 1. Zeile. Alle weiteren Dateien beschreiben das Layout und die Funktionalität des Menus.Formmenus bestehen aus einem sichbaren und einem ausführenden Teil, einer field reference und einer field definition. Field reference ist die sichtbare Komponente und beschreibt den auf dem Bildschirm sichtbaren Teil. Field defintion ist die ausführbare Komponente und beschreibt die Aktionen, die aus der Manipulation dderfield reference entstehen. Anders als bei den anderen Bildschirmmenus, stehen beide Komponenten in unterschiedlichen Zeilen des Menus, da die field reference als Platzhalter für ein widget fungiert. Der Raum und die Anordnung der field references steuert die Anordnung der widgets auf dem Bildschirm. Zusätzlich zu den field refernces und field definitons, besteht die Möglichkeit Hintergrundtext in das Menu einzufügen, der z.B. Informationen über die Funktion des Menus geben kann. Dieser Text kann im Menu selbst nicht bearbeitet werden. Jede field reference beginnt mit %, gefolgt vom field Namen, z.B. %cover, %class. Das %-Zeichen zeigt an, daß es kein Hintergrundtext ist, sondern eine field reference. Dieses field kann beliebig positioniert werden. Field references dürfen nicht in der 1. Spalte beginnen, da diese Position für die field defintions reserviert ist. Field definitions beginnen in der 1. Spalte des AML-Programmes Jede field reference hat immer eine zugeordnete field definition, die den Fieldtyp und die ART der Operationen festlegt. Die field definitions können irgendwo innerhalb des Programmes stehen. Sinnvoll ist es aber, alle field definitons am Ende der field references des Programmes gesammelt aufzulisten. Möglichst getrennt durch einen Kommentar, der anzeigt, daß eben jetzt die field definitons kommen. Die field definitions werden durch %filename festgelegt. Der Field-Name nimmt dabei immer Bezug zu der field definition. Dem Field-Name folgt immer eines der Schlüsselwort Button, Checkbox, Choice, Display, Input, Setbutton und Slider, die den field-Typ festlegen. 238 Kapitel 8. Die Makro-Programmierung mit AML 8.6.5.3. Form Menu Widgets (Bedienelemente) 8.6.5.3.1. Buttons Der String, der durch einen button übergeben wird, kann ein AML starten, einen Befehl ans Betrtiebssystem übergeben, ausführen wichtiger Operationen der Anwendung Arc: usage <%field_name> Button {button_options} <button_name> <return_string> Das Schlüsselwort Button legt das Feld als Button fest. Ein Button kann so programmiert werden, daß er Hilfsfunktionen ausübt, alle Variablen auf den Ausgangswert zurücksetzt, gewährleistet, daß alle Eingabefelder vor der übergabe an den Prozessor gesetzt sind. Dies wird mit der [REQUIRED]-Funktion erreicht. Die [APPLY]-Funktion wird erst durchgeführt, wenn die Variablen gesetzt sind. Ansonsten erscheint am unteren Menurand eine Fehlermeldung. die Möglichkeit bietet, mit Hilfe der [CANCEL]-Funktion, das Menu auch ohne Variablensetzung zu verlassen. 8.6.5.3.2. Check Box Fields Dieses widget erzeugt ein Feld bei dem zwischen .true und .false gewechselt wird. Das Feld erschein ähnlich einer Mulitple-Choice-Box mit Quadraten. Diese erhalten für den Wert .true einen Haken, für den Wert .true ein leeres Quadrat. Arc: usage <%field_name> Checkbox <variable> {checkbox_options} Soll neben dem Quadrat Hintergrundtext stehen, so wird in der Zeile der field definitions mit 5 Leerzeichen Abstand neben dem field name das Schlüsselwort und die Variablen aufgeführt. 8.6.5.3.3. Choice Fields Dieses Feld kommt dann zur Anwendung, wenn aus einer Auswahl nur ein Element ausgewählt werdne darf. Nach dem Drücken des Wahlfeldes ändert sich dessen Aussehen (es sieht „gedrückt“ aus). Wenn ein anderes Wahlfeld gedrückt wird, geht das vorher gewählte Element wieder in seine Ursprungsform zurück. Arc: usage <%field_name> CHOICE variable PAIRS {choice-options} <CHOICE_text> <set_value> ... <CHOIC oder Arc: usage 239 Kapitel 8. Die Makro-Programmierung mit AML <%field_name> CHOICE variable SINGLE {choice-options} <CHOICE_text> <set_value> ... <CHOI Das Schlüsselwort choice legt das Feld als choice field fest. Bei der Single-Option ist der sichtbare Namen des Wahlfeldes identisch mit dem Namen der Variablen. Bei der Pairs-Option sind die Begriffe unterschiedlich, d.h. der Variablenname ist nicht gleich dem Namen, den man sieht. 8.6.5.3.4. Display Fields Der aktuelle Wert einer Variablen wird am Bildschirm angezeigt. Die Variable kann Textstrings, den Name eines Icons oder eine Symbolnummer eines symbolsets sein. Jede Änderung der Variablen wird am Bildschirm angezeigt. Arc: usage <%field_name> DISPLAY <variable> <field_width> {VALUE I ICON I SYMBOL <-LINE I MARKER I -TEXT I -SHADE>} Das Schlüsselwort display legt das Feld als display field fest. 8.6.5.3.5. Setbuttons Setbuttons werden zum setzten von Variablen benutzt. Ihre einzige Aufgabe besteht darin, einer Variablen einen bestimmten Wert zuzuweisen, z.B. werden bei einem Menu, das sich mit dem überlagern von Coverages beschäftigt, ausgewählte Optionen gesetzt, wie INTERSECT, CLIP, UNION usw. Arc: usage <%field_name> SETBUTTON {setbutton_options} <setbutton_name> >variable> <set_value> 8.6.5.3.6. Input Fields Dieser Feldtyp erlaubt die Eingabe von Daten über die Tastatur. Der Datentyp ist von der Felddefinition abhängig. Bei einer falschen Eingabe erscheint am unteren Rand des Menus eine Meldung, die Auskunft über den erwarteten Datentyp gibt. Einmal bestätigt, wird die Eingabe in der AML\_Variablen zu diesem Feld gespeichert. Arc: usage <%field_name> INPUT <variable> <field_width> {input_options} <type> {type_options} 240 Kapitel 8. Die Makro-Programmierung mit AML INPUT ist das Schlüsselwort zur Festlegung als input field. Der Variablenname wird nicht von \verb/%/ umschlossen, da die Variable gesetzt und nicht darauf Bezug genommen wird. Field width gibt an, wieviele characters eingegeben werden dürfen. Die input options bestimmen die Eingabe: • Anzeigen einer Scrollingliste, • überschreiben, bei falscher Eingabe, • Setzen eines Defaultwertes, • Eingabezwang, damit das Menu ausgeführt wird. Erlaubte Dateitypen für die Eingabe sind: • Integer • Real • Date • Character • Logical (yes, no, okay und quit) werden als Eingabe angenommen • x y (Koordinatenpaar, das durch ein Leerzeichen getrennt ist) Weitere Typen, die mit der Funktion [GET] in Verbindung stehen, z.B. [GETITEM], [GETFILE], [GETTIN] oder [GETLIBRARY]. [GETCOVER] z.B. listet bei der Eingabe von cover unter type eine Tabelle aller Coverages auf, von denen eine Auswahl getroffen werden kann. Die Liste erscheint erst nach dem Drücken der Help-Taste. 8.6.5.3.7. Slider Fields Das Feld erzeugt einen Schiebebalken, mit dem eine Variable belegt wird. Ein slider field besteht aus vier Teilen: Ein Textfeld, in dem der Wert gesondert über die Tastatur eingegeben werden kann. Schiebebalken, der durch das Schieben mit der Maus einen gewünschten Wert annimmt. Das Anzeigen dieser zwei Komponenten schließt die anderen zwei mit ein. Beim Verschieben des Balkens wird der Wert im Texteingabefeld angezeigt. Die jeweiligen Extremwerte werden an den Enden des Balkens angezeigt. Wird ein Wert größer oder kleiner als die Extremwerte eingegeben, so wird automatisch der jeweilige Extremwert (Minimum oder Maximum) gesetzt. Slider fields sind vom Datentyp Integer oder Real. Die graphische Darstellung ist ein horizontaler Balken. Arc: usage <%field_name> SLIDER <variable> <field_width> {slider_options} <type> <min_value> <max_va Wie auch bei den anderen Menus legt hier SLIDER den Menutyp fest. Die Feldbbreite setzt sich aus 5 Spalten für das Eingabefeld und dem Minimal- sowie dem Maximalwert, zu denen jeweils eine eine 241 Kapitel 8. Die Makro-Programmierung mit AML Einheit dazuaddiert wird, zusammen. Soll vor dem Schiebebalken eine Erläuterung stehen, wird sie in der field reference vor dem field_name geschrieben. Mit step in den slider options kann eine Schrittweite bestimmt werden, in der die Werte auf dem Schiebebalken erhöht oder erniedrigt werden sollen. Mit init kann dem Balken beim öffnen des Menus ein vorgeingestellter Wert gegeben werden. 8.7. Beispieloberflächen In diesem Kapitel folgen Beispiele für die Programmierung von Oberflächen für Arc/Info. Das erste Beispiel zeigt ein Menu für Arcplot. In der Datei layoutap.menu sind alle Befehlszeilen in einer Datei untergebracht. In der Datei aplayout.menu werden mehrere Einzeldateien angesprochen, die dann bestimmte Teile des Menus ausführen. Die zweite Datei wirkt übersichtlicher, da hier nur die Hauptebenen zu sehen sind. Die Unterebenen werden wiederrum in einzelnen Dateien abgearbeitet. So entsteht eine Anzahl von Dateien, die jede für sich kurz und übersichlich ist. Das AML ist dafür gedacht Karten zu erzeugen. Maps, Kartenblattdefinitionen, Kartenlegenden, Beschriftung, Farbtabellenzuordnung, Flächen- und Linienfestlegung oder andere Manipulationen können an einer Coverage vorgenommen werden. 2 layoutap.menu Coverage &SETVAR .COVER [GETCOVER * -all ’Coverageauswahl’]; mape %.COVER% Mapcomposition map map map1 killmap killmap mapl ’show map’ minfo ’selektieren’ msel * gruppieren &IF [RESPONSE ’Gruppierungen nicht rueckgaengig zu machen! ~ Gruppieren? (y/n)’] EQ y &THEN ;mgroup ’rotieren’ mrotate [RESPONSE ’Rotationswinkel (+ = Gegenuhrzeigersinn)’] verschieben mposition * * Iöschen mdelete Kartendefinitionen Masstab &S .SCALE [RESPONSE ’Masstabszahl’] ~ ;mapscale %.SCALE%~ ;mapunits meter~ ;pageunits inch Kartenlage &TY ’Position der linken unteren Kartenecke (in inch)’~ ;&S .POSX [RESPONSE ’X =’] ~ ;&S .POSY [RESPONSE ’Y =’] ~ ;mapposition II %.POSX% %.POSY% Kartenrahmen box * Legende Abst nde~ ;&S .KEYH [RESPONSE ’Horizontaler Abstand Kästchen - Text’] ~ ;&S .KEYV [RESPONSE ’Vertikaler Abstand Textunterlänge - K stchen’] ~ ;-keyseparation %.KEYH% %.KEYV% 242 Kapitel 8. Die Makro-Programmierung mit AML Kästchen~ ;&S .BREITE [RESPONSE ’Breite’] ~ ;&S .HOEHE [RESPONSE ’H he’] ~ ;keybox %.BREITE% %. HOEHE % Position &TY ’Position der linken oberen Ecke des Legendenblocks’~ ;keyposition * Legendenschrift Textguality proportional~ ;textset uni.txt~ ;&S .FONT [GETUNIQUE unitext -info schriftart ’Schriftart in uni.txt’]~ ;textfont %.FONT%~ ;textsize [RESPONSE ’Schriftgr e’] Legendentext keyshade [GETFILE *.key ’Legendentext, die akt. Farbtabelle~ wird verwendet’] Beschriftung textguality proportionalV~ ;textset uni.txt~ ;&S .FONT [GETUNIQUE unitext -info schriftart ’Schriftarten in~ uni.txt’] ~ ;textfont %.FONT%~ ;textsize [RESPONSE ’Schriftgröße (in Inch)’] ~ ;&TY ’Position’ ;move *~ ;text [RESPONSE ’Text’] Farbtabelle ’Selbstdefinierte -’ shadeset [GETFILE *.shd ’shadesets’] ’Vorhandene -’ shadeset [GETFILE ’$ARCHOME/symbols/*.shd’ ’shadesets’] ’Neue Farbtabelle’ shadeedit Polygone Polygone polygons [GETCOVER * -poly]~ Flächenfüllung &IF [EXISTS %.COVER% -poly] &THEN~ ;&S .ITEM [GETITEM %.COVER% -polygon %. COVER%’. PAT’]~ ;&ELSE &TY ’Keine Polygontopologie vorhanden!’~ ;polygonshades %.COVER% %.ITEM% Linien Linienfarbe &SETVAR .FARBE [RESPONSE ’Linienfarbe’]~ ;linecolor %.FARBE% ’Linien zeichnen’ arcs [GETCOVER * -all ’Liniencoverage’] Uni-Logo~ ;markerset uni.mrk~ ;markersymbol l~ ;markersize [RESPONSE ’Logo-Größe (in inch)’]~ ;&TY ’Position - Signaturmitte’~ ;marker * Iteminfo PAT &S COV [GETCOVER * -POLY] ;items %COV% poly~ ;&IF [RESPONSE ’Wollen Sie die Tabelle auflisten? (y/n)] EQ y &THEN~ ;list %COV% poly AAT &S COV [GETCOVER * -LINE] ;items %COV% line~ ;&IF [RESPONSE ’Wollen Sie die Tabelle auflisten? (y/n) ] EQ y &THEN~ ;list %COV% line TIC &S COV [GETCOVER * -TIC] ;items %COV% tic~ ;&IF [RESPONSE ’Wollen Sie die Tabelle auflisten? (y/n) ] EQ y &THEN~ ;list %COV% tic Vereinbarungen ~ &TY ’ ’~ 243 Kapitel 8. Die Makro-Programmierung mit AML ;&TY ;&TY ;STY ;&TY ;&TY ;&TY ;&TY ;&TY ;&TY Clear ’ Vereinbarungen ’ V ’--------------’~ ’Coverage: ’ %.COVER% ’ ’ ~ ’Ausdehnung: ’[show mape] ~ ’Mastabszahl : ’ %.SCALE% ’ ’ ~ ’Kartenlage (linke untere Ecke): x = %.POSX%’ , y =’ %.POSY% ~ ’Legendenkästchen: Breite =’ %.BREITE% ’,Höhe =’ %.HOEHE%~ ’Abstand Kästchen - Text =’ %.KEYH%~ ’Abstand Textunterlänge - Kästchen =’ %.KEYV% Hier nun die zweite, übersichtlichere Variante: 2 ap layout.menu Coverage &m covwahl.aml Mapcomposition &m mapcom.aml Kartendefinition &m mapdef.aml Kartenrahmen box * Legende &m legende.aml Beschriftung &m schrift.aml Farbtabelle &m farbe.aml Polygone &m poly.aml Linien &m line.aml Marker &m mark.aml MarkerNeu markeredit Mastab &m mass.aml Iteminfo &m item.aml Vereinbarungen &m verbrg.aml Clear Reset &IF [RESPONSE ’Wollen Sie AP wirklich neu initialisieren? y/n’] EQ y~ &THEN ;reset Ende &IF [RESPONSE ’Wollen Sie wirklich aufhören? y/n’] EQ y &THEN ;&return Das zu bearbeitende Coverage wird ausgewählt: 7 coverwahl.menu coverage %cov %apply %back %cov input .cover 40 REQUIRED cover * -all ’Select Coverage’ %apply button APPLY ; mape %.COVER% %back button icon back.icon &return &return Das AML dient der Erzeugung einer Mapcomposition. Maps können gelöscht, ausgewählt, gruppiert oder rotiert werden. 244 Kapitel 8. Die Makro-Programmierung mit AML 2 mapcom.menu map &m map.aml killmap &m kmap.aml ’show map’ minfo ’selektieren’ msel * ’gruppieren’ &IF [RESPONSE ’Gruppierungen sind nicht rückgängig zu machen!~ Gruppieren? (y/n)’] EQ y &THEN mgroup ’rotieren’ mrotate [Response ’Rotationswinkel ( + = Gegenuhrzeigersinn)’] verschieben mposition * * Iöschen mdelete Erzeugen einer Mapcomposition. 7 map.menu Name der Mapcomposition: %name %apply %back %name input .nam 30 INITIAL map1 character %apply button APPLY map %.nam% %back button icon back.icon &return &return Löschen einer Mapcomposition. 7 killmap.menu Name der zu Iöschenden Mapcomposition: %name %apply %back %name input .nam 30 INITIAL map1 character %apply button APPLY map %.nam% %back button icon back.icon &return &return Festlegen der Umgebung der Mapcomposition. 7 mapdef.menu Mastabszahl: %mzahl Mapunits: Pageunits: %mu %pu 245 Kapitel 8. Die Makro-Programmierung mit AML Wenn Pageunits auf inches, das Coverage bitte nicht drehen Kartenlage, Position der linken unteren Ecke: X-Position: y-Position: %xpos %ypos %apply %back %mzahl input .scale 10 real %mu choice .munits single initial meters meters inches %pu choice .punits single initial inches meters inches %xpos input .xpos 10 real %ypos input .ypos 10 real %apply button APPLY mapscale %.scale%; mapunits %.munits%; pageunits %.punits%~ ;mapposition ll %.xpos% %.ypos% %back button icon back.icon &return &return Erzeugung einer Legende für die Mapcomposition. Die Kästchen, der Legendentext und die Schrift werden Festgelegt. 7 Iegende.menu Festlegen des Legendenlayoutes Kästchen: %brk Breite: %br Höhe: %la Abstände: %ke Horizontaler Abstand der Kästchen zum Text: %hoab Vertikaler Abstand der Textunterlänge zu den Kästchen: %veab Festlegen der Position der linken oberen Ecke des Legendenblockes: %position Legendenschrift: Schriftschnitt: %qa Schriftgröße: Schriftart: %sa %sg in inches Festlegen der aktuellen Farbtabelle für die Legende: %farbe 246 Kapitel 8. Die Makro-Programmierung mit AML %apply %back %ke display legke 4 icon %hoab input .KEYH 10 init .15 real %veab input .KEYV 10 init .15 real %brk display legbrk 4 icon %br input .BREITE 10 init .3 real %la input .HOEHE 10 init .2 real %position button POSITION keyposition * %ga choice .QUAL single init proportional constant proportional kern tightkern %sg slider .SIZE 50 step .1 real 0 28.4 %sa input .FONT 50 scroll yes typein yes UNIQUE f text -info~ schriftart %farbe input .COL 10 FILE *.key %apply button APPLY keyseparation %.KEYH% %.KEYV%; keybox %.BREITE% %.HOEHE%;~ textguality %.QUAL%; textset fh.txt; textfont %.FONT%; textsize %.SIZE%;~ keyshade %.COL% %back button icon back. icon &return &return %forminit &s legke legkey.icon %forminit &s legbrk leg.icon Zusätzlicher Text, der auf der Karte erscheinen soll, wird hier festgelegt und eingegeben. 7 schrift.menu Schriftschnitt: %ga Schriftgröße: Schriftart: %sa Texteingabe: %apply %sg inches %te %back %ga choice .QUA single init proportional constant proportional kern tightkern %sg slider .SIZ 45 step .1 init I real 0 28.4 %sa input .FON 50 scroll yes typein yes UNIQUE fhtext -info schriftart 247 Kapitel 8. Die Makro-Programmierung mit AML %te input .TEXT 50 character %apply button APPLY textguality %.QUA%; textfont %.FON%; textsize %.SIZ%;~ move *; &r textrun.aml %.TEXT% %back button icon back.icon &return &return Der Text wird erzeugt. /* textrun.aml &ARGS string: rest text %string% Die Farbtabelle für die Legende wird festgelegt. 7 farbe.menu Wählen Sie eine Farbtabelle aus: %fa %apply %back %fa choice .wahl single init custom custom vordefiniert neu %apply button APPLY &r farbrun.aml %back button icon back.icon &return &return Die Farbtabelle wird ausgewählt. Entweder ist sie vordefiniert oder es wird eine benutzterdefinierte Farbtabelle genommen. /* farbrun.aml &SELECT %.wahl% &WHEN custom shadeset [GETFILE *.SHD ’Shadesets’] &WHEN vordefiniert shadeset [GETFILE ’$ARCHOME/symbols/*.shd’ ’Shadesets’] &OTHERWISE shadeedit &end Die Flächen werden gefüllt, sofern das Coverage Polygontopologie besitzt. 7 poly.menu 248 Kapitel 8. Die Makro-Programmierung mit AML Flächenfüllung: %fla Item: %sp %apply %back %fla input .FLACH 15 ERROR ’Keine Polygontopologie vorhanden’~ REQUIRED cover * -poly ’Flächenfüllung der Coverage’ %sp input .ITEM 15 item %.COVER% -polygon %apply button APPLY ,-polygonshades %.COVER% %.ITEM% %back button icon back.icon &return &return Die Linienzeichenfarbe wird festgelegt, dazu noch die Liniencoverage. 7 line.aml Linienfarbe: %lf Coverage: %cov %apply %back %lf choice .FARBE single init 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 %cov input .LCOV 20 cover * -all ’Liniencoverage’ %apply button APPLY linecolor %.FARBE%; arcs %.LCOV% %back button icon back.icon &return &return Einstellungen für Markersymbole werden vorgenommen. 7 mark.menu Markerauswahl: %ma Markersymbol: %ms Markersize: %mz Position: %mp %apply %back %ma %ms %mz %mp input .MA 20 init input .MS 20 init input .MZ 20 init choice .MP single fh.mrk file * -mrk 1 integer 1 real * 249 Kapitel 8. Die Makro-Programmierung mit AML %apply button APPLY markerset %.MA%; markersymbol %.MS%; markersize %.MZ%~ ;&TY ’Position - Signaturmitte’; marker * %back button icon back.icon &return &return Erzeugung einer Maßstabsleiste. Die Lage, die Größe und der Maßstab können festgelegt werden. 7 mass.menu Erzeugung einer Masstabsleiste %m ------------------------------I I I I I I ------------------------------%e %z %d %v %f %s Linke untere Ecke der Masstabsleiste in pageunits: X-Position: %lux Y-Position: %luy Rechte obere Ecke der Masstabsleiste in pageunits: X-Position: %rox Y-Position: %roy Schriftschnitt: %ga Schriftgröße: Schriftart: %sa %apply %m %e %z %d %v %f %s input input input input input input input %lux %luy %rox %roy %sg inches %back .MASS 25 character .E 5 init 0 character .Z 5 init 200 character .D 5 init 400 character .V 5 init 600 character .F 5 init 800 character .S 10 init 1000m character input input input input .LUX .LUY .ROX .ROY 5 5 5 5 real real real real %ga choice .QUA single init proportional constant proportional kern tightkern %sg slider .SIZ 45 step .1 init .2 real 0 28.4 250 Kapitel 8. Die Makro-Programmierung mit AML %sa input .FON 50 scroll yes typein yes UNIQUE fhtext -info schriftart %apply button APPLY textguality %.QUA%; textfont %.FON%; textsize %.SIZ%;~ &r massrun.aml %.LUX% %.LUY% %.ROX% %.ROY% %.E% %.Z% %.D% %.V% %.F% %.S% %.MASS% %back button icon back.icon &return &return Die Maßstabsleiste wird gezeichnet. /* massrun.aml &ARGS lux luy rox roy e z d v f s mass: rest &s &s &s &s &s &s &s &s &s difx = ( %rox% - %lux% ) dify = ( %roy% - %luy% ) difh = ( %luy% - ( %dify% / 2 ) ) st = ( %difx% / 5 ) mit = ( %lux% + ( %difx% / 2 ) ) ie = ( %lux% + %st% ) &s lz = ( %lux% + ( 2 * %st% ) ) Id = ( %lux% + ( 3 * %st% ) ) lv = ( %lux% + ( 4 * %st% ) ) rs = ( %rox% + %st% ) &s rd = ( %roy% + %dify% ) shadeset plotter.shd shadesymbol 1 box %lux% %luy% %rox% %roy% patch %lux% %luy% %le% %roy% patch %lz% %luy% %ld% %roy% patch %lv% %luy% %rox% %roy% move text move text move text move text move text move text move text %mit% %rd% %iriass% lc %lux% %difh% %e% uc %le% %difh% %z% uc %lz% %difh% %d% uc %ld% %difh% %v% uc %lv% %difh% %f% uc %rox% %difh% %s% uc Auf Wunsch kann man sich items anzeigen lassen. 7 item.aml Itemwahl: %it 251 Kapitel 8. Die Makro-Programmierung mit AML %apply %back %it choice .ITEMS single PAT AAT TIC %apply button APLLY &r itemwa.aml %back button icon back.icon &return &return AML, das die item-Auswahl vornimmt. /* itemwa.aml &SELECT %.ITEMS% &WHEN PAT &DO &s cov [GETCOVER * -poly] items %cov% poly &IF [RESPONSE ’Wollen Sie die Tabelle auf listen? (y/n)’] EQ y &THEN list %cov% poly &END &WHEN AAT &DO &s cov [GETCOVER * -line] items %cov% line &IF [RESPONSE ’Wollen Sie die Tabelle auflisten? (y/n)’] EQ y &THEN list %cov% line &END &OTHERWISE &DO &s cov [GETCOVER * -tic] items %cov% tic &IF [RESPONSE ’Wollen Sie die Tabelle auflisten? (y/n)’] EQ y &THEN list %cov% tic &END &END Mit Hilfe dieses AML kann sich der Benutzter die Vereinbarungen, die er getroffen hat anzeigen lassen. 7 verbrg.aml Vereinbarungen: Coverage: Ausdehnung, xmin,ymin,xmax,ymax: Mastabszahl: Kartenlage (linke untere Ecke) : X-Position: Y-Position: Legendenkästchen: %c %a %m %kx %ky 252 Kapitel 8. Die Makro-Programmierung mit AML Breite: %b Höhe: %h Abstand Kästchen - Text: %t Abstand Textunterlänge - Kästchen:%u %back %c display .COVER 30 value %a display mapextent 60 value %m display .SCALE 15 value %kx display .XPOS 15 value %ky display .YPOS 15 value %b display .BREITE 15 value %h display .HOEHE 15 value %t display .KEYH 15 value %u display .KEYV 15 Value %back button icon back.icon &return &return %forminit &s mapextent [show mape] Das Vereinbarungs-Aml kann auch so aussehen: 7 vereinbarungen.menu Vereinbahrungen: %vel %ve2 %ve3 %ve4 %ve5 %ve6 %ve7 %apply %vel %ve2 %ve3 %ve4 %ve5 %ve6 %ve7 Coverage Ausdehnung Mastabszahl Kartenlage, links unten Legendenkästchen Abstand Kästchen - Text Abstand Textunterlänge %back checkbox checkbox checkbox checkbox checkbox checkbox checkbox .vl .v2 .v3 .v4 .v5 .v6 .v7 %apply button APPLY &r verein.aml %back button icon back.icon &return &return 253 Kapitel 8. Die Makro-Programmierung mit AML Hier das zugehörige AML-Makro: /* verein.aml &IF %.VI% EQ .TRUE. &THEN &TY ’Coverage: ’%.COVER%" &ELSE &TY ’Keine Coverage ausgewählt’ &IF %.V2% EQ .TRUE. &THEN &TY ’Ausdehnung: ’[show mape] &ELSE &TY ’Keine Aussage über die Ausdehnung möglich’ &IF %.V3% EQ .TRUE. &THEN &STY ’Mastabszahl: ’%.SCALE%" &ELSE &TY ’Der Mastab wurde nicht festgeleg’ &IF %.V4% EQ .TRUE. &THEN &TY ’Kartenlage (linke untere Ecke) : x =’%.XPOS%’ ’Y =’ %.YPOS% &ELSE &TY ’Die Kartenlage ist nicht definiert’ &IF %.V5% EQ .TRUE. &THEN &TY ’Legendenkästchen: Breite =’ %.BREITE% ’, Höhe %.HOEHE% &ELSE &TY ’Die Legendenkästchen sind nicht definiert’ &IF %.V6% EQ .TRUE. &THEN &TY ’Abstand Kästchen - Text =’ %.KEYH% &ELSE &TY ’Der Abstand Kästchen - Text ist nicht festgelegt’ &IF %.V7% EQ .TRUE. &THEN &TY ’Abstand Textunterlänge - Kästchen =’ %.KEYV% &ELSE &TY ’Der Abstand Textunterlänge - Kästchen ist nicht definiert’ Für Arcedit wird hier ein zweites Beispielmenu vorgestellt. Das Menu bietet von der Zeichenumgebung, den Toleranzen, den Editiermöglichkeiten bis hin zu einer übersicht der gewählten Parameter grundlegende Befehle im Umgang mit Arcedit. Dabei werden nur die etwas komplexeren Menupunkte in Unterprogramme verzweigt, die dann aufgerufen werden. 2 Editiermenu edit.aml Clear Create &m create.aml Environment Drawenvironment &m coverage.aml Backenvironment &m backcover.aml Tolerances &m tolerance.aml Editfeature &m editfeat.aml Select one sel many sel many all sel all box sel box Vertex Add vertex add Delete vertex delete Move vertex move 254 Kapitel 8. Die Makro-Programmierung mit AML Draw vertex draw Edit Add add Extend extend Move move Split split Spline spline Delete delete Oops oops Show Arc snap show arc snap Coordinate show coordinate Digitizer show digitizer Drawenvironment show de Editcoverage show editcoverage Editdistance show editdistance Editfeature show editfeature Mapextent show mapextent Nodesnap show nodesnap Setdrawsymbol show setdrawsymbol Weedtolerance show weedtolerance Save save ’Save as’ save [RESPONSE ’Name des neuen Coverage’] Quit &return Es folgen die Unterprogramme: Ein neues Coverage wird erzeugt. Falls es eine Bezugscoverage gibt, so kann sie als Referenz verwendet weren. 7 create.aml Name des neuen Coverage: %cov Name des Bezugscoverage: %oldcov (.BND und .TIC werden übernommen) %apply %back %cov input cover 20 INITIAL ’ ’ character %oldcov input oldcover 30 INITIAL ’ ’cover * -all %apply button APPLY create %cover% %oldcover% %back button icon back.icon &return &creturn Die Zeichenumgebung für das Coverage wird festgelegt. 255 Kapitel 8. Die Makro-Programmierung mit AML 7 coverage.aml %logo Coverage: %cov Drawenvironment: %del %de2 %de3 %de4 %de5 %de6 all on all off arc on node errors label ids tic ids Color (dangle): %color %draw %back %apply %logo display .unilogo 11 icon %cov input varl 30 ERROR ’Dies ist keine Coverage"~ REQUIRED cover * -all ’Auswahl der Editcoverage’ %del %de2 %de3 %de4 %de5 %de6 checkbox checkbox checkbox checkbox checkbox checkbox .dl .d2 .d3 .d4 .d5 .d6 %color SLIDER col 15 integer 1 15 %draw button icon draw.icon draw draw %apply button APPLY edit %varl%; mape %varl%;~ &r drawe .ami; nodecolor dangle %co 1% %back button icon back.icon &return &return %forminit &sv .unilogo logouni.icon Dieses AML setzt die Einstellungen um, die für die Zeichenumgebung festgelegt werden sollen. /* drawe.aml &IF %.dl% EQ .TRUE. &THEN de all on &IF %.d2% EQ .TRUE. &THEN de all off 256 Kapitel 8. Die Makro-Programmierung mit AML &IF %.d3% EQ .TRUE. &THEN de arc on &IF %.d4% EQ .TRUE. &THEN de node errors &IF %.d5% EQ .TRUE. &THEN de label ids &IF %.d6% EQ .TRUE. &THEN de tic ids Hier wird die Zeichenumgebung für Coverages festgelegt, die man im Hintergrund darstellen will. 7 backcover.aml Backcoverage: %bcov Backenvironment: %bel %be2 %be3 %be4 %be5 %be6 %draw %back %bcov input varbl %bel checkbox %be2 checkbox %be3 checkbox %be4 checkbox %be5 checkbox %be6 checkbox all on all off arc on node errors label ids tic ids %apply 30 REQUIRED cover * -all ’Auswahl der Backcoverage’ .bl .b2 .b3 .b4 .b5 .b6 %draw button icon draw.icon draw draw %apply button APPLY backcoverage %varbl% 3; &r backe.aml %back button icon back.icon &return &return Dieses AML wählt die gewünschte Zeichenumgebung für das Hintergrundcoverage aus. /* backe.aml &IF %.bl% EQ .TRUE. &THEN be all on &IF %.b2% EQ .TRUE. &THEN 257 Kapitel 8. Die Makro-Programmierung mit AML be all off &IF %.b3% EQ .TRUE. &THEN be arc on &IF %.b4% EQ .TRUE. &THEN be node errors &IF %.b5% EQ .TRUE. &THEN be label ids &IF %.b6% EQ .TRUE. &THEN be tic ids In diesem Menu werden die Toleranzen zum Digitalisieren festgelegt. 7 tolerance.aml tolerancedistance in coverage units %nodesnap Nodesnap : %ns Distance : %nodes %arcsnap Arcsnap : %as Distance : %arcs %apply %back %nodesnap display nodelogo 4 icon %nodes input nodetol 10 real %ns choice nsp single first closest %arcsnap display arclogo 4 icon %arcs input arctol 10 real %as choice asp single on off %apply button APPLY arcsnap asp arctol; nodesnap nsp nodetol %back button icon back.icon &return &return %forminit &sv nodelogo nodesnap.icon %forminit &sv arclogo arcsnap.icon Hier wird das zu bearbeitende Feature festgelegt. /* editfeature.aml 258 Kapitel 8. Die Makro-Programmierung mit AML Feature Class: %edf %apply %dismiss %edf choice var2 Pairs Line arc Point node Polygon label %apply button APPLY ef %var2% %dismiss button icon back.icon &return &return Weiterführende Literatur: ESRI, 1994, ARC Macro Language: Developing ARC/INFO menus and macros with AML, Redlands: ESRI. Fußnoten 1. ESRI (1993): ARC Macro Language: Developing Arc/Info menus and macros with AML. Redlands: ESRI 2. Näheres hierzu unter http://www.gnu.org/software/emacs/ oder bei Ihrem freundlichen Systemadministrator 3. Siehe http://www.epa.gov/docs/region10/www/amlmode.html 4. Falls der .false-Fall nicht eintritt also ziemlich lange, nämlich bis man das Programm abbricht oder die Festplatte überläuft, weil man bei jedem Schleifendurchlauf ein 18MB-Grid schreiben läßt. Eine gewisse Sorgfalt bei der Makroprogrammierung ist also anzuraten. 5. Man könnte sie natürlich auch mit einem beliebigen (nicht reservierten) anderen Namen bezeichnen, der Name dient hier nur der Veranschaulichung im Beispiel. 259 Kapitel 8. Die Makro-Programmierung mit AML 260 Stichwortverzeichnis Überlagerung, 118 darstellende, 118 topologische, 118 Aggregation, 13 ALK, 10 AML, 30 Analyse Räumliche, 117 Analyse Pufferbildung, 146 Analyse räumlich, 117 Analyse, raumbezogene, 23 Arbeitsverzeichnis (Workspace), 59 Arc, ??, ??, 31 Arc append, 141 Arc clip, 129, 153 Arc Eigenschaften, 33 Arc eliminate, 145 Arc erase, 132 Arc identity, 122 Arc intersect, 126 Arc list, 151 Arc Macro Language, ?? Arc mapjoin, 140 Arc reselect, 143, 151 Arc split, 137 Arc update, 136 ArcCatalog, ?? ArcDoc, 49 ArcEdit, ??, 58 ArcEdit create, 93 ArcEdit draw, 66 ArcEdit drawenvironment, 66 ArcEdit register, 68 ArcEdit save, 66 ArcEdit Voreinstellungen, 62 arclines, ?? ArcMap, ?? ArcPlot, ?? ArcPlot reselect, 162 ArcPress, ?? Arcs, 33, ?? Arcs Überschneidungen von, 79 ArcScan, ?? ArcStorm, ?? arctext, ?? ArcToolbox, ?? ArcTools, 30 ArcTools starten, 46 ASCII-Dateien Import von, 88 Attributdaten, 14 Verknüpfung von, 32 Attribute, 9 Attributtabelle Feldeigenschaften, 96 Aufbau von ARC/INFO, 29 Beziehung, 13 Beziehungen räumliche, 8 Bildschirm initialisieren, 48 buffer, 146 Buffering, 146 CAD, 3, 40 clip, 153 Cogo, ?? CommandTools Analysefunktionen, 118 Connectivity, 9 Contiguity, 9 copy, 93 Coverage, 32 Namenskonventionen, 59 Coverage Verzeichnisstruktur, ?? Coverage-ID, 33 Dangling Node, 79 Dangling Nodes, 79 DatabaseIntegrator, ?? Datenbank, 11 Datenbanken, 3, 11 Attribute, 13 Aufbau, 14 Beziehungen, 13 ER-Diagramme, 13 Fremdschlüssel, 16 Indexalgorithmen, 22 Indexmechanismen, 17 Integritätsregeln, 16 Normalformen, 17 objektrelationale, 14 Primärschlüssel, 15 raumzeitliche, 22 Referentielle Integrität, 16 relationale, 14, 14 SDE, 21 Sicht, 16 SQL, 18 261 SQL Beispiele, 18 SQL-Erweiterungen, 19 Transaktion, 15 Trigger, 15, 16 Datenbankmanagementsysteme, 12 Datenbanksystem, 12 Datengrundlagen Fehlerquellen, 25 Datengrundlagen Metadaten, 26 Datenmodell topologisches, 8 Datenmodell extern, 12 Datenmodell intern, 12 Datenmodell konzeptionell, 12 Datenmodelle, 31 DEM, 45 Digitalisierbrett, 83 Digitalisierbrett-Koordinaten, 60 Digitalisieren Am Monitor, 68 Digitalisieren Registrierung, 65, 93 Digitalisierpuck, 64 Digitalisiertablett, 60, 64 Digitalisierung, 83 Digitalisierung vorbereiten, 61 dissolve, 144 Dublin Core, 27 Dynamic Segmentation, ?? Dynamik, 11 Ebenenprinzip, 10 EditTools, 58 Einzelkarten zusammenfügen, 140 Encapsulated Postscript, 179 Entfernungen, 148 entity, 6 Entity-Relationship-Diagramm, ?? Entity-Relationship-Diagramme, 13 Entität, 13 EPS, 179 erase, 132 feature, 6 Feature Attribute Table, 86 Feature-ID, 33 Fehler, topologische, 82 FGDC, 27 Flächendefinition, 9 Gauss-Krüger-Koordinatensystem, 83 Geländemodelle Tin, 183 Geländemodelle!VRML, 186 Generate, 73 Geocoding, 151 Geoobjekt, 6 Georeferenzierung, 68 GIS Bestandteile, 2 Definition, 1 Einsatzgebiete, 5 Komponenten, 2 Typen, 1 Unterschied zu CAD, 3 Grid, ??, 41 Grid und TIN, Vergleich von, 45 Hilfe, ?? Image Integrator, ?? Import ASCII, 73 Import von ASCII-Dateien, 88 INFO Tabelle erstellen, 96 Informationsebenen, 118 initial boundary, 65 Inselpolygon, 61 intersectarcs, 79 joinitem, 98 Kardinalität, 13 Kartenerstellung ArcView, 171 Kartengrundlage, 58 Kartographie, ?? Koordinatensystem, 83 Label, 82 Labelfehler, 81 labelmarkers, ?? labels, ?? Lattice, 44 Layout-Konventionen, i Librarian, ?? lineset, ?? linesymbol, ?? Linie, 31 markerset, ?? markersymbol, ?? Metadaten, 26 Modellierung, raumbezogene, 23 move, ?? Namensbeschränkungen Annotations, 59 Coverages, 59 Route Systems, 59 Shapefiles, 59 near, 148 262 Network, ??, 156 Node, ??, 33 Nodes, 79, ?? Objektklassenprinzip, 10 ODE, ?? Open Development Environment, ?? pointmarkers, ?? points, ?? Polygon, ?? polygons, ?? polygonshades, ?? Projektion, 83 Projektplanung, 57 Pseudonodes, 79 Pufferbildung, 146 Raster, ?? Rasterdaten Georeferenzierung, 68 Realweltkoordinaten, 60 Referentielle Integrität, 16 Relate erzeugen, 98 RMS-Fehler, 60, 93 Räumliche Analyse, 117 Sachdaten, 9 Satellitenbilder, 43 Schichtenmodell, 118 Schlüsselkandidaten, 15 SDE, 21 select, 81 Sequence Number, 32 shadeset, ?? shadesymbol, ?? Signaturdateien, 160 Sliver-Polygone, 80 Snyder, John. P., 84 SQL, 18 Symbolschlüssel, 160 textfont, ?? textquality, ?? textsize, ?? textsymbol, ?? Thematik, 9 Theme, 32 thiessen, 149 Thiessen Polygone, ?? Thiessen-Polygone, 148 TIC, 60 TIC-ID, ?? TICs, 60, ?? Tin, ??, 44 Oberflächentyp, 188 Tin Breaklines, 45 TIN und Grid, Vergleich von, 45 Topologie, 8, 32, 118 Topologie in ARC/INFO, 9 topologische Fehler, 82 Transformation, ?? Trigger, 15, 16 union, 120 Universalpolygon, 9, 81 Vektor, ??, 31 Vektordaten, 32 Vergleich von TIN und Grid, 45 Verschneidung, 118 Verschneidung topologische, 118 View, 32 Visualisierung, 159 workspace, 46 263