Index: /trunk/data/konvert/postnas_0.6/sichten.sql
===================================================================
--- /trunk/data/konvert/postnas_0.6/sichten.sql	(revision 139)
+++ /trunk/data/konvert/postnas_0.6/sichten.sql	(revision 140)
@@ -6,4 +6,6 @@
 
 --  2011-07-25 PostNAS 06, Umbenennung
+--  2011-10-20 Nummer NebengebÃ€ude und Zuordnungspfeile fuer GebÃ€ude   ##### IN ARBEIT
+--  2011-12-08 umbenannt "gemeinde_in_gemarkung" -> "gemarkung_in_gemeinde"
 
 --  -----------------------------------------
@@ -27,6 +29,4 @@
 -- Die FlurstÃŒcksnummer fehlt dann im WMS.
 -- Die Bedingung vorÃŒbergehend heraus nehmen. Ursache klÃ€ren!
-
--- 4.11.2011 Sichten fÃŒr die Grenzen aus der Tabelle ax_besondereflurstuecksgrenze Astrid Emde
 
 
@@ -78,4 +78,27 @@
 
 
+-- Layer "ag_t_nebengeb"
+-- ---------------------
+
+CREATE OR REPLACE VIEW s_nummer_nebengebaeude 
+AS 
+ SELECT ap_pto.ogc_fid, 
+        ap_pto.wkb_geometry, 
+        ap_pto.drehwinkel * 57.296 AS drehwinkel,        -- umn: ANGLE [drehwinkel]
+     -- alkis_beziehungen.beziehungsart,                 -- TEST
+     -- ax_lagebezeichnungmitpseudonummer.pseudonummer,  -- die HsNr des zugehoerigen Hauptgebaeudes
+        ax_lagebezeichnungmitpseudonummer.laufendenummer -- umn: LABELITEM - die laufende Nummer des Nebengebaeudes
+   FROM ap_pto
+   JOIN alkis_beziehungen 
+     ON ap_pto.gml_id = alkis_beziehungen.beziehung_von
+   JOIN ax_lagebezeichnungmitpseudonummer 
+     ON alkis_beziehungen.beziehung_zu  = ax_lagebezeichnungmitpseudonummer.gml_id
+  WHERE alkis_beziehungen.beziehungsart = 'dientZurDarstellungVon'
+;
+
+COMMENT ON VIEW s_nummer_nebengebaeude IS 'fuer Kartendarstellung: Hausnummern NebengebÃ€ude';
+
+-- ToDo: Die Zahl in Klammern setzen ?  (in Map oder View?)
+
 
 -- Layer "ag_p_flurstueck"
@@ -140,4 +163,86 @@
 
 COMMENT ON VIEW s_beschriftung IS 'ap_pto, die noch nicht in anderen Layern angezeigt werden';
+
+
+BAUSTELLE
+
+
+-- Layer "s_zuordungspfeil_gebaeude"
+-- -----------------------------------
+
+CREATE OR REPLACE VIEW s_zuordungspfeil_gebaeude 
+AS 
+ SELECT ap_lpo.ogc_fid, 
+     -- alkis_beziehungen.beziehungsart, -- TEST
+     -- ap_lpo.art, -- TEST
+        ap_lpo.wkb_geometry
+   FROM ap_lpo
+   JOIN alkis_beziehungen 
+     ON ap_lpo.gml_id = alkis_beziehungen.beziehung_von
+   JOIN ax_gebaeude 
+     ON alkis_beziehungen.beziehung_zu = ax_gebaeude.gml_id
+  WHERE ap_lpo.art = 'Pfeil'
+    AND alkis_beziehungen.beziehungsart = 'dientZurDarstellungVon';
+
+COMMENT ON VIEW s_zuordungspfeil_gebaeude IS 'fuer Kartendarstellung';
+
+
+-- Sichten vom OBK (Oberbergischer Kreis) zu "Grenzen"
+-- ---------------------------------------------------
+-- Schema "alkis" daraus entfernt.
+
+-- Feld "ax_besondereflurstuecksgrenze.artderflurstuecksgrenze" als Array "integer[]" !
+-- Anpassung Schema 18.09.2011
+
+CREATE OR REPLACE VIEW sk2022_gemeindegrenze 
+AS 
+ SELECT gemg.ogc_fid, gemg.wkb_geometry
+   FROM ax_besondereflurstuecksgrenze gemg
+  WHERE (7106 = ANY (gemg.artderflurstuecksgrenze)) 
+    AND gemg.advstandardmodell ~~ 'DLKM'::text;
+
+
+CREATE OR REPLACE VIEW sk2020_regierungsbezirksgrenze 
+AS 
+ SELECT rbg.ogc_fid, rbg.wkb_geometry
+   FROM ax_besondereflurstuecksgrenze rbg
+  WHERE (7103 = ANY (rbg.artderflurstuecksgrenze)) 
+    AND rbg.advstandardmodell ~~ 'DLKM'::text;
+
+
+CREATE OR REPLACE VIEW sk2018_bundeslandgrenze 
+AS 
+ SELECT blg.ogc_fid, blg.wkb_geometry
+   FROM ax_besondereflurstuecksgrenze blg
+  WHERE (7102 = ANY (blg.artderflurstuecksgrenze)) 
+    AND blg.advstandardmodell ~~ 'DLKM'::text;
+
+
+CREATE OR REPLACE VIEW sk2014_gemarkungsgrenze 
+AS 
+ SELECT gemag.ogc_fid, gemag.wkb_geometry
+   FROM ax_besondereflurstuecksgrenze gemag
+  WHERE (7003 = ANY (gemag.artderflurstuecksgrenze)) 
+    AND gemag.advstandardmodell ~~ 'DLKM'::text;
+
+
+--CREATE OR REPLACE VIEW sk2012_flurgrenze 
+--AS 
+-- SELECT fg.ogc_fid, fg.wkb_geometry
+--   FROM ax_besondereflurstuecksgrenze fg
+--  WHERE (3000 = ANY (fg.artderflurstuecksgrenze)) 
+--    AND fg.advstandardmodell ~~ 'DLKM'::text;
+
+-- Vorlaeufig, bis Schema umgestellt ist
+
+CREATE OR REPLACE VIEW sk2012_flurgrenze 
+AS 
+ SELECT fg.ogc_fid, fg.wkb_geometry
+   FROM ax_besondereflurstuecksgrenze fg
+  WHERE (3000 = fg.artderflurstuecksgrenze) 
+    AND fg.advstandardmodell ~~ 'DLKM'::text;
+
+-- comment ....
+
 
 --  ------------------------------------------
@@ -240,5 +345,7 @@
 -- Nur durch Auswertung der FlurstÃŒcke kann man ermitteln, in welcher Gemeinde eine Gemarkung liegt.
 
