Changeset 265 for trunk/import
- Timestamp:
- 02/21/13 13:56:16 (11 years ago)
- Location:
- trunk/import
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/import/pp_laden.sql
r257 r265 11 11 -- 2012-04-24 Generell Filter 'endet IS NULL' um historische Objekte auszublenden 12 12 -- 2012-04-25 Abstürze und Fehler (durch kaputte Geometrie?) beim Zusammenfassen der Flächen 13 -- Mehr buffer, mehr st_simplify? 14 -- 2012-10-29 Redundanzen aus alkis_beziehungen beseitigen, die nach NAS replace auftreten 13 -- 2012-10-29 F.J. Redundanzen aus alkis_beziehungen beseitigen, die nach NAS replace auftreten 14 -- 2013-02-06 A.E. Function-Name an PostGIS 2 angepasst: multi() -> st_multi(), simplify() -> st_simplify() 15 -- 2013-02-21 F.J. doppelte Buchungen zum Flurstück aus alkis_beziehungen beseitigen, die nach NAS replace auftreten 15 16 16 17 -- ============================ … … 52 53 -- auf eine bestimmte gml_id filtert. 53 54 -- Damit wäre die DB schon während der Konvertierung konsistenter. 55 -- Nachtrag 2013-02-20: 56 -- Diese provisorische Lösung korrigiert nur die Fälle, wo ein Replace eine redundante Beziehung 57 -- einträgt. Wenn ein Objekt und seine Beziehung gleichzeitig geändert wird, wird der alte 58 -- Eintrag nicht gefunden und verbleibt in den Beziehungen. 59 -- Siehe z.B. in Datei "sichten.sql" die Abfrage "mehrfache_buchung_zu_fs" 60 61 62 -- Mehrfache Buchungen zu einem Flurstück korrigieren. 63 -- Neu 2013-02-21 64 -- Dieser Fehler enststeht, wenn ein Replace zu "ax_flurstueck" gleichzeitig die 65 -- Beziehung 'istGebucht' zu "ax_buchungsStelle" ändert. 66 -- Kann entfallen, sobald PostNAS bei Replace die "alkis_beziehungen" richtig fortführt. 67 68 -- Version Marvin Brandt, Unna 69 -- DELETE 70 -- -- SELECT * 71 -- FROM alkis_beziehungen a1 72 -- WHERE a1.beziehung_von = ANY(SELECT gml_id FROM ( 73 -- SELECT f.*, 74 -- (SELECT count(f2.gml_id) as anzahl 75 -- FROM ax_flurstueck f2 76 -- JOIN alkis_beziehungen a1 ON f2.gml_id = a1.beziehung_von AND a1.beziehungsart = 'istGebucht' 77 -- WHERE f2.gml_id = f.gml_id 78 -- ) as anzahl 79 -- FROM ax_flurstueck f 80 -- ) as sub 81 -- WHERE sub.anzahl > 1 ) 82 -- AND a1.beziehungsart = 'istGebucht' 83 -- AND a1.ogc_fid = (SELECT min(sub.ogc_fid) as ogc_fid FROM ( 84 -- SELECT a1.*, 85 -- (SELECT count(f2.gml_id) as anzahl 86 -- FROM ax_flurstueck f2 87 -- JOIN alkis_beziehungen a1 ON f2.gml_id = a1.beziehung_von AND a1.beziehungsart = 'istGebucht' 88 -- WHERE f2.gml_id = f.gml_id 89 -- ) as anzahl 90 -- FROM ax_flurstueck f 91 -- JOIN alkis_beziehungen a1 92 -- ON f.gml_id = a1.beziehung_von AND a1.beziehungsart = 'istGebucht' 93 -- ) as sub 94 -- WHERE sub.beziehung_von = a1.beziehung_von); 95 96 97 -- Version Frank Jäger, Lemgo 98 DELETE 99 -- SELECT * -- TEST: erst mal schauen, was gelöscht würde, wenn ... 100 FROM alkis_beziehungen b 101 WHERE b.beziehungsart = 'istGebucht' 102 -- Die erste subquery zählt die Buchungen zu einer (Flurstücks-) gml_id. 103 -- Es wird nur dort gelöscht, wo mehrerer Buchungen existieren. 104 AND 1 < 105 ( SELECT count(f1.ogc_fid) AS anzfs 106 FROM ax_flurstueck f1 107 JOIN alkis_beziehungen z 108 ON f1.gml_id = z.beziehung_von 109 WHERE f1.gml_id = b.beziehung_von 110 AND z.beziehungsart = 'istGebucht' 111 GROUP BY f1.gml_id ) 112 -- Die zweite Subquery liefert die letzte (= aktuelle) Beziehung. 113 -- Diese aktuelle Buchung wird vom Löschen ausgeschlossen. 114 AND b.ogc_fid < 115 ( SELECT max(a.ogc_fid) AS maxi 116 FROM ax_flurstueck f2 117 JOIN alkis_beziehungen a 118 ON f2.gml_id = a.beziehung_von 119 WHERE f2.gml_id = b.beziehung_von 120 AND a.beziehungsart = 'istGebucht' 121 GROUP BY a.beziehung_von ) 122 -- bei Test mit SELECT darf man sortieren: 123 -- ORDER BY b.beziehung_von, b.ogc_fid 124 ; 125 54 126 55 127 -
trunk/import/sichten.sql
r215 r265 9 9 -- 2012-04-24 pauschal Filter 'endet IS NULL' um historische Objekte auszublenden 10 10 -- 2012-10-29 Redundanzen in Beziehungen suchen (entstehen durch replace) 11 -- 2013-02-20 Mehrfache Buchungsstellen zum FS suchen, dies sind Auswirkungen eines Fehlers bei Replace 11 12 12 13 -- ----------------------------------------- … … 782 783 COMMENT ON VIEW beziehungen_redundant_in_delete IS 'alkis_beziehungen zu denen es eine identische neue Version gibt und wo das Objekt noch in der delete-Tabelle vorkommt.'; 783 784 785 786 -- Suche nach Fehler durch "Replace" 787 -- Wenn ax_flurstueck ÃŒber "replace" ausgetauscht wird und dabei gleichzeitig eine andere 788 -- Buchungsstelle bekommt, dann bleibt die alte Buchungsstelle in den alkis_beziehungen. 789 -- Mail PostNAS Mailingliste von 2013-02-20 790 791 -- Version Marvin Brandt, Unna: 792 793 -- CREATE OR REPLACE VIEW mehrfache_buchung_zu_fs 794 -- AS 795 -- SELECT gml_id, anzahl FROM 796 -- ( SELECT f.*, 797 -- ( SELECT count(f2.gml_id) as anzahl 798 -- FROM ax_flurstueck f2 799 -- JOIN alkis_beziehungen a1 800 -- ON f2.gml_id = a1.beziehung_von 801 -- AND a1.beziehungsart = 'istGebucht' 802 -- WHERE f2.gml_id = f.gml_id 803 -- ) as anzahl 804 -- FROM ax_flurstueck f 805 -- ) as sub 806 -- WHERE sub.anzahl > 1; 807 808 -- Version Frank JÀger, Lemgo (keep it simple) 809 CREATE OR REPLACE VIEW mehrfache_buchung_zu_fs 810 AS 811 SELECT f.gml_id, count(b.ogc_fid) AS anzahl 812 FROM ax_flurstueck f 813 JOIN alkis_beziehungen b 814 ON f.gml_id = b.beziehung_von 815 WHERE b.beziehungsart = 'istGebucht' 816 GROUP BY f.gml_id 817 HAVING count(b.ogc_fid) > 1; 818 819 -- Noch einfacher? - Auch ohne JOIN wird das selbe Ergebnis geliefert. 820 -- Doppelte Verweise zÀhlen ohne zu prÃŒfen, ob die gml_id in ax_flurstueck existiert. 821 -- SELECT b.beziehung_von, count(b.ogc_fid) AS anzahl 822 -- FROM alkis_beziehungen b 823 -- WHERE b.beziehungsart = 'istGebucht' 824 -- GROUP BY b.beziehung_von 825 -- HAVING count(b.ogc_fid) > 1; 826 827 COMMENT ON VIEW mehrfache_buchung_zu_fs IS 'Nach replace von ax_flurtstueck mit einer neuen ax_buchungsstelle bleibt die alte Verbindung in alkis_beziehungen'; 828 829 784 830 -- END --
Note: See TracChangeset
for help on using the changeset viewer.