Index: trunk/data/konvert/postnas_0.7/pp_definition.sql
===================================================================
--- trunk/data/konvert/postnas_0.7/pp_definition.sql	(revision 174)
+++ trunk/data/konvert/postnas_0.7/pp_definition.sql	(revision 176)
@@ -8,4 +8,7 @@
 --  2012-02-13 PostNAS 07, Umbenennung
 --  2012-02-17 Optimierung
+--  2012-02-28 gkz aus View nehmen
+--  2012-04-17 Flurstuecksnummern auf Standardposition
+
 
 -- ============================
@@ -66,9 +69,9 @@
 
 
-COMMENT ON TABLE  pp_gemeinde                IS 'Post-Processing: Gemeinde';
-COMMENT ON COLUMN pp_gemeinde.gemeinde       IS 'Gemeindenummer';
-COMMENT ON COLUMN pp_gemeinde.gkz            IS 'Gemeindekennziffer fÃŒr Mandant';
-COMMENT ON COLUMN pp_gemeinde.the_geom       IS 'prÃ€zise Geometrie aus Summe aller Gemarkungen';
-COMMENT ON COLUMN pp_gemeinde.simple_geom    IS 'vereinfachte Geometrie fÃŒr die Suche und die Anzeige von Ãbersichten in kleinen MaÃstÃ€ben.';
+  COMMENT ON TABLE  pp_gemeinde                IS 'Post-Processing: Gemeinde';
+  COMMENT ON COLUMN pp_gemeinde.gemeinde       IS 'Gemeindenummer';
+--COMMENT ON COLUMN pp_gemeinde.gkz            IS 'Gemeindekennziffer fÃŒr Mandant';
+  COMMENT ON COLUMN pp_gemeinde.the_geom       IS 'prÃ€zise Geometrie aus Summe aller Gemarkungen';
+  COMMENT ON COLUMN pp_gemeinde.simple_geom    IS 'vereinfachte Geometrie fÃŒr die Suche und die Anzeige von Ãbersichten in kleinen MaÃstÃ€ben.';
 
 
@@ -152,5 +155,5 @@
 
 
--- pp_  ?
+-- Prefix "pp_" verwenden  ?
 
 --DROP TABLE gemeinde_person;
@@ -175,4 +178,35 @@
 
 
+-- Flurstuecksnummern-Position
+-- ===========================
+
+-- ersetzt den View "s_flurstueck_nr" fÃŒr WMS-Layer "ag_t_flurstueck"
+
+--DROP TABLE pp_flurstueck_nr;
+
+  CREATE TABLE pp_flurstueck_nr (
+    gid		serial,
+    fsgml	character(16),
+    fsnum	character varying(10),  -- zzzzz/nnnn
+    CONSTRAINT pp_flurstueck_nr_pk  PRIMARY KEY (gid),
+    CONSTRAINT pp_flurstueck_nr_gml FOREIGN KEY (fsgml)
+      REFERENCES ax_flurstueck (gml_id) MATCH SIMPLE
+      ON UPDATE CASCADE ON DELETE CASCADE
+  );
+
+SELECT AddGeometryColumn('pp_flurstueck_nr','the_geom','25832','POINT',2);
+
+-- Geometrischer Index
+CREATE INDEX pp_flurstueck_nr_gidx ON pp_flurstueck_nr USING gist(the_geom);
+
+-- Foreig-Key Index
+CREATE INDEX fki_pp_flurstueck_nr_gml ON pp_flurstueck_nr(fsgml);
+
+COMMENT ON TABLE  pp_flurstueck_nr           IS 'Post-Processing: Position der FlurstÃŒcksnummer in der Karte';
+COMMENT ON COLUMN pp_flurstueck_nr.fsgml     IS 'gml_id des zugehÃ¶rigen FlurstÃŒcks-Objektes';
+COMMENT ON COLUMN pp_flurstueck_nr.fsnum     IS 'Label, Darzustellende FS-Nummer als Bruch';
+COMMENT ON COLUMN pp_flurstueck_nr.the_geom  IS 'Position der FlurstÃŒcksnummer in der Karte';
+
+
 -- =====
 -- VIEWs 
@@ -185,10 +219,9 @@
 CREATE VIEW gemeinde_gemarkung
 AS
-  SELECT g.land, g.regierungsbezirk, g.kreis, g.gemeinde, k.gemarkung, g.gemeindename, k.gemarkungsname, g.gkz
+  SELECT g.land, g.regierungsbezirk, g.kreis, g.gemeinde, k.gemarkung, g.gemeindename, k.gemarkungsname
   FROM pp_gemarkung k
   JOIN pp_gemeinde  g 
     ON k.land = g.land 
