Index: trunk/import/pp_laden.sql
===================================================================
--- trunk/import/pp_laden.sql	(revision 351)
+++ trunk/import/pp_laden.sql	(revision 354)
@@ -2,5 +2,5 @@
 -- ALKIS PostNAS 0.8
 
--- Post Processing (pp_) Teil 2: Laden der Tabellen
+-- Post Processing (pp_) Teil 2 A: Laden der Tabellen
 
 -- Stand 
@@ -25,4 +25,8 @@
 --  2014-12-17 Neue Spalte "gemeinde" in Tabelle "pp_flur", dient der Filterung im WMS-Layer "Gebiete"
 --  2015-01-08 Mehrfach-Versuche der Geometrie-Zusammenfassung mit wachsender PuffergrÃ¶Ãe.
+--  2015-10-27 Die Erzeugung der vereinfachten Geometrie von Gemeinde, Gemarkung und Flur
+--             wird ausgegliedert in das Script "pp_gebiete.sql".
+--             Dies Script sollte nach jeder Aktualisierung der Datebnek laufen.
+--             Die Erzeugung neuer Ãbersichten der Gebiete ist nur gelegendlich notwendig.
 
 
@@ -53,29 +57,4 @@
 
 TRUNCATE pp_flurstueck_nr;  -- effektiver als DELETE
-
-/* 
--- Alte Version ÃŒber "alkis_beziehungen"
--- AusfÃŒhrung: mittlere Stadt: ca. 4 - 18 Sec.
-
--- 1:1 umgestellt (UNION) unter Verwendeung der neuen Relationenspalten
-
-INSERT INTO pp_flurstueck_nr
-          ( fsgml, fsnum, the_geom )
-    SELECT f.gml_id,
-           f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS fsnum,
-           p.wkb_geometry  -- manuelle Position des Textes
-      FROM ax_flurstueck  f 
-      JOIN ap_pto         p
-        ON f.gml_id = ANY(p.dientzurdarstellungvon)
-     WHERE f.endet IS NULL AND p.endet IS NULL -- AND p."art" = 'ZAE_NEN'
-   UNION 
-    SELECT f.gml_id,
-           f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS fsnum,
-           ST_PointOnSurface(f.wkb_geometry) AS wkb_geometry  -- Flaechenmitte als Position des Textes
-      FROM ax_flurstueck  f 
-      LEFT JOIN ap_pto    p
-        ON f.gml_id = ANY(p.dientzurdarstellungvon)  -- kein PrÃ€sentationsobjekt vorhanden
-     WHERE p.gml_id is NULL AND f.endet IS NULL ;
-*/
 
 -- Ersatz: FÃŒllen in 3 Schritten
@@ -179,189 +158,4 @@
 DELETE FROM pp_strassenname_l WHERE schriftinhalt IS NULL;
 
