Fortführung und Aktualisierung

Nachdem nun alle Depot- und Ebenendefinitionen angelegt worden sind, können wir diese Definitionen für eine Fortführung der Daten nutzen.

Einfache Aktualisierung

Die einfache Aktualisierung besteht aus dem erneuten Import des Depots und Export der Ebene:

python manage.py loadgeometries --depot=depot datensatz.gml
python manage.py tilegeometries ebene

Selektive Aktualisierung

Um ein vorhandenes Depot mit einer neuen Datei zu updaten, gibt es mehrere Möglichkeiten. Zum einen kann die Quelldatei ersetzt werden und das Depot wie oben beschrieben erneut importiert werden. Zum anderen kann die neue Datei selektiv importiert werden, wenn die ID des zu importierenden Gebäudes bekannt ist:

python manage.py loadgeometries --depot=depot --update --limit-id="GEBID" datensatz.gml

Eine dritte Möglichkeit besteht darin, dass eine Differenzdatei erzeugt wird, die alle neuen/geänderten Datensätze enthält:

python manage.py loadgeometries --depot=depot --update update-diff-123.gml

Zusammenfassung: Der Schalter --update veranlasst das System, die vorhandenen Daten nicht zu löschen, sondern alle Daten aus dem zu importierenden Datensatz entweder hinzuzufügen oder zu ändern.

Ausfallsichere Aktualisierung

Insbesondere bei automatischer Fortführung kann es gewünscht sein, dass die vorhandenen Daten bei einem fehlerhaften Import wiederhergestellt werden. Dies funktioniert mit dem Schalter --failsafe:

python manage.py loadgeometries --depot=depot --failsafe datensatz.gml

Dies funktioniert unabhängig von dem Depottypen, also sowohl für CityGML, als auch für Shapefiles, WFS, u.a.

Die Erzeugung der Ebenen ist generell failsafe, d.h. exportierte Ebenendaten werden nur dann ersetzt, wenn der Export erfolgreich war.

Integration in Shellskripte

Da loadgeometries einen exit code zurückgibt, mit dem geprüft werden kann, ob der Befehl erfolgreich durchgelaufen ist, kann der Befehl in Shellskripten verwendet werden. Diese können wiederum als cron jobs ausgeführt werden.

Es folgt ein Beispiel für ein einfaches, ausfallsicheres Fortführungsskript, welches eine Fehlerbenachrichtigung via e-Mail enthält:

python manage.py loadgeometries --depot=depot --failsafe datensatz.gml \
    || (echo "Fehler beim Aktualisieren" | mail admin@localhost)
    && python manage.py tilegeometries ebene