-   AND k.gemeinde = g.gemeinde
-;
+   AND k.gemeinde = g.gemeinde;
 
 -- VIEWs  fuer die Zuordnung vom EigentÃŒmern zu Gemeinden
@@ -228,6 +261,5 @@
     AND bnb.beziehungsart = 'istBestandteilVon'
     AND bbg.beziehungsart = 'istBestandteilVon'
-    AND bsf.beziehungsart = 'istGebucht'
-;
+    AND bsf.beziehungsart = 'istGebucht';
 
 COMMENT ON VIEW gemeinde_person_typ1 IS 'Personen die EigentÃŒmer vom FlurstÃŒcken in einer Gemeinde sind. Typ1 = nomale Buchungen mit direkter Beziehung.';
@@ -289,6 +321,5 @@
     AND  p.gemeinde = g.gemeinde
   GROUP BY p.land, p.regierungsbezirk, p.kreis, p.gemeinde, g.gemeindename, p.buchtyp
-  ORDER BY p.land, p.regierungsbezirk, p.kreis, p.gemeinde, p.buchtyp
-;
+  ORDER BY p.land, p.regierungsbezirk, p.kreis, p.gemeinde, p.buchtyp;
 
 COMMENT ON VIEW gemeinde_person_statistik IS 'ZÃ€hlen der Personen je Gemeinde und Buchungstyp';
Index: trunk/data/konvert/postnas_0.7/sichten.sql
===================================================================
--- trunk/data/konvert/postnas_0.7/sichten.sql	(revision 174)
+++ trunk/data/konvert/postnas_0.7/sichten.sql	(revision 176)
@@ -6,4 +6,6 @@
 
 --  2012-02-25 PostNAS 07, Umbenennung
+--  2012-04-17 flstnr_ohne_position
+
 
 --  -----------------------------------------
@@ -12,6 +14,6 @@
 
 
--- Layer "ag_t_flurstueck"
--- -----------------------
+-- WMS-Layer "ag_t_flurstueck"
+-- ---------------------------
 
 -- Die Geometrie befindet sich in "ap_pto", der Label in "ax_flurstueck"
@@ -20,23 +22,49 @@
 
 -- Bruchnummerierung erzeugen
+-- ALT 2012-04-17: Diese Version zeigt nur die manuell gesetzten Positionen
 CREATE OR REPLACE VIEW s_flurstueck_nr
 AS 
- SELECT ap_pto.ogc_fid, 
-        ap_pto.wkb_geometry,   -- Position des Textes
-    --  ax_flurstueck.flurstueckskennzeichen,   -- am Stueck, aufgefuellt, unpraktisch
-    --  ax_flurstueck.gemarkungsnummer,  -- integer
-    --  ax_flurstueck.flurnummer,        -- integer
-    --  ax_flurstueck.zaehler,           -- integer
-    --  ax_flurstueck.nenner,            -- integer oder NULL
-        ax_flurstueck.zaehler::text || COALESCE ('/' || ax_flurstueck.nenner::text, '') AS fsnum
-   FROM ap_pto
-   JOIN alkis_beziehungen 
-     ON ap_pto.gml_id = alkis_beziehungen.beziehung_von
-   JOIN ax_flurstueck 
-     ON alkis_beziehungen.beziehung_zu = ax_flurstueck.gml_id
-  WHERE alkis_beziehungen.beziehungsart = 'dientZurDarstellungVon'
+ SELECT f.ogc_fid, 
+        p.wkb_geometry,  -- Position des Textes
+        f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS fsnum
+   FROM ap_pto             p
+   JOIN alkis_beziehungen  v  ON p.gml_id       = v.beziehung_von
+   JOIN ax_flurstueck      f  ON v.beziehung_zu = f.gml_id
+  WHERE v.beziehungsart = 'dientZurDarstellungVon' 
+  --AND p."art" = 'ZAE_NEN'
   ;
 
 COMMENT ON VIEW s_flurstueck_nr IS 'fuer Kartendarstellung: Bruchnummerierung FlurstÃŒck';