-
--- Tabellen fuer die Zuordnung vom Gemarkungen zu Gemeinden
--- ========================================================
-
--- FÃŒr die Regelung der Zugriffsberechtigung einer Gemeindeverwaltung auf die 
--- FlurstÃŒcke in ihrem Gebiet braucht man die Information, in welcher Gemeinde eine Gemarkung liegt.
--- 'ax_gemeinde' und 'ax_gemarkung' haben aber im ALKIS keinerlei Beziehung zueinander - kaum zu glauben!
--- Nur ÃŒber die Auswertung der FlurstÃŒcke kann man die Zuordnung ermitteln.
--- Da nicht stÃ€ndig mit 'SELECT DISTINCT' sÃ€mtliche FlurstÃŒcke durchsucht werden kÃ¶nnen, 
--- muss diese Information als (redundante) Tabelle nach dem Laden zwischengespeichert werden. 
-
-
--- G E M A R K U N G
-
-TRUNCATE pp_gemarkung;
--- Vorkommende Paarungen Gemarkung <-> Gemeinde in ax_Flurstueck
-INSERT INTO pp_gemarkung
-  (               land, regierungsbezirk, kreis, gemeinde, gemarkung       )
-  SELECT DISTINCT land, regierungsbezirk, kreis, gemeinde, gemarkungsnummer
-  FROM            ax_flurstueck
-  WHERE           endet IS NULL
-  ORDER BY        land, regierungsbezirk, kreis, gemeinde, gemarkungsnummer ;
-
--- Namen der Gemarkung dazu als Optimierung bei der Auskunft 
-UPDATE pp_gemarkung a
-   SET gemarkungsname =
-   ( SELECT b.bezeichnung 
-     FROM    ax_gemarkung b
-     WHERE a.land=b.land 
-       AND a.gemarkung=b.gemarkungsnummer
-       AND b.endet IS NULL
-   );
-
-
--- G E M E I N D E
-
-TRUNCATE pp_gemeinde;
--- Vorkommende Gemeinden aus den Gemarkungen
-INSERT INTO pp_gemeinde
-  (               land, regierungsbezirk, kreis, gemeinde)
-  SELECT DISTINCT land, regierungsbezirk, kreis, gemeinde
-  FROM            pp_gemarkung
-  ORDER BY        land, regierungsbezirk, kreis, gemeinde;
-
--- Namen der Gemeinde dazu als Optimierung bei der Auskunft 
-UPDATE pp_gemeinde a
-   SET gemeindename =
-   ( SELECT b.bezeichnung 
-     FROM    ax_gemeinde b
-     WHERE a.land=b.land 
-       AND a.regierungsbezirk=b.regierungsbezirk 
-       AND a.kreis=b.kreis
-       AND a.gemeinde=b.gemeinde
-       AND b.endet IS NULL
-   );
-
-
--- Geometrien der FlurstÃŒcke schrittweise zu groesseren Einheiten zusammen fassen
--- ==============================================================================
--- http://postgis.net/docs/manual-1.5/ST_Union.html (Aggregate version)
--- http://postgis.net/docs/manual-1.5/ST_Collect.html
-
--- Wenn ein Gebiet durch geometrische Filter im NBA-Verfahren ausgegeben wurde, dann gibt es 
--- Randstreifen, die zu Pseudo-Fluren zusammen gefasst werden. 
--- Diese werden fÃŒr den WMS durch einen View ausgefiltert, der nur eine Gemeinde darstellt.
-
--- AusfÃŒhrungszeit: 1 mittlere Stadt mit ca. 14.000 FlurstÃŒcken > 100 Sek
-
-TRUNCATE pp_flur;
-
-INSERT INTO pp_flur (land, regierungsbezirk, kreis, gemeinde, gemarkung, flurnummer, anz_fs, the_geom )
-   SELECT  f.land, f.regierungsbezirk, f.kreis, f.gemeinde, f.gemarkungsnummer as gemarkung, f.flurnummer, 
-           count(gml_id) as anz_fs,
-           ST_Multi(st_union(st_buffer(f.wkb_geometry,0.06))) AS the_geom -- Zugabe um ZwischenrÃ€ume zu vermeiden
-     FROM  ax_flurstueck f
-     WHERE f.endet IS NULL AND NOT f.wkb_geometry IS NULL
-  GROUP BY f.land, f.regierungsbezirk, f.kreis, f.gemeinde, f.gemarkungsnummer, f.flurnummer;
-
--- Vereinfachte Geometrie der Flur fÃŒr die Darstelung im WMS in einem kleinen MaÃstab
-UPDATE pp_flur      SET simple_geom = st_simplify(the_geom, 0.5);
-
-
--- Fluren zu Gemarkungen zusammen fassen
--- -------------------------------------
-
--- FlÃ€chen vereinigen
-UPDATE pp_gemarkung a
-  SET the_geom = 
-   ( SELECT ST_Multi(ST_Union(ST_Buffer(b.the_geom,0.15))) AS the_geom -- Puffer/Zugabe um LÃ¶cher zu vermeiden
-       FROM pp_flur b
-      WHERE a.land      = b.land 
-        AND a.gemarkung = b.gemarkung
-   );
--- Hierbei kÃ¶nnen Exceptions auftreten wobei das Geometriefeld einzelner Gemarkungen leer bleibt.
--- Die Ursache ist unklar.
---  TopologyException: found non-noded intersection between LINESTRING
-
--- Praktische LÃ¶sung:
--- Bei den Gemarkungen, die nichts abbekommen haben, mit schrittweise groesserem Buffer noch mal versuchen.
-UPDATE pp_gemarkung a
-  SET the_geom = 
-   ( SELECT ST_Multi(ST_Union(ST_Buffer(b.the_geom,0.20))) AS the_geom -- Puffer vergroessert
-       FROM pp_flur b
-      WHERE a.land      = b.land 
-        AND a.gemarkung = b.gemarkung
-   ) WHERE the_geom IS NULL;
-
-UPDATE pp_gemarkung a
-  SET the_geom = 
-   ( SELECT ST_Multi(ST_Union(ST_Buffer(b.the_geom,0.30))) AS the_geom -- Puffer vergroessert
-       FROM pp_flur b
-      WHERE a.land      = b.land 
-        AND a.gemarkung = b.gemarkung
-   ) WHERE the_geom IS NULL;
-
-/* Guggst du (auf leeren Geometry-Typ achten:
-
-   SELECT gemarkungsname, geometrytype(the_geom) AS typ, 
-     st_isvalid(the_geom) AS vali, st_asewkt(the_geom) AS ewkt
-   FROM pp_gemarkung;
-
-*/
-
--- Die Fluren in der Gemarkung zaehlen
-UPDATE pp_gemarkung a
-  SET anz_flur = 
-   ( SELECT count(flurnummer) AS anz_flur 
-     FROM    pp_flur b
-     WHERE a.land      = b.land 
-       AND a.gemarkung = b.gemarkung
-   ); -- Gemarkungsnummer ist je BundesLand eindeutig
-
-
--- Vereinfachte Geometrie der Gemarkung fÃŒr die Darstellung im WMS in einem kleinen MaÃstab
--- Gemarkung (Wirkung siehe pp_gemarkung_analyse)
-UPDATE pp_gemarkung SET simple_geom = st_simplify(the_geom, 2.2); 
-
-
--- Gemarkungen zu Gemeinden zusammen fassen
--- ----------------------------------------
-
--- FlÃ€chen vereinigen
-UPDATE pp_gemeinde a
-  SET the_geom = 
-   ( SELECT st_multi(st_union(st_buffer(b.the_geom,0.2))) AS the_geom -- noch mal Zugabe
-     FROM    pp_gemarkung b
-     WHERE a.land     = b.land 
-       AND a.gemeinde = b.gemeinde
-   );
--- Hierbei kÃ¶nnen Exceptions auftreten wobei das Geometriefeld einzelner Gemarkungen leer bleibt.
--- Die Ursache ist unklar.
-
--- Praktische LÃ¶sung:
--- weitere Versuche mit mehr Puffer, wenn Exception auftrat
-UPDATE pp_gemeinde a
-  SET the_geom = 
-   ( SELECT st_multi(st_union(st_buffer(b.the_geom,0.3))) AS the_geom -- MEHR Zugabe
-     FROM    pp_gemarkung b
-     WHERE a.land     = b.land 
-       AND a.gemeinde = b.gemeinde
-   ) WHERE the_geom IS NULL;
-
-UPDATE pp_gemeinde a
-  SET the_geom = 
-   ( SELECT st_multi(st_union(st_buffer(b.the_geom,0.4))) AS the_geom -- noch MEHR Zugabe
-     FROM    pp_gemarkung b
-     WHERE a.land     = b.land 
-       AND a.gemeinde = b.gemeinde
-   ) WHERE the_geom IS NULL;
-
-
--- Vereinfachte Geometrie der Gemeinde fÃŒr die Darstellung im WMS in einem kleinen MaÃstab
--- Gemeinde (Wirkung siehe pp_gemeinde_analyse)
-UPDATE pp_gemeinde  SET simple_geom = st_simplify(the_geom, 5.0); 
-
--- Gemarkungen in der Gemeinde zÃ€hlen
-UPDATE pp_gemeinde a
-  SET anz_gemarkg = 
-   ( SELECT count(gemarkung) AS anz_gemarkg 
-     FROM    pp_gemarkung b
-     WHERE a.land     = b.land 
-       AND a.gemeinde = b.gemeinde
-   );
-
-
 -- Tabelle fuer die Zuordnung vom EigentÃŒmern zu Gemeinden
 -- =======================================================
