ALKIS-Daten einlesen: Unterschied zwischen den Versionen
Rahn (Diskussion | Beiträge) |
Rahn (Diskussion | Beiträge) |
||
Zeile 15: | Zeile 15: | ||
Im Ordner "eingang" werden die gezippten NAS-Fortführungsdaten, die eingelesen werden sollen, abgelegt (Katalog- und Objektdaten). Dies sollte am besten auch automatisiert ablaufen. | Im Ordner "eingang" werden die gezippten NAS-Fortführungsdaten, die eingelesen werden sollen, abgelegt (Katalog- und Objektdaten). Dies sollte am besten auch automatisiert ablaufen. | ||
− | Wenn das Shell-Skript "start_ff.sh" ausgeführt wird, guckt es im Ordner "eingang" nach, ob dort | + | Wenn das Shell-Skript "start_ff.sh" ausgeführt wird, guckt es im Ordner "eingang" nach, ob dort Zip-Dateien liegen. Diese werden nacheinander abgearbeitet. Jede Zip-Datei wird im Ordner "temp" ausgepackt und die enthaltenen NAS-Dateien werden über ogr2ogr in die PostGIS-DB eingelesen. Das Einlesen wird als Transaktion durchgeführt (kein -skipfailures) und in der Datei "ff.log" geloggt. |
+ | |||
+ | Im Schema "alkis" gibt es eine Tabelle "import" mit folgender Struktur: | ||
CREATE TABLE alkis.import | CREATE TABLE alkis.import | ||
Zeile 27: | Zeile 29: | ||
OIDS=TRUE | OIDS=TRUE | ||
); | ); | ||
+ | |||
+ | Hier wird jeder Einlesevorgang registriert und das Ergebnis (ok oder Fehler) im Feld "status" abgelegt. | ||
Diese Tabelle dient einerseits als Übersicht, was alles eingelesen wurde und andererseits kann damit verhindert werden, dass eine Datei doppelt eingelesen wird. | Diese Tabelle dient einerseits als Übersicht, was alles eingelesen wurde und andererseits kann damit verhindert werden, dass eine Datei doppelt eingelesen wird. | ||
− | + | Tritt bei einer Datei ein Fehler auf (ff.err), wird nicht weiter eingelesen, sondern eine "Meldung"(?) an den Administrator gesendet. | |
+ | |||
+ | Wenn alle NAS-Dateien der Zip-Datei fehlerfrei eingelesen wurden, wird die Zip-Datei in den Ordner "eingelesen" verschoben. | ||
− | Nachdem fehlerfrei eingelesen | + | Nachdem alle Zip-Dateien im Ordner "eingang" fehlerfrei eingelesen wurden, werden alle Skripte, die sich im Ordner "postprocessing" befinden, nacheinander ausgeführt. |
Optional kann das Skript "start_ff.sh" vor jedem Einlesen auch eine Sicherung des Schemas "alkis" im Ordner "sicherung" ablegen. | Optional kann das Skript "start_ff.sh" vor jedem Einlesen auch eine Sicherung des Schemas "alkis" im Ordner "sicherung" ablegen. | ||
Das Skript "start_ff.sh" wird per Cron-Job einmal täglich automatisch ausgeführt, kann bei Bedarf aber auch händisch gestartet werden. | Das Skript "start_ff.sh" wird per Cron-Job einmal täglich automatisch ausgeführt, kann bei Bedarf aber auch händisch gestartet werden. |
Version vom 24. November 2015, 15:50 Uhr
Dies ist ein Vorschlag für den Ablauf einer automatischen Fortführung der ALKIS-Daten.
Es gibt "irgendwo" auf dem Server einen Ordner mit folgendem Inhalt:
- /eingang
- /eingelesen
- /postprocessing
- /sicherung
- /temp
- start_ff.sh
- ff.log
- ff.err
Im Ordner "eingang" werden die gezippten NAS-Fortführungsdaten, die eingelesen werden sollen, abgelegt (Katalog- und Objektdaten). Dies sollte am besten auch automatisiert ablaufen.
Wenn das Shell-Skript "start_ff.sh" ausgeführt wird, guckt es im Ordner "eingang" nach, ob dort Zip-Dateien liegen. Diese werden nacheinander abgearbeitet. Jede Zip-Datei wird im Ordner "temp" ausgepackt und die enthaltenen NAS-Dateien werden über ogr2ogr in die PostGIS-DB eingelesen. Das Einlesen wird als Transaktion durchgeführt (kein -skipfailures) und in der Datei "ff.log" geloggt.
Im Schema "alkis" gibt es eine Tabelle "import" mit folgender Struktur:
CREATE TABLE alkis.import ( id serial NOT NULL, datum timestamp without time zone DEFAULT now(), datei text, status text ) WITH( OIDS=TRUE );
Hier wird jeder Einlesevorgang registriert und das Ergebnis (ok oder Fehler) im Feld "status" abgelegt.
Diese Tabelle dient einerseits als Übersicht, was alles eingelesen wurde und andererseits kann damit verhindert werden, dass eine Datei doppelt eingelesen wird.
Tritt bei einer Datei ein Fehler auf (ff.err), wird nicht weiter eingelesen, sondern eine "Meldung"(?) an den Administrator gesendet.
Wenn alle NAS-Dateien der Zip-Datei fehlerfrei eingelesen wurden, wird die Zip-Datei in den Ordner "eingelesen" verschoben.
Nachdem alle Zip-Dateien im Ordner "eingang" fehlerfrei eingelesen wurden, werden alle Skripte, die sich im Ordner "postprocessing" befinden, nacheinander ausgeführt.
Optional kann das Skript "start_ff.sh" vor jedem Einlesen auch eine Sicherung des Schemas "alkis" im Ordner "sicherung" ablegen.
Das Skript "start_ff.sh" wird per Cron-Job einmal täglich automatisch ausgeführt, kann bei Bedarf aber auch händisch gestartet werden.