-CREATE OR REPLACE VIEW gemeinde_in_gemarkung
+-- 2011-12-08 umbenannt
+
+CREATE OR REPLACE VIEW gemarkung_in_gemeinde
 AS
   SELECT DISTINCT land, regierungsbezirk, kreis, gemeinde, gemarkungsnummer
@@ -247,5 +354,5 @@
 ;
 
-COMMENT ON VIEW gemeinde_in_gemarkung IS 'Welche Gemarkung liegt in welcher Gemeinde? Durch Verweise aus FlurstÃŒck.';
+COMMENT ON VIEW gemarkung_in_gemeinde IS 'Welche Gemarkung liegt in welcher Gemeinde? Durch Verweise aus FlurstÃŒck.';
 
 
@@ -481,30 +588,4 @@
 ;
 
---
--- Sichten fÃŒr Grenzen aus ax_besondereflurstuecksgrenze
---
--- Select distinct artderflurstuecksgrenze from ax_besondereflurstuecksgrenze
-Create view grenze_flur_3000 as 
-Select ogc_fid, artderflurstuecksgrenze, wkb_geometry from ax_besondereflurstuecksgrenze
-where 3000 = ANY(artderflurstuecksgrenze);
-
-Create view grenze_gemarkung_7003 as 
-Select ogc_fid, artderflurstuecksgrenze, wkb_geometry from ax_besondereflurstuecksgrenze
-where 7003 = ANY(artderflurstuecksgrenze);
-
-
-Create view grenze_regierungsbezirk_7103 as 
-Select ogc_fid, artderflurstuecksgrenze, wkb_geometry from ax_besondereflurstuecksgrenze
-where 7103 = ANY(artderflurstuecksgrenze);
-
-Create view grenze_landkreisgrenze_7104 as 
-Select ogc_fid, artderflurstuecksgrenze, wkb_geometry from ax_besondereflurstuecksgrenze
-where 7104 = ANY(artderflurstuecksgrenze);
-
-
-Create view grenze_gemeinde_7106 as 
-Select ogc_fid, artderflurstuecksgrenze, wkb_geometry from ax_besondereflurstuecksgrenze
-where 7106 = ANY(artderflurstuecksgrenze);
-
 -- END --
 
Index: /trunk/data/konvert/postnas_0.6/gemeinden_laden.sql
===================================================================
--- /trunk/data/konvert/postnas_0.6/gemeinden_laden.sql	(revision 139)
+++ /trunk/data/konvert/postnas_0.6/gemeinden_laden.sql	(revision 140)
@@ -14,9 +14,11 @@
 
 
--- Teil 2: Laden der Tabelle
+-- Teil 2: Laden der Tabellen
 
 -- Stand 
 
 --  2011-07-25 PostNAS 06, Umbenennung
+--  2011-12-08 Person -> Gemeinde
+
 
 SET client_encoding = 'UTF-8';
@@ -58,3 +60,36 @@
 
 
+
+-- =======================================================
+-- Tabelle fuer die Zuordnung vom Eigentümern zu Gemeinden
+-- =======================================================
+
+
+-- erst mal sauber machen
+DELETE FROM gemeinde_person;
+
+-- alle direkten Buchungen mit View ermitteln und in Tabelle speichern
+-- Für eine Stadt: ca. 20 Sekunden
+INSERT INTO  gemeinde_person 
+       (land, regierungsbezirk, kreis, gemeinde, person, buchtyp)
+ SELECT land, regierungsbezirk, kreis, gemeinde, person, 1
+   FROM gemeinde_person_typ1;
+
+
+-- noch die komplexeren Buchungen ergänzen (Recht an ..)
+-- Mit View ermitteln und in Tabelle speichern
+-- Für eine Stadt: ca. 10 Sekunden
+INSERT INTO  gemeinde_person 
+       (  land,   regierungsbezirk,   kreis,   gemeinde,   person,  buchtyp)
+ SELECT q.land, q.regierungsbezirk, q.kreis, q.gemeinde, q.person,  2
+   FROM gemeinde_person_typ2 q   -- Quelle
+   LEFT JOIN gemeinde_person z   -- Ziel
+     ON q.person   = z.person    -- Aber nur, wenn dieser Fall im Ziel
+    AND q.land     = z.land 
+    AND q.regierungsbezirk = z.regierungsbezirk 
+    AND q.kreis    = z.kreis 
+    AND q.gemeinde = z.gemeinde
+  WHERE z.gemeinde is Null;      -- ..  noch nicht vorhanden ist
+
+
 -- ENDE --
Index: /trunk/data/konvert/postnas_0.6/gemeinden_definition.sql
===================================================================
--- /trunk/data/konvert/postnas_0.6/gemeinden_definition.sql	(revision 139)
+++ /trunk/data/konvert/postnas_0.6/gemeinden_definition.sql	(revision 140)
@@ -1,4 +1,23 @@
 
 -- ALKIS PostNAS 0.6
+
+
+-- Teil 1: Anlegen der Tabellen
+
+
+-- Stand 
+
+--  2011-07-25 PostNAS 06, Umbenennung
+--  2011-12-08 Person -> Gemeinde
+
+SET client_encoding = 'UTF-8';
+
+-- Alles auf Anfang!
+
+-- DROP VIEW gemeinde_person_typ1;
+-- DROP VIEW gemeinde_person_typ2;
+
+-- DROP TABLE gemeinde_gemarkung;
+
 
 -- =======================================================
@@ -12,18 +31,4 @@
 -- 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. 
