Index: Version-0.8/import/pp_laden.sql
===================================================================
--- Version-0.8/import/pp_laden.sql	(revision 322)
+++ Version-0.8/import/pp_laden.sql	(revision 324)
@@ -1,4 +1,4 @@
 
--- ALKIS PostNAS 0.7
+-- ALKIS PostNAS
 
 -- Post Processing (pp_) Teil 2: Laden der Tabellen
@@ -10,12 +10,14 @@
 --  2012-04-17 Flurstuecksnummern auf Standardposition
 --  2012-04-24 Generell Filter 'endet IS NULL' um historische Objekte auszublenden
---  2012-04-25 Abstürze und Fehler (durch kaputte Geometrie?) beim Zusammenfassen der Flächen
+--  2012-04-25 AbstÃŒrze und Fehler (durch kaputte Geometrie?) beim Zusammenfassen der FlÃ€chen
 --  2012-10-29 F.J. Redundanzen aus alkis_beziehungen beseitigen, die nach NAS replace auftreten
 --  2013-02-06 A.E. Function-Name an PostGIS 2 angepasst: multi() -> st_multi(), simplify() -> st_simplify()
---  2013-02-21 F.J. doppelte Buchungen zum Flurstück aus alkis_beziehungen beseitigen, die nach NAS replace auftreten
---  2013-07-10 F.J. Bereinigen der alkis_beziehungen auskommentiert, wird jetzt im Trigger gelöst.
---  2012-10-24 Neue Tabelle für die Präsentation von Straßennamen und -Klassifikationen
---  2014-02-05 Bereits auskommentierte Aktionen gelöscht für die Beseitigung von Rdundanzen aus fehlerhaften Triggern
---  2014-02-12 Zusammen fassen Flur->Gemarkung->Gemeinde nicht aus simple_geom weil dadurch Löscher entstehen können.
+--  2013-02-21 F.J. doppelte Buchungen zum FlurstÃŒck aus alkis_beziehungen beseitigen, die nach NAS replace auftreten
+--  2013-07-10 F.J. Bereinigen der alkis_beziehungen auskommentiert, wird jetzt im Trigger gelÃ¶st.
+--  2012-10-24 Neue Tabelle fÃŒr die PrÃ€sentation von StraÃennamen und -Klassifikationen
+--  2014-02-05 Bereits auskommentierte Aktionen gelÃ¶scht fÃŒr die Beseitigung von Rdundanzen aus fehlerhaften Triggern
+--  2014-02-12 Zusammen fassen Flur->Gemarkung->Gemeinde nicht aus simple_geom weil dadurch LÃ¶scher entstehen kÃ¶nnen.
+--  2014-08-26 Beseitigung eines Fehlers beim Laden der StraÃennamen-Label.
+--             Dabei Trennung in pp_strassenname_p und -_l (Punkt- und Liniengeometrie).
 
 -- ============================
@@ -24,13 +26,13 @@
 
 -- Einige Informationen liegen nach der NAS-Konvertierung in der Datenbank "verstreut" vor.
--- Die dynamische Aufbereitung über Views und Functions würde zu lange dauern und somit lange 
+-- Die dynamische Aufbereitung ÃŒber Views und Functions wÃŒrde zu lange dauern und somit lange 
 -- Antwortzeiten in WMS, WFS, Buchauskunft oder Navigation (Suche) verursachen.
 
 -- Im Rahmen eines "Post-Processing" werden diese Daten nach jeder Konvertierung (NBA-Aktualisierung) 
--- einmal komplett aufbereitet. Die benötigten Informationen stehen somit den Anwendungen mundgerecht zur Verfügung.
-
--- Die per PostProcessing gefüllten Tabellen bekommen den Profix "pp_". 
-
--- Die Ausführung dieses Scriptes auf einer Datenbank für eine 80T-Einwohner-Stadt dauert ca.: 500 Sek. !
+-- einmal komplett aufbereitet. Die benÃ¶tigten Informationen stehen somit den Anwendungen mundgerecht zur VerfÃŒgung.
+
+-- Die per PostProcessing gefÃŒllten Tabellen bekommen den Profix "pp_". 
+
+-- Die AusfÃŒhrung dieses Scriptes auf einer Datenbank fÃŒr eine 80T-Einwohner-Stadt dauert ca.: 500 Sek. !
 
 SET client_encoding = 'UTF-8';
@@ -41,5 +43,5 @@
 -- ============================================================================
 -- Workaround: alle Redundazen nach einem Lauf entfernen.
