ingo@3658: Geodaten Importer ingo@3658: ================= ingo@3658: Der Geodaten Importer ist ein in Python geschriebenes Kommandozeilen Tool zum ingo@3658: Import von Shapefiles in eine Datenbank. Zum Lesen der Shapefiles und zum ingo@3658: Schreiben der Geodaten in die Datenbank wird GDAL verwendet. Zum Import in eine ingo@3658: Oracle Datenbank ist es erforderlich, dass GDAL und GDAL Python Bindungs mit ingo@3658: Oracle Unterstützung installiert sind. Weitere Details hierzu befinden sich im ingo@3658: Kapitel `Systemanforderungen` und `Installationsanleitung`. ingo@3658: Der Importer kann mit einem Shellscript von der Kommandozeilen gestartet werden ingo@3658: (siehe Kapitel `Starten des Geodaten Importers`). Nach dem Start wird anhand der ingo@3658: Konfiguration festgestellt, welche Klassen von Shapefiles aus dem Dateisystem ingo@3658: importiert werden sollen. Für jede Klasse gibt es hierzu einen speziellen ingo@3658: Parser, der die speziellen Attribute eines Shapefiles liest und in die ent- ingo@3658: sprechende Relation der Datenbank schreibt. Die Parser sind speziell auf das ingo@3658: Dateisystem der BfG ausgerichtet. So wird z.B. erwartet, dass die Shapefiles der ingo@3658: Gewässerachse im Ordner `Geodaesie/Flussachse+km` liegen. Weitere Informationen zu ingo@3658: den einzelnen Parsern sind dem nächsten Kapitel `Beschreibung der Parser` zu ingo@3658: entnehmen. Der Erfolg oder Misserfolg eines Shape-Imports wird je nach ingo@3658: Konfiguration im Logfile vermerkt. Folgende Einträge können dem Logfile ingo@3658: entnommen werden: ingo@3658: ingo@3658: INFO: Inserted 4 features Gibt die Anzahl der erfolgreich importierten ingo@3658: Features an. ingo@3658: ingo@3658: INFO: Failed to create 2 features Gibt die Anzahl der Features an, die nicht ingo@3658: importiert werden konnten. ingo@3658: ingo@3658: INFO: Found 3 unsupported features Gibt die Anzahl der Features an, die ingo@3658: aufgrund ihres Datentyps nicht importiert ingo@3658: werden konnten. Z.B: es werden Linien ingo@3658: erwartet, im Shapefile sind jedoch ingo@3658: Polygone enthalten. ingo@3658: ingo@3658: ERROR: Unable to insert feature: $DETAIL Beim Lesen der Attribute eines ingo@3658: Features ist ein Fehler aufgetreten. ingo@3658: Das Feature konnte nicht in die ingo@3658: Datenbank geschrieben werden. ingo@3658: ingo@3658: ERROR: Exception while committing transaction Beim Abschluss des ingo@3658: Schreib-Vorgangs in die ingo@3658: Datenbank ist ein unerwarteter ingo@3658: Fehler aufgetreten. Die ingo@3658: Features des Shapes sind ingo@3658: nicht importiert worden. ingo@3658: ingo@3658: Damit die Geodaten eines Shapes später eindeutig in der Datenbank identifiziert ingo@3658: werden können, wird für jede Geometrie der Pfad des Shapes im Dateisystem in ingo@3658: einer Spalte der Datenbank gespeichert. Anwendungen, die auf der Datenbank ingo@3658: aufbauen, können die Geodaten eines Shapefiles später anhand dieses Merkmals ingo@3658: gruppieren und anzeigen. ingo@3658: ingo@3658: ingo@3658: Beschreibung der Parser ingo@3658: ----------------------- ingo@3658: Wie im letzten Kapitel beschrieben, sind die Parser speziell an das Dateisystem ingo@3658: der BfG ausgerichtet. Im folgenden werden zu jedem Parser folgende Informationen ingo@3658: angegeben: ingo@3658: ingo@3658: Pfad Der Pfad, in dem die Shapefiles im Dateisystem abgelegt sein ingo@3658: müssen ausgehend vom Gewässer Verzeichnis. ingo@3658: ingo@3658: Geometrie Der Geometrie Typ, der für diese Klasse von Shapefiles ingo@3658: erwartet wird. ingo@3658: ingo@3658: Attribute Eine Liste der Attribute, die vom Parser aus dem Shape ingo@3658: gelesen werden. ingo@3658: ingo@3658: ingo@3658: Achsen ingo@3658: ------ ingo@3658: Pfad Geodaesie/Flussachse+km ingo@3658: Geometrie LINESTRING ingo@3658: Attribute name, kind ingo@3658: ingo@3658: ingo@3658: Hydrologische Grenzen ingo@3658: --------------------- ingo@3658: Pfad Hydrologie/Hydr.Grenzen/Linien ingo@3658: Geometrie LINESTRING, POLYGON ingo@3658: Attribute name, kind ingo@3658: ingo@3658: ingo@3658: Bauwerke ingo@3658: -------- ingo@3658: Pfad Geodaesie/Bauwerke ingo@3658: Geometrie LINESTRING ingo@3658: Attribute name, Name, KWNAAM ingo@3658: ingo@3658: ingo@3658: Einzugsgebiete ingo@3658: -------------- ingo@3658: Pfad Hydrologie/Einzugsgebiet ingo@3658: Geometrie POLYGON, MULTIPOLYGON ingo@3658: Attribute name, Name, AREA, area ingo@3658: ingo@3658: ingo@3658: Querprofilspuren ingo@3658: ---------------- ingo@3658: Pfad Geodaesie/Querprofile ingo@3658: Geometrie LINESTRING ingo@3658: Attribute KILOMETER, KM, STATION, ELEVATION ingo@3658: ingo@3658: ingo@3658: Festpunkte ingo@3658: ---------- ingo@3658: Pfad Geodaesie/Festpunkte ingo@3658: Geometrie POINT ingo@3658: Attribute name, KM, ELBE_KM, X, Y, HPGP ingo@3658: ingo@3658: ingo@3658: Talaue ingo@3658: ------ ingo@3658: Pfad Hydrologie/Hydr.Grenzen ingo@3658: Geometrie POLYGON, MULTIPOLYGON ingo@3658: Attribute name ingo@3658: ingo@3658: ingo@3658: Pegelstationen ingo@3658: -------------- ingo@3658: Pfad Hydrologie/Streckendaten ingo@3658: Geometrie POINT ingo@3658: Attribute Name, name, MPNAAM ingo@3658: ingo@3658: ingo@3658: Hochwasserschutzanlagen ingo@3658: ----------------------- ingo@3658: Pfad Hydrologie/HW-Schutzanlagen ingo@3658: Geometrie LINESTRING ingo@3658: Attribute TYP, Bauart, Name, name ingo@3658: ingo@3658: ingo@3658: Kilometrierung ingo@3658: -------------- ingo@3658: Pfad Geodaesie/Flussachse+km ingo@3658: Geometrie POINT ingo@3658: Attribute name, km, KM ingo@3658: ingo@3658: ingo@3658: Linien ingo@3658: ------ ingo@3658: Pfad Geodaesie/Linien ingo@3658: Geometrie LINESTRING, MULTILINESTRING ingo@3658: Attribute name, TYP, Z ingo@3658: ingo@3658: Anmerkung: Wenn kein Attribut 'TYP' definiert ist, wird standardmäßig der ingo@3658: Wert 'DAMM' angenommen. Fehlt ein Attribut 'Z' wird als '9999' als Höhe ingo@3658: angenommen. ingo@3658: ingo@3658: ingo@3658: Überschwemmungsfläche ingo@3658: ---------------------- ingo@3658: Pfad Hydrologie/UeSG/Berechnung ingo@3658: Geometrie POLYGON, MULTIPOLYGON ingo@3658: Attribut name, diff, count, area, perimeter ingo@3658: ingo@3658: ingo@3658: Systemanforderungen ingo@3658: ------------------- ingo@3658: * Oracle Datenbank inkl. Schema für FLYS ingo@3658: * GDAL Binding für Python mit Oracle Support ingo@3658: * ogr2ogr ingo@3658: * Python >= 2.6 ingo@3658: ingo@3658: ingo@3658: Installationsanleitung ingo@3658: ---------------------- ingo@3658: * TODO: GDAL Binding installieren ingo@3658: * TODO: Python installieren ingo@3658: * TODO: ogr2ogr installieren ingo@3658: ingo@3658: ingo@3658: Konfiguration ingo@3658: ------------- ingo@3658: Der Geodaten Importer kann über die Datei `contrib/shpimporter/run.sh` ingo@3658: konfiguriert werden. Öffnen Sie die Datei mit einem Texteditor Ihrer Wahl. ingo@3658: In den Zeilen 4-9 werden Optionen definiert, die zwangsläufig angepasst ingo@3658: werden müssen: ingo@3658: ingo@3658: RIVER_PATH Der Pfad zum Gewässer im Dateisystem. ingo@3658: RIVER_ID Die Datenbank ID des zu importierenden Gewässers. ingo@3658: TARGET_SRS Das EPSG Referenzsystem in das die Geodaten beim Import ingo@3658: projeziert werden sollen. ingo@3658: HOST Der Host der Datenbank. ingo@3658: USER Der Nutzer, der zum Verbinden zur Datenbank verwendet wird. ingo@3658: PASS Das Passwort für USER zum Verbinden zur Datenbank. ingo@3658: ingo@3658: In den Zeilen 12-23 werden weitere Optionen definiert, die bei Bedarf angepasst ingo@3658: werden können. Falls nicht anders angegeben, können die Optionen mit den Werten ingo@3658: `0` und `1` belegt werden. ingo@3658: ingo@3658: VERBOSE Dieser Wert gibt die Granularität der Log-Ausgaben während des ingo@3658: Imports an. Je höher der Wert, desto mehr Informationen werden ingo@3658: in das Logfile geschrieben. Aktuell sind die Werte `0`, `1` und ingo@3658: `2` definiert. Wird der Wert `0` gesetzt, werden nur Fehler und ingo@3658: Warnungen in das Logfile geschrieben. Bei `1` werden neben ingo@3658: Fehlern und Warnungen auch Infos in das Logfile geschrieben. Bei ingo@3658: `2` werden sämtliche Ausgaben des Programms geschrieben. Dieser ingo@3658: Modus ist hauptsächlich für die Entwicklung gedacht. ingo@3658: ingo@3658: SKIP_AXIS Bei gesetztem Wert `1` werden keine Flussachsen importiert. ingo@3658: SKIP_KMS Bei gesetztem Wert `1` werden keine Kilometrierungen importiert. ingo@3658: SKIP_CROSSSECTIONS Bei gesetztem Wert `1` werden keine Querprofilespuren ingo@3658: importiert. ingo@3658: SKIP_LINES Bei gesetztem Wert `1` werden keine Linien importiert. ingo@3658: SKIP_FIXPOINTS Bei gesetztem Wert `1` werden keine Festpunkte importiert. ingo@3658: SKIP_BUILDINGS Bei gesetztem Wert `1` werden keine Bauwerke importiert. ingo@3658: SKIP_FLOODPLAINS Bei gesetztem Wert `1` werden keine Talauen importiert. ingo@3658: SKIP_HYDR_BOUNDARIES Bei gesetztem Wert `1` werden keine hydrologischen ingo@3658: Grenzen importiert. ingo@3658: SKIP_HWS Bei gesetztem Wert `1` werden keine ingo@3658: Hochwasserschutzanlagen importiert. ingo@3658: SKIP_GAUGE_LOCATION Bei gesetztem Wert `1` werden keine Pegelorte importiert. ingo@3658: SKIP_CATCHMENTS Bei gesetztem Wert `1` werden keine Einzugsgebiete importiert. ingo@3658: SKIP_UESG Bei gesetztem Wert `1` werden keine ingo@3658: Überschwemmungsflächen importiert. ingo@3658: ingo@3658: ingo@3658: Starten des Geodaten Importers ingo@3658: ------------------------------ ingo@3658: Der Geodaten Importer wird mittels eines Shellskripts von einer Konsole ingo@3658: gestartet. Dazu wechseln Sie auf der Konsole in das Verzeichnis 'TODO' und ingo@3658: führen Sie folgenden Befehl aus: ingo@3658: ingo@3658: $> sh contrib/shpimporter/run.sh > import.log ingo@3658: ingo@3658: Der Importer wird nun gestartet. Sämtliche Log-Ausgaben werden in die Datei ingo@3658: `import.log` geschrieben.