-
-
--- Teil 1: Anlegen der Tabelle
-
--- Stand 
-
---  2011-07-25 PostNAS 06, Umbenennung
-
-
-SET client_encoding = 'UTF-8';
-
--- Alles auf Anfang!
-
-DROP TABLE gemeinde_gemarkung;
 
 CREATE TABLE gemeinde_gemarkung (
@@ -45,2 +50,148 @@
 
 COMMENT ON COLUMN gemeinde_gemarkung.gkz            IS 'Gemeindekennziffer fÃŒr Mandant';
+
+
+-- =======================================================
+-- Tabelle fuer die Zuordnung vom EigentÃŒmern zu Gemeinden
+-- =======================================================
+
+-- Die Feststellung, ob eine Person (Mit-) EigentÃŒmer von mindestens einem
+-- FlurstÃŒck in einer Gemeinde ist, geht ÃŒber viele Relationen.
+-- Dabei kann es mehrere Varianten geben.
+-- Dies sollte nach dem Laden ermittelt und gespeichert werden, damit dies in
+-- der Navigation auf einfache Art verwendet werden kann. 
+
+
+-- DROP TABLE gemeinde_person;
+
+CREATE TABLE gemeinde_person (
+  land 			integer,
+  regierungsbezirk	integer,
+  kreis			integer,
+  gemeinde		integer,
+  person		character varying(16), 
+  buchtyp		integer,
+  CONSTRAINT gemeinde_person_pk PRIMARY KEY (gemeinde, person)
+);
+
+
+COMMENT ON TABLE  gemeinde_person                IS 'Person ist EigentÃŒmer von mindestens einem FlurstÃŒck in der Gemeinde';
+COMMENT ON COLUMN gemeinde_person.gemeinde       IS 'Gemeindenummer';
+COMMENT ON COLUMN gemeinde_person.buchtyp        IS 'Typ der Buchung 1=direkt, 2=Recht einer Buchungsstele an andere Buchungsstelle';
+COMMENT ON COLUMN gemeinde_person.person         IS 'gml_id von Person';
+
+-- Index zum Filtern in der Buchauskunft
+CREATE INDEX person_gemeinde  ON gemeinde_person (person, gemeinde);
+
+
+-- =======================================================
+-- VIEWs  fuer die Zuordnung vom EigentÃŒmern zu Gemeinden
+-- =======================================================
+
+-- "Normale" Buchungen
+
+CREATE VIEW gemeinde_person_typ1
+AS
+  SELECT DISTINCT
+    p.gml_id          AS person, 
+    g.land, g.regierungsbezirk, g.kreis, g.gemeinde
+
+  FROM ax_person               p
+
+-- Person < benennt < Namensnummer
+  JOIN alkis_beziehungen      bpn  ON bpn.beziehung_zu   = p.gml_id  -- Bez. Person - Nummer
+  JOIN ax_namensnummer         n   ON bpn.beziehung_von  = n.gml_id
+
+-- Namensnummer > istBestandteilVon > Blatt
+  JOIN alkis_beziehungen      bnb  ON bnb.beziehung_von  = n.gml_id  -- Bez. Nummer - Blatt
+  JOIN ax_buchungsblatt        b   ON bnb.beziehung_zu   = b.gml_id
+
+-- Blatt < istBestandteilVon < buchungsStelle
+  JOIN alkis_beziehungen      bbg  ON bbg.beziehung_zu   = b.gml_id  -- Bez. Blatt  - Stelle
+  JOIN ax_buchungsstelle       s   ON bbg.beziehung_von  = s.gml_id 
+
+-- buchungsStelle < istGebucht < flurstÃŒck
+  JOIN alkis_beziehungen      bsf  ON bsf.beziehung_zu   = s.gml_id  -- Bez. Stelle - FlurstÃŒck
+  JOIN ax_flurstueck           f   ON bsf.beziehung_von  = f.gml_id 
+
+  JOIN ax_gemarkung            k   ON f.land             = k.land 
+                                  AND f.gemarkungsnummer = k.gemarkungsnummer 
+  JOIN gemeinde_gemarkung      g   ON k.gemarkungsnummer = g.gemarkung
+
+  WHERE bpn.beziehungsart = 'benennt' 
+    AND bnb.beziehungsart = 'istBestandteilVon'
+    AND bbg.beziehungsart = 'istBestandteilVon'
+    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.';
+
+
+-- "Komplexe" Buchungen mit Rechten von Buchungen an Buchungen
+
+CREATE VIEW gemeinde_person_typ2
+AS
+  SELECT DISTINCT
+    p.gml_id          AS person, 
+  --bpn.beziehungsart AS bpnbez, 
+  --bnb.beziehungsart AS bnbbez, 
+  --bbg.beziehungsart AS bbgbez, 
+  --bsf.beziehungsart AS bsfbez, 
+  --k.gemarkungsnummer,
+    g.land, g.regierungsbezirk, g.kreis, g.gemeinde
+
+  FROM ax_person               p
+
+-- Person < benennt < Namensnummer
+  JOIN alkis_beziehungen      bpn  ON bpn.beziehung_zu   = p.gml_id  -- Bez. Person - Nummer
+  JOIN ax_namensnummer         n   ON bpn.beziehung_von  = n.gml_id
+
+-- Namensnummer > istBestandteilVon > Blatt
+  JOIN alkis_beziehungen      bnb  ON bnb.beziehung_von  = n.gml_id  -- Bez. Nummer - Blatt
+  JOIN ax_buchungsblatt        b   ON bnb.beziehung_zu   = b.gml_id
+
+-- Blatt < istBestandteilVon < buchungsStelle1
+  JOIN alkis_beziehungen      bbg  ON bbg.beziehung_zu   = b.gml_id  -- Bez. Blatt  - Stelle
+  JOIN ax_buchungsstelle       s1  ON bbg.beziehung_von  = s1.gml_id 
+
+-- buchungsStelle2 < an < buchungsStelle1
+  JOIN alkis_beziehungen      bss  ON bss.beziehung_von  = s1.gml_id  -- Bez. Stelle  - Stelle
+  JOIN ax_buchungsstelle       s2  ON bss.beziehung_zu   = s2.gml_id 
+
+-- buchungsStelle2 < istGebucht < flurstÃŒck
+  JOIN alkis_beziehungen      bsf  ON bsf.beziehung_zu   = s2.gml_id  -- Bez. Stelle - FlurstÃŒck
+  JOIN ax_flurstueck           f   ON bsf.beziehung_von  = f.gml_id 
+
+  JOIN ax_gemarkung            k   ON f.land             = k.land 
+                                  AND f.gemarkungsnummer = k.gemarkungsnummer 
+  JOIN gemeinde_gemarkung      g   ON k.gemarkungsnummer = g.gemarkung
+
+  WHERE bpn.beziehungsart = 'benennt' 
+    AND bnb.beziehungsart = 'istBestandteilVon'
+    AND bbg.beziehungsart = 'istBestandteilVon'
+    AND bss.beziehungsart = 'an'
+    AND bsf.beziehungsart = 'istGebucht'
+ -- LIMIT 100  -- Test-Option
+;
+
+COMMENT ON VIEW gemeinde_person_typ2 IS 'Personen die EigentÃŒmer vom FlurstÃŒcken in einer Gemeinde sind. Typ2 = Buchungen mit Rechten einer Buchungssstelle an einer anderen.';
+
+
+-- Statistik ÃŒber die Buchungs-Typen je Gemeinde
+CREATE VIEW gemeinde_person_statistik
+AS
+  SELECT p.land, p.regierungsbezirk, p.kreis, p.gemeinde, g.gemeindename, p.buchtyp, count(p.person) as personen
+  FROM   gemeinde_person    p
+  JOIN   gemeinde_gemarkung g
+    ON   p.land     = g.land 
+    AND  p.regierungsbezirk = g.regierungsbezirk 
+    AND  p.kreis    = g.kreis 
+    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
+;
+
+COMMENT ON VIEW gemeinde_person_statistik IS 'ZÃ€hlen der Personen je Gemeinde und Buchungstyp';
+
+
+-- ENDE --
Index: /trunk/data/konvert/postnas_0.6/gemeinde_person.sql
===================================================================
--- /trunk/data/konvert/postnas_0.6/gemeinde_person.sql	(revision 140)
+++ /trunk/data/konvert/postnas_0.6/gemeinde_person.sql	(revision 140)
@@ -0,0 +1,197 @@
+
+-- Neue Tabelle "gemeinde_person" definieren UND laden.
+--
+-- Zusammenfassung der neuen Teile aus 2 Dateien zum Nachtragen in vorhandene Datenbanken
+--
+-- Laufzeit 
+--  für eine Stadt       ca.  1 Minute
+--  für ein  Kreisgebiet ca. 10 Minuten 
+
+
+-- ** aus gemeinden_definition.sql
+
+-- =======================================================
+-- Tabelle fuer die Zuordnung vom Eigentümern zu Gemeinden
+-- =======================================================
+
+-- Die Feststellung, ob eine Person (Mit-) Eigentümer von mindestens einem
+-- Flurstück in einer Gemeinde ist, geht über viele Relationen.
+-- Dabei kann es mehrere Varianten geben.
+-- Dies sollte nach dem Laden ermittelt und gespeichert werden, damit dies in
+-- der Navigation auf einfache Art verwendet werden kann. 
+
+
+-- DROP TABLE gemeinde_person;
+
+CREATE TABLE gemeinde_person (
+  land 			integer,
+  regierungsbezirk	integer,
+  kreis			integer,
+  gemeinde		integer,
+  person		character varying(16), 
+  buchtyp		integer,
+  CONSTRAINT gemeinde_person_pk PRIMARY KEY (gemeinde, person)
+);
+
+
+COMMENT ON TABLE  gemeinde_person                IS 'Person ist Eigentümer von mindestens einem Flurstück in der Gemeinde';
+COMMENT ON COLUMN gemeinde_person.gemeinde       IS 'Gemeindenummer';
+COMMENT ON COLUMN gemeinde_person.buchtyp        IS 'Typ der Buchung 1=direkt, 2=Recht einer Buchungsstele an andere Buchungsstelle';
+COMMENT ON COLUMN gemeinde_person.person         IS 'gml_id von Person';
+
+-- Index zum Filtern in der Buchauskunft
+CREATE INDEX person_gemeinde  ON gemeinde_person (person, gemeinde);
+
+
+-- =======================================================
+-- VIEWs  fuer die Zuordnung vom Eigentümern zu Gemeinden
+-- =======================================================
+
+-- "Normale" Buchungen
+
+CREATE VIEW gemeinde_person_typ1
+AS
+  SELECT DISTINCT
+    p.gml_id          AS person, 
+    g.land, g.regierungsbezirk, g.kreis, g.gemeinde
+
+  FROM ax_person               p
+
+-- Person < benennt < Namensnummer
+  JOIN alkis_beziehungen      bpn  ON bpn.beziehung_zu   = p.gml_id  -- Bez. Person - Nummer
+  JOIN ax_namensnummer         n   ON bpn.beziehung_von  = n.gml_id
+
+-- Namensnummer > istBestandteilVon > Blatt
+  JOIN alkis_beziehungen      bnb  ON bnb.beziehung_von  = n.gml_id  -- Bez. Nummer - Blatt
+  JOIN ax_buchungsblatt        b   ON bnb.beziehung_zu   = b.gml_id
+
+-- Blatt < istBestandteilVon < buchungsStelle
+  JOIN alkis_beziehungen      bbg  ON bbg.beziehung_zu   = b.gml_id  -- Bez. Blatt  - Stelle
+  JOIN ax_buchungsstelle       s   ON bbg.beziehung_von  = s.gml_id 
+
+-- buchungsStelle < istGebucht < flurstück
+  JOIN alkis_beziehungen      bsf  ON bsf.beziehung_zu   = s.gml_id  -- Bez. Stelle - Flurstück
+  JOIN ax_flurstueck           f   ON bsf.beziehung_von  = f.gml_id 
+
+  JOIN ax_gemarkung            k   ON f.land             = k.land 
+                                  AND f.gemarkungsnummer = k.gemarkungsnummer 
+  JOIN gemeinde_gemarkung      g   ON k.gemarkungsnummer = g.gemarkung
+
+  WHERE bpn.beziehungsart = 'benennt' 
+    AND bnb.beziehungsart = 'istBestandteilVon'
+    AND bbg.beziehungsart = 'istBestandteilVon'
+    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.';
+
+
+-- "Komplexe" Buchungen mit Rechten von Buchungen an Buchungen
+
+CREATE VIEW gemeinde_person_typ2
+AS
+  SELECT DISTINCT
+    p.gml_id          AS person, 
+  --bpn.beziehungsart AS bpnbez, 
+  --bnb.beziehungsart AS bnbbez, 
+  --bbg.beziehungsart AS bbgbez, 
+  --bsf.beziehungsart AS bsfbez, 
+  --k.gemarkungsnummer,
+    g.land, g.regierungsbezirk, g.kreis, g.gemeinde
+
+  FROM ax_person               p
+
+-- Person < benennt < Namensnummer
+  JOIN alkis_beziehungen      bpn  ON bpn.beziehung_zu   = p.gml_id  -- Bez. Person - Nummer
+  JOIN ax_namensnummer         n   ON bpn.beziehung_von  = n.gml_id
+
+-- Namensnummer > istBestandteilVon > Blatt
+  JOIN alkis_beziehungen      bnb  ON bnb.beziehung_von  = n.gml_id  -- Bez. Nummer - Blatt
+  JOIN ax_buchungsblatt        b   ON bnb.beziehung_zu   = b.gml_id
+
+-- Blatt < istBestandteilVon < buchungsStelle1
+  JOIN alkis_beziehungen      bbg  ON bbg.beziehung_zu   = b.gml_id  -- Bez. Blatt  - Stelle
+  JOIN ax_buchungsstelle       s1  ON bbg.beziehung_von  = s1.gml_id 
+
+-- buchungsStelle2 < an < buchungsStelle1
+  JOIN alkis_beziehungen      bss  ON bss.beziehung_von  = s1.gml_id  -- Bez. Stelle  - Stelle
+  JOIN ax_buchungsstelle       s2  ON bss.beziehung_zu   = s2.gml_id 
+
+-- buchungsStelle2 < istGebucht < flurstück
+  JOIN alkis_beziehungen      bsf  ON bsf.beziehung_zu   = s2.gml_id  -- Bez. Stelle - Flurstück
+  JOIN ax_flurstueck           f   ON bsf.beziehung_von  = f.gml_id 
+
+  JOIN ax_gemarkung            k   ON f.land             = k.land 
+                                  AND f.gemarkungsnummer = k.gemarkungsnummer 
+  JOIN gemeinde_gemarkung      g   ON k.gemarkungsnummer = g.gemarkung
+
+  WHERE bpn.beziehungsart = 'benennt' 
+    AND bnb.beziehungsart = 'istBestandteilVon'
+    AND bbg.beziehungsart = 'istBestandteilVon'
+    AND bss.beziehungsart = 'an'
+    AND bsf.beziehungsart = 'istGebucht'
+ -- LIMIT 100  -- Test-Option
+;
+
+COMMENT ON VIEW gemeinde_person_typ2 IS 'Personen die Eigentümer vom Flurstücken in einer Gemeinde sind. Typ2 = Buchungen mit Rechten einer Buchungssstelle an einer anderen.';
+
+
+-- Statistik über die Buchungs-Typen je Gemeinde
+CREATE VIEW gemeinde_person_statistik
+AS
+  SELECT p.land, p.regierungsbezirk, p.kreis, p.gemeinde, g.gemeindename, p.buchtyp, count(p.person) as personen
+  FROM   gemeinde_person    p
+  JOIN   gemeinde_gemarkung g
+    ON   p.land     = g.land 
+    AND  p.regierungsbezirk = g.regierungsbezirk 
+    AND  p.kreis    = g.kreis 
+    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
+;
+
+COMMENT ON VIEW gemeinde_person_statistik IS 'Zählen der Personen je Gemeinde und Buchungstyp';
+
+
+
+-- ** aus gemeinden_laden.sql
+
+
+-- =======================================================
+-- Tabelle fuer die Zuordnung vom Eigentümern zu Gemeinden
+-- =======================================================
+
+
+-- erst mal sauber machen
+DELETE FROM gemeinde_person;
+
+-- alle direkten Buchungen mit View ermitteln und in Tabelle speichern
+-- Für eine Stadt: ca. 20 Sekunden
+INSERT INTO  gemeinde_person 
+       (land, regierungsbezirk, kreis, gemeinde, person, buchtyp)
+ SELECT land, regierungsbezirk, kreis, gemeinde, person, 1
+   FROM gemeinde_person_typ1;
+
+
+-- noch die komplexeren Buchungen ergänzen (Recht an ..)
+-- Mit View ermitteln und in Tabelle speichern
+-- Für eine Stadt: ca. 10 Sekunden
+INSERT INTO  gemeinde_person 
+       (  land,   regierungsbezirk,   kreis,   gemeinde,   person,  buchtyp)
+ SELECT q.land, q.regierungsbezirk, q.kreis, q.gemeinde, q.person,  2
+   FROM gemeinde_person_typ2 q   -- Quelle
+   LEFT JOIN gemeinde_person z   -- Ziel
+     ON q.person   = z.person    -- Aber nur, wenn dieser Fall im Ziel
+    AND q.land     = z.land 
+    AND q.regierungsbezirk = z.regierungsbezirk 
+    AND q.kreis    = z.kreis 
+    AND q.gemeinde = z.gemeinde
+  WHERE z.gemeinde is Null;      -- ..  noch nicht vorhanden ist
+
+
+-- Berechtigungen
+
+-- GRANT SELECT ON TABLE ...
+
+
+-- ENDE --
Index: /trunk/data/mapbender/conf/alkisnav_conf.php
===================================================================
--- /trunk/data/mapbender/conf/alkisnav_conf.php	(revision 139)
+++ /trunk/data/mapbender/conf/alkisnav_conf.php	(revision 140)
@@ -1,8 +1,9 @@
 <?php
 /* Einstellungen fuer Mapbender-Navigation mit ALKIS-Daten
-	ALKIS-PostGIS-Datenbank aus Konverter PostNAS 0.5/0.6
+	ALKIS-PostGIS-Datenbank aus Konverter PostNAS 0.6
 	krz Mi.-Ra./Li.
 	2011-07-26
 	2011-11-07 Land
+	2011-12-09 $persfilter (gemeinde_person)
 */
 
@@ -36,4 +37,8 @@
 $ag_liste = "'2102','2105','2106','2107','2108','2110','2303','2307'";
 
+# Nur Personen anzeigen, die Eigentum in der Gemeinde (-liste) haben
+# "true" setzt voraus, dass die Hilfstabelle "gemeinde_person" gefuellt ist
+$persfilter=true;
+
 # Entwicklungsumgebung
 $debug=0; // 0=Produktion, 1=mit Fehlermeldungen, 2=mit Informationen, 3=mit SQL
Index: /trunk/data/mapbender/http/nav/alkisnav_grd.php
===================================================================
--- /trunk/data/mapbender/http/nav/alkisnav_grd.php	(revision 139)
+++ /trunk/data/mapbender/http/nav/alkisnav_grd.php	(revision 140)
@@ -1,12 +1,8 @@
 <?php
 /* Version vom
-	14.01.2011
-	12.04.2011 epsg in Link, transform nur wenn notwendig, 
-	neue Suchstrategie bei Leer-Eingabe (Liste Amtsgerichte), Icon GB-Bez.
-	25.07.2011 PostNAS 0.5/0.6 Versionen unterscheiden
 	24.10.2011 Nach Pos-Klick Highlight erneuern statt hideHighlight
 	17.11.2011 Nachweis-Links ÃŒber javascript im neuen Hochformat-Fenster
 */
-import_request_variables("PG");
+import_request_variables("G");
 include("../../conf/alkisnav_conf.php");
 $con_string = "host=".$host." port=".$port." dbname=".$dbname.$dbvers.$gkz." user=".$user." password=".$password;
Index: /trunk/data/mapbender/http/nav/alkisnav.css
===================================================================
--- /trunk/data/mapbender/http/nav/alkisnav.css	(revision 139)
+++ /trunk/data/mapbender/http/nav/alkisnav.css	(revision 140)
@@ -3,4 +3,5 @@
 	 2011-04-11
 	 2011-11-09 Historie, dbg
+	 2011-12-09 p.nam
 */
 body,p,a,.textfield,.sbutton	{font-family: Verdana, Arial, Helvetica, sans-serif;}
@@ -10,5 +11,5 @@
 p.hilfe 	{font-size:  9px; text-align: right; color: gray; padding-right: 3px;} /* Programmier-Hilfsfelder */
 p.start 	{font-size:  9px; color: gray;}
-p.nam		{font-size: 10px; border: 1px solid navy; padding: 3px; margin: 0px;}
+p.nam		{font-size: 10px; border: 1px solid navy; padding: 3px; margin: 0px; color: maroon;}
 p.err		{font-size: 11px; color: red;}	/* Fehler -> Anwender */
 p.dbg		{font-size: 10px; color: gray;}	/* Debug -> Entwickler */
@@ -21,5 +22,5 @@
 div			{margin: 0px; padding: 0px;}
 div.back 	{font-size: 10px; color: gray; border-bottom: 1px dotted gray;}
-div.nam		{color: maroon;} /* Name */
+/* div.nam		{color: maroon;}   Name */
 div.ga		{color: fuchsia;	margin-left:  0px; margin-top: 6px;} /* GB-Amtsgericht */
 div.gm		{color: green;		margin-left:  0px; margin-top: 6px;} /* Gemeinde */
Index: /trunk/data/mapbender/http/nav/alkisnav_fls.php
===================================================================
--- /trunk/data/mapbender/http/nav/alkisnav_fls.php	(revision 139)
+++ /trunk/data/mapbender/http/nav/alkisnav_fls.php	(revision 140)
@@ -1,9 +1,4 @@
 <?php
 /* Version vom
-	13.01.2011
-	25.03.2011 Filter als Gemeinde-Liste
-	12.04.2011 epsg in Link, transform nur wenn notwendig
-	12.05.2011 Syntaxfehler in SQL
-	25.07.2011 PostNAS 0.5/0.6 Versionen unterscheiden
 	24.10.2011 Nach Pos-Klick Highlight erneuern statt hideHighlight
 	07.11.2011 optional auch Historische FS suchen, Link auf Buchauskunft-Modul alkisfshis.php
@@ -16,5 +11,5 @@
 	17.11.2011 Nachweis-Links ÃŒber javascript im neuen Hochformat-Fenster
 */
-import_request_variables("PG");
+import_request_variables("G");
 include("../../conf/alkisnav_conf.php");
 $con_string = "host=".$host." port=".$port." dbname=".$dbname.$dbvers.$gkz." user=".$user." password=".$password;
Index: /trunk/data/mapbender/http/nav/alkisnav_eig.php
===================================================================
--- /trunk/data/mapbender/http/nav/alkisnav_eig.php	(revision 139)
+++ /trunk/data/mapbender/http/nav/alkisnav_eig.php	(revision 140)
@@ -1,10 +1,11 @@
 <?php
 /* Version vom 
-	13.01.2011 
-	11.04.2011 epsg in Link, transform nur wenn notwendig
-	25.07.2011 PostNAS 0.5/0.6 Versionen unterscheiden
-	24.10.2011 Nach Pos-Klick Highlight erneuern statt hideHighlight
-	17.11.2011 Nachweis-Links ÃŒber javascript im neuen Hochformat-Fenster
-	02.12.2011 Suche nach Vorname Nachname oder Nachname
+	24.10.2011	Nach Pos-Klick Highlight erneuern statt hideHighlight
+	17.11.2011	Nachweis-Links ÃŒber javascript im neuen Hochformat-Fenster
+	02.12.2011	Suche nach Vorname Nachname oder Nachname
+	09.12.2011	Filter "Gemeinde" fÃŒr Ebene FlurstÃŒcke.
+					Filter "Gemeinde" fÃŒr Personen ÃŒber neue Hilfstabelle "gemeinde_person".
+					Format css Person (Rahmen).
+	ToDo: Auf der Stufe 2 "getGBbyPerson" noch Filtern nach Gemeinde
 */
 import_request_variables("PG");
@@ -12,5 +13,4 @@
 $con_string = "host=".$host." port=".$port." dbname=".$dbname.$dbvers.$gkz." user=".$user." password=".$password;
 $con = pg_connect ($con_string) or die ("<p class='err'>Fehler bei der Verbindung zur Datenbank</p>".$dbname.$dbvers.$gkz);
-// ToDo: Buchung zwischen Blatt und Flst?
 ?>
 
@@ -39,5 +39,5 @@
 // Eigentuemer nach Name(-nsanfang)
 // ===============================
-	global $gkz, $gemeinde, $epsg, $con, $name, $person, $gb;
+	global $gkz, $gemeinde, $epsg, $con, $name, $person, $gb, $gfilter, $persfilter, $auskpath;
 	$linelimit=120;
 	$arr = explode(",", $name);
@@ -49,5 +49,4 @@
 		$match = trim($name0)."%";
 	}	