--- Besser wäre: sofort im Trigger bei replace entfernen.
+-- Besser wÃ€re: sofort im Trigger bei replace entfernen.
 -- Siehe Schema in FUNCTION delete_feature_kill
 
@@ -49,5 +51,5 @@
 -- =================================
 
--- ersetzt den View "s_flurstueck_nr" für WMS-Layer "ag_t_flurstueck"
+-- ersetzt den View "s_flurstueck_nr" fÃŒr WMS-Layer "ag_t_flurstueck"
 
 --DELETE FROM pp_flurstueck_nr;
@@ -75,36 +77,78 @@
        AND f.endet IS NULL 
   ;
--- Ausführung: mittlere Stadt: ca. 4 - 18 Sec.
-
-
--- Straßen - N a m e n  und  - K l a s s i f i k a t i o n
--- Tabellen für die Präsentation von Straßen-Namen und -Klassifikationen
+-- AusfÃŒhrung: mittlere Stadt: ca. 4 - 18 Sec.
+
+
+-- StraÃen - N a m e n  und  - K l a s s i f i k a t i o n
+-- Tabellen fÃŒr die PrÃ€sentation von StraÃen-Namen und -Klassifikationen
 -- Daten aus dem View "ap_pto_stra" werden im PostProcessing gespeichert in der Tabelle "pp_strassenname".
--- Der View übernimmt die Auswahl des passenden "advstandardmodell" und rechnet den Winkel passend um.
--- In der Tabelle werden dann die leer gebliebenen Label aus dem Katalog noch ergänzt. 
-
--- Tabelle aus View befüllen
-TRUNCATE pp_strassenname;
-INSERT INTO pp_strassenname (schriftinhalt, hor, ver, art, winkel, the_geom)
-       SELECT schriftinhalt, hor, ver, art, winkel, wkb_geometry
-       FROM ap_pto_stra; -- View sucht das passende advstandardmodell
-
--- Schriftinhalt ergänzen
---DATE ap_pto           p  -- Präsentationsobjekte Punktförmig
-UPDATE pp_strassenname  p
-   SET schriftinhalt =     -- Hier fehlt der Label
-   -- Subquery "Gib mir den Straßennamen":
-   ( SELECT k.bezeichnung                       -- Straßenname ..
-       FROM ax_lagebezeichnungkatalogeintrag k  --  .. aus Katalog
-       JOIN ax_lagebezeichnungohnehausnummer l  -- verwendet als Lage o.H.
-         ON (k.land=l.land AND k.regierungsbezirk=l.regierungsbezirk 
-             AND k.kreis=l.kreis AND k.gemeinde=l.gemeinde AND k.lage=l.lage )
-       JOIN alkis_beziehungen x ON l.gml_id = x.beziehung_zu  -- Relation zum Präsentationsobjekt
-      WHERE p.gml_id = x.beziehung_von
-        AND x.beziehungsart = 'dientZurDarstellungVon'
-      -- LIMIT 1 -- war in einem Fall notwendig, wo 2mal der gleiche Text zugeordnet war, Ursache?
-   )
+-- Der View ÃŒbernimmt die Auswahl des passenden "advstandardmodell" und rechnet den Winkel passend um.
+-- In der Tabelle werden dann die leer gebliebenen Label aus dem Katalog noch ergÃ€nzt. 
+
+-- Tabelle aus View befÃŒllen
+-- 2014-08-22 
+--  Variante "_p" = Punktgeometrie, Spalte gml_id ergÃ€nzt.
+--  Es werden nun auch SÃ€tze mit leerem "schriftinhalt" angelegt. Das wird dann nachtrÃ€glich gefÃŒllt.
+
+-- Alles auf Anfang
+TRUNCATE pp_strassenname_p;
+
+-- ZunÃ€chst die Sonderschreibweisen (AbkÃŒrzungen) und die Standardschreibweisen, 
+-- die von der Migration redundant abgelegt wurden.
+INSERT INTO pp_strassenname_p (gml_id, schriftinhalt, hor, ver, art, winkel, the_geom)
+       SELECT gml_id, schriftinhalt, hor, ver, art, winkel, wkb_geometry
+       FROM ap_pto_stra; -- Der View sucht das passende advstandardmodell
+
+-- Schriftinhalt ergÃ€nzen
+-- Das sind die Standardschreibweisen aus dem Katalog, die nicht mehr redundant in ap_pto sind.
+UPDATE pp_strassenname_p  p
+   SET schriftinhalt =     -- Hier ist der Label noch leer
+   -- Subquery "Gib mir den StraÃennamen":
+   ( SELECT k.bezeichnung                         -- StraÃenname ..
+       FROM ax_lagebezeichnungkatalogeintrag k    --  .. aus Katalog
+       JOIN ax_lagebezeichnungohnehausnummer l    -- verwendet als Lage o.H.
+         ON (k.land=l.land AND k.regierungsbezirk=l.regierungsbezirk AND k.kreis=l.kreis AND k.gemeinde=l.gemeinde AND k.lage=l.lage )
+      WHERE p.gml_id = l.gml_id                   -- die gml_id wurde aus View importiert
+    )
  WHERE     p.schriftinhalt IS NULL
    AND NOT p.the_geom      IS NULL;
