[PostNAS] Antworten zu Delete/Replace

"Jäger, Frank (KRZ)" F.Jaeger at KRZ.DE
Mo Nov 19 03:10:29 PST 2012


Hallo,
bei uns treten die Fehler nach der Aktualisierung inzwischen nicht mehr auf.

> Gibt es eine verbesserte gdal-Version dazu? Wir haben bisher 1.9.2 verwendet.

Man sollte die aktuelle Entwicklungs-Version verwenden.
Auschecken des Quellcodes und selbst compilieren. 


> Oder ist in einem Datenbank-Template ein Trigger geändert worden?

Ja, siehe 
http://trac.wheregroup.com/PostNAS/browser/trunk/data/konvert/postnas_0.7/alkis_PostNAS_0.7_schema.sql 

-- 2012-10-31 FJ  Trigger fuer NAS-Replace-Saetze repariert:
...
CREATE OR REPLACE FUNCTION delete_feature_kill() RETURNS TRIGGER AS $
...
-- Nur alte Objekte entfernen
              query := 'DELETE FROM ' || NEW.typename
                      || ' WHERE gml_id = ''' || gml_id || ''' AND beginnt < ''' || aktbeg || '''';

Und
http://trac.wheregroup.com/PostNAS/browser/trunk/data/konvert/postnas_0.7/pp_laden.sql 
2012-10-29 Redundanzen aus alkis_beziehungen beseitigen, die nach NAS replace auftreten
...
DELETE
    FROM alkis_beziehungen AS bezalt        -- Beziehung Alt
     WHERE EXISTS
...

> und haben daher die Vorgehensweise ... nur prinzipiell befolgt

Der Konverter fügt bei "replace" das geänderte Objekt in die Objekt-Tabelle ein und macht einen Eintrag in der Tabelle "delete".
Der Eintrag in "delete" löst den Trigger aus. Der Trigger soll die alten Objekte finden und löschen.

Bisher wurde nur nach "gml_id" gesucht und gelöscht, das war der Fehler.
Da zuerst das neue Objekt eingetragen wird (gleiche "gml_id" wie das alte) und erst dann der "replace" in die "delete"-Tabelle eingetragen wird, hat der Trigger das alte *und* auch das neue Objekt gelöscht. Daher die "Löcher" in der Karte.
Über die neue WHERE-Clausel im DELETE versuche ich das nun zu vermeiden.

Die redundanten Einträge in der Tabelle "alkis_beziehungen" werden derzeit mit einem SQL-Befehl nach dem Konverter-Lauf bereinigt.
Hier könnte man auch noch was in den Trigger einbauen damit die Datenbank während des Laufes konsistenter bleibt.    

Mfg
F. Jäger


Von: nas-bounces at lists.osgeo.org [mailto:nas-bounces at lists.osgeo.org] Im Auftrag von Bernd Kamjunke
Gesendet: Montag, 19. November 2012 11:46
An: nas at lists.osgeo.org
Betreff: Re: [PostNAS] Antworten zu Delete/Replace

Hallo Herr Jäger, hallo an alle weiteren Beteiligten!

In meiner Firma haben wir das gleiche Problem mit NAS-Aktualisierungsdaten
aus NRW:
..

Wir benutzen allerdings eine SQLite-Datenbank und haben daher die
Vorgehensweise wie unter http://trac.wheregroup.com/PostNAS/wiki/SchrittfuerSchritt#
beschrieben nur prinzipiell befolgt.
Leider bin ich aus den Inhalten der Emails zu diesem Fehler abschließend
nicht wirklich schlau geworden, daher meine Fragen:
Gibt es schon eine Lösung zu diesem Problem und wenn ja, wo genau "liegt" die?
Gibt es eine verbesserte gdal-Version dazu? Wir haben bisher 1.9.2 verwendet.
Oder ist in einem Datenbank-Template ein Trigger geändert worden?

Schönen Gruß
Bernd Kamjunke 




More information about the NAS mailing list