-	
 	if(preg_match("/\*/",$name1)){
 		$match1 = trim(preg_replace("/\*/i","%", strtoupper($name1)));
@@ -56,15 +55,26 @@
 	}		
 	
-	$sql ="SELECT p.nachnameoderfirma, p.vorname, p.gml_id FROM ax_person as p ";
+	$sql ="SELECT p.nachnameoderfirma, p.vorname, p.gml_id FROM ax_person p ";
+
+	if ($persfilter and ($gfilter > 0)) {
+		$sql.="JOIN gemeinde_person g ON p.gml_id = g.person WHERE ";
+		switch ($gfilter) {
+			case 1: // Einzelwert
+				$sql.="g.gemeinde=".$gemeinde." AND "; break;
+			case 2: // Liste
+				$sql.="g.gemeinde in (".$gemeinde.") AND "; break;
+		}
+	} else {
+		$sql.="WHERE ";
+	}
 	if($match1 != '%'){
-		$sql.="WHERE nachnameoderfirma ILIKE $1 AND p.vorname ILIKE $2 ";		
+		$sql.="nachnameoderfirma ILIKE $1 AND p.vorname ILIKE $2 ";		
 		$sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $3 ;";
 		$v=array($match, $match1, $linelimit);
 	}else{
-		$sql.="WHERE nachnameoderfirma ILIKE $1 ";		
+		$sql.="nachnameoderfirma ILIKE $1 ";		
 		$sql.="ORDER BY p.nachnameoderfirma, p.vorname LIMIT $2 ;";
 		$v=array($match, $linelimit);
 	} 