+
+-- NEU 2012-04-17
+-- Wenn keine manuelle Position gesetzt ist, wird die Flaechenmitte verwendet
+
+-- ACHTUNG: Dieser View kann nicht direkt im Mapserver-WMS verwendet werden.
+-- Die Anzeige ist zu langsam. Filterung ÃŒber BBOX kann nicht funktionieren, da zunÃ€chst ALLE Standardpositionen 
+-- berechnet werden mÃŒssen, bevor darÃŒber gefiltert werden kann.
+
+-- FAZIT: In einer Hilfstabelle mit geometrischem Index zwischenspeichern.
+--        Siehe PostProcessing Tabelle "pp_flurstueck_nr"
+
+CREATE OR REPLACE VIEW s_flurstueck_nr2
+AS 
+  SELECT f.ogc_fid, 
+         p.wkb_geometry,  -- manuelle Position des Textes
+         f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS fsnum
+    FROM ap_pto             p
+    JOIN alkis_beziehungen  v  ON p.gml_id       = v.beziehung_von
+    JOIN ax_flurstueck      f  ON v.beziehung_zu = f.gml_id
+   WHERE v.beziehungsart = 'dientZurDarstellungVon' 
+   --AND p."art" = 'ZAE_NEN'
+ UNION 
+  SELECT f.ogc_fid,
+         ST_PointOnSurface(f.wkb_geometry) AS wkb_geometry,  -- Flaechenmitte als Position des Textes
+         f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS fsnum
+    FROM      ax_flurstueck     f 
+    LEFT JOIN alkis_beziehungen v  ON v.beziehung_zu = f.gml_id
+   WHERE v.beziehungsart is NULL
+  ;
+
+COMMENT ON VIEW s_flurstueck_nr2 IS 'Bruchnummerierung FlurstÃŒck, auch Standard-Position. Nicht direkt fuer WMS verwenden';
 
 
@@ -313,4 +341,31 @@
 --  Sichten fuer Fehlersuche und Daten-Analyse
 --  ------------------------------------------
+
+
+-- FlurstÃŒcke mit Anzeige der FlurstÃŒcksnummer an der "Standardposition"
+
+-- Nach der Konvertierung aus ALK hat zunÃ€chst jedes FlurstÃŒck eine explizit gesetzte Position der FlurstÃŒcksnummer.
+
+-- Nach einer manuellen Teilung bekommen die neuen FlurstÃŒcke im ALKIS nur dann eine Position,
+-- wenn die Positioin manuell bestimmt (verschoben) wurde.
+-- Wenn die FlurstÃŒcksnummer an ihrer "Standardposition" angezeigt werden soll, 
+-- dann wird diese in den Daten (DHK, NAS) nicht gesetzt.
+-- Der Konverter PostNAS konvertiert aber nur die Daten, die er bekommt, er setzt nicht die Standard-Position 
+-- fÃŒr die FlurstÃŒcke, die ohne eine manuelle Position kommen.
+
+-- Diese FÃ€lle identifizieren
+CREATE OR REPLACE VIEW flstnr_ohne_position
+AS 
+ SELECT f.gml_id, 
+        f.gemarkungsnummer || '-' || f.flurnummer || '-' || f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS such -- Suchstring fÃŒr ALKIS-Navigation nach FS-Kennzeichen
+ FROM        ax_flurstueck     f 
+   LEFT JOIN alkis_beziehungen v  ON v.beziehung_zu = f.gml_id
+ --LEFT JOIN ap_pto            p  ON p.gml_id       = v.beziehung_von
+  WHERE v.beziehungsart is NULL
+--ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler
+  ;
+
+COMMENT ON VIEW flstnr_ohne_position IS 'FlurstÃŒcke ohne manuell gesetzte Position fÃŒr die PrÃ€sentation der FS-Nr';
+
 
 -- Zeigt die Texte an, die nicht in einem der Mapfile-Views verarbeitet werden
Index: trunk/data/konvert/postnas_0.7/pp_laden.sql
===================================================================
--- trunk/data/konvert/postnas_0.7/pp_laden.sql	(revision 174)
+++ trunk/data/konvert/postnas_0.7/pp_laden.sql	(revision 176)
@@ -8,4 +8,5 @@
 --  2012-02-13 PostNAS 07, Umbenennung
 --  2012-02-17 Optimierung
+--  2012-04-17 Flurstuecksnummern auf Standardposition
 
 
@@ -22,4 +23,36 @@
 
 -- 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. !
+
+
+
+-- ===========================
+-- Flurstuecksnummern-Position
+-- ===========================
+
+-- ersetzt den View "s_flurstueck_nr" für WMS-Layer "ag_t_flurstueck"
+
+  DELETE FROM pp_flurstueck_nr;
+
+  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 ap_pto             p
+      JOIN alkis_beziehungen  v  ON p.gml_id       = v.beziehung_von
+      JOIN ax_flurstueck      f  ON v.beziehung_zu = f.gml_id
+     WHERE v.beziehungsart = 'dientZurDarstellungVon' 
+     --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 alkis_beziehungen v  ON v.beziehung_zu = f.gml_id
+     WHERE v.beziehungsart is NULL
+  ;
+-- Ausführung: mittlere Stadt: ca. 4 - 18 Sec.
 
 