+
+-- FEHLER:  als Ausdruck verwendete Unteranfrage ergab mehr als eine Zeile
+-- Ursache: Trigger anpassen an "character varying", arbeitet bisher nur mit "caharacter(16)" korrekt
+
+
+-- Die immer noch leeren Texte sind nun sinnlos.
+-- Die finden sich ggf. in der Variante "_l" mit Liniengeometrie.
+DELETE FROM pp_strassenname_p WHERE schriftinhalt IS NULL;
+
+-- Nun das Gleiche noch einmal fÃŒr Linien-Geometrie
+
+-- Auf Anfang
+TRUNCATE pp_strassenname_l;
+
+-- ZunÃ€chst die Sonderschreibweisen (AbkÃŒrzungen) und die Standardschreibweisen, 
+-- die von der Migration redundant abgelegt wurden.
+INSERT INTO pp_strassenname_l (gml_id, schriftinhalt, hor, ver, art, the_geom)
+       SELECT gml_id, schriftinhalt, hor, ver, art, wkb_geometry
+       FROM ap_lto_stra; -- Der View sucht das passende advstandardmodell
+
+-- Schriftinhalt ergÃ€nzen (korrigiert 2014-08-25)
+-- Das sind die Standardschreibweisen aus dem Katalog, die nicht mehr redundant in ap_pto sind.
+-- Der Satz mit der passenen gml_id (Lage o.H.) ist aus dem View bereits importiert.
+-- Jetzt noch den dazu passenen Schriftinhalt aus dem Katalog holen.
+UPDATE pp_strassenname_l  p
+   SET schriftinhalt =     -- Hier ist der Label noch leer
+   -- Subquery "Gib mir den StraÃennamen":
+   ( SELECT k.bezeichnung                         -- StraÃenname ..
+       FROM ax_lagebezeichnungkatalogeintrag k    --  .. aus Katalog
+       JOIN ax_lagebezeichnungohnehausnummer l    -- verwendet als Lage o.H.
+         ON (k.land=l.land AND k.regierungsbezirk=l.regierungsbezirk AND k.kreis=l.kreis AND k.gemeinde=l.gemeinde AND k.lage=l.lage )
+      WHERE p.gml_id = l.gml_id                   -- die gml_id wurde aus View importiert
+    )
+ WHERE     p.schriftinhalt IS NULL
+   AND NOT p.the_geom      IS NULL;
+
+-- Die immer noch leeren Texte sind sinnlos.
+DELETE FROM pp_strassenname_l WHERE schriftinhalt IS NULL;
 
 
@@ -113,9 +157,9 @@
 -- ========================================================
 
--- 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.
+-- 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, 
+-- 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. 
 
@@ -174,12 +218,12 @@
 
 -- ==============================================================================
--- Geometrien der Flurstücke schrittweise zu groesseren Einheiten zusammen fassen
+-- Geometrien der FlurstÃŒcke schrittweise zu groesseren Einheiten zusammen fassen
 -- ==============================================================================
 
--- Dies macht nur Sinn, wenn der Inhalt der Datenbank einen ganzen Katasterbezirk enthält.
+-- Dies macht nur Sinn, wenn der Inhalt der Datenbank einen ganzen Katasterbezirk enthÃ€lt.
 -- Wenn ein Gebiet durch geometrische Filter im NBA ausgegeben wurde, dann gibt es Randstreifen, 
 -- die zu Pseudo-Fluren zusammen gefasst werden. Fachlich falsch!
 