-	// +++ Adresse der Person zur eindeutigen Bestimmung?
 	$res=pg_prepare("", $sql);
 	$res=pg_execute("", $v);
@@ -74,12 +84,13 @@
 	}
 	$cnt = 0;
-	// einfache Liste ohne div und Icon	
 	while($row = pg_fetch_array($res)) {
 		$nnam=htmlentities($row["nachnameoderfirma"], ENT_QUOTES, "UTF-8");
 		$vnam=htmlentities($row["vorname"], ENT_QUOTES, "UTF-8");
 		$gml=$row["gml_id"];
-		// +++ Icon mit Link auf Person-Auskunft, ÃŒber gml_id	
-		// Zur Zeit siehe unten: erst nach Auswahl einer einzelnen Person
-		echo "\n<a class='nam' title='Person' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$gml."&amp;name=".$nnam."'>".$nnam.", ".$vnam."</a>\n<br>";
+		// Link zur Auskunft Person  +++ Icon differenzieren? Firma/Person
+		echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisnamstruk.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$gml."\")'>";
+			echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer.ico' width='16' height='16' alt='EIG'>";
+		echo "\n\t</a> ";		
+		echo "\n<a title='Person' href='".$_SERVER['SCRIPT_NAME']."?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;epsg=".$epsg."&amp;person=".$gml."&amp;name=".$nnam."'>".$nnam.", ".$vnam."</a>\n<br>";
 		$cnt++;
 	}
