[PostNAS] Antworten zu Delete/Replace

Bernd Kamjunke bernd.kamjunke at csogis.de
Mo Nov 19 06:52:08 PST 2012


Hallo Herr Jäger!

Danke für die Infos. Hab das Problem erkannt, kann leider in
SQLite keine Procedures oder Variablen innerhalb von Triggern
verwenden... da hab ich noch einiges zu tun.
Und gdal mal eben selbst kompilieren unter Windows und Visual
Studio ist ja auch nicht ganz ohne, oder?

Gruß und Dank

Bernd Kamjunke 
_________________________________________________________________
CSO GmbH 
Informations-Lösungen 
Forsthausstrasse 2 
75180 Pforzheim 
Fon     +49 (0) 72 31 . 97 35 63 (direkt)
Fon     +49 (0) 72 31 . 97 35 10 (Zentrale)
Fax      +49 (0) 72 31 . 97 35 90 
eMail  Bernd.Kamjunke at csogis.de  
web    www.csogis.de 
_________________________________________________________________

Geschäftsführer  Jörg Schempf, Dipl.-Ing. (FH) 
Amtsgericht Mannheim . HRB 503836 
UST-ID  DE 144 17 16 31 
_________________________________________________________________ 

-----Ursprüngliche Nachricht-----
Von: nas-bounces at lists.osgeo.org [mailto:nas-bounces at lists.osgeo.org] Im Auftrag von "Jäger, Frank (KRZ)"
Gesendet: Montag, 19. November 2012 12:10
An: 'NAS Schnittstelle via ogr2ogr'
Betreff: Re: [PostNAS] Antworten zu Delete/Replace

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 


_______________________________________________
NAS mailing list
NAS at lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/nas


More information about the NAS mailing list