[PostNAS Suite] Alkis-Beziehungen

Jäger, Frank (KRZ) F.Jaeger at KRZ.DE
Fr Aug 23 02:38:34 PDT 2019


>> Wie sind denn Vorgängerobjekte und die neune Objekte miteinander verknüpft?

Hallo,
kurze Antwort: Gleiche "gml_id" aber unterschiedliches "beginnt".

Lange Antwort:
Da schaut man sich am besten mal die Trigger an, die es bereits für PostgreSQL gibt.
Einen davon habe ich gerade aus aktuellem Anlass überarbeitet, siehe:
https://lists.osgeo.org/pipermail/nas/2019-July/001131.html

Man muss einige Gegebenheiten beachten, um den Trigger richtig zu programmieren:

- es gibt zwei Varianten. 

 -- Ein Trigger setzt das Ende-Datum der alten Objekte. Man kann damit also einen Sekundärbestand aufbauen, der eine Vollhistorie enthält. Dazu muss natürlich auch das NBA-Verfahren im ALKIS die passende Abgabeart haben. In den Views und Programmen, die nur aktuelle Objekte zeigen sollen, muss man dann konsequent die alten Objekte ausfiltern (WHERE endet IS NULL).
 -- Der andere Trigger löscht die alten Objekte sofort aus der Datenbank. Ich kenne derzeit noch keine Anwendung, die per "Time-Slider" oder etwas ähnliches einen Blick in die Vergangenheit gestattet. Also weg damit.

- Man muss wissen, dass ogr2ogr die NAS-Datei zweimal durchliest. Beim ersten Durchlauf werden die Insert-Sätze konvertiert. Beim zweiten Durchlauf werden die Delete-Sätze usw. verarbeitet. Dann löst der Trigger aus. ALLE Inserts sind dann schon im Sekundärbestand. Jedes Objekt ist in dem Moment also in alter und neuer Version vorhanden. Der Trigger muss das alte finden.

- Bei Abgabearten mit Vollhistorie werden auch die Zwischenstände übermittelt. Wenn es zwischen zwei Abgabeterminen mehrere Änderungen an einem Objekt gab, dann sind alle Versionen davon ein einer Datei enthalten. Bei Auslösen des Triggers sind also alle INSERT für alle Versionen des Objektes schon verarbeitet. Es gibt für einen kurzen Augenblick mehrere nicht historische Versionen des gleichen Objektes in der Datenbank. Jede Trigger-Auslösung muss genau den unmittelbaren Vorgänger erwischen. Am Ende sollte die letzte Version übrig bleiben.

Auch wenn die Trigger nicht viele Code-Zeilen haben, steckt doch ein wenig "Schweiß" darin. Man muss alle Fälle durchtesten. Abgabearten, Hersteller, Erstabgabe und Aktualisierung. Löschen und Historisieren.

Man muss die Trigger für die Konstellation in der Datenbank programmieren, die zum Zeitpunkt der Auslösung des Triggers vorgefunden wird. Das ist (eine kurze Zeit) während des Laufs des Konverters. Davor und danach sieht es anders aus. Man kann also nicht in Ruhe nachschauen.

Die neue Option "Systemschwäche ausgleichen" hat alles noch mal aufgewühlt. Siehe verlinkter Thread.


>>  das würde aber für meinen ogr2ogr und SpatiaLite-basierten ALKIS-Konverter aber auch gerne umsetzen.

Na dann mal ran!

MfG
F. Jäger 


-----Ursprüngliche Nachricht-----
Von: NAS <nas-bounces at lists.osgeo.org> Im Auftrag von Claas Leiner
Gesendet: Freitag, 23. August 2019 10:32
An: nas at lists.osgeo.org
Betreff: Re: [PostNAS Suite] Alkis-Beziehungen

...

Wie sind denn Vorgängerobjekte und die neune Objekte miteinander verknüpft?

Viele Grüße,

Claas


-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : smime.p7s
Dateityp    : application/pkcs7-signature
Dateigröße  : 2411 bytes
Beschreibung: nicht verfügbar
URL         : <http://lists.osgeo.org/pipermail/nas/attachments/20190823/e893b9ad/attachment.bin>


Mehr Informationen über die Mailingliste NAS