@@ -117,10 +128,10 @@
 	if (!$res) {echo "\n<p class='err'>Fehler bei Name</p>\n";}
 	// Daten der Person
-	echo "\n<div class='nam'>";
-		// Link zur Auskunft Person
+	echo "\n\t<table>\n\t<tr>\n\t\t<td valign='top'>";
+		// Sp. 1: Icon, Link zur Auskunft Person
 		echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisnamstruk.php?gkz=".$gkz."&amp;gemeinde=".$gemeinde."&amp;gmlid=".$person."\")'>";
 			echo "\n\t\t<img class='nwlink' src='ico/Eigentuemer.ico' width='16' height='16' alt='EIG'>";
-		echo "\n\t</a> ";
-		echo "\n\t<p class='nam'>";		
+		echo "\n\t</a></td>\n\t\t<td>";
+		echo "\n\t<p class='nam'>"; // Sp. 2: Rahmen
 		if ($row = pg_fetch_array($res)) {
 			$namzeil=$row["nachnameoderfirma"].", ".$row["vorname"];
@@ -135,6 +146,5 @@
 			if (trim($namzeil) != "") {echo "\n\t<br>".htmlentities($namzeil, ENT_QUOTES, "UTF-8");}
 		}
-		echo "\n\t</p>";
-	echo "\n</div>";
+	echo "\n\t</p></td></tr>\n\t</table>";
 
 	// Suche nach GrundbÃŒchern der Person