--- Ausführungszeit: 1 mittlere Stadt mit ca. 14.000 Flurstücken > 100 Sek
+-- AusfÃŒhrungszeit: 1 mittlere Stadt mit ca. 14.000 FlurstÃŒcken > 100 Sek
 
 DELETE FROM pp_flur;
@@ -188,5 +232,5 @@
    SELECT  f.land, f.regierungsbezirk, f.kreis, f.gemarkungsnummer as gemarkung, f.flurnummer, 
            count(gml_id) as anz_fs,
-           st_multi(st_union(st_buffer(f.wkb_geometry,0.05))) AS the_geom -- Zugabe um Zwischenräume zu vermeiden
+           st_multi(st_union(st_buffer(f.wkb_geometry,0.05))) AS the_geom -- Zugabe um ZwischenrÃ€ume zu vermeiden
      FROM  ax_flurstueck f
      WHERE f.endet IS NULL
@@ -196,12 +240,12 @@
 -- -------------------------------------
 
--- FEHLER: 290 Absturz PG! Bei Verwendung der ungebufferten präzisen Geometrie.  
+-- FEHLER: 290 Absturz PG! Bei Verwendung der ungebufferten prÃ€zisen Geometrie.  
 -- bufferOriginalPrecision failed (TopologyException: unable to assign hole to a shell), trying with reduced precision
--- UPDATE: ../../source/headers/geos/noding/SegmentString.h:175: void geos::noding::SegmentString::testInvariant() const: Zusicherung »pts->size() > 1« nicht erfüllt.
-
--- Flächen vereinigen
+-- UPDATE: ../../source/headers/geos/noding/SegmentString.h:175: void geos::noding::SegmentString::testInvariant() const: Zusicherung Â»pts->size() > 1Â« nicht erfÃŒllt.
+
+-- FlÃ€chen vereinigen
 UPDATE pp_gemarkung a
   SET the_geom = 
-   ( SELECT st_multi(st_union(st_buffer(b.the_geom,0.1))) AS the_geom -- Puffer/Zugabe um Löcher zu vermeiden
+   ( SELECT st_multi(st_union(st_buffer(b.the_geom,0.1))) AS the_geom -- Puffer/Zugabe um LÃ¶cher zu vermeiden
        FROM pp_flur b
       WHERE a.land      = b.land 
@@ -222,5 +266,5 @@
 -- ----------------------------------------
 
--- Flächen vereinigen (aus der bereits vereinfachten Geometrie)
+-- FlÃ€chen vereinigen (aus der bereits vereinfachten Geometrie)
 UPDATE pp_gemeinde a
   SET the_geom = 
@@ -231,5 +275,5 @@
    );
 
--- Gemarkungen zählen
+-- Gemarkungen zÃ€hlen
 UPDATE pp_gemeinde a
   SET anz_gemarkg = 
@@ -241,6 +285,6 @@
 
 
--- Geometrie glätten / vereinfachen
--- Diese "simplen" Geometrien sollen nur für die Darstellung einer Übersicht verwendet werden.
+-- Geometrie glÃ€tten / vereinfachen
+-- Diese "simplen" Geometrien sollen nur fÃŒr die Darstellung einer Ãbersicht verwendet werden.
 -- Ablage der simplen Geometrie in einem alternativen Geometriefeld im gleichen Datensatz.
 
@@ -253,5 +297,5 @@
 
 -- =======================================================
--- Tabelle fuer die Zuordnung vom Eigentümern zu Gemeinden
+-- Tabelle fuer die Zuordnung vom EigentÃŒmern zu Gemeinden
 -- =======================================================
 
@@ -261,5 +305,5 @@
 
 -- alle direkten Buchungen mit View ermitteln und in Tabelle speichern
--- Für eine Stadt: ca. 20 Sekunden
+-- FÃŒr eine Stadt: ca. 20 Sekunden
 INSERT INTO  gemeinde_person 
        (land, regierungsbezirk, kreis, gemeinde, person, buchtyp)
@@ -268,7 +312,7 @@
 
 
--- noch die komplexeren Buchungen ergänzen (Recht an ..)
+-- noch die komplexeren Buchungen ergÃ€nzen (Recht an ..)
 -- Mit View ermitteln und in Tabelle speichern
--- Für eine Stadt: ca. 10 Sekunden
+-- FÃŒr eine Stadt: ca. 10 Sekunden
 INSERT INTO  gemeinde_person 
        (  land,   regierungsbezirk,   kreis,   gemeinde,   person,  buchtyp)