@@ -181,5 +191,5 @@
 // FlurstÃŒcke zum gewÃ€hlten Grundbuch
 // ===================================
-	global $gkz, $gemeinde, $con, $name, $person, $gb, $scalefs, $auskpath, $epsg;
+	global $gkz, $gemeinde, $con, $name, $person, $gb, $scalefs, $auskpath, $epsg, $gfilter, $persfilter;
 	$linelimit=120;
 
@@ -197,24 +207,46 @@
 	}
 
+	// SQL-Bausteine vorbereiten
+	$sql1 ="SELECT s1.laufendenummer AS lfd, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, ";
+	if($epsg == "25832") { // Transform nicht notwendig
+		$sql1.="x(st_centroid(f.wkb_geometry)) AS x, ";
+		$sql1.="y(st_centroid(f.wkb_geometry)) AS y, ";
+	} else {  
+		$sql1.="x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, ";
+		$sql1.="y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y, ";			
+	}
+	$sql1.="g.gemarkungsnummer, g.bezeichnung ";
+   $sql1.="FROM alkis_beziehungen vbg ";
+	$sql1.="JOIN ax_buchungsstelle s1 ON vbg.beziehung_von = s1.gml_id "; 
+
+	// Zwischen-JOIN (zusÃ€tzlich nur bei zweiter Abfrage)
+	$sqlz ="JOIN alkis_beziehungen vss ON vss.beziehung_von = s1.gml_id ";
+	$sqlz.="JOIN ax_buchungsstelle s2 ON vss.beziehung_zu = s2.gml_id ";
+
+	$sqla1 ="JOIN alkis_beziehungen vfb ON s1.gml_id = vfb.beziehung_zu ";
+	$sqla2 ="JOIN alkis_beziehungen vfb ON s2.gml_id = vfb.beziehung_zu ";
+
+	$sql2.="JOIN ax_flurstueck f  ON vfb.beziehung_von = f.gml_id ";
+   $sql2.="JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
+
+	if ($persfilter and ($gfilter > 0)) {
+		$sql2.="JOIN gemeinde_gemarkung v ON g.land=v.land AND g.gemarkungsnummer=v.gemarkung ";
+	}
+
+	$sql2.="WHERE vbg.beziehung_zu= $1 AND vbg.beziehungsart='istBestandteilVon' AND vfb.beziehungsart='istGebucht' ";
+
+	if ($persfilter and ($gfilter > 0)) {
+		switch ($gfilter) {
+			case 1: // Einzelwert
+				$sql2.="AND v.gemeinde=".$gemeinde." "; break;
+			case 2: // Liste
+				$sql2.="AND v.gemeinde in (".$gemeinde.") "; break;
+		}
+	}
+	$sql2.="ORDER BY s1.laufendenummer, f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner LIMIT $2 ;";
+
 	// Blatt <vbg/istBestandteilVon<  Buchungsstelle <vfb/istGebucht< Flurstck.
-	$sql ="SELECT s.laufendenummer AS lfd, f.gml_id, f.flurnummer, f.zaehler, f.nenner, f.gemeinde, ";
-	if($epsg == "25832") { // Transform nicht notwendig
-		$sql.="x(st_centroid(f.wkb_geometry)) AS x, ";
-		$sql.="y(st_centroid(f.wkb_geometry)) AS y, ";
-	} else {  
-		$sql.="x(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS x, ";
-		$sql.="y(st_transform(st_centroid(f.wkb_geometry), ".$epsg.")) AS y, ";			
-	}
-	$sql.="g.gemarkungsnummer, g.bezeichnung ";
-   $sql.="FROM alkis_beziehungen vbg ";
-	$sql.="JOIN ax_buchungsstelle s ON vbg.beziehung_von = s.gml_id "; 
-	$sql.="JOIN alkis_beziehungen vfb ON s.gml_id = vfb.beziehung_zu "; 
-	$sql.="JOIN ax_flurstueck f  ON vfb.beziehung_von = f.gml_id ";
-   $sql.="JOIN ax_gemarkung g ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer ";
-	$sql.="WHERE vbg.beziehung_zu= $1 AND vbg.beziehungsart='istBestandteilVon' AND vfb.beziehungsart='istGebucht' ";
-	$sql.="ORDER BY s.laufendenummer, f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner LIMIT $2 ;";
-
-	// +++ Sonderfall Fehlt noch: Blatt -> Buchung -> (Recht an) Buchung -> FlurstÃŒck
-	// +++ Ebene Buchung dazwischen wie im Teil 'Grundbuch' ?
+	$sql=$sql1.$sqla1.$sql2; // Direkte Buchungen
+
 	$v=array($gb, $linelimit);
 	$res=pg_prepare("", $sql);
@@ -225,13 +257,9 @@
 		return;
 	}
-	$zfs=0;
+	$zfs1=0;
 	while($row = pg_fetch_array($res)) {	
 		$fs_gml=$row["gml_id"];
 		$bvnr=$row["lfd"];
-		if ($bvnr > 0) {		
-			$bvnr=str_pad($bvnr, 4, "0", STR_PAD_LEFT);
-		} else {
-			$bvnr="";
-		}
+		if ($bvnr > 0) {$bvnr=str_pad($bvnr, 4, "0", STR_PAD_LEFT);} else {$bvnr="";}
 		$gmkg=$row["bezeichnung"];
 		$flur=$row["flurnummer"];
@@ -251,9 +279,47 @@
 			echo $bvnr." ".$gmkg." ".$flur."-".$fskenn."</a>";
 		echo "\n</div>";
-		$zfs++;
-	}
-	if($zfs == 0) { 
-		echo "\n<p class='err'>Kein Flurst&uuml;ck.</p>";
-		echo "\n<p class='hilfe'>Hinweis: Sonderf&auml;lle wie 'Erbbaurecht' sind noch nicht umgesetzt.</p>";
+		$zfs1++;
+	}
+
+	// Zweite Abfrage (Variante) aus den Bausteinen zusammen bauen
+	// buchungsStelle2 < an < buchungsStelle1
+	$sql=$sql1.$sqlz.$sqla2.$sql2; // Rechte an
+
+	$v=array($gb, $linelimit);
+	$res=pg_prepare("", $sql);
+	$res=pg_execute("", $v);
+	if (!$res) {
+		echo "\n<p class='err'>Fehler bei Recht an Buchung.</p>";
+		if ($debug >= 3) {echo "\n<p class='err'>".$sql."</p>";}
+		return;
+	}
+	$zfs2=0;
+	while($row = pg_fetch_array($res)) {	
+		$fs_gml=$row["gml_id"];
+		$bvnr=$row["lfd"];
+		if ($bvnr > 0) {$bvnr=str_pad($bvnr, 4, "0", STR_PAD_LEFT);} else {$bvnr="";}
+		$gmkg=$row["bezeichnung"];
+		$flur=$row["flurnummer"];
+		$fskenn=$row["zaehler"];
+		if ($row["nenner"] != "") {$fskenn.="/".$row["nenner"];} // Bruchnummer
+		$x=$row["x"];
+		$y=$row["y"];
+		echo "\n<div class='fs'>";
+			echo "\n\t<a title='Nachweis' href='javascript:imFenster(\"".$auskpath."alkisfsnw.php?gkz=".$gkz."&amp;gmlid=".$fs_gml."\")'>";
+				echo "\n\t\t<img class='nwlink' src='ico/Flurstueck_Link.ico' width='16' height='16' alt='FS'>";
+			echo "\n\t</a> ";	
+			echo "\n\tRecht an <a title='Flurst&uuml;ck positionieren 1:".$scalefs."' href='";
+					echo "javascript:parent.parent.parent.mb_repaintScale(\"mapframe1\",".$x.",".$y.",".$scalefs."); ";
+					echo "parent.parent.showHighlight(".$x.",".$y.");' ";
+				echo "onmouseover='parent.parent.showHighlight(".$x.",".$y.")' ";
+				echo "onmouseout='parent.parent.hideHighlight()'>";
+			echo $bvnr." ".$gmkg." ".$flur."-".$fskenn."</a>";
+		echo "\n</div>";
+		$zfs2++;
+	}
+
+	if($zfs1 + $zfs2 == 0) { 
+		echo "\n<p class='err'>Kein Flurst&uuml;ck im berechtigten Bereich.</p>";
+	//	echo "\n<p class='hilfe'>Hinweis: Sonderf&auml;lle wie 'Erbbaurecht' sind noch nicht umgesetzt.</p>";
 	} elseif($zfs >= $linelimit) {
 		echo "\n<p>... und weitere</p>"; 
@@ -277,4 +343,11 @@
 }
 if ($debug >= 2) {echo "<p>Filter Gemeinde = ".$gemeinde."</p>";}
+if ($gemeinde == "") {
+	$gfilter = 0; // ungefiltert
+} elseif(strpos($gemeinde, ",") === false) {
+	$gfilter = 1; // Einzelwert
+} else {
+	$gfilter = 2; // Liste
+}
 
 // Welche Parameter?
Index: /trunk/data/mapbender/http/nav/alkisnav_adr.php
===================================================================
--- /trunk/data/mapbender/http/nav/alkisnav_adr.php	(revision 139)
+++ /trunk/data/mapbender/http/nav/alkisnav_adr.php	(revision 140)
@@ -1,15 +1,16 @@
 <?php
 /* Version vom 
-	24.03.2011: bei HsNr auch Gemeinde in Where, Anzeige Gemeinde je nach Filter 
-	25.03.2011: parameter &gemeinde= auch als Liste moeglich
-	z.B. Wasserverband zustaendig fuer: &gemeinde=12,20,24,28,32
 	11.04.2011 epsg in Link, transform nur wenn notwendig
 	25.07.2011 PostNAS 0.5/0.6 Versionen unterscheiden
 	24.10.2011 Nach Pos-Klick Highlight erneuern statt hideHighlight
-
-	ToDo: Mouse-Over in StraÃenliste soll Position zeigen,
+	09.12.2011 Sonderfall PostNAS 0.5 raus,
+
+	ToDo:
+	-	Eingabe aus "Balken" von Buchauskunft "Lage" zulassen: Numerisch: Gem-Str-Haus-lfd
+		Analog zur Zerlegung des FS-Kennz in _fls
+	-	Mouse-Over in StraÃenliste soll Position zeigen,
 		dazu in der DB eine Tabelle mit Koordinate zum StraÃenschlÃŒssel aufbauen. 
 */
-import_request_variables("PG");
+import_request_variables("G");
 include("../../conf/alkisnav_conf.php");
 $con_string = "host=".$host." port=".$port." dbname=".$dbname.$dbvers.$gkz." user=".$user." password=".$password;
@@ -183,9 +184,5 @@
 		$gemnd=$row["gemeinde"];
 		$gemname=htmlentities($row["gemname"], ENT_QUOTES, "UTF-8");
-		if ($dbvers=="05") { // 2011-07-25
-			$nr=ltrim($row["lage"], "0");
-		} else { // >= PostNAS 0.6
-			$nr=$row["lage"];
-		}
+		$nr=$row["lage"];
 
 		if ($showParent) {
