Index: trunk/import/alkis-functions.sql
===================================================================
--- trunk/import/alkis-functions.sql	(revision 328)
+++ trunk/import/alkis-functions.sql	(revision 330)
@@ -12,4 +12,10 @@
 --             statt dessen verwenden der "import_id" um alte Relationen zu identifizieren und zu lÃ¶schen.
 
+-- 2014-08-27: Angleichung des Datenbank-Schema an die NorBIT-Version.
+--             Die Trigger-Function "delete_feature_kill()" arbeitet falsch, wenn "gml_id" als "character varying" angelegt ist.
+--             Das Format war bisher charachter(16).
+--             Zugriff auf die Spalte gml_id umgestellt von "=" auf "like" um den individuellen Timestamp zu ignorieren.
+
+-- 2014-09-04  Trigger-Funktion "delete_feature_kill()" angepasst: keine Tabelle "alkis_beziehungen" mehr.
 
 -- Table/View/Sequence lÃ¶schen, wenn vorhanden
@@ -176,7 +182,4 @@
 	EXECUTE sql;
 
---	CREATE UNIQUE INDEX vobjekte_gmlid ON vobjekte(gml_id,beginnt);
---	CREATE INDEX vobjekte_table ON vobjekte(table_name);
-
 	CREATE VIEW vbeziehungen AS
 		SELECT	beziehung_von,(SELECT table_name FROM vobjekte WHERE gml_id=beziehung_von) AS typ_von
@@ -184,10 +187,4 @@
 			,beziehung_zu,(SELECT table_name FROM vobjekte WHERE gml_id=beziehung_zu) AS typ_zu
 		FROM alkis_beziehungen;
-
---	CREATE INDEX vbeziehungen_von    ON vbeziehungen(beziehung_von);
---	CREATE INDEX vbeziehungen_vontyp ON vbeziehungen(typ_von);
---	CREATE INDEX vbeziehungen_art    ON vbeziehungen(beziehungsart);
---	CREATE INDEX vbeziehungen_zu     ON vbeziehungen(beziehung_zu);
---	CREATE INDEX vbeziehungen_zutyp  ON vbeziehungen(typ_zu);
 
 	RETURN 'ALKIS-Views erzeugt.';
@@ -376,38 +373,81 @@
 $$ LANGUAGE plpgsql;
 
-
 -- "delete" und "replace" verarbeiten (OHNE Historie). Historische Objekte werden sofort gelÃ¶scht.
 -- Geaendert 2014-02-03 auf Vorschlag M.B. Krs. Unna
-CREATE OR REPLACE FUNCTION delete_feature_kill() RETURNS TRIGGER AS $$
-DECLARE
-	query TEXT;
+
+-- 2014-08-27: Anpassung an vereinheitlichtes Datenbank-Schema.
+-- Wenn die Spalte gml_id im Format "character varying" (ohne LÃ€ngenbegrenzung) angelegt wird,
+-- muss gezielt der ID-Teil vor dem Timestamp angesprochen werden.
+-- Zugriff auf die Spalte gml_id umgestellt von "=" auf "like".
+CREATE OR REPLACE FUNCTION delete_feature_kill_vers07() RETURNS TRIGGER AS $$
+DECLARE
 	begsql TEXT;
 	aktbeg TEXT;
 	gml_id TEXT;
-	query_bez TEXT;
-BEGIN
-	NEW.typename := lower(NEW.typename);
-	NEW.context := lower(NEW.context);
-	gml_id      := substr(NEW.featureid, 1, 16);
+BEGIN
+	NEW.typename := lower(NEW.typename); -- Objektart = Tabellen-Name
+	NEW.context := lower(NEW.context);   -- Operation 'delete', 'replace' oder 'update'
+	gml_id      := substr(NEW.featureid, 1, 16); -- ID-Teil der gml_id, ggf. anhÃ€ngender Timestamp abgeschnitten
 
 	IF NEW.context IS NULL THEN
-		NEW.context := 'delete';
-	END IF;
-
-	IF NEW.context='delete' THEN -- Ersatzloses Loeschen des Objektes
+		NEW.context := 'delete'; -- default
+	END IF;
+
+	IF NEW.context='delete' THEN -- ersatzloses LÃ¶schen des Objektes
+
           -- In der Objekt-Tabelle
-		EXECUTE 'DELETE FROM ' || NEW.typename || ' WHERE gml_id = ''' || gml_id || '''';
-          -- Beziehungen von und zu dem Objekt sind hinfaellig
+		EXECUTE 'DELETE FROM ' || NEW.typename || ' WHERE gml_id like ''' || gml_id || '%''';
+ 
+         -- Beziehungen von und zu dem Objekt sind hinfaellig (zukÃŒnftig entfallend)
 		EXECUTE 'DELETE FROM alkis_beziehungen WHERE beziehung_von = ''' || gml_id || ''' OR beziehung_zu = ''' || gml_id || '''';
+
 		--RAISE NOTICE 'LÃ¶sche gml_id % in % und Beziehungen', gml_id, NEW.typename;
 
 	ELSE -- Ersetzen eines Objektes (Replace). In der Objekt-Tabelle sind jetzt bereits 2 Objekte vorhanden (alt und neu).
+
 		-- beginnt-Wert des aktuellen Objektes ermitteln
-		begsql := 'SELECT max(beginnt) FROM ' || NEW.typename || ' WHERE gml_id = ''' || substr(NEW.replacedBy, 1, 16) || ''' AND endet IS NULL';
+		begsql := 'SELECT max(beginnt) FROM ' || NEW.typename || ' WHERE gml_id like ''' || substr(NEW.replacedBy, 1, 16) || '%'' AND endet IS NULL';
 		EXECUTE begsql INTO aktbeg;
+
 		-- Alte Objekte entfernen
-		EXECUTE 'DELETE FROM ' || NEW.typename || ' WHERE gml_id = ''' || gml_id || ''' AND beginnt < ''' || aktbeg || '''';
-		-- Beziehungen vom alten Objekt entfernen, die aus frueheren Importen stammen
-		EXECUTE 'DELETE FROM alkis_beziehungen WHERE beziehung_von = ''' || gml_id || ''' AND import_id < (SELECT max(id) FROM import)';
+		EXECUTE 'DELETE FROM ' || NEW.typename || ' WHERE gml_id like ''' || gml_id || '%'' AND beginnt < ''' || aktbeg || '''';
+
+		-- Beziehungen des alten Objektes entfernen, die aus frÃŒheren Importen stammen
+		EXECUTE 'DELETE FROM alkis_beziehungen WHERE beziehung_von like ''' || gml_id || '%'' AND import_id < (SELECT max(id) FROM import)';
+
+	END IF;
+
+	NEW.ignored := false;
+	RETURN NEW;
+END;
+$$ LANGUAGE plpgsql;
+
+-- 2014-09-04: Version 0.8 ohne "alkis_beziehungen"-Tabelle
+CREATE OR REPLACE FUNCTION delete_feature_kill() RETURNS TRIGGER AS $$
+DECLARE
+	begsql TEXT;
+	aktbeg TEXT;
+	gml_id TEXT;
+BEGIN
+	NEW.typename := lower(NEW.typename); -- Objektart=Tabellen-Name
+	NEW.context := lower(NEW.context);   -- Operation 'delete'/'replace'/'update'
+	gml_id      := substr(NEW.featureid, 1, 16); -- ID-Teil der gml_id, ohne Timestamp
+
+	IF NEW.context IS NULL THEN
+		NEW.context := 'delete'; -- default
+	END IF;
+	IF NEW.context='delete' THEN -- LÃ¶schen des Objektes
+          -- In der Objekt-Tabelle
+		EXECUTE 'DELETE FROM ' || NEW.typename || ' WHERE gml_id like ''' || gml_id || '%''';
+		--RAISE NOTICE 'LÃ¶sche gml_id % in %', gml_id, NEW.typename;
+	ELSE -- Ersetzen des Objektes (Replace). In der Objekt-Tabelle sind jetzt bereits 2 Objekte vorhanden (alt und neu).
+
+		-- beginnt-Wert des aktuellen Objektes ermitteln
+		begsql := 'SELECT max(beginnt) FROM ' || NEW.typename || ' WHERE gml_id like ''' || substr(NEW.replacedBy, 1, 16) || '%'' AND endet IS NULL';
+		EXECUTE begsql INTO aktbeg;
+
+		-- Alte Objekte entfernen
+		EXECUTE 'DELETE FROM ' || NEW.typename || ' WHERE gml_id like ''' || gml_id || '%'' AND beginnt < ''' || aktbeg || '''';
+
 	END IF;
 
@@ -435,6 +475,7 @@
 	FOR c IN
 		SELECT table_name
-		FROM information_schema.columns a
+		 FROM information_schema.columns a
 		WHERE a.column_name='endet'
+            AND a.is_updatable='YES' -- keine Views, die endet-Spalte haben
 		ORDER BY table_name
 	LOOP
Index: trunk/import/pp_definition.sql
===================================================================
--- trunk/import/pp_definition.sql	(revision 328)
+++ trunk/import/pp_definition.sql	(revision 330)
@@ -1,9 +1,11 @@
 
--- ALKIS PostNAS 0.7
+-- ALKIS PostNAS 0.8
 
 -- Post Processing (pp_) Teil 1: Anlegen der Tabellen und Views
 
+-- Koordinatensystem ÃŒbergeben mit "psql  .. -v alkis_epsg=25832"
+-- :alkis_epsg=25832
+
 -- Stand 
-
 --  2012-02-13 PostNAS 07, Umbenennung
 --  2012-02-17 Optimierung
@@ -15,6 +17,9 @@
 --  2013-04-18 Kommentare.
 --  2012-10-24 Neue Tabelle fÃŒr die PrÃ€sentation von StraÃennamen und -Klassifikationen
---  2014-08-25 StraÃennamen aufteilen in _P und L
---  2014-09-08 Korrektur
+--  2014-08-26 Aus "pp_strassenname" werden die Varianten *_p und *_l
+--             Erweiterte gml_id wie bei den primÃ€ren Tabellen, bisher (16).
+--  2014-09-02 Entfernen der JOINs ÃŒber "alkis_beziehungen". 
+--             Wie im Schema: SchlÃŒssel von integer nach varchar fÃŒr land, regierungsbezirk usw.
+
 
 -- ============================
@@ -32,5 +37,4 @@
 
 -- ToDo:
-
 -- Muss *multi*-Polygon sein? Gibt es "zerrissene" Fluren/Gemarkungen?
 -- Der View "gemeinde_gemarkung" kann entfallen, wenn Navigation umgestellt wurde.
@@ -38,13 +42,21 @@
 SET client_encoding = 'UTF-8';
 
--- Alles auf Anfang!
-
--- DROP VIEW gemeinde_person_typ1;
--- DROP VIEW gemeinde_person_typ2;
--- DROP VIEW gemeinde_gemarkung;
--- DROP TABLE pp_gemeinde;
--- DROP TABLE pp_gemarkung;
--- DROP TABLE pp_flur;
-
+-- Alles auf Anfang
+/*
+ DROP VIEW IF EXISTS gemeinde_person_typ1;
+ DROP VIEW IF EXISTS gemeinde_person_typ2;
+ DROP VIEW IF EXISTS gemeinde_person_statistik;
+ DROP VIEW IF EXISTS gemeinde_gemarkung;
+ DROP VIEW IF EXISTS pp_gemeinde_analyse;
+ DROP VIEW IF EXISTS pp_gemarkung_analyse;
+
+ DROP TABLE gemeinde_person;
+ DROP TABLE pp_gemeinde;
+ DROP TABLE pp_gemarkung;
+ DROP TABLE pp_flur;
+ DROP TABLE pp_flurstueck_nr;
+ DROP TABLE pp_strassenname_p;
+ DROP TABLE pp_strassenname_l;
+*/
 
 -- Tabelle fuer Gemeinden
@@ -52,12 +64,12 @@
 
   CREATE TABLE pp_gemeinde (
-    gid			serial,
-    land		integer NOT NULL,
-    regierungsbezirk	integer,
-    kreis		integer,
-    gemeinde		integer NOT NULL,
-    gemeindename	character varying(80),
- -- gkz			character varying(03),	-- wird (noch) nicht benutzt
-    anz_gemarkg		integer,		-- Anzahl Gemarkungen
+    gid                serial,
+    land               character varying NOT NULL,
+    regierungsbezirk   character varying,
+    kreis              character varying,
+    gemeinde           character varying NOT NULL,
+    gemeindename       character varying(80),
+ -- gkz                character varying(03),    -- wird (noch) nicht benutzt
+    anz_gemarkg        integer,                  -- Anzahl Gemarkungen
     CONSTRAINT pp_gemeinde_pk PRIMARY KEY (land, gemeinde)
   );
@@ -65,10 +77,10 @@
 CREATE UNIQUE INDEX pp_gemeinde_gid_ix ON pp_gemeinde (gid);
 
--- Gesamtflaeche
-SELECT AddGeometryColumn('pp_gemeinde','the_geom','25832','MULTIPOLYGON',2);
+-- GesamtflÃ€che
+SELECT AddGeometryColumn('pp_gemeinde','the_geom',:alkis_epsg,'MULTIPOLYGON',2);
 CREATE INDEX pp_gemeinde_gidx ON pp_gemeinde USING gist(the_geom);
 
--- vereinfachte Gesamtflaeche
-SELECT AddGeometryColumn('pp_gemeinde','simple_geom','25832','MULTIPOLYGON',2);
+-- vereinfachte GesamtflÃ€che
+SELECT AddGeometryColumn('pp_gemeinde','simple_geom',:alkis_epsg,'MULTIPOLYGON',2);
 CREATE INDEX pp_gemeinde_sgidx ON pp_gemeinde USING gist(simple_geom);
 
@@ -92,12 +104,12 @@
 
   CREATE TABLE pp_gemarkung (
-    gid			serial,
-    land		integer NOT NULL,
-    regierungsbezirk	integer,
-    kreis		integer,
-    gemeinde		integer NOT NULL,	-- fast ein Foreign-Key Constraint
-    gemarkung		integer NOT NULL,
-    gemarkungsname	character varying(80),
-    anz_flur		integer,		-- Anzahl Fluren
+    gid                serial,
+    land               character varying NOT NULL,
+    regierungsbezirk   character varying,
+    kreis              character varying,
+    gemeinde           character varying NOT NULL, -- fast ein Foreign-Key Constraint
+    gemarkung          character varying NOT NULL,
+    gemarkungsname     character varying(80),
+    anz_flur           integer,                -- Anzahl Fluren
     CONSTRAINT pp_gemarkung_pk PRIMARY KEY (land, gemarkung)
   );
@@ -106,9 +118,9 @@
 
 -- GesamtflÃ€che
-SELECT AddGeometryColumn('pp_gemarkung','the_geom','25832','MULTIPOLYGON',2);
+SELECT AddGeometryColumn('pp_gemarkung','the_geom',:alkis_epsg,'MULTIPOLYGON',2);
 CREATE INDEX pp_gemarkung_gidx ON pp_gemarkung USING gist(the_geom);
 
 -- vereinfachte GesamtflÃ€che
-SELECT AddGeometryColumn('pp_gemarkung','simple_geom','25832','MULTIPOLYGON',2);
+SELECT AddGeometryColumn('pp_gemarkung','simple_geom',:alkis_epsg,'MULTIPOLYGON',2);
 CREATE INDEX pp_gemarkung_sgidx ON pp_gemarkung USING gist(simple_geom);
 
@@ -125,11 +137,11 @@
 
   CREATE TABLE pp_flur (
-    gid			serial,
-    land		integer NOT NULL,
-    regierungsbezirk	integer,
-    kreis		integer,
-    gemarkung		integer NOT NULL,
-    flurnummer		integer NOT NULL,
-    anz_fs		integer,		-- Anzahl FlurstÃŒcke
+    gid                serial,
+    land               character varying NOT NULL,
+    regierungsbezirk   character varying,
+    kreis              character varying,
+    gemarkung          character varying NOT NULL,
+    flurnummer         integer NOT NULL,
+    anz_fs             integer,              -- Anzahl FlurstÃŒcke
     CONSTRAINT pp_flur_pk PRIMARY KEY (land, gemarkung, flurnummer)
   );
@@ -139,9 +151,9 @@
 
 -- GesamtflÃ€che
-SELECT AddGeometryColumn('pp_flur','the_geom','25832','MULTIPOLYGON',2);
+SELECT AddGeometryColumn('pp_flur','the_geom',:alkis_epsg,'MULTIPOLYGON',2);
 CREATE INDEX pp_flur_gidx ON pp_flur USING gist(the_geom);
 
 -- vereinfachte Gesamtflaeche
-SELECT AddGeometryColumn('pp_flur','simple_geom','25832','MULTIPOLYGON',2);
+SELECT AddGeometryColumn('pp_flur','simple_geom',:alkis_epsg,'MULTIPOLYGON',2);
 CREATE INDEX pp_flur_sgidx ON pp_flur USING gist(simple_geom);
 
@@ -169,10 +181,10 @@
 
   CREATE TABLE gemeinde_person (
-    land 		integer,
-    regierungsbezirk	integer,
-    kreis		integer,
-    gemeinde		integer,
-    person		character varying(16),
-    buchtyp		integer,
+    land                character varying,
+    regierungsbezirk    character varying,
+    kreis               character varying,
+    gemeinde            character varying,
+    person              character varying,
+    buchtyp             integer,
     CONSTRAINT gemeinde_person_pk PRIMARY KEY (gemeinde, person)
   );
@@ -194,6 +206,6 @@
   CREATE TABLE pp_flurstueck_nr (
     gid		serial,
-    fsgml	character(16),
-    fsnum	character varying(10),  -- zzzzz/nnnn
+    fsgml	     character varying,
+    fsnum	     character varying(10),  -- zzzzz/nnnn
     CONSTRAINT pp_flurstueck_nr_pk  PRIMARY KEY (gid)  --,
 -- Foreign Key
@@ -206,14 +218,12 @@
   );
 
-SELECT AddGeometryColumn('pp_flurstueck_nr','the_geom','25832','POINT',2);
+SELECT AddGeometryColumn('pp_flurstueck_nr','the_geom',:alkis_epsg,'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);
+CREATE INDEX pp_flurstueck_nr_gidx    ON pp_flurstueck_nr USING gist  (the_geom);
+CREATE INDEX fki_pp_flurstueck_nr_gml ON pp_flurstueck_nr USING btree (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.fsgml     IS 'gml_id des zugehÃ¶rigen FlurstÃŒcks-Objektes ( <- ap_pto.dientZurDarstellungVon)';
 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';
@@ -228,11 +238,10 @@
 -- sind *UND* die Navigation an die neuen Tabellen angepasst ist.
 
-CREATE VIEW gemeinde_gemarkung
+CREATE OR REPLACE VIEW gemeinde_gemarkung
 AS
   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;
+    ON k.land = g.land AND k.gemeinde = g.gemeinde;
 
 COMMENT ON VIEW gemeinde_gemarkung 
@@ -244,86 +253,39 @@
 
 -- "Normale" Buchungen
-
-CREATE VIEW gemeinde_person_typ1
+-- ToDo: +++++  View "gemeinde_gemarkung" nicht verwenden, auflÃ¶sen
+CREATE OR REPLACE 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.';
+  SELECT DISTINCT p.gml_id AS person, g.land, g.regierungsbezirk, g.kreis, g.gemeinde
+  FROM ax_person          p
+  JOIN ax_namensnummer    n  ON n.benennt = p.gml_id           -- Person <benennt< Namensnummer
+  JOIN ax_buchungsblatt   b  ON n.istbestandteilvon = b.gml_id -- Namensnummer >istBestandteilVon> Blatt
+  JOIN ax_buchungsstelle  s  ON s.istbestandteilvon = b.gml_id -- Blatt <istBestandteilVon< buchungsStelle
+  JOIN ax_flurstueck      f  ON f.istgebucht = s.gml_id        -- buchungsStelle <istGebucht< flurstÃŒck
+  JOIN ax_gemarkung       k  ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer 
+  JOIN gemeinde_gemarkung g  ON k.gemarkungsnummer = g.gemarkung;
+
+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
+-- ToDo: +++++  View "gemeinde_gemarkung" nicht verwenden, auflÃ¶sen
+CREATE OR REPLACE VIEW gemeinde_person_typ2
 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 < 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.';
-
+  SELECT DISTINCT p.gml_id AS person, g.land, g.regierungsbezirk, g.kreis, g.gemeinde
+  FROM ax_person          p
+  JOIN ax_namensnummer    n  ON n.benennt = p.gml_id            -- Person <benennt< Namensnummer
+  JOIN ax_buchungsblatt   b  ON n.istBestandteilVon = b.gml_id  -- Namensnummer >istBestandteilVon> Blatt
+  JOIN ax_buchungsstelle  s1 ON s1.istbestandteilvon = b.gml_id -- Blatt <istBestandteilVon< buchungsStelle1
+  JOIN ax_buchungsstelle  s2 ON s2.gml_id = ANY(s1.an)          -- buchungsStelle2 <(recht)an< buchungsStelle1
+  JOIN ax_flurstueck      f  ON f.istgebucht = s2.gml_id        -- buchungsStelle2 < istGebucht < flurstÃŒck
+  JOIN ax_gemarkung       k  ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer 
+  JOIN gemeinde_gemarkung g  ON k.gemarkungsnummer = g.gemarkung;
+
+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
+-- ToDo: +++++  View "gemeinde_gemarkung" nicht verwenden, auflÃ¶sen
 CREATE VIEW gemeinde_person_statistik
 AS
@@ -360,10 +322,10 @@
   FROM pp_gemarkung;
 
+-- 2014-08-26 Aus Version "pp_strassenname" werden die Varianten *_p und *_l
 
 -- Variante fÃŒr Punkt-Geometrie
--- Tabelle "pp_strassenname_p" speichert den VIEW "ap_pto_stra".
 CREATE TABLE pp_strassenname_p 
 (   gid                    serial NOT NULL,
-    gml_id                 character(16),
+    gml_id                 character varying,
  -- advstandardmodell      character varying[],
     schriftinhalt          character varying,      -- Label: anzuzeigender Text
@@ -378,5 +340,5 @@
 
 -- :alkis_epsg = 25832
-SELECT AddGeometryColumn('pp_strassenname_p','the_geom',25832,'POINT',2);
+SELECT AddGeometryColumn('pp_strassenname_p','the_geom',:alkis_epsg,'POINT',2);
 CREATE INDEX pp_snamp_gidx ON pp_strassenname_p USING gist(the_geom); 
 
@@ -384,5 +346,4 @@
 
   COMMENT ON COLUMN pp_strassenname_p.gid            IS 'EditierschlÃŒssel der Tabelle';
---COMMENT ON COLUMN pp_strassenname_p.gml_id         IS 'ObjektschlÃŒssel des PrÃ€sentationsobjektes aus ap_pto. Zur Verbindung mit Katalog.';
   COMMENT ON COLUMN pp_strassenname_p.gml_id         IS 'ObjektschlÃŒssel des PrÃ€sentationsobjektes aus "ax_lagebezeichnungohnehausnummer". Zur Verbindung mit Katalog beim Nachladen leerer Felder.';
   COMMENT ON COLUMN pp_strassenname_p.schriftinhalt  IS 'Label, darzustellender Name der StraÃe oder Klassifikation';
@@ -394,8 +355,7 @@
 
 -- Variante fÃŒr Linien-Geometrie
--- Tabelle "pp_strassenname_l" speichert den VIEW "ap_lto_stra".
 CREATE TABLE pp_strassenname_l 
 (   gid                    serial NOT NULL,
-    gml_id                 character(16),
+    gml_id                 character varying,
     schriftinhalt          character varying,      -- Label: anzuzeigender Text
     hor                    character varying,
@@ -407,5 +367,5 @@
 
 -- :alkis_epsg = 25832
-SELECT AddGeometryColumn('pp_strassenname_l','the_geom',25832,'LINESTRING',2); -- Hier liegt der Unterschied
+SELECT AddGeometryColumn('pp_strassenname_l','the_geom',:alkis_epsg,'LINESTRING',2); -- Hier liegt der Unterschied
 CREATE INDEX pp_snaml_gidx ON pp_strassenname_l USING gist(the_geom); 
 
@@ -420,3 +380,4 @@
   COMMENT ON COLUMN pp_strassenname_l.the_geom       IS 'Position (Punkt) der Labels in der Karte';
 
+
 -- ENDE --
Index: trunk/import/konv_batch.sh
===================================================================
--- trunk/import/konv_batch.sh	(revision 328)
+++ trunk/import/konv_batch.sh	(revision 330)
@@ -27,22 +27,20 @@
 ##   2012-10-30 Umgebungsvariable setzen, delete-Tabelle am Ende fuer Analyse gefuellt lassen.
 ##              Test als 0.7a mit gepatchter gdal-Version (noch 2.0dev)
-##   2013-10-16 F.J. krz: Neues Script "pp_praesentation_action.sql" für Reparatur der 
-##              Präsentationsobjekte Straßenname im Post-Processing
-##   2013-10-24 F.J. krz: Zwischenlösung "praesentation_action.sql" wieder deaktiviert.
+##   2013-10-16 F.J. krz: Neues Script "pp_praesentation_action.sql" fÃŒr Reparatur der 
+##              PrÃ€sentationsobjekte StraÃenname im Post-Processing
+##   2013-10-24 F.J. krz: ZwischenlÃ¶sung "praesentation_action.sql" wieder deaktiviert.
 ##   2014-01-31 F.J. krz: Import Eintrag erzeugen (nach Vorschlag Marvin Brandt, Unna)
-##   2014-02-13 A.Emde WhereGroup: Einführung DBUSER, damit im Skript der Datenbankbenutzer angegeben werden kann
+##   2014-02-13 A.Emde WhereGroup: EinfÃŒhrung DBUSER, damit im Skript der Datenbankbenutzer angegeben werden kann
 ##   2014-05-12 F.J. krz: Unterschiedliche Pfade in Test (TRUNK) und Produktion (Rel. 1.11.0)
 ##   2014-06-18 F.J. DB-User nicht "postgres" (in $con). 
 ##                   Konverter ind Nacharbeiten sonst mit unterschiedlichem User.
-##                   Abgleich Test/Prod-Version
+##                   Abgleich Test/Prod-Version.
 ##                   Entfernen der historischen Objekte nach Konvertierung.
-##   2014-09-03 F.J. Auch für 0.7-Datenstruktur die aktuelle Programmversion, PG_USE_COPY
-
-## Koordinaten: EPSG:25832  UTM, Zone 32
-##              -a_srs EPSG:25832   - bleibt im UTM-System (korrigierte Werte)
+##   2014-09-09 F.J. krz: Parameter "--config PG_USE_COPY YES" zur Beschleunigung. Ausgabe import-Tabelle.
 
 POSTNAS_HOME=$(dirname $0)
- PATH=/opt/gdal-2.0/bin:$PATH   # TRUNK-Version (immer letzter Stand der Entwicklung)
-#PATH=/opt/gdal-1.11/bin:$PATH  # Release GDAL 1.11.0 vom April 2014
+
+# Konverterpfad. TRUNK-Version (immer letzter Stand der Entwicklung)
+PATH=/opt/gdal-2.0/bin:$PATH
 EPSG=25832
 DBUSER=b600352
@@ -65,6 +63,5 @@
 **********************************************
 **   K o n v e r t i e r u n g     PostNAS  **
-********************************************** 
- "
+**********************************************"
 ## Parameter:
 ORDNER=$1
@@ -72,4 +69,5 @@
 UPD=$3
 PP=$4
+
 if [ $ORDNER == "" ]
 then
@@ -82,4 +80,5 @@
 	exit 2
 fi
+
 if [ $UPD == "a" ]
 then
@@ -96,4 +95,5 @@
 	fi
 fi
+
 if [ $PP == "nopp" ]
 then
@@ -110,26 +110,29 @@
 
 # Fehlerprotokoll:
-errprot=${POSTNAS_HOME}'/log/postnas_err_'$DBNAME'.prot'
+  errprot=${POSTNAS_HOME}'/log/postnas_err_'$DBNAME'.prot'
+
+  echo "GDAL/PostNAS Konverter-Version:" >> $errprot
+  ogr2ogr --version >> $errprot
 
 # DB-Connection
-con="${PGUSER} -p 5432 -d ${DBNAME} "
-
-echo "Datenbank-Name . . = ${DBNAME}"
-echo "DBUSER ${DBUSER}"
-echo "PGUSER ${PGUSER}"
-echo "OGRPGUSER ${OGRPGUSER}"
-echo "Ordner NAS-Daten . = ${ORDNER}"
-echo "Verarbeitungs-Modus= ${verarb}"
-echo "POSTNAS_HOME ${POSTNAS_HOME}"
-
-# noch alte delete-Eintraege in DB?
-echo "Leeren der delete-Tabelle"
-echo 'TRUNCATE table "delete";' | psql $con 
+  con="${PGUSER} -p 5432 -d ${DBNAME} "
+  echo "Datenbank-Name . . = ${DBNAME}"
+  echo "DBUSER ${DBUSER}"
+  echo "PGUSER ${PGUSER}"
+  echo "OGRPGUSER ${OGRPGUSER}"
+  echo "Ordner NAS-Daten . = ${ORDNER}"
+  echo "Verarbeitungs-Modus= ${verarb}"
+  echo "POSTNAS_HOME ${POSTNAS_HOME}"
+
+  # noch alte delete-Eintraege?
+  echo "Leeren der delete-Tabelle"
+  psql $con -c 'TRUNCATE table "delete";'
+
+  echo "Bisherige Konvertierungen (Import-Tabelle):"
+  psql $con -c "SELECT * FROM import;"
 
 # Import Eintrag erzeugen
-#
-# Die dadurch erzeugte Import-ID dient zur Steuerung des Löschens alter Relationen im Trigger. 
-# Wird die Datenbank MIT Historie geladen, muss die folgende Zeile auskommentiert werden.
-echo "INSERT INTO import (datum,verzeichnis,importart) VALUES ('"$(date '+%Y-%m-%d %H:%M:%S')"','"${ORDNER}"','"${verarb}"');" | psql $con
+# UrsprÃŒnglich fÃŒr Trigger-Steierung benÃ¶tigt. Nun als Metadaten nÃŒtzlich.
+  psql $con -c "INSERT INTO import (datum,verzeichnis,importart) VALUES ('"$(date '+%Y-%m-%d %H:%M:%S')"','"${ORDNER}"','"${verarb}"');"
 
 # Ordner abarbeiten
@@ -155,7 +158,7 @@
         export OGR_SETFIELD_NUMERIC_WARNING=YES # Meldung abgeschnittene Zahlen?
        #export CPL_DEBUG=ON                     # Meldung, wenn Attribute ueberschrieben werden
-
+ 
       # PostNAS Konverter-Aufruf
-      ogr2ogr -f "PostgreSQL" -append  ${update} -skipfailures  --config PG_USE_COPY YES  \
+      ogr2ogr -f "PostgreSQL" -append  ${update} -skipfailures --config PG_USE_COPY YES \
          PG:"dbname=${DBNAME} host=localhost port=5432 ${OGRPGUSER}" -a_srs EPSG:$EPSG ${nasdatei} 2>> $errprot
       nasresult=$?
@@ -165,15 +168,14 @@
   rm ../temp/*.xml
   echo " "
-  echo "** Ende Konvertierung Ordner ${ORDNER}
-  "
-
+  echo "** Ende Konvertierung Ordner ${ORDNER}"
+
+#
 # Post-Processing / Nacharbeiten
-
+#
   if [ $PP == "nopp" ]
   then
-
     echo "** KEIN Post-Processing - Dies spaeter nachholen."
     # Dies kann sinnvoll sein, wenn mehrere kleine Aktualisierungen hintereinander auf einem grossen Bestand laufen
-    # Der Aufwand fuer das Post-Processing ist dann nur bei der LETZTEN Aktualisierung notwendig.
+    # Der Aufwand fÃŒr das Post-Processing ist dann nur bei der LETZTEN Aktualisierung notwendig.
 
   else
@@ -184,5 +186,7 @@
     (cd $POSTNAS_HOME; psql $con -f nutzungsart_laden.sql)
  
-    echo "** - Fluren / Gemarkungen / Gemeinden neu Laden:"
+    echo "-----------" 
+ 
+    echo "** - Fluren, Gemarkungen, Gemeinden und StraÃen-Namen neu Laden:"
     (cd $POSTNAS_HOME; psql $con -f pp_laden.sql)
 
@@ -191,5 +195,5 @@
   if [ "$(readlink $POSTNAS_HOME/alkis-trigger.sql)" = "alkis-trigger-kill.sql" ]; then
 
-     # Durch Einfuegen in Tabelle 'delete' werden Loeschungen anderer Tabellen getriggert
+     # Durch EinfÃŒgen in Tabelle 'delete' werden LÃ¶schungen und Aktualisierungen anderer Tabellen getriggert
      echo "** delete-Tabelle enthaelt:"
      psql $con -c 'SELECT COUNT(featureid) AS delete_zeilen FROM "delete";'
@@ -199,8 +203,6 @@
 
     # Wenn die Datenbank MIT Historie geladen wurde, man diese aber gar nicht braucht,
-    # dann hinterher aufraeumen der historischen Objekte 
+    # dann hinterher aufrÃ€umen der historischen Objekte 
     echo "** geendete Objekte entfernen:"
-
-    # Function:
     psql $con -c "SELECT alkis_delete_all_endet();"
 
@@ -208,3 +210,4 @@
 
   echo "Das Fehler-Protokoll wurde ausgegeben in die Datei $errprot"
- 
+  echo "** ENDE PostNAS 0.8-Konvertierung  DB='$DBNAME'  Ordner='$ORDNER' "
+ 
Index: trunk/import/alkis-trigger-kill.sql
===================================================================
--- trunk/import/alkis-trigger-kill.sql	(revision 328)
+++ trunk/import/alkis-trigger-kill.sql	(revision 330)
@@ -1,5 +1,7 @@
 
 -- Trigger fuer Fortfuehrung der PostNAS-Datenbank, wenn KEINE Historie gefuehrt werden soll.
--- Version 2014-01-31
+-- Version 
+--  2014-01-31 PostNAS 0.7
+--  2014-09-08 PostNAS 0.8
 
 CREATE TRIGGER delete_feature_trigger
@@ -17,6 +19,9 @@
 -- 2014-01-31: Den Relationen in "alkis_beziehungen" die laufende Nummer des Konverter-Laufes zuzuordnen.
 -- Dies ermoeglicht bei Aenderungen das saubere Loeschen alter Relationen im Trigger.
+-- 2014-09-08 in PostNAS 0.8 deaktiviert
+/*
 CREATE TRIGGER update_import_id
 	BEFORE INSERT ON alkis_beziehungen
 	FOR EACH ROW
 	EXECUTE PROCEDURE get_import_id();
+*/
Index: trunk/import/konv_nachverarbeitung.sh
===================================================================
--- trunk/import/konv_nachverarbeitung.sh	(revision 330)
+++ trunk/import/konv_nachverarbeitung.sh	(revision 330)
@@ -0,0 +1,49 @@
+#!/bin/bash
+## ----------------------------------------------------
+## Nur der Teil  "PostProcessing"  aus konv_batch.sh  -
+## ----------------------------------------------------
+##
+## Stand: 
+##  2012-04-25 Kopie aus konv_batch.sh
+##  2013-01-23 Aktualisierung aus konv_batch.sh
+##  2014-09-02 Vers. 0.8, mit konv_batch.sh synchronisiert
+
+echo "
+****************************************
+**   Nachverarbeitung zu PostNAS 0.8  **
+****************************************"
+POSTNAS_HOME=$(dirname $0)
+PATH=/opt/gdal-2.0/bin:$PATH # Konverterpfad
+EPSG=25832
+DBUSER=b600352
+
+# Parameter:
+DBNAME=$1
+if [ $DBNAME == "" ]
+then
+	echo "Parameter 1 'Datenbank' ist leer"
+	exit 2
+fi
+
+if [ $DBUSER == "" ]
+then
+  echo "kein DBUSER gesetzt"
+else
+  PGUSER=" -U ${DBUSER} "
+fi
+
+# DB-Connection
+con="${PGUSER} -p 5432 -d ${DBNAME} "
+echo "Connection: " $con
+
+# Post-Processing / Nacharbeiten
+
+echo "** - Optimierte Nutzungsarten neu Laden:"
+(cd $POSTNAS_HOME; psql $con -f nutzungsart_laden.sql)
+
+sleep 1
+
+echo "** - Fluren, Gemarkungen, Gemeinden und Straßen-Namen neu Laden:"
+(cd $POSTNAS_HOME; psql $con -f pp_laden.sql)
+
+echo "** Nachverarbeitung beendet **"
Index: trunk/import/pp_praesentation_action.sql
===================================================================
--- trunk/import/pp_praesentation_action.sql	(revision 328)
+++ trunk/import/pp_praesentation_action.sql	(revision 330)
@@ -1,4 +1,4 @@
 
--- ALKIS PostNAS 0.7
+-- ALKIS PostNAS 0.8
 
 -- Post Processing (pp_) Teil 3: PrÃ€sentationsobjekte ergÃ€nzen / reparieren
@@ -6,5 +6,5 @@
 -- Dies Script "pp_praesentation_action.sql" dient der Reparatur von fehlenden Texten in PrÃ€sentationsobjekten.
 -- Dies Script muss im Rahmen des Post-Processing nach jeder Konvertierung laufen.
--- Kommantare und ErlÃ€uterungen siehe in "pp_praesentation_sichten.sql".
+-- Kommentare und ErlÃ€uterungen siehe in "pp_praesentation_sichten.sql".
 
 -- Stand 
Index: trunk/import/grant.sql
===================================================================
--- trunk/import/grant.sql	(revision 328)
+++ trunk/import/grant.sql	(revision 330)
@@ -11,12 +11,12 @@
 --  2012-02-17  PostNAS 0.7, pp_Tabellen, ms5 -> ms6
 --  2012-04-25  Tabelle pp_flurstueck_nr
---  2013-01-15  mehr Schlüsseltabellen rein
+--  2013-01-15  mehr SchlÃŒsseltabellen rein
 --  2013-03-05  View "s_beschriftung" wird durch "ap_pto_stra" und "ap_pto_rest" ersetzt.
 --              View "s_nummer_nebengebaeude" wird durch "lfdnr_nebengebaeude" ersetzt.
 --  2013-03-25  View "grenzpunkt" und "gebaeude_txt"
---  2013-04-19  Neues zum Thema "Bodenschätzung", Views entfallen
+--  2013-04-19  Neues zum Thema "BodenschÃ€tzung", Views entfallen
 --  2013-10-24  Table "pp_strassenname" ersetzt View "ap_pto_stra" im WMS (ms6)
---  2014-01-22  Neue Views für CSV-Export, neue Schlüsseltabelle "ax_namensnummer_eigentuemerart"
---  2014-08-25  Straßennamen aufteilen in _P und L
+--  2014-01-22  Neue Views fÃŒr CSV-Export, neue SchlÃŒsseltabelle "ax_namensnummer_eigentuemerart"
+--  2014-09-08  PostNAS 0.8 ohne "alkis_beziehungen"
 
 
@@ -33,6 +33,6 @@
 -- ALKIS / PostNAS
 -- ---------------
--- Berechtigung für Kartendarstellung
-  GRANT SELECT ON TABLE alkis_beziehungen TO ms6;
+-- Berechtigung fÃŒr Kartendarstellung
+--GRANT SELECT ON TABLE alkis_beziehungen TO ms6;
   GRANT SELECT ON TABLE ap_darstellung TO ms6;
   GRANT SELECT ON TABLE ap_lpo TO ms6;
@@ -142,5 +142,5 @@
 
 -- Berechtigung fuer Buchauskunft
-  GRANT SELECT ON TABLE alkis_beziehungen TO mb27;
+--GRANT SELECT ON TABLE alkis_beziehungen TO mb27;
   GRANT SELECT ON TABLE ap_darstellung TO mb27;
   GRANT SELECT ON TABLE ap_lpo TO mb27;
@@ -271,6 +271,8 @@
   GRANT SELECT ON TABLE  pp_flur                           TO mb27;
   GRANT SELECT ON TABLE  pp_flurstueck_nr                  TO ms6;
+
   GRANT SELECT ON TABLE  pp_strassenname_p                 TO ms6;
   GRANT SELECT ON TABLE  pp_strassenname_l                 TO ms6;
+
   GRANT SELECT ON TABLE  gemeinde_person                   TO ms6;
   GRANT SELECT ON TABLE  gemeinde_person                   TO mb27;
@@ -280,5 +282,5 @@
 -- ------------------
 
--- Gebäude
+-- GebÃ€ude
 GRANT SELECT ON TABLE ax_gebaeude_bauweise                 TO ms6;
 GRANT SELECT ON TABLE ax_gebaeude_bauweise                 TO mb27;
@@ -294,5 +296,5 @@
 GRANT SELECT ON TABLE ax_bauteil_bauart                    TO mb27;
 
--- Bodenschätzung
+-- BodenschÃ€tzung
 GRANT SELECT ON TABLE ax_bodenschaetzung_bodenart          TO ms6;
 GRANT SELECT ON TABLE ax_bodenschaetzung_bodenart          TO mb27;
@@ -312,5 +314,5 @@
 GRANT SELECT ON TABLE ax_bewertung_klassifizierung         TO mb27;
 
--- Bodenschätzung Views
+-- BodenschÃ€tzung Views
 GRANT SELECT ON TABLE s_bodensch_wms                       TO ms6;
 GRANT SELECT ON TABLE s_bodensch_ent                       TO ms6;
@@ -340,5 +342,5 @@
 GRANT SELECT ON TABLE ax_sonstigesrecht_artdf              TO mb27;
 
--- Sonstige Schlüsseltabellen
+-- Sonstige SchlÃŒsseltabellen
 GRANT SELECT ON TABLE ax_buchungsstelle_buchungsart        TO ms6;
 GRANT SELECT ON TABLE ax_buchungsstelle_buchungsart        TO mb27;
@@ -376,4 +378,5 @@
   GRANT SELECT ON TABLE doppelverbindung                   TO mb27;
   GRANT SELECT ON TABLE exp_csv                            TO mb27;
+  GRANT SELECT ON TABLE exp_csv_str                        TO mb27;
 
 -- END --
Index: trunk/import/nutzungsart_definition.sql
===================================================================
--- trunk/import/nutzungsart_definition.sql	(revision 328)
+++ trunk/import/nutzungsart_definition.sql	(revision 330)
@@ -18,17 +18,17 @@
 --  2013-11-15 In nutzung_class.class kÃ¶nnen NULL-Werte auftreten.
 --  2013-11-26 NULL wird durch Zahl "0" ersetzt, "NOT NULL" wieder aktivieren
+--  2014-08-26 erweiterte gml_id (wie in den primÃ€ren Tabellen)
 
 SET client_encoding = 'UTF-8';
 
 -- Alles auf Anfang!
-
--- DROP TABLE nutzung;
--- DROP TABLE nutzung_class;
--- DROP TABLE nutzung_meta;
-
+/*
+  DROP TABLE nutzung;
+  DROP TABLE nutzung_class;
+  DROP TABLE nutzung_meta;
+*/
 
 -- Meta-Informationen ueber die Zusammenfassung und Gruppierung
 -- ------------------------------------------------------------
-
 CREATE TABLE nutzung_meta (
 	nutz_id           integer NOT NULL,
@@ -52,19 +52,18 @@
 -- Alle Abschnitte der "tatsÃ€chlichen Nutzung" vereinigt in einer Tabelle 
 -- Sie sind dann mit einem gemeinsamen Geometrie-Index mit einer SQL-Abfrage auffindbar.
--- Dies ist die Voraussetzung fÃŒr eine performante Auskunft.
+-- Dies ist die fÃ¶rderlich fÃŒr eine performante Auskunft.
 
---DROP TABLE nutzung;
 CREATE TABLE nutzung (
-	gml_id		character(16),
-	beginnt		character(20),	    -- mehrfache gml_id eindeutig machen, Datenfehler?
-	nutz_id		integer,
-	class		integer  NOT NULL,  -- NULL-Werte der Quelltabelle durch den num. Wert 0 ersetzen
-	info		     integer,
-	zustand		integer,
-	"name"		varchar,
-	bezeichnung	varchar,
---	CONSTRAINT	nutzung_pk      PRIMARY KEY (gml_id),		    -- sollte so sein
-	CONSTRAINT	nutzung_pk      PRIMARY KEY (gml_id, beginnt),	-- wÃŒrg arround (gml_id mehrfach!)
-	CONSTRAINT	nutzung_meta_id FOREIGN KEY (nutz_id)
+	gml_id		     character varying NOT NULL,
+	beginnt		     character(20),	     -- mehrfache gml_id eindeutig machen
+--   endet               character(20),      -- nur "ended IS NULL" kopieren
+	nutz_id		     integer,
+	class		     integer NOT NULL,   -- NULL-Werte der Quelltabelle durch den num. Wert 0 ersetzen
+	info		          integer,
+	zustand		     integer,
+	"name"		     character varying,
+	bezeichnung	     character varying,
+	CONSTRAINT nutzung_pk      PRIMARY KEY (gml_id, beginnt),
+	CONSTRAINT nutzung_meta_id FOREIGN KEY (nutz_id)
 		REFERENCES nutzung_meta (nutz_id) MATCH SIMPLE
 		ON UPDATE NO ACTION ON DELETE CASCADE
@@ -72,11 +71,7 @@
 WITH (OIDS=FALSE);
 
--- ALTER TABLE nutzung ADD COLUMN beginnt character(20);
--- ALTER TABLE nutzung DROP CONSTRAINT nutzung_pk;
--- ALTER TABLE nutzung ADD  CONSTRAINT nutzung_pk PRIMARY KEY(gml_id, beginnt);
-
 
 SELECT AddGeometryColumn('nutzung','wkb_geometry','25832','POLYGON',2);
--- Vereinzelt vorkommende MULTIPOLYGON, zulÃ€ssig?
+-- Vereinzelt auch vorkommende MULTIPOLYGON
 
 -- 'class' ist nur innerhalb einer Gruppe ein sinvoller Index
@@ -86,5 +81,4 @@
 CREATE INDEX nutzung_geom_idx ON nutzung USING gist (wkb_geometry);
 
--- Kommentare
 COMMENT ON TABLE  nutzung             IS 'Zusammenfassung von 26 Tabellen des Objektbereiches "TatsÃ€chliche Nutzung".';
 COMMENT ON COLUMN nutzung.gml_id      IS 'Identifikator, global eindeutig';
@@ -99,7 +93,4 @@
 -- Schluesseltabelle: classes innerhalb einer Nutzungsart.
 -- Wird nicht aus NAS geladen sondern durch das manuell zu pflegende Script "nutzungsart_metadaten.sql"
-
-
---DROP TABLE nutzung_class;
 CREATE TABLE nutzung_class (
 	nutz_id       integer NOT NULL,
@@ -114,5 +105,4 @@
 
   COMMENT ON TABLE  nutzung_class            IS 'SchlÃŒsseltabelle. Feinere Klassifizierung der zusammen gefassten Nutzungsarten.';
---COMMENT ON COLUMN nutzung_class.ser        IS 'Automatisches SchlÃŒsselfeld';
   COMMENT ON COLUMN nutzung_class.nutz_id    IS 'Index fuer die Quell-Tabelle bei der Zusammenfassung in der Tabelle nutzung.';
   COMMENT ON COLUMN nutzung_class.class      IS 'Key, SchlÃŒsselwert oder NULL';
@@ -124,17 +114,8 @@
 -- Da nun gml_id nicht mehr PRIMARY KEY der Ausgangstabellen ist , kommt es auch zu Doppelbelegungen der Zusammenfassung.
 -- Diese FÃ€lle suchen.
-
--- SELECT a.gml_id, a.artderbebauung, a.ogc_fid, a.beginnt, b.ogc_fid , b.beginnt
--- FROM ax_wohnbauflaeche a JOIN ax_wohnbauflaeche b ON a.gml_id = b.gml_id
--- WHERE a.ogc_fid < b.ogc_fid LIMIT 100; 
-
 CREATE OR REPLACE VIEW nutzung_mehrfache_gml AS
-	SELECT	a.gml_id, 
-		a.nutz_id,
-		a.beginnt as beginnt1, 
-		b.beginnt as beginnt2
+	SELECT a.gml_id, a.nutz_id, a.beginnt as beginnt1, b.beginnt as beginnt2
 	FROM nutzung a 
-	JOIN nutzung b 
-	  ON a.gml_id = b.gml_id
+	JOIN nutzung b ON a.gml_id = b.gml_id
 	WHERE a.beginnt < b.beginnt
 	--LIMIT 100
Index: trunk/import/pp_laden.sql
===================================================================
--- trunk/import/pp_laden.sql	(revision 328)
+++ trunk/import/pp_laden.sql	(revision 330)
@@ -1,4 +1,4 @@
 
--- ALKIS PostNAS 0.7
+-- ALKIS PostNAS 0.8
 
 -- Post Processing (pp_) Teil 2: Laden der Tabellen
@@ -10,13 +10,15 @@
 --  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 Redundanzen aus fehlerhaften Triggern
---  2014-02-12 Zusammen fassen Flur->Gemarkung->Gemeinde nicht aus simple_geom weil dadurch Löscher entstehen können.
---  2014-08-25 Straßennamen aufteilen in _P und L
+--  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-09-08 PostNAS 0.8, Umbenennung. Ohne Tabelle "alkis_beziehungen".
+--             Beseitigung eines Fehlers beim Laden der StraÃennamen-Label.
+--             Dabei Trennung in pp_strassenname_p und -_l (Punkt- und Liniengeometrie).
 
 -- ============================
@@ -25,68 +27,106 @@
 
 -- 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';
 
 
--- ============================================================================
--- Redundanzen aus alkis_beziehungen beseitigen, die nach NAS replace auftreten
--- ============================================================================
--- Workaround: alle Redundazen nach einem Lauf entfernen.
--- Besser wäre: sofort im Trigger bei replace entfernen.
--- Siehe Schema in FUNCTION delete_feature_kill
-
-
--- =================================
 -- Flurstuecksnummern-Label-Position
 -- =================================
 
--- ersetzt den View "s_flurstueck_nr" für WMS-Layer "ag_t_flurstueck"
-
+--SELECT '** FlurstÃŒcks-Nummern-Positionen';
 --DELETE FROM pp_flurstueck_nr;
-  TRUNCATE pp_flurstueck_nr;  -- effektiver als DELETE
-
-  INSERT INTO pp_flurstueck_nr
+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
+-- Das lÃ€uft das viel zu lange (wegen ANY(array) ?)
+
+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 f.endet IS NULL 
-       AND p.endet IS NULL 
-     --AND p."art" = 'ZAE_NEN'
+      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 alkis_beziehungen v  ON v.beziehung_zu = f.gml_id
-     WHERE v.beziehungsart is NULL
-       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
+      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
+
+-- 1. zu allen FlurstÃŒcken zunÃ€chst nur die Nummer, aber noch keine Geometrie
+INSERT INTO pp_flurstueck_nr
+          ( fsgml, fsnum )
+    SELECT f.gml_id, f.zaehler::text || COALESCE ('/' || f.nenner::text, '') AS fsnum
+      FROM ax_flurstueck f 
+     WHERE f.endet IS NULL;
+
+-- 2. Geometrie aus PrÃ€sentationsobjekt (manuelle Position), wenn vorhanden. Aus Subquery.
+UPDATE pp_flurstueck_nr n
+  SET the_geom = (
+      SELECT p.wkb_geometry FROM ap_pto p
+       WHERE n.fsgml=ANY(p.dientzurdarstellungvon) AND p.endet IS NULL
+       LIMIT 1 -- wegen vereinzelt FEHLER: als Ausdruck verwendete Unteranfrage ergab mehr als eine Zeile
+    );
+-- PG 8.4: Dies lÃ€uft sehr lange (> 10 Min.!). Optimierbar?
+
+-- 2a. Alternative mit Text Search statt any?
+/* UPDATE pp_flurstueck_nr n
+  SET the_geom = (
+      SELECT p.wkb_geometry FROM ap_pto p
+       WHERE n.fsgml <@ p.dientzurdarstellungvon AND p.endet IS NULL
+    ); */
+-- Nein, Operator ist nicht auf Array anwendbar.
+
+-- Menge? VerhÃ€ltnis?  nach 2.
+-- SELECT COUNT(fsgml) AS anz_leer FROM pp_flurstueck_nr WHERE     the_geom IS NULL; --  5440
+-- SELECT COUNT(fsgml) AS anz_gef  FROM pp_flurstueck_nr WHERE NOT the_geom IS NULL; -- 17154 
+
+-- 3. Geometrie auf FlÃ€chenmitte (Standard), wenn jetzt noch leer
+UPDATE pp_flurstueck_nr n
+  SET the_geom = (
+      SELECT ST_PointOnSurface(f.wkb_geometry) AS wkb_geometry FROM ax_flurstueck  f 
+       WHERE f.gml_id = n.fsgml
+      )
+   WHERE n.the_geom IS NULL; --- nur die Fehlenden, nichts ÃŒberschreiben
+
+
+-- 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. 
-
+-- 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.
+
+--SELECT '** StraÃen-Namen-Label Punkt';
 -- Alles auf Anfang
 TRUNCATE pp_strassenname_p;
 
--- Zunächst die Sonderschreibweisen (Abkürzungen) und die Standardschreibweisen, 
+-- 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)
@@ -94,10 +134,10 @@
        FROM ap_pto_stra; -- Der View sucht das passende advstandardmodell
 
--- Schriftinhalt ergänzen
+-- 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 ..
+   -- 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.
@@ -112,10 +152,11 @@
 DELETE FROM pp_strassenname_p WHERE schriftinhalt IS NULL;
 
--- Nun das Gleiche noch einmal für Linien-Geometrie
-
+-- Nun das Gleiche noch einmal fÃŒr Linien-Geometrie
+
+--SELECT '** StraÃen-Namen-Label Linie';
 -- Auf Anfang
 TRUNCATE pp_strassenname_l;
 
--- Zunächst die Sonderschreibweisen (Abkürzungen) und die Standardschreibweisen, 
+-- 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)
@@ -123,5 +164,5 @@
        FROM ap_lto_stra; -- Der View sucht das passende advstandardmodell
 
--- Schriftinhalt ergänzen (korrigiert 2014-08-25)
+-- 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.
@@ -129,6 +170,6 @@
 UPDATE pp_strassenname_l  p
    SET schriftinhalt =     -- Hier ist der Label noch leer
-   -- Subquery "Gib mir den Straßennamen":
-   ( SELECT k.bezeichnung                         -- Straßenname ..
+   -- 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.
@@ -143,13 +184,12 @@
 
 
--- ========================================================
 -- 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.
+-- 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. 
 
@@ -157,4 +197,5 @@
 -- G E M A R K U N G
 
+--SELECT '** Gemarkung';
 --DELETE FROM pp_gemarkung;
   TRUNCATE pp_gemarkung;
@@ -166,6 +207,5 @@
   FROM            ax_flurstueck
   WHERE           endet IS NULL
-  ORDER BY        land, regierungsbezirk, kreis, gemeinde, gemarkungsnummer 
-;
+  ORDER BY        land, regierungsbezirk, kreis, gemeinde, gemarkungsnummer ;
 
 -- Namen der Gemarkung dazu als Optimierung bei der Auskunft 
@@ -182,7 +222,7 @@
 -- G E M E I N D E
 
+--SELECT '** Gemeinde';
 --DELETE FROM pp_gemeinde;
-  TRUNCATE pp_gemeinde;
-
+TRUNCATE pp_gemeinde;
 -- Vorkommende Gemeinden aus den gemarkungen
 INSERT INTO pp_gemeinde
@@ -190,7 +230,5 @@
   SELECT DISTINCT land, regierungsbezirk, kreis, gemeinde
   FROM            pp_gemarkung
-  ORDER BY        land, regierungsbezirk, kreis, gemeinde 
-;
-
+  ORDER BY        land, regierungsbezirk, kreis, gemeinde;
 
 -- Namen der Gemeinde dazu als Optimierung bei der Auskunft 
@@ -207,20 +245,20 @@
 
 
+-- 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
-
-DELETE FROM pp_flur;
-
+-- AusfÃŒhrungszeit: 1 mittlere Stadt mit ca. 14.000 FlurstÃŒcken > 100 Sek
+
+--SELECT '** Flur';
+--DELETE FROM pp_flur;
+TRUNCATE pp_flur;
 INSERT INTO pp_flur (land, regierungsbezirk, kreis, gemarkung, flurnummer, anz_fs, the_geom )
    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
@@ -230,12 +268,13 @@
 -- -------------------------------------
 
--- 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.
+
+--SELECT '** FlÃ€chen Gemarkung';
+-- 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 
@@ -256,5 +295,6 @@
 -- ----------------------------------------
 
--- Flächen vereinigen (aus der bereits vereinfachten Geometrie)
+-- FlÃ€chen vereinigen (aus der bereits vereinfachten Geometrie)
+--SELECT '** FlÃ€chen Gemeinde';
 UPDATE pp_gemeinde a
   SET the_geom = 
@@ -265,5 +305,5 @@
    );
 
--- Gemarkungen zählen
+-- Gemarkungen zÃ€hlen
 UPDATE pp_gemeinde a
   SET anz_gemarkg = 
@@ -275,8 +315,10 @@
 
 
--- 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.
 
+--SELECT '** FlÃ€chen vereinfachen';
+
 UPDATE pp_flur      SET simple_geom = st_simplify(the_geom, 0.4); -- Flur 
 
@@ -286,14 +328,13 @@
 
 
+-- Tabelle fuer die Zuordnung vom EigentÃŒmern zu Gemeinden
 -- =======================================================
--- Tabelle fuer die Zuordnung vom Eigentümern zu Gemeinden
--- =======================================================
-
-
+
+--SELECT '** Gemeinde - Person';
 -- 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
+-- FÃŒr eine Stadt: ca. 20 Sekunden
 INSERT INTO  gemeinde_person 
        (land, regierungsbezirk, kreis, gemeinde, person, buchtyp)
@@ -302,7 +343,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)
Index: trunk/import/sichten_wms.sql
===================================================================
--- trunk/import/sichten_wms.sql	(revision 328)
+++ trunk/import/sichten_wms.sql	(revision 330)
@@ -3,5 +3,5 @@
 -- =====
 
---  PostNAS 0.7
+--  PostNAS 0.8
 
 --  -----------------------------------------
@@ -23,57 +23,8 @@
 --  2013-10-24 View ap_pto_stra wird ersetzt durch die Tabellen "pp_strassenname" und "pp_strassenklas", die im postProcessing gefÃŒllt werden.
 --  2014-02-24 Kein Filter auf advstandardmodell bei FlurstÃŒcks-Zuordnungspfeil
---  2014-08-25 StraÃennamen aufteilen in _P und L
-
--- WMS-Layer "ag_t_flurstueck"
--- ---------------------------
--- Die Geometrie befindet sich in "ap_pto", der Label in "ax_flurstueck"
--- Die Verbindung erfolgt ÃŒber "alkis_beziehungen"
-
--- Bruchnummerierung erzeugen
--- ALT 2012-04-17: Diese Version zeigt nur die manuell gesetzten Positionen
--- 2013-04-18 auskommentiert
---	CREATE OR REPLACE VIEW s_flurstueck_nr
---	AS 
---	 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.endet IS NULL  AND f.endet IS NULL;
---	COMMENT ON VIEW s_flurstueck_nr IS 'Sicht fÃŒr Kartendarstellung ÃŒber PostProcessing: Bruchnummerierung FlurstÃŒck (nur manuell gesetzte Positionen)';
-
--- 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.
-
--- In einer Hilfstabelle mit geometrischem Index zwischenspeichern.
--- Siehe PostProcessing: Tabelle "pp_flurstueck_nr"
-
--- 2013-04-18 auskommentiert
---	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.endet IS NULL
---		 AND f.endet IS NULL
---	 UNION 
---	  SELECT f.ogc_fid,
---			 ST_PointOnSurface(f.wkb_geometry) AS wkb_geometry,  -- FlÃ€chenmitte 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 AND f.endet IS NULL;
---	COMMENT ON VIEW s_flurstueck_nr2 
---	 IS 'Sicht fÃŒr Kartendarstellung ÃŒber PostProcessing: Bruchnummerierung FlurstÃŒck, auch Standard-Position. Nicht direkt fuer WMS verwenden!';
-
+--  2014-08-26 View "ap_lto_stra" analog "ap_pto_stra" fÃŒr StraÃennamen auf Linien-Geometrie
+--  2014-08-28 Die Tabelle "alkis_beziehungen" ÃŒberflÃŒssig machen.
+--             Relationen nun direkt ÃŒber neue Spalten in den Objekttabellen. 
+--  2014-08-29 P- und L-StraÃennamen gegenseitig ausschlieÃen in ap_pto_stra und ap_lto_stra
 
 -- Layer "ag_t_gebaeude"
@@ -81,30 +32,16 @@
 -- Problem: Zu einigen GebÃ€uden gibt es mehrere Hausnummern.
 -- Diese unterscheiden sich im Feld ap_pto.advstandardmodell
--- z.B. 3 verschiedene EintrÃ€ge mit <NULL>, {DKKM500}, {DKKM1000}, (Beispiel; Lage, Lange StraÃe 15 c)
-
- -- DROP VIEW s_hausnummer_gebaeude;
- --	CREATE OR REPLACE VIEW s_hausnummer_gebaeude 
- --	AS 
- --	 SELECT p.ogc_fid, p.wkb_geometry,
- --			p.drehwinkel * 57.296 AS drehwinkel, -- umn: ANGLE [drehwinkel]
- --			l.hausnummer				         -- umn: LABELITEM
- --	   FROM ap_pto p
- --	   JOIN alkis_beziehungen v ON p.gml_id = v.beziehung_von
- --	   JOIN ax_lagebezeichnungmithausnummer l ON v.beziehung_zu  = l.gml_id
- --	  WHERE v.beziehungsart = 'dientZurDarstellungVon'
- --		AND p.endet IS NULL AND l.endet IS NULL;
- --	COMMENT ON VIEW s_hausnummer_gebaeude IS 'fuer Kartendarstellung: Hausnummern HauptgebÃ€ude';
-
--- Verbesserte Version 2013-03-07
--- Nimmt nun vorzugsweise den Text der Darstellung aus ap_pto (bei ibR immer gefÃŒllt).
--- Wenn der nicht gefÃŒllt ist, wird statt dessen die Nummer aus der verknÃŒpften Labebezeichnung 
--- verwendet (der hÃ€ufigste Fall bei AED). 
+-- z.B. 3 verschiedene EintrÃ€ge mit <NULL>, {DKKM500}, {DKKM1000}
+
+-- Nimmt vorzugsweise den Text der Darstellung aus ap_pto (nach der Migration zunÃ€chst ibR immer gefÃŒllt).
+-- Wenn der nicht gefÃŒllt ist, wird statt dessen die Nummer aus der verknÃŒpften Labebezeichnung verwendet.
+
+-- DROP VIEW IF EXISTS s_hausnummer_gebaeude;
+
 CREATE OR REPLACE VIEW s_hausnummer_gebaeude 
 AS 
  SELECT p.ogc_fid, 
-        p.wkb_geometry,			              -- Point
+        p.wkb_geometry,                       -- Point
         p.drehwinkel * 57.296 AS drehwinkel,  -- umn: ANGLE
-    --  p.art,
-    --  p.advstandardmodell       AS modell,  -- TEST
     --  p.horizontaleausrichtung  AS hor,     -- = 'zentrisch'
     --  p.vertikaleausrichtung    AS ver,     -- = 'Basis' (oft), "Mitte" (selten)
@@ -113,13 +50,10 @@
         COALESCE(p.schriftinhalt, l.hausnummer) AS hausnummer
    FROM ap_pto p
-   JOIN alkis_beziehungen v
-     ON p.gml_id = v.beziehung_von
-   JOIN ax_lagebezeichnungmithausnummer l
-	 ON v.beziehung_zu  = l.gml_id
+   JOIN ax_lagebezeichnungmithausnummer l       ON l.gml_id = ANY (p.dientzurdarstellungvon) 
   WHERE p.art = 'HNR'
     AND 'DKKM1000' = ANY (p.advstandardmodell) -- erste NÃ€herungslÃ¶sung um Redundanzen zu unterdrÃŒcken
-    AND v.beziehungsart = 'dientZurDarstellungVon'
-	AND p.endet IS NULL
-	AND l.endet IS NULL;
+    AND p.endet IS NULL
+    AND l.endet IS NULL;
+
 COMMENT ON VIEW s_hausnummer_gebaeude IS 'Sicht fÃŒr Kartendarstellung: Hausnummern der HauptgebÃ€ude.';
 -- ibR: darzustellender Text steht immer in ap_pto.schriftinhalt
@@ -129,45 +63,28 @@
 --   Das wÃŒrde die COALESCE-Trickserei ersparen
 
-
 -- Layer "ag_t_nebengeb"
 -- ---------------------
--- 2013-03-05: Diese Abfrage liefert keine Daten mehr.
---	CREATE OR REPLACE VIEW s_nummer_nebengebaeude 
---	AS 
---	 SELECT p.ogc_fid, p.wkb_geometry, 
---			p.drehwinkel * 57.296 AS drehwinkel,	-- umn: ANGLE [drehwinkel]
---		 -- l.pseudonummer,			-- die HsNr des zugehoerigen Hauptgebaeudes
---			l.laufendenummer		-- umn: LABELITEM - die laufende Nummer des Nebengebaeudes
---	   FROM ap_pto p
---	   JOIN alkis_beziehungen v 
---		 ON p.gml_id = v.beziehung_von
---	   JOIN ax_lagebezeichnungmitpseudonummer l
---		 ON v.beziehung_zu  = l.gml_id
---	  WHERE v.beziehungsart = 'dientZurDarstellungVon'
---		AND p.endet IS NULL AND l.endet IS NULL;
---	COMMENT ON VIEW s_nummer_nebengebaeude IS 'Sicht fÃŒr Kartendarstellung: Hausnummern NebengebÃ€ude (manuelle Position)';
-
--- Suche nach einem Ersatz:
 -- ax_gebaeude  >hat>  ax_lagebezeichnungmitpseudonummer, kein Drehwinkel.
+
+-- DROP VIEW IF EXISTS lfdnr_nebengebaeude;
+
 CREATE OR REPLACE VIEW lfdnr_nebengebaeude 
 AS 
  SELECT g.ogc_fid, 
         g.wkb_geometry, 
-    --  l.pseudonummer,			-- TEST die HsNr des zugehoerigen Hauptgebaeudes
-        l.laufendenummer		-- umn: LABELITEM - die laufende Nummer des Nebengebaeudes
+        l.laufendenummer     -- umn: LABELITEM - die laufende Nummer des Nebengebaeudes
    FROM ax_gebaeude g
-   JOIN alkis_beziehungen v 
-     ON g.gml_id = v.beziehung_von
    JOIN ax_lagebezeichnungmitpseudonummer l
-     ON v.beziehung_zu  = l.gml_id
-   WHERE v.beziehungsart = 'hat'
-     AND g.endet IS NULL
-     AND g.endet IS NULL;
+     ON g.hat = l.gml_id
+   WHERE g.endet IS NULL AND l.endet IS NULL;
+
 COMMENT ON VIEW lfdnr_nebengebaeude 
   IS 'Sicht fÃŒr Kartendarstellung: Laufende Nummer des NebengebÃ€udes zu einer Lagebezeichnung mit der FlÃ€chengeometrie des GebÃ€udes';
 
-
 -- GebÃ€ude-Text
 -- ------------
+
+-- DROP VIEW IF EXISTS gebaeude_txt;
+
 CREATE OR REPLACE VIEW gebaeude_txt 
 AS 
@@ -181,32 +98,33 @@
   WHERE g.endet IS NULL 
     AND g.gebaeudefunktion < 9998; -- "Nach Quellenlage nicht zu spezifizieren" braucht man nicht anzeigen
+
 COMMENT ON VIEW gebaeude_txt 
   IS 'Sicht fÃŒr Kartendarstellung: Name zum GebÃ€ude und EntschlÃŒsselung der GebÃ€ude-Funktion (Ersatz fÃŒr Symbole)';
 
-
 -- Layer "ag_p_flurstueck"
 -- -----------------------
+
+-- DROP VIEW IF EXISTS s_zugehoerigkeitshaken_flurstueck;
+
 CREATE OR REPLACE VIEW s_zugehoerigkeitshaken_flurstueck 
 AS 
  SELECT p.ogc_fid, 
         p.wkb_geometry, 
-        p.drehwinkel * 57.296 AS drehwinkel,
-        f.flurstueckskennzeichen
+        p.drehwinkel * 57.296 AS drehwinkel
    FROM ap_ppo p
-   JOIN alkis_beziehungen v
-     ON p.gml_id = v.beziehung_von
    JOIN ax_flurstueck f
-     ON v.beziehung_zu = f.gml_id
+     ON f.gml_id = ANY (p.dientZurDarstellungVon)  
   WHERE p.art = 'Haken'
-    AND v.beziehungsart = 'dientZurDarstellungVon'
     AND f.endet IS NULL
     AND p.endet IS NULL;
+
 COMMENT ON VIEW s_zugehoerigkeitshaken_flurstueck 
   IS 'Sicht fÃŒr Kartendarstellung: ZugehÃ¶rigkeitshaken zum FlurstÃŒck.';
 
-
 -- Layer "s_zuordungspfeil_flurstueck" (Signaturnummer 2004)
 -- -----------------------------------
--- geÃ€.: 2014-02-24: Kein Filter auf advstandardmodell
+
+-- DROP VIEW IF EXISTS s_zuordungspfeil_flurstueck;
+
 CREATE OR REPLACE VIEW s_zuordungspfeil_flurstueck 
 AS 
@@ -214,18 +132,16 @@
         l.wkb_geometry
    FROM ap_lpo l
-   JOIN alkis_beziehungen v
-     ON l.gml_id = v.beziehung_von
    JOIN ax_flurstueck f
-     ON v.beziehung_zu = f.gml_id
+     ON f.gml_id = ANY (l.dientZurDarstellungVon) 
   WHERE l.art = 'Pfeil'
-    AND v.beziehungsart = 'dientZurDarstellungVon'
-  --AND ('DKKM1000' ~~ ANY (l.advstandardmodell))
     AND f.endet IS NULL
     AND l.endet IS NULL;
--- Die OBK-Alternative "sk2004_zuordnungspfeil" wird NICHT verwendet. Siehe dort.
+
 COMMENT ON VIEW s_zuordungspfeil_flurstueck 
   IS 'Sicht fÃŒr Kartendarstellung: Zuordnungspfeil zur FlurstÃŒcksnummer, Liniengeometrie.';
 
--- geÃ€.: 2014-02-24: Kein Filter auf advstandardmodell
+
+-- DROP VIEW IF EXISTS s_zuordungspfeilspitze_flurstueck;
+
 CREATE OR REPLACE VIEW s_zuordungspfeilspitze_flurstueck 
 AS 
@@ -235,14 +151,10 @@
         st_startpoint(l.wkb_geometry) AS wkb_geometry 
    FROM ap_lpo l
-   JOIN alkis_beziehungen v
-     ON l.gml_id = v.beziehung_von
    JOIN ax_flurstueck f
-     ON v.beziehung_zu = f.gml_id
+     ON f.gml_id = ANY (l.dientzurdarstellungvon) 
   WHERE l.art = 'Pfeil'
-    AND v.beziehungsart = 'dientZurDarstellungVon'
-  --AND ('DKKM1000' ~~ ANY (l.advstandardmodell))
     AND f.endet IS NULL
     AND l.endet IS NULL;
--- Die OBK-Alternativen "sk2004_zuordnungspfeil_spitze" wird NICHT verwendet. Siehe dort.
+
 COMMENT ON VIEW s_zuordungspfeilspitze_flurstueck 
   IS 'Sicht fÃŒr Kartendarstellung: Zuordnungspfeil FlurstÃŒcksnummer, Spitze, Punktgeometrie mit Drehwinkel.';
@@ -253,4 +165,5 @@
 -- Zuordnungspfeil BodenschÃ€tzung (Signaturnummer 2701)
 -- ----------------------------------------------------
+
 CREATE OR REPLACE VIEW s_zuordungspfeil_bodensch
 AS 
@@ -258,16 +171,17 @@
         l.wkb_geometry
    FROM ap_lpo l
-   JOIN alkis_beziehungen v
-     ON l.gml_id = v.beziehung_von
    JOIN ax_bodenschaetzung b
-     ON v.beziehung_zu = b.gml_id
+     ON b.gml_id = ANY (l.dientzurdarstellungvon)
   WHERE l.art = 'Pfeil'
-    AND v.beziehungsart = 'dientZurDarstellungVon'
-    AND ('DKKM1000' ~~ ANY (l.advstandardmodell))
+    AND ('DKKM1000' = ANY (l.advstandardmodell))
     AND b.endet IS NULL
     AND l.endet IS NULL;
+
 COMMENT ON VIEW s_zuordungspfeil_bodensch 
   IS 'Sicht fÃŒr Kartendarstellung: Zuordnungspfeil BodenschÃ€tzung, Liniengeometrie.';
 
+
+-- DROP VIEW IF EXISTS s_zuordungspfeilspitze_bodensch;
+ 
 CREATE OR REPLACE VIEW s_zuordungspfeilspitze_bodensch 
 AS 
@@ -277,14 +191,11 @@
         st_startpoint(l.wkb_geometry) AS wkb_geometry 
    FROM ap_lpo l
-   JOIN alkis_beziehungen v
-     ON l.gml_id = v.beziehung_von
    JOIN ax_bodenschaetzung b
-     ON v.beziehung_zu = b.gml_id
+     ON b.gml_id = ANY (l.dientzurdarstellungvon )
   WHERE l.art = 'Pfeil'
-    AND v.beziehungsart = 'dientZurDarstellungVon'
-    AND ('DKKM1000' ~~ ANY (l.advstandardmodell))
+    AND 'DKKM1000' = ANY (l.advstandardmodell)
     AND b.endet IS NULL
     AND l.endet IS NULL;
--- Die OBK-Alternativen "sk2004_zuordnungspfeil_spitze" wird NICHT verwendet. Siehe dort.
+
 COMMENT ON VIEW s_zuordungspfeilspitze_flurstueck IS 'Sicht fÃŒr Kartendarstellung: Zuordnungspfeil BodenschÃ€tzung, Spitze, Punktgeometrie mit Drehwinkel.';
 
@@ -295,8 +206,16 @@
 -- Eine Relation wird fuer die Gruppierung verwendet:
 --  ap_pto >dientZurDarstellungVon> ax_lagebezeichnungohnehausnummer
+
+-- 2014-08-26: Spalte gml_id hinzugefÃŒgt.
+-- Auch Zeilen mit leerem Schriftinhalt verwenden. Das wird im PostProcessing noch ergÃ€nzt. 
+
+-- DROP VIEW IF EXISTS ap_pto_stra;
+
 CREATE OR REPLACE VIEW ap_pto_stra 
 AS 
   SELECT p.ogc_fid,
          l.gml_id,                               -- wird im PP zum Nachladen aus Katalog gebraucht
+      -- p.advstandardmodell       AS modell,    -- TEST
+      -- l.unverschluesselt, l.lage AS schluessel, -- zur Lage  TEST
          p.schriftinhalt,                        -- WMS: LABELITEM
          p.art,                                  -- WMS: CLASSITEM
@@ -306,28 +225,23 @@
          p.wkb_geometry
     FROM ap_pto p
-    JOIN alkis_beziehungen v   -- Relation zur Lagebezeichnung o. HsNr.
-      ON p.gml_id = v.beziehung_von
     JOIN ax_lagebezeichnungohnehausnummer l
-      ON v.beziehung_zu = l.gml_id
-   WHERE  p.endet IS NULL                            -- nichts historisches
-     AND  p.art   IN ('Strasse','Weg','Platz','BezKlassifizierungStrasse') -- Diese Werte als CLASSES in LAYER behandeln. 
-     AND  v.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
-     AND (   'DKKM1000' = ANY (p.advstandardmodell)  -- "Lika 1000" bevorzugen
-          OR 'DLKM'     = ANY (p.advstandardmodell)   
-     -- LeopoldshÃ¶he, HeinestraÃe: 'DLKM'
+      ON l.gml_id = ANY (p.dientzurdarstellungvon)
+   WHERE  p.endet IS NULL
+     AND  p.art IN ('Strasse','Weg','Platz','BezKlassifizierungStrasse') -- CLASSES im LAYER
+     AND (   'DKKM1000' = ANY (p.advstandardmodell) -- "Lika 1000" bevorzugen
+       -- OR 'DLKM'     = ANY (p.advstandardmodell) -- oder auch Kataster allgemein 
            -- Ersatzweise auch "keine Angabe", aber nur wenn es keinen besseren Text zur Lage gibt
-           OR (p.advstandardmodell IS NULL
-               AND (SELECT s.ogc_fid                -- irgend ein Feld
-                      FROM ap_pto s                 -- eines anderen Textes (suchen)
-                      JOIN alkis_beziehungen vs     -- zur gleichen Lage o.HsNr
-                        ON s.gml_id = vs.beziehung_von
-                      JOIN ax_lagebezeichnungohnehausnummer ls
-                        ON vs.beziehung_zu = ls.gml_id
-                     WHERE ls.gml_id = l.gml_id
-                       AND vs.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
-                       AND NOT s.advstandardmodell IS NULL 
+          OR (p.advstandardmodell IS NULL
+               -- Alternativen zur Legebezeichnung suchen in P- und L-Version
+               AND (SELECT s.ogc_fid FROM ap_lto s -- irgend ein Feld eines anderen Textes (suchen)
+                      JOIN ax_lagebezeichnungohnehausnummer ls ON ls.gml_id = ANY(s.dientzurdarstellungvon)
+                     WHERE ls.gml_id = l.gml_id AND NOT s.advstandardmodell IS NULL 
                      LIMIT 1  -- einer reicht als Beweis
+                   ) IS NULL  -- "Subquery IS NULL" liefert true wenn kein weiterer Text gefunden wird
+               AND (SELECT s.ogc_fid FROM ap_pto s
+                      JOIN ax_lagebezeichnungohnehausnummer ls ON ls.gml_id = ANY(s.dientzurdarstellungvon)
+                     WHERE ls.gml_id = l.gml_id AND NOT s.advstandardmodell IS NULL LIMIT 1 
                    ) IS NULL 
-              ) -- "Subquery IS NULL" liefert true wenn kein weiterer Text gefunden wird
+              ) 
          )
 ;
@@ -337,10 +251,10 @@
  Vorzugsweise mit advstandardmodell="DKKM1000", ersatzweise ohne Angabe. Dient im Script pp_laden.sql zum ersten FÃŒllen der Tabelle "pp_strassenname_p".';
 
-
--- Daten aus dem View "ap_pto_stra" werden im PostProcessing gespeichert in der Tabelle "pp_strassenname_p".
+-- Daten aus dem View "ap_pto_stra" werden im PostProcessing gespeichert in den Tabellen "pp_strassenname" und "pp_strassenklas".
 -- 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.
 
--- DROP VIEW ap_lto_stra;
+-- DROP VIEW IF EXISTS ap_lto_stra;
+
 CREATE OR REPLACE VIEW ap_lto_stra 
 AS 
@@ -353,39 +267,31 @@
          p.wkb_geometry
     FROM ap_lto p
-    JOIN alkis_beziehungen v   -- Relation zur Lagebezeichnung o. HsNr.
-      ON p.gml_id = v.beziehung_von
     JOIN ax_lagebezeichnungohnehausnummer l
-      ON v.beziehung_zu = l.gml_id
-   WHERE  p.endet IS NULL                            -- nichts historisches
+      ON l.gml_id = ANY (p.dientzurdarstellungvon)
+   WHERE  p.endet IS NULL
      AND  p.art   IN ('Strasse','Weg','Platz','BezKlassifizierungStrasse') -- Diese Werte als CLASSES in LAYER behandeln. 
-     AND  v.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
-
---   AND (   ('DKKM1000' = ANY (p.advstandardmodell)     -- "Lika 1000" bevorzugen
---        OR ('DLKM'     = ANY (p.advstandardmodell)  ) 
-
-     -- ++ Muss als Array angelegt sein!!
-     AND ( NOT p.advstandardmodell  IS NULL          -- ++ ZwischenlÃ¶sung bis DB mit neuem Schema (2014-08-22) angelegt und geladen wurde ++
-
+     AND (    'DKKM1000' = ANY (p.advstandardmodell) -- "Lika 1000" bevorzugen
+       --  OR 'DLKM'     = ANY (p.advstandardmodell) -- oder auch Kataster allgemein?
            -- Ersatzweise auch "keine Angabe", aber nur wenn es keinen besseren Text zur Lage gibt
            OR (p.advstandardmodell IS NULL
-               AND (SELECT s.ogc_fid                -- irgend ein Feld
-                      FROM ap_lto s                 -- eines anderen Textes (suchen)
-                      JOIN alkis_beziehungen vs     -- zur gleichen Lage o.HsNr
-                        ON s.gml_id = vs.beziehung_von
-                      JOIN ax_lagebezeichnungohnehausnummer ls
-                        ON vs.beziehung_zu = ls.gml_id
-                     WHERE ls.gml_id = l.gml_id
-                       AND vs.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
-                       AND NOT s.advstandardmodell IS NULL 
+               -- Alternativen zur Legebezeichnung suchen in P- und L-Version
+               AND (SELECT s.ogc_fid FROM ap_lto s -- irgend ein Feld eines anderen Textes (suchen)
+                      JOIN ax_lagebezeichnungohnehausnummer ls ON ls.gml_id = ANY(s.dientzurdarstellungvon)
+                     WHERE ls.gml_id = l.gml_id AND NOT s.advstandardmodell IS NULL 
                      LIMIT 1  -- einer reicht als Beweis
+                   ) IS NULL  -- "Subquery IS NULL" liefert true wenn kein weiterer Text gefunden wird
+               AND (SELECT s.ogc_fid FROM ap_pto s
+                      JOIN ax_lagebezeichnungohnehausnummer ls ON ls.gml_id = ANY(s.dientzurdarstellungvon)
+                     WHERE ls.gml_id = l.gml_id AND NOT s.advstandardmodell IS NULL LIMIT 1 
                    ) IS NULL 
-              ) -- "Subquery IS NULL" liefert true wenn kein weiterer Text gefunden wird
+              ) 
          )
 ;
+
 COMMENT ON VIEW ap_lto_stra 
   IS 'Sicht fÃŒr Kartendarstellung: Beschriftung aus "ap_lto" fÃŒr Lagebezeichnung mit Art "StraÃe", "Weg", "Platz" oder Klassifizierung.
  Vorzugsweise mit advstandardmodell="DKKM1000", ersatzweise ohne Angabe. Dient im Script pp_laden.sql zum ersten FÃŒllen der Tabelle "pp_strassenname_l".';
 
--- 2014-08-22: Daten aus dem View "ap_lto_stra" werden im PostProcessing gespeichert in den Tabellen "pp_strassenname_l".
+-- 2014-08-26: Daten aus dem View "ap_lto_stra" werden im PostProcessing gespeichert in den Tabellen "pp_strassenname_l".
 -- Der View ÃŒbernimmt die Auswahl des passenden advstandardmodell.
 -- In der Tabelle werden dann die leer gebliebenen Label aus dem Katalog noch ergÃ€nzt.
@@ -404,8 +310,9 @@
 -- ODER           trennen nach fachlichen Ebenen wie "Nutzung" und "GebÃ€ude" und ....
 
+-- DROP VIEW IF EXISTS ap_pto_nam;
+
 CREATE OR REPLACE VIEW ap_pto_nam 
 AS 
   SELECT p.ogc_fid,
-	  -- p.advstandardmodell       AS modell,    -- TEST
          p.schriftinhalt,                        -- WMS: LABELITEM
          p.art,                                  -- WMS: CLASSITEM
@@ -415,27 +322,23 @@
          p.wkb_geometry
     FROM ap_pto p
-    JOIN alkis_beziehungen v       
-      ON p.gml_id = v.beziehung_von
-  --JOIN nutzung l                      -- Im PostProcessing zusammen gefasste Nutzungsarten-Abschnitte
-  --  ON v.beziehung_zu = l.gml_id
+    JOIN nutzung l                      -- Im PostProcessing zusammen gefasste Nutzungsarten-Abschnitte
+      ON l.gml_id = ANY (p.dientzurdarstellungvon) 
    WHERE NOT p.schriftinhalt IS NULL 
      AND  p.endet IS NULL                            -- nichts historisches
-     AND  p.art   IN ('NAM','ZNM') -- Diese Werte als CLASSES in LAYER behandeln. 
-     AND  v.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
+     AND  p.art   IN ('NAM','ZNM')                   -- CLASSES in LAYER
      AND ('DKKM1000' = ANY (p.advstandardmodell)     -- "Lika 1000" bevorzugen
            -- Ersatzweise auch "keine Angabe", aber nur wenn es keinen besseren Text zur Lage gibt
            OR (p.advstandardmodell IS NULL
-               AND (SELECT vs.beziehung_zu          -- irgend ein Feld
-					  FROM ap_pto s                 -- eines anderen Textes (suchen)
-                      JOIN alkis_beziehungen vs     -- zur gleichen ?irgendwas?
-                        ON s.gml_id = vs.beziehung_von
-                     WHERE vs.beziehung_zu = v.beziehung_zu
-                       AND vs.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
-                       AND NOT s.advstandardmodell IS NULL 
+               AND (SELECT s.gml_id                  -- irgend ein Feld
+                      FROM ap_pto s                  -- eines anderen Textes (suchen)
+                      JOIN nutzung l2                 -- Im PostProcessing zusammen gefasste Nutzungsarten-Abschnitte
+                        ON l2.gml_id = ANY (s.dientzurdarstellungvon) 
+                     WHERE NOT s.advstandardmodell IS NULL 
                      LIMIT 1  -- einer reicht als Beweis
-					) IS NULL 
+                   ) IS NULL 
               ) -- "Subquery IS NULL" liefert true wenn kein weiterer Text gefunden wird
          )
 ;
+
 COMMENT ON VIEW ap_pto_nam 
   IS 'Sicht fÃŒr Kartendarstellung: Beschriftung mit Art = Name/Zweitname. Vorzugsweise mit advstandardmodell="DKKM1000", ersatzweise ohne Angabe.';
@@ -447,22 +350,9 @@
 -- REST: Texte, die nicht schon in einem anderen Layer ausgegeben werden
 -- Ersetzt den View "s_beschriftung"
-
--- alte Version bis 2013-04-15
--- Nachteil: es werden mehrere Texte zum gleichen Objekt angezeigt die fÃŒr verschiedene MaÃstÃ€be gedacht sind.
---CREATE OR REPLACE VIEW ap_pto_rest 
---AS 
---  SELECT p.ogc_fid, 
---         p.schriftinhalt, 
---         p.art, 
---         p.drehwinkel * 57.296 AS winkel, -- * 180 / Pi
---         p.wkb_geometry 
---    FROM ap_pto p
---   WHERE not p.schriftinhalt IS NULL 
---     AND p.endet IS NULL
---     AND p.art NOT IN ('HNR','Strasse','Weg','Platz','BezKlassifizierungStrasse','AOG_AUG');
-
-
--- 2013-04-15 Doppelte Darstellung aufgrund verschiedener "advstandardmodell" zum Objekt unterdrÃŒcken analog ap_pto_stra und ap_pto_nam
-CREATE OR REPLACE VIEW ap_pto_rest 
+-- Doppelte Darstellung aufgrund verschiedener "advstandardmodell" zum Objekt unterdrÃŒcken analog ap_pto_stra und ap_pto_nam
+
+-- DROP VIEW IF EXISTS ap_pto_rest;
+
+CREATE OR REPLACE VIEW ap_pto_rest
 AS 
   SELECT p.ogc_fid, 
@@ -472,28 +362,22 @@
          p.wkb_geometry 
     FROM ap_pto p
-    JOIN alkis_beziehungen v   -- Relation zur ?irgendwas?
-      ON p.gml_id = v.beziehung_von
-   WHERE not p.schriftinhalt IS NULL 
+   WHERE NOT p.schriftinhalt IS NULL
+     AND NOT p.dientzurdarstellungvon IS NULL
      AND p.endet IS NULL
      AND p.art   NOT IN ('PNR','HNR','Strasse','Weg','Platz','BezKlassifizierungStrasse','AOG_AUG') -- 'PNR',
      -- Diese 'IN'-Liste fortschreiben bei Erweiterungen des Mapfiles
      -- 'PNR' = Pseudonummer (lfd.-Nr.-NebengebÃ€ude), Inhalte wie "(1)" oder "P50" - kommt nicht mehr vor, oder?
-    AND  v.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
     AND ('DKKM1000' = ANY (p.advstandardmodell)     -- "Lika 1000" bevorzugen
-           -- Ersatzweise auch "keine Angabe" (nul) akzeptieren, aber nur wenn es keinen besseren Text zu ?irgendwas? gibt
-           -- Es wird hier nur bis zur Verbindungstabelle "alkis_beziehungen" gesucht, ob am anderen Ende die gleiche gml_id verlinkt ist.
-           -- Diese gml_id kÃ¶nnen dann zu verschiedenen, unbekannten Objekttabellen linken.
+           -- Ersatzweise auch "keine Angabe" (null) akzeptieren, aber nur wenn ...
            OR (p.advstandardmodell IS NULL
-               AND (SELECT vs.beziehung_zu          -- irgend ein Feld
-					  FROM ap_pto s                 -- eines anderen Textes (suchen)
-                      JOIN alkis_beziehungen vs     -- zur gleichen ?irgendwas?
-                        ON s.gml_id = vs.beziehung_von
-                     WHERE vs.beziehung_zu = v.beziehung_zu
-                       AND vs.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
-                       AND NOT s.advstandardmodell IS NULL 
+               AND ( SELECT s.ogc_fid               -- irgend ein Feld
+                      FROM ap_pto s
+                     WHERE p.dientzurdarstellungvon = s.dientzurdarstellungvon -- gleiches PrÃ€sentationsobj.
+                       AND NOT s.advstandardmodell IS NULL -- Irgend eine Angabe
                      LIMIT 1  -- einer reicht als AusschluÃkriterium
-					) IS NULL 
+                    ) IS NULL 
               ) -- "Subquery IS NULL" liefert true wenn kein weiterer Text gefunden wird
          );
+
 COMMENT ON VIEW ap_pto_rest 
   IS 'Sicht fÃŒr Kartendarstellung: Beschriftungen aus "ap_pto", die noch nicht in anderen Layern angezeigt werden.';
@@ -506,19 +390,18 @@
 -- Layer "s_zuordungspfeil_gebaeude"
 -- -----------------------------------
-CREATE OR REPLACE VIEW s_zuordungspfeil_gebaeude 
+-- DROP VIEW IF EXISTS s_zuordungspfeil_gebaeude;
+
+CREATE OR REPLACE VIEW s_zuordungspfeil_gebaeude
 AS 
  SELECT l.ogc_fid, 
-     -- alkis_beziehungen.beziehungsart, -- TEST
      -- ap_lpo.art, -- TEST
         l.wkb_geometry
    FROM ap_lpo l
-   JOIN alkis_beziehungen v
-     ON l.gml_id = v.beziehung_von
    JOIN ax_gebaeude g
-     ON v.beziehung_zu = g.gml_id
+     ON g.gml_id = ANY(l.dientzurdarstellungvon)
   WHERE l.art = 'Pfeil'
-    AND v.beziehungsart = 'dientZurDarstellungVon'
     AND g.endet IS NULL
     AND l.endet IS NULL;
+
 COMMENT ON VIEW s_zuordungspfeil_gebaeude 
   IS 'Sicht fÃŒr Kartendarstellung: Zuordnungspfeil fÃŒr GebÃ€ude-Nummer (NebengebÃ€ude). Wird wahrscheinlich nicht mehr benÃ¶tigt.';
@@ -527,6 +410,7 @@
 -- Grenzpunkte
 -- -----------
---  ax_punktortta  >zeigtAuf?> AX_Grenzpunkt
 -- Zum Punktort des Grenzpunktes auch eine Information zur Vermarkung holen
+-- DROP VIEW IF EXISTS grenzpunkt;
+
 CREATE OR REPLACE VIEW grenzpunkt 
 AS 
@@ -534,14 +418,11 @@
         o.wkb_geometry, 
      -- g.punktkennung,    -- ggf spÃ€ter als labelitem "rrrrrhhhhAnnnnn" "32483 5751 0 02002"
-        g.abmarkung_marke, -- steuert die Darstellung >9000 = unvermarkt
-        v.beziehungsart
+        g.abmarkung_marke  -- steuert die Darstellung >9000 = unvermarkt
    FROM ax_punktortta o
-   JOIN alkis_beziehungen v 
-     ON o.gml_id = v.beziehung_von
    JOIN ax_grenzpunkt g
-     ON v.beziehung_zu  = g.gml_id
-   WHERE v.beziehungsart = 'istTeilVon'
-     AND g.endet IS NULL
+     ON o.istteilvon = g.gml_id
+   WHERE g.endet IS NULL
      AND g.endet IS NULL;
+
 COMMENT ON VIEW grenzpunkt 
   IS 'Sicht fÃŒr Kartendarstellung: ZusammenfÃŒhrung von Punktort (Geometrie) und AX_Grenzpunkt (Eigenschaften)';
@@ -550,25 +431,4 @@
 -- Sichten vom OBK (Oberbergischer Kreis)
 -- --------------------------------------
---	CREATE OR REPLACE VIEW sk2004_zuordnungspfeil 
---	AS
---	 SELECT ap.ogc_fid, ap.wkb_geometry 
---	 FROM ap_lpo ap 
---	 WHERE ((ap.signaturnummer = '2004') 
---	   AND ('DKKM1000'::text ~~ ANY ((ap.advstandardmodell)::text[])));
---	COMMENT ON VIEW sk2004_zuordnungspfeil IS 'fuer Kartendarstellung: Zuordnungspfeil FlurstÃŒcksnummer"';
-
---	CREATE OR REPLACE VIEW sk2004_zuordnungspfeil_spitze 
---	AS
---	 SELECT ap.ogc_fid, (((st_azimuth(st_pointn(ap.wkb_geometry, 1), 
---			st_pointn(ap.wkb_geometry, 2)) * (- (180)::double precision)) / pi()) + (90)::double precision) AS winkel, 
---			st_startpoint(ap.wkb_geometry) AS wkb_geometry 
---	 FROM ap_lpo ap 
---	 WHERE ((ap.signaturnummer = '2004') 
---	   AND ('DKKM1000'::text ~~ ANY ((ap.advstandardmodell)::text[])));
-
--- Diese Versionen "sk2004_zuordnungspfeil" und "sk2004_zuordnungspfeil_spitze" werden ersetzt durch
--- "s_zuordungspfeil_flurstueck" und "s_zuordungspfeilspitze_flurstueck".
--- Grund: "signaturnummer" is NULL, wenn Daten aus AED-Software kommen. Das Feld ist nur bei ibR gefuellt.
--- Die Alternativen filtern durch JOIN >dientZurDarstellungVon> ax_flurstueck.
 
 CREATE OR REPLACE VIEW sk2012_flurgrenze 
@@ -576,6 +436,7 @@
  SELECT fg.ogc_fid, fg.wkb_geometry
    FROM ax_besondereflurstuecksgrenze fg
-  WHERE (3000 = ANY (fg.artderflurstuecksgrenze)) 
-    AND fg.advstandardmodell ~~ 'DLKM'::text;
+  WHERE 3000   = ANY (fg.artderflurstuecksgrenze)
+    AND 'DLKM' = ANY (fg.advstandardmodell);
+
 COMMENT ON VIEW sk2012_flurgrenze IS 'Sicht fÃŒr Kartendarstellung: besondere FlurstÃŒcksgrenze "Flurgrenze"';
 
@@ -584,6 +445,7 @@
  SELECT gemag.ogc_fid, gemag.wkb_geometry
    FROM ax_besondereflurstuecksgrenze gemag
-  WHERE (7003 = ANY (gemag.artderflurstuecksgrenze)) 
-    AND gemag.advstandardmodell ~~ 'DLKM'::text;
+  WHERE 7003   = ANY (gemag.artderflurstuecksgrenze)
+    AND 'DLKM' = ANY (gemag.advstandardmodell);
+
 COMMENT ON VIEW sk2014_gemarkungsgrenze IS 'Sicht fÃŒr Kartendarstellung: besondere FlurstÃŒcksgrenze "Gemarkungsgrenze"';
 
@@ -592,6 +454,7 @@
  SELECT blg.ogc_fid, blg.wkb_geometry
    FROM ax_besondereflurstuecksgrenze blg
-  WHERE (7102 = ANY (blg.artderflurstuecksgrenze)) 
-    AND blg.advstandardmodell ~~ 'DLKM'::text;
+  WHERE 7102   = ANY (blg.artderflurstuecksgrenze)
+    AND 'DLKM' = ANY (blg.advstandardmodell);
+
 COMMENT ON VIEW sk2018_bundeslandgrenze IS 'Sicht fÃŒr Kartendarstellung: besondere FlurstÃŒcksgrenze "Bundeslandgrenze"';
 
@@ -600,6 +463,7 @@
  SELECT rbg.ogc_fid, rbg.wkb_geometry
    FROM ax_besondereflurstuecksgrenze rbg
-  WHERE (7103 = ANY (rbg.artderflurstuecksgrenze)) 
-    AND rbg.advstandardmodell ~~ 'DLKM'::text;
+  WHERE 7103   = ANY (rbg.artderflurstuecksgrenze) 
+    AND 'DLKM' = ANY (rbg.advstandardmodell);
+
 COMMENT ON VIEW sk2020_regierungsbezirksgrenze IS 'Sicht fÃŒr Kartendarstellung: besondere FlurstÃŒcksgrenze "Regierungsbezirksgrenze"';
 
@@ -608,6 +472,7 @@
  SELECT gemg.ogc_fid, gemg.wkb_geometry
    FROM ax_besondereflurstuecksgrenze gemg
-  WHERE (7106 = ANY (gemg.artderflurstuecksgrenze)) 
-    AND gemg.advstandardmodell ~~ 'DLKM'::text;
+  WHERE 7106   = ANY (gemg.artderflurstuecksgrenze) 
+    AND 'DLKM' = ANY (gemg.advstandardmodell);
+
 COMMENT ON VIEW sk2022_gemeindegrenze IS 'Sicht fÃŒr Kartendarstellung: besondere FlurstÃŒcksgrenze "Gemeindegrenze"';
 
@@ -634,5 +499,5 @@
      OR  7106 = ANY (artderflurstuecksgrenze)
     )
-    AND advstandardmodell ~~ 'DLKM'::text;
+    AND 'DLKM' = ANY (advstandardmodell);
 
 COMMENT ON VIEW sk201x_politische_grenze IS 'Sicht fÃŒr Kartendarstellung: besondere FlurstÃŒcksgrenze Politische Grenzen (Bund, Land, Kreis, Gemeinde)';
@@ -660,5 +525,5 @@
      -- so2.bezeichner                     AS sonst2, -- immer leer?
         bs.jahreszahl                                 -- integer
-   FROM ax_bodenschaetzung bs
+   FROM      ax_bodenschaetzung bs
    LEFT JOIN ax_bodenschaetzung_kulturart      ka ON bs.kulturart = ka.wert
    LEFT JOIN ax_bodenschaetzung_bodenart       ba ON bs.bodenart  = ba.wert
@@ -671,4 +536,5 @@
  --LEFT JOIN ax_bodenschaetzung_sonstigeangaben so2 ON bs.sonstigeangaben[2] = so2.wert -- [2] fast nie
    WHERE bs.endet IS NULL;
+
 COMMENT ON VIEW s_bodensch_ent IS 'Sicht fÃŒr Feature-Info: BodenschÃ€tzung, mit Langtexten entschlÃŒsselt';
 
@@ -681,17 +547,17 @@
  SELECT bs.ogc_fid,
         bs.wkb_geometry,
-     -- bs.advstandardmodell,   -- NUR TEST
+     -- bs.advstandardmodell,     -- NUR TEST
      -- bs.entstehungsartoderklimastufewasserverhaeltnisse AS entstehart, -- Array der Keys, NUR TEST
         ka.kurz AS kult,  -- Kulturart, CLASSITEM, steuert die Farbe
      -- Viele Felder zusammen packen zu einem kompakten Zwei-Zeilen-Label:
-          ba.kurz  ||            -- Bodenart
-          zs.kurz  ||            -- Zustandsstufe
-          ea1.kurz ||            -- Entstehungsart oder Klimastufe, Wasserverhaeltnisse ist ein Array mit 1 bis 2 Elementen
+          ba.kurz  ||             -- Bodenart
+          zs.kurz  ||             -- Zustandsstufe
+          ea1.kurz ||             -- Entstehungsart oder Klimastufe, Wasserverhaeltnisse ist ein Array mit 1 bis 2 Elementen
           coalesce (ea2.kurz, '') -- NULL vermeiden!
-          || ' ' ||              -- Zeilenwechsel im Label (UMN: WRAP)
+          || ' ' ||               -- Zeilenwechsel im Label (UMN: WRAP)
           bs.bodenzahlodergruenlandgrundzahl || '/' ||
           bs.ackerzahlodergruenlandzahl 
-        AS derlabel              -- LABELITEM Umbruch am Blank
-   FROM ax_bodenschaetzung bs
+        AS derlabel               -- LABELITEM Umbruch am Blank
+   FROM      ax_bodenschaetzung bs
    LEFT JOIN ax_bodenschaetzung_kulturart      ka ON bs.kulturart = ka.wert
    LEFT JOIN ax_bodenschaetzung_bodenart       ba ON bs.bodenart  = ba.wert
@@ -702,4 +568,5 @@
           ON bs.entstehungsartoderklimastufewasserverhaeltnisse[2] = ea2.wert   -- [2] manchmal gefÃŒllt
    WHERE bs.endet IS NULL;
+
 COMMENT ON VIEW s_bodensch_wms IS 'Sicht fÃŒr Kartendarstellung: BodenschÃ€tzung mit kompakten Informationen fÃŒr Label.';
 
@@ -716,4 +583,5 @@
    FROM ax_bodenschaetzung
   WHERE endet IS NULL;
+
 COMMENT ON VIEW s_bodensch_po IS 'Sicht fÃŒr Kartendarstellung: KlassenflÃ€che der BodenschÃ€tzung ohne Label.';
 
@@ -739,7 +607,6 @@
           bs.ackerzahlodergruenlandzahl 
         AS derlabel                -- LABELITEM, Umbruch am Leerzeichen
-   FROM ap_pto                            p
-   JOIN alkis_beziehungen                 v  ON p.gml_id       = v.beziehung_von
-   JOIN ax_bodenschaetzung                bs ON v.beziehung_zu = bs.gml_id
+   FROM ap_pto                                 p
+   JOIN ax_bodenschaetzung                     bs ON bs.gml_id = ANY(p.dientzurdarstellungvon)
    LEFT JOIN ax_bodenschaetzung_kulturart      ka ON bs.kulturart = ka.wert
    LEFT JOIN ax_bodenschaetzung_bodenart       ba ON bs.bodenart  = ba.wert
@@ -749,8 +616,9 @@
    LEFT JOIN ax_bodenschaetzung_entstehungsartoderklimastufe ea2 
           ON bs.entstehungsartoderklimastufewasserverhaeltnisse[2] = ea2.wert 
-  WHERE -- v.beziehungsart = 'dientZurDarstellungVon' AND 
-         p.endet  IS NULL
+  WHERE  p.endet  IS NULL
      AND bs.endet IS NULL;
-COMMENT ON VIEW s_bodensch_tx IS 'Sicht fÃŒr Kartendarstellung: Kompakter Label zur KlassenflÃ€che der BodenschÃ€tzung an manueller Position. Der Label wird zusammengesetzt aus: Bodenart, Zustandsstufe, Entstehungsart oder Klimastufe/WasserverhÃ€ltnisse, Bodenzahl oder GrÃŒnlandgrundzahl und Ackerzahl oder GrÃŒnlandzahl.';
+
+COMMENT ON VIEW s_bodensch_tx IS 'Sicht fÃŒr Kartendarstellung: Kompakter Label zur KlassenflÃ€che der BodenschÃ€tzung an manueller Position. 
+Der Label wird zusammengesetzt aus: Bodenart, Zustandsstufe, Entstehungsart oder Klimastufe/WasserverhÃ€ltnisse, Bodenzahl oder GrÃŒnlandgrundzahl und Ackerzahl oder GrÃŒnlandzahl.';
 
 -- Redundanz suchen:
Index: trunk/import/alkis_PostNAS_schema.sql
===================================================================
--- trunk/import/alkis_PostNAS_schema.sql	(revision 328)
+++ trunk/import/alkis_PostNAS_schema.sql	(revision 330)
@@ -4,47 +4,16 @@
 -- *****************************
 --
--- Datenbankstruktur PostNAS 0.7  (GDAL aus aktuellem Trunk)
+-- Datenbankstruktur PostNAS 0.8
 --
 
 -- Damit die Includes (\i) funktionieren muÃ psql im Verzeichnis ausgefÃŒhrt
--- werden in dem das Skript liegt. Z.B. per
--- (cd /pfad/zu/postnas; psql -f alkis_PostNAS_0.7_schema.sql)
-
--- Systemvariable vorher setzen fÃŒr das Koordinatensystem, z.B.
--- EPSG=25832
+-- werden in dem das Skript liegt, z.B. per
+-- (cd /pfad/zu/postnas; psql -f alkis_PostNAS_schema.sql)
+
+-- Variable fÃŒr das Koordinatensystem ÃŒbergeben mit "psql .. -v alkis_epsg=25832"
 
 
 -- Stand
 -- -----
-
--- 2012-04-23 FJ  Diff zum GDAL-Patch #4555 angewendet:
---                Siehe Mail J.E.Fischer in PostNAS-Liste vom 12.03.2012
---                - Alle Objekte bekommen "endet"-Feld.
---                - "beginnt" wird in die Unique-Constraint einbezogen.
---                - Feld 'identifier'.
---                - "character varying" durch "varchar" ersetzt.
---                - Keine direkten Ãnderungen an 'geometry_columns' (wegen PostGIS 2)
---                - DELETE:  Feld endet = aktuelle Zeit
---                - REPLACE: Feld endet = beginnt des ersetzenden Objektes
---                - "delete_feature()" ist nun ein Trigger
-
--- 2012-04-24 FJ  Datei alkis-funktions aus Diff zum GDAL-Patch #4555 hier integriert
---                Umschaltung mit/ohne Historie ÃŒber VerknÃŒpfung Trigger -> Function
---                Typ 'GEOMETRY' bei Tabellen: AX_WegPfadSteig, AX_UntergeordnetesGewaesser
-
--- 2012-10-31 FJ  Trigger fuer NAS-Replace-Saetze repariert:
---                siehe: FUNCTION delete_feature_kill()
---                ax_historischesflurstueck.buchungsart ist Text nicht integer.
-
--- 2012-10-31 AE  Tabellen lÃ¶schen wurde auskommetiert, DB wird leer angelegt SELECT alkis_drop();
-
--- ** zwischenzeitliche Ãnderungen: siehe Kommentare im SVN
-
--- 2013-01-15 FJ  Kommentare zu den letztlich hinzugekommenen Tabellen.
---                DarÃŒber kÃ¶nnen Tabellen aus diesem Script unterschieden werden 
---                von Tabellen, die PostNAS selbst generiert hat.
-
--- 2013-04-22 FJ  Tabelle ax_wirtschaftlicheeinheit, Kommentare ergÃ€nzt,
---                Felad "ax_historischesflurstueck.buchungsart" varchar statt integer
 
 -- 2013-07-10 FJ  Erweiterung alkis_beziehungen nach Vorschlag Marvin Brandt (Kreis Unna)
@@ -54,5 +23,5 @@
 -- 2014-01-24 FJ  Feld "ax_datenerhebung_punktort" in "Punktort/TA/AG/AU" nach Vorschlag Marvin Brandt (Kreis Unna)
 
--- 2014-01-29 FJ  Spalte "zeitpunktderentstehung" an allen Vorkommen auf Format "varchar".
+-- 2014-01-29 FJ  Spalte "zeitpunktderentstehung" an allen Vorkommen auf Format "character varying".
 --                Alte auskommentierte Varianten entrÃŒmpelt. 
 --                Tabs durch Space ersetzt und Code wieder hÃŒbsch ausgerichtet.
@@ -60,11 +29,27 @@
 -- 2014-01-31 FJ  Erweiterungen Marvin Brand (Unna) fuer sauberes Entfernen alter Beziehungen bei "replace".
 --                LÃ¶sung ÃŒber import_id.
+
 -- 2014-07-31 AE  kommentar auf geometry_columns entfernt - ist in PostGIS 2 keine Tabelle mehr
 
---  VERSIONS-NUMMER:
-
---  Dies Schema kann NICHT mehr mit der installierbaren gdal-Version 1.9 verwendet werden.
---  Derzeit muss ogr2ogr (gdal) aus den Quellen compiliert werden, die o.g. Patch #4555 enthalten.
---  WeiterfÃŒhrung dieses Zweiges als PostNAS 0.7
+-- 2014-08-27 FJ  Relationen-Verbindungs-Spalten direkt in den Objekt-Tabellen statt ÃŒber Tabelle "alkis_relationen".
+--                Ãbergangsweise wird beides gefÃŒhrt bis alle Programme und Views umgestellt wurden.
+--                Spalten "advstandardmodell" und "sonstigesmodell" sind immer ein Array ( character varying[] ).
+--                Beginn der Angleichung an die jetzt freie norBIT-Version:
+--                Kommentar zur Tabelle systematischer aufbauen.
+--                Zielformat: '[Objektbereich /] [Objektartengruppe]: ([N]REO|ZUSO) "Name" ist ...'
+
+-- 2014-09-04 FJ * Getestet mit ogr2ogr compiliert aus GDAL Revision 27631 (2.0.0dev)
+--               * Entfernen der Tabelle "alkis_beziehungen".
+--               * Anpassungen und Korrekturen zum Angleich an die Norbit-Version.
+--                 u.a.: land, stelle, strassenschluessel: varchar statt integer.
+--                 Dann konsequenterweise aber auch: regierungsbezirk, kreis, gemeinde, schluesselgesamt, bezirk.
+--                 Diese Felder werden von PostNAS als Integer generiert, wenn kein Schema vorgegeben wird.
+--                 Die Inhalte sind zwar numerisch, laut Objektartenkatalog sind das aber CharacterString.
+--               * Sortierung der Tabellen in dieser Datei nach Objektartengruppen + Kennung analog der Gliederung des Objektartenkatalogs.
+--                 Dies war in Vers. 0.7 begonnen aber noch nicht fertig gestellt worden.
+--               * Ãbernahme der Objektartengruppe in den Kommentar zur Tabelle.
+
+
+--  Dies Schema kann NICHT mehr mit der gdal-Version 1.9 verwendet werden.
 
 -- ALKIS-Dokumentation (NRW):
@@ -80,31 +65,37 @@
 
 -- T u n i n g :
---   Die Tabelle 'spatial_ref_sys' einer PostGIS-Datenbank auf
---   die notwendigen Koordinatensysteme reduzieren. Das Loescht >3000 Eintraege.
-
---  DELETE FROM spatial_ref_sys
---  WHERE srid NOT
---  IN (2397, 2398, 2399, 4326,    25830, 25831, 25832, 25833, 25834,  31466, 31467, 31468, 31469);
---  --  Krassowski        lat/lon  UTM                                 GK
+--   Vorschlag: Die Tabelle 'spatial_ref_sys' einer PostGIS-Datenbank auf
+--   die notwendigen Koordinatensysteme reduzieren. Das lÃ¶scht >3000 Eintraege.
+/*
+   DELETE FROM spatial_ref_sys
+   WHERE srid NOT
+   IN (2397, 2398, 2399, 4326,    25830, 25831, 25832, 25833, 25834,  31466, 31467, 31468, 31469);
+   --  Krassowski        lat/lon  UTM                                 GK
+*/
 
 -- Stored Procedures laden
 \i alkis-functions.sql
 
--- Alle Tabellen lÃ¶schen
---SELECT alkis_drop();
-
-
--- Importtabelle fÃŒr Verarbeitungen
+
+-- ===========================================================
+-- PostNAS-Hilfstabellen
+-- ===========================================================
+-- Diese sind kein Bestandteil des ALKIS-Objektartenkataloges.
+
+
+-- Importtabelle fÃŒr Verarbeitungs-ZÃ€hler.
+-- Wird benÃ¶tigt fÃŒr den Trigger zur Pflege der "alkis_beziehungen" (Version "Unna").
+-- Kann mit "alkis_beziehungen" entfallen, wenn alle Views und Programm umgestellt sind auf interne Relationen.
 CREATE TABLE import (
-  id serial NOT NULL,
-  datum timestamp without time zone,
-  verzeichnis text,
-  importart text,
-  CONSTRAINT import_pk PRIMARY KEY (id)
+  id           serial NOT NULL,
+  datum        timestamp without time zone,
+  verzeichnis  text,
+  importart    text,
+  CONSTRAINT   import_pk PRIMARY KEY (id)
 );
 
 CREATE UNIQUE INDEX import_id ON import USING btree (id);
 
-COMMENT ON TABLE  import             IS 'Verwaltung der Import-ProgrammlÃ€ufe. Wird nicht vom Konverter gefÃŒllt sondern aus der Start-Prozedur (z.B. konv_batch.sh).';
+COMMENT ON TABLE  import             IS 'PostNAS: Verwaltung der Import-ProgrammlÃ€ufe. Wird nicht vom Konverter gefÃŒllt sondern aus der Start-Prozedur (z.B. konv_batch.sh).';
 COMMENT ON COLUMN import.id          IS 'Laufende Nummer der Konverter-Datei-Verarbeitung. Der Max-Wert von "id" wird als "alkis_beziehungen.import_id" verwendet, um ein vollstÃ€ndiges LÃ¶schen alter Beziehungen zu ermÃ¶glichen.';
 COMMENT ON COLUMN import.datum       IS 'Zeitpunkt des Beginns des Konverter-Laufes fÃŒr einen Stapel von NAS-Dateien.';
@@ -112,23 +103,21 @@
 COMMENT ON COLUMN import.importart   IS 'Modus des Konverter-Laufes: e="Erstladen" oder a="NBA-Aktualisierung"';
 
--- Tabelle delete fÃŒr LÃ¶sch- und FortfÃŒhrungsdatensÃ€tze
+-- Tabelle "delete" fÃŒr LÃ¶sch- und FortfÃŒhrungsdatensÃ€tze
 CREATE TABLE "delete" (
      ogc_fid             serial NOT NULL,
-     typename            varchar,
-     featureid           character(32),
-     context             varchar,       -- delete/replace
-     safetoignore        varchar,       -- replace.safetoignore 'true'/'false'
-     replacedBy          varchar,       -- gmlid
+     typename            character varying,
+     featureid           character varying,
+     context             character varying,       -- delete/replace
+     safetoignore        character varying,       -- replace.safetoignore 'true'/'false'
+     replacedBy          character varying,       -- gmlid
      ignored             boolean DEFAULT false,   -- Satz wurde nicht verarbeitet
      CONSTRAINT delete_pk PRIMARY KEY (ogc_fid)
 );
 
-
--- Dummy-Eintrag in Metatabelle
 SELECT AddGeometryColumn('delete','dummy',:alkis_epsg,'POINT',2);
 
 CREATE UNIQUE INDEX delete_fid ON "delete"(featureid);
 
-COMMENT ON TABLE "delete"             IS 'Hilfstabelle fÃŒr das Speichern von LÃ¶schinformationen.';
+COMMENT ON TABLE "delete"             IS 'PostNAS: Hilfstabelle fÃŒr das Speichern von LÃ¶schinformationen.';
 COMMENT ON COLUMN delete.typename     IS 'Objektart, also Name der Tabelle, aus der das Objekt zu lÃ¶schen ist.';
 COMMENT ON COLUMN delete.featureid    IS 'Zusammen gesetzt aus GML-ID (16) und Zeitstempel.';
@@ -138,22 +127,18 @@
 COMMENT ON COLUMN delete.ignored      IS 'LÃ¶schsatz wurde ignoriert';
 
+
 -- B e z i e h u n g e n
 -- ----------------------------------------------
--- Zentrale Tabelle fuer alle Relationen im Buchwerk.
-
--- Statt Relationen und FOREIGN-KEY-CONSTRAINTS zwischen Tabellen direkt zu legen, gehen
--- in der ALKIS-Datenstruktur alle Beziehungen zwischen zwei Tabellen ÃŒber diese Verbindungstabelle.
-
+-- Zentrale Tabelle fuer alle Relationen im Buchwerk. ZukÃŒnftig  e n t f a l l e n d.
 -- Die FremdschlÃŒssel 'beziehung_von' und 'beziehung_zu' verweisen auf die ID des Objekte (gml_id).
 -- Das Feld 'gml_id' sollte daher in allen Tabellen indiziert werden.
-
 -- ZusÃ€tzlich enthÃ€lt 'beziehungsart' noch ein Verb fÃŒr die Art der Beziehung.
-
+/*
 CREATE TABLE alkis_beziehungen (
    ogc_fid          serial NOT NULL,
-   beziehung_von    character(16),   --> gml_id
-   beziehungsart    varchar,         --  Liste siehe unten
-   beziehung_zu     character(16),
-   import_id        integer,         -- 2014-01-31 
+   beziehung_von    character varying,
+   beziehungsart    character varying,
+   beziehung_zu     character varying,
+   import_id        integer,
    CONSTRAINT alkis_beziehungen_pk PRIMARY KEY (ogc_fid)
 );
@@ -163,320 +148,666 @@
 CREATE INDEX alkis_beziehungen_art_idx ON alkis_beziehungen USING btree (beziehungsart);
 
-
--- Dummy-Eintrag in Metatabelle
 SELECT AddGeometryColumn('alkis_beziehungen','dummy',:alkis_epsg,'POINT',2);
 
-COMMENT ON TABLE  alkis_beziehungen               IS 'zentrale Multi-Verbindungstabelle';
+COMMENT ON TABLE  alkis_beziehungen               IS 'PostNAS: zentrale Multi-Verbindungstabelle';
 COMMENT ON COLUMN alkis_beziehungen.beziehung_von IS 'Join auf Feld gml_id verschiedener Tabellen';
 COMMENT ON COLUMN alkis_beziehungen.beziehung_zu  IS 'Join auf Feld gml_id verschiedener Tabellen';
 COMMENT ON COLUMN alkis_beziehungen.beziehungsart IS 'Typ der Beziehung zwischen der von- und zu-Tabelle';
---MMENT ON COLUMN alkis_beziehungen.beginnt       IS 'Mit Trigger kopiertes Beginnt-Datum des Datensatzes auf der Seite beziehung_von';
 COMMENT ON COLUMN alkis_beziehungen.import_id     IS 'laufende Nummer des Konverter-Laufes aus "import.id".';
-
-
-
--- Beziehungsarten:
--- "an" "benennt" "bestehtAusRechtsverhaeltnissenZu" "beziehtSichAuchAuf" "dientZurDarstellungVon"
--- "durch" "gehoertAnteiligZu" "gehoertZu" "hat" "hatAuch" "istBestandteilVon"
--- "istGebucht" "istTeilVon" "weistAuf" "zeigtAuf" "zu"
-
--- Hinweis:
--- Diese Tabelle enthÃ€lt fÃŒr ein Kreisgebiet ca. 5 Mio. Zeilen und wird stÃ€ndig benutzt.
--- Optimierung z.B. ÃŒber passende Indices ist wichtig.
-
---
+*/
+
+-- S o n s t i g e s   B a u w e r k
+-- ----------------------------------
+-- Wird von PostNAS generiert, ist aber keiner Objektartengruppe zuzuordnen.
+CREATE TABLE ks_sonstigesbauwerk (
+     ogc_fid             serial NOT NULL,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     bauwerksfunktion    integer,
+     CONSTRAINT ks_sonstigesbauwerk_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ks_sonstigesbauwerk','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
+
+CREATE INDEX ks_sonstigesbauwerk_geom_idx ON ks_sonstigesbauwerk USING gist (wkb_geometry);
+
+COMMENT ON TABLE  ks_sonstigesbauwerk IS '??: (REO) "Sonstiges Bauwerk"';
+
+
 -- LÃ¶schtrigger setzen
---
+-- -------------------
+
 -- Option (A) ohne Historie:
---  - Symlink von alkis-trigger-kill.sql auf alkis-trigger.sql setzen (Default; macht datenbank_anlegen.sh
---    ggf. automatisch)
+--  - Symlink von alkis-trigger-kill.sql auf alkis-trigger.sql setzen 
+--    (Default; macht datenbank_anlegen.sh ggf. automatisch)
 --  - LÃ¶sch- und ÃnderungssÃ€tze werden ausgefÃŒhrt und die alten Objekte werden sofort entfernt
---
+
 -- Option (B) mit Historie:
 --  - Symlink von alkis-trigger-hist.sql auf alkis-trigger.sql setzen
---  - Bei LÃ¶sch- und ÃnderungssÃ€tzen werden die Objekte nicht gelÃ¶scht, sondern
---    im Feld 'endet' als ungegangen markiert (die den aktuellen gilt: WHERE endet
---    IS NULL)
---
+--  - Bei LÃ¶sch- und ÃnderungssÃ€tzen werden die Objekte nicht gelÃ¶scht, sondern im Feld 'endet' 
+--    als ungegangen markiert (FÃŒr aktuelle Objekte gilt: WHERE endet IS NULL)
+
 \i alkis-trigger.sql
 
--- COMMENT ON DATABASE *** IS 'ALKIS - PostNAS 0.7';
-
--- ===========================================================
---        A L K I S  -  L a y e r
--- ===========================================================
-
-
--- S o n s t i g e s   B a u w e r k
--- ----------------------------------
-CREATE TABLE ks_sonstigesbauwerk (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     sonstigesmodell     varchar,
-     anlass              varchar,
-     bauwerksfunktion    integer,
-     CONSTRAINT ks_sonstigesbauwerk_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ks_sonstigesbauwerk','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
-
-CREATE INDEX ks_sonstigesbauwerk_geom_idx ON ks_sonstigesbauwerk USING gist (wkb_geometry);
-
-COMMENT ON TABLE  ks_sonstigesbauwerk IS 'Sonstiges Bauwerk';
-
-
--- A n d e r e   F e s t l e g u n g   n a c h   W a s s e r r e c h t
--- --------------------------------------------------------------------
-CREATE TABLE ax_anderefestlegungnachwasserrecht (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     artderfestlegung    integer,
-     land                integer,
-     stelle              varchar,
-     CONSTRAINT ax_anderefestlegungnachwasserrecht_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_anderefestlegungnachwasserrecht','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
-
-CREATE INDEX ax_anderefestlegungnachwasserrecht_geom_idx ON ax_anderefestlegungnachwasserrecht USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_anderefestlegungnachwasserrecht_gml ON ax_anderefestlegungnachwasserrecht USING btree (gml_id,beginnt);
-CREATE INDEX ax_anderefestlegungnachwasserrecht_afs ON ax_anderefestlegungnachwasserrecht(land,stelle);
-
-COMMENT ON TABLE  ax_anderefestlegungnachwasserrecht        IS 'Andere Festlegung nach  W a s s e r r e c h t';
-COMMENT ON COLUMN ax_anderefestlegungnachwasserrecht.gml_id IS 'Identifikator, global eindeutig';
-
-
--- B a u b l o c k
--- ---------------------------------------------- Objektartengruppe: Administrative Gebietseinheiten
-CREATE TABLE ax_baublock (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   character(9),
-     anlass              varchar,
-     baublockbezeichnung integer,
-     CONSTRAINT ax_baublock_pk PRIMARY KEY (ogc_fid)
-);
-SELECT AddGeometryColumn('ax_baublock','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
-
-CREATE INDEX ax_baublock_geom_idx ON ax_baublock USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_baublock_gml ON ax_baublock USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_baublock        IS 'B a u b l o c k';
-COMMENT ON COLUMN ax_baublock.gml_id IS 'Identifikator, global eindeutig';
-
-
--- B e s o n d e r e r   T o p o g r a f i s c h e r   P u n k t
--- -------------------------------------------------------------
-CREATE TABLE ax_besonderertopographischerpunkt (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     land                integer,
-     stelle              integer,
-     punktkennung        varchar,
-     sonstigeeigenschaft varchar[],
-     CONSTRAINT ax_besonderertopographischerpunkt_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_besonderertopographischerpunkt','dummy',:alkis_epsg,'POINT',2);
-
-CREATE UNIQUE INDEX ax_besonderertopographischerpunkt_gml ON ax_besonderertopographischerpunkt USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_besonderertopographischerpunkt        IS 'B e s o n d e r e r   T o p o g r a f i s c h e r   P u n k t';
-COMMENT ON COLUMN ax_besonderertopographischerpunkt.gml_id IS 'Identifikator, global eindeutig';
-
-
--- S o l l 
--- -------
-CREATE TABLE ax_soll (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     name                varchar,
-     CONSTRAINT ax_soll_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_soll','wkb_geometry',:alkis_epsg,'POLYGON',2);
-
-CREATE INDEX ax_soll_geom_idx ON ax_soll USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_soll_gml ON ax_soll USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_soll        IS 'S o l l';
-COMMENT ON COLUMN ax_soll.gml_id IS 'Identifikator, global eindeutig';
-
-
--- B e w e r t u n g
--- ------------------
-CREATE TABLE ax_bewertung (
+
+--*** ############################################################
+--*** Objektbereich: AAA Basisschema
+--*** ############################################################
+
+--** Objektartengruppe: AAA_Praesentationsobjekte
+--   ===================================================================
+
+-- A P   P P O
+-- ----------------------------------------------
+-- Objektart: AP_PPO Kennung: 02310
+CREATE TABLE ap_ppo (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
-     klassifizierung          integer,
-     CONSTRAINT ax_bewertung_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_bewertung','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
-
-CREATE INDEX ax_bewertung_geom_idx   ON ax_bewertung USING gist  (wkb_geometry);
-CREATE UNIQUE INDEX ax_bewertung_gml ON ax_bewertung USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_bewertung        IS '"B e w e r t u n g"  ist die Klassifizierung einer FlÃ€che nach dem Bewertungsgesetz (BewertungsflÃ€che).';
-COMMENT ON COLUMN ax_bewertung.gml_id IS 'Identifikator, global eindeutig';
-
-COMMENT ON COLUMN ax_bewertung.klassifizierung IS '"Klassifizierung" ist die gesetzliche Klassifizierung nach dem Bewertungsgesetz.';
-
-
-
--- T a g e s a b s c h n i t t
--- ---------------------------
-CREATE TABLE ax_tagesabschnitt (
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
+
+     signaturnummer           character varying, -- ap_gpo
+     darstellungsprioritaet   integer,           -- ap_gpo
+     art                      character varying, -- ap_gpo
+
+     drehwinkel               double precision,
+	skalierung		     double precision,
+
+     -- Beziehungen:
+     dientzurdarstellungvon   character varying[], -- -> aa_objekt
+     CONSTRAINT ap_ppo_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ap_ppo','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POINT/MULTIPOLYGON
+
+CREATE        INDEX ap_ppo_geom_idx   ON ap_ppo USING gist  (wkb_geometry);
+CREATE UNIQUE INDEX ap_ppo_gml        ON ap_ppo USING btree (gml_id, beginnt);
+CREATE        INDEX ap_ppo_endet      ON ap_ppo USING btree (endet);
+CREATE        INDEX ap_ppo_dzdv       ON ap_ppo USING gin   (dientzurdarstellungvon);
+
+COMMENT ON TABLE  ap_ppo        IS 'AAA-PrÃ€sentationsobjekte: (REO) "PPO" PunktfÃ¶rmiges PrÃ€sentationsobjekt';
+COMMENT ON COLUMN ap_ppo.gml_id IS 'Identifikator, global eindeutig';
+
+-- ap_gpo:
+COMMENT ON COLUMN ap_ppo.signaturnummer IS 'SNR Signaturnummer gemÃ€Ã Signaturenkatalog. Die Signaturnummer wird nur dann angegeben, wenn fÃŒr einen Sachverhalt mehrere Signaturnummern zulÃ€ssig sind.';
+COMMENT ON COLUMN ap_ppo.darstellungsprioritaet IS 'DPR DarstellungsprioritÃ€t fÃŒr Elemente der Signatur. Eine gegenÃŒber den Festlegungen des Signaturenkatalogs abweichende PrioritÃ€t wird ÃŒber dieses Attribut definiert und nicht ÃŒber eine neue Signatur.';
+COMMENT ON COLUMN ap_ppo.art            IS 'ART "Art" gibt die Kennung des Attributs an, das mit dem PrÃ€sentationsobjekt dargestellt werden soll.';
+
+COMMENT ON COLUMN ap_ppo.drehwinkel     IS 'DWI Drehwinkel';
+COMMENT ON COLUMN ap_ppo.skalierung     IS 'SKA Skalierungsfaktor fÃŒr Symbole.';
+
+COMMENT ON COLUMN ap_ppo.dientzurdarstellungvon IS '-> Beziehung zu aa_objekt (0..*): Durch den Verweis auf einen Set beliebiger AFIS-ALKIS-ATKIS-Objekte gibt das PrÃ€sentationsobjekt an, zu wessen PrÃ€sentation es dient. Dieser Verweis kann fÃŒr FortfÃŒhrungen ausgenutzt werden oder zur UnterdrÃŒckung von StandardprÃ€sentationen der zugrundeliegenden ALKIS-ATKIS-Objekte.
+Ein Verweis auf ein AA_Objekt vom Typ AP_GPO ist nicht zugelassen.';
+
+
+-- A P   L P O
+-- ----------------------------------------------
+-- Objektart: AP_LPO Kennung: 02320
+CREATE TABLE ap_lpo (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
-     tagesabschnittsnummer    varchar,
-     CONSTRAINT ax_tagesabschnitt_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_tagesabschnitt','wkb_geometry',:alkis_epsg,'POLYGON',2);
-
-CREATE INDEX ax_tagesabschnitt_geom_idx   ON ax_tagesabschnitt USING gist  (wkb_geometry);
-CREATE UNIQUE INDEX ax_tagesabschnitt_gml ON ax_tagesabschnitt USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_tagesabschnitt        IS 'T a g e s a b s c h n i t t  der BodenschÃ€tzung.';
-COMMENT ON COLUMN ax_tagesabschnitt.gml_id IS 'Identifikator, global eindeutig';
-
-
--- D e n k m a l s c h u t z r e c h t
--- -----------------------------------
-CREATE TABLE ax_denkmalschutzrecht (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     artderfestlegung    integer,
-     land                integer,
-     stelle              varchar,
-     art                 varchar,
-     name                varchar,
-     CONSTRAINT ax_denkmalschutzrecht_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_denkmalschutzrecht','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
-
-CREATE INDEX ax_denkmalschutzrecht_geom_idx   ON ax_denkmalschutzrecht USING gist  (wkb_geometry);
-CREATE UNIQUE INDEX ax_denkmalschutzrecht_gml ON ax_denkmalschutzrecht USING btree (gml_id,beginnt);
-CREATE INDEX ax_denkmalschutzrecht_afs ON ax_denkmalschutzrecht(land,stelle);
-
-COMMENT ON TABLE  ax_denkmalschutzrecht        IS 'D e n k m a l s c h u t z r e c h t';
-COMMENT ON COLUMN ax_denkmalschutzrecht.gml_id IS 'Identifikator, global eindeutig';
-
-
--- F o r s t r e c h t
--- -------------------
-CREATE TABLE ax_forstrecht (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     artderfestlegung    integer,
-     besonderefunktion   integer,
-     land                integer,
-     stelle              varchar,
-     CONSTRAINT ax_forstrecht_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_forstrecht','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
-
-CREATE INDEX ax_forstrecht_geom_idx   ON ax_forstrecht USING gist  (wkb_geometry);
-CREATE UNIQUE INDEX ax_forstrecht_gml ON ax_forstrecht USING btree (gml_id,beginnt);
-CREATE INDEX ax_forstrecht_afs ON ax_forstrecht(land,stelle);
-
-COMMENT ON TABLE  ax_forstrecht        IS 'F o r s t r e c h t';
-COMMENT ON COLUMN ax_forstrecht.gml_id IS 'Identifikator, global eindeutig';
-
-
--- G e b Ã€ u d e a u s g e s t a l t u n g
--- -----------------------------------------
-CREATE TABLE ax_gebaeudeausgestaltung (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   character(4),
-     anlass              varchar,
-     darstellung         integer,
-   --zeigtauf            varchar,  -- alkis_beziehungen ?
-     CONSTRAINT ax_gebaeudeausgestaltung_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_gebaeudeausgestaltung','wkb_geometry',:alkis_epsg,'GEOMETRY',2);  -- LINESTRING/MULTILINESTRING
-
-CREATE INDEX ax_gebaeudeausgestaltung_geom_idx ON ax_gebaeudeausgestaltung USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_gebaeudeausgestaltung_gml ON ax_gebaeudeausgestaltung USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_gebaeudeausgestaltung        IS 'G e b Ã€ u d e a u s g e s t a l t u n g';
-COMMENT ON COLUMN ax_gebaeudeausgestaltung.gml_id IS 'Identifikator, global eindeutig';
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
+
+     signaturnummer           character varying, -- ap_gpo
+     darstellungsprioritaet   integer,           -- ap_gpo
+     art                      character varying, -- ap_gpo
+
+     -- Beziehungen:
+     dientzurdarstellungvon   character varying[], -- -> aa_objekt
+     CONSTRAINT ap_lpo_pk     PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ap_lpo','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- LINESTRING/MULTILINESTRING
+
+CREATE INDEX ap_lpo_geom_idx   ON ap_lpo USING gist  (wkb_geometry);
+CREATE UNIQUE INDEX ap_lpo_gml ON ap_lpo USING btree (gml_id, beginnt);
+CREATE INDEX ap_lpo_endet      ON ap_lpo USING btree (endet);
+CREATE INDEX ap_lpo_dzdv       ON ap_lpo USING gin   (dientzurdarstellungvon);
+
+COMMENT ON TABLE  ap_lpo        IS 'AAA-PrÃ€sentationsobjekte: (REO) "LPO" LinienfÃ¶rmiges PrÃ€sentationsobjekt';
+COMMENT ON COLUMN ap_lpo.gml_id IS 'Identifikator, global eindeutig';
+
+-- ap_gpo:
+COMMENT ON COLUMN ap_lpo.signaturnummer IS 'SNR Signaturnummer gemÃ€Ã Signaturenkatalog. Die Signaturnummer wird nur dann angegeben, wenn fÃŒr einen Sachverhalt mehrere Signaturnummern zulÃ€ssig sind.';
+COMMENT ON COLUMN ap_lpo.darstellungsprioritaet IS 'DPR DarstellungsprioritÃ€t fÃŒr Elemente der Signatur. Eine gegenÃŒber den Festlegungen des Signaturenkatalogs abweichende PrioritÃ€t wird ÃŒber dieses Attribut definiert und nicht ÃŒber eine neue Signatur.';
+COMMENT ON COLUMN ap_lpo.art            IS 'ART "Art" gibt die Kennung des Attributs an, das mit dem PrÃ€sentationsobjekt dargestellt werden soll.';
+
+COMMENT ON COLUMN ap_lpo.dientzurdarstellungvon IS '-> Beziehung zu aa_objekt (0..*): Durch den Verweis auf einen Set beliebiger AFIS-ALKIS-ATKIS-Objekte gibt das PrÃ€sentationsobjekt an, zu wessen PrÃ€sentation es dient. Dieser Verweis kann fÃŒr FortfÃŒhrungen ausgenutzt werden oder zur UnterdrÃŒckung von StandardprÃ€sentationen der zugrundeliegenden ALKIS-ATKIS-Objekte.
+Ein Verweis auf ein AA_Objekt vom Typ AP_GPO ist nicht zugelassen.';
+
+
+-- A P   P T O
+-- ----------------------------------------------
+-- Objektart: AP_PTO Kennung: 02341
+CREATE TABLE ap_pto (
+     ogc_fid                  serial NOT NULL,
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
+     beginnt                  character(20),
+     endet                    character(20),
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
+
+     schriftinhalt            character varying,  -- Label: anzuzeigender Text
+     fontsperrung             double precision,
+     skalierung               double precision,
+     horizontaleausrichtung   character varying,
+     vertikaleausrichtung     character varying,
+
+     signaturnummer           character varying, -- ap_gpo
+     darstellungsprioritaet   integer,           -- ap_gpo
+     art                      character varying, -- ap_gpo
+
+     drehwinkel               double precision,    -- falsche Masseinheit fÃŒr Mapserver, im View umrechnen
+     -- Beziehungen:
+     dientzurdarstellungvon   character varying[], -- -> aa_objekt
+     hat                      character varying,   -- -> ap_lpo
+     CONSTRAINT ap_pto_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ap_pto','wkb_geometry',:alkis_epsg,'POINT',2);
+
+CREATE INDEX ap_pto_geom_idx   ON ap_pto USING gist  (wkb_geometry);
+CREATE UNIQUE INDEX ap_pto_gml ON ap_pto USING btree (gml_id, beginnt);
+CREATE INDEX ap_pto_art_idx    ON ap_pto USING btree (art);
+CREATE INDEX ap_pto_endet_idx  ON ap_pto USING btree (endet);
+CREATE INDEX ap_pto_sn_idx     ON ap_pto USING btree (signaturnummer);
+CREATE INDEX ap_pto_dzdv       ON ap_pto USING gin   (dientzurdarstellungvon);
+CREATE INDEX ap_pto_hat        ON ap_pto USING btree (hat);
+
+COMMENT ON TABLE  ap_pto               IS 'AAA-PrÃ€sentationsobjekte: (REO) "PTO" TextfÃ¶rmiges PrÃ€sentationsobjekt mit punktfÃ¶rmiger Textgeometrie ';
+COMMENT ON COLUMN ap_pto.gml_id        IS 'Identifikator, global eindeutig';
+COMMENT ON COLUMN ap_pto.schriftinhalt IS 'SIT Label: anzuzeigender Text';
+
+COMMENT ON COLUMN ap_pto.fontsperrung  IS 'FSP Die Zeichensperrung steuert den zusÃ€tzlichen Raum, der zwischen 2 aufeinanderfolgende ZeichenkÃ¶rper geschoben wird.';
+COMMENT ON COLUMN ap_pto.skalierung    IS 'SKA Skalierungsfaktor fÃŒr die SchriftgrÃ¶Ãe.';
+COMMENT ON COLUMN ap_pto.horizontaleausrichtung IS 'FHA Gibt die Ausrichtung des Textes bezÃŒglich der Textgeometrie an. Wertearten: linksbÃŒndig, rechtsbÃŒndig, zentrisch';
+COMMENT ON COLUMN ap_pto.vertikaleausrichtung   IS 'FVA Die vertikale Ausrichtung eines Textes gibt an, ob die Bezugsgeometrie die Basis (Grundlinie) des Textes, die Mitte oder obere Buchstabenbegrenzung betrifft. Wertearten: Basis, Mitte, oben';
+
+-- ap_gpo:
+COMMENT ON COLUMN ap_pto.signaturnummer IS 'SNR Signaturnummer gemÃ€Ã Signaturenkatalog. Die Signaturnummer wird nur dann angegeben, wenn fÃŒr einen Sachverhalt mehrere Signaturnummern zulÃ€ssig sind.';
+COMMENT ON COLUMN ap_pto.darstellungsprioritaet IS 'DPR DarstellungsprioritÃ€t fÃŒr Elemente der Signatur. Eine gegenÃŒber den Festlegungen des Signaturenkatalogs abweichende PrioritÃ€t wird ÃŒber dieses Attribut definiert und nicht ÃŒber eine neue Signatur.';
+COMMENT ON COLUMN ap_pto.art            IS 'ART "Art" gibt die Kennung des Attributs an, das mit dem PrÃ€sentationsobjekt dargestellt werden soll.';
+
+COMMENT ON COLUMN ap_pto.dientzurdarstellungvon IS '-> Beziehung zu aa_objekt (0..*): Durch den Verweis auf einen Set beliebiger AFIS-ALKIS-ATKIS-Objekte gibt das PrÃ€sentationsobjekt an, zu wessen PrÃ€sentation es dient. Dieser Verweis kann fÃŒr FortfÃŒhrungen ausgenutzt werden oder zur UnterdrÃŒckung von StandardprÃ€sentationen der zugrundeliegenden ALKIS-ATKIS-Objekte.
+Ein Verweis auf ein AA_Objekt vom Typ AP_GPO ist nicht zugelassen.';
+COMMENT ON COLUMN ap_pto.hat           IS '-> Beziehung zu ap_lpo (0..1): Die Relation ermÃ¶glicht es, einem textfÃ¶rmigen PrÃ€sentationsobjekt ein linienfÃ¶rmiges PrÃ€sentationsobjekt zuzuweisen. Einziger bekannter Anwendungsfall ist der Zuordnungspfeil.
+Die Anwendung dieser Relation ist nur zugelassen, wenn sie im entsprechenden Signaturenkatalog beschrieben ist.';
+
+COMMENT ON INDEX ap_pto_art_idx        IS 'Suchindex auf hÃ€ufig benutztem Filterkriterium';
+
+
+-- A P   L T O
+-- ----------------------------------------------
+-- Objektart: AP_LTO Kennung: 02342
+CREATE TABLE ap_lto (
+     ogc_fid                  serial NOT NULL,
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
+     beginnt                  character(20),
+     endet                    character(20),
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
+     schriftinhalt            character varying,
+     fontsperrung             double precision,
+     skalierung               double precision,
+     horizontaleausrichtung   character varying,
+     vertikaleausrichtung     character varying,
+
+     signaturnummer           character varying, -- ap_gpo
+     darstellungsprioritaet   integer,           -- ap_gpo
+     art                      character varying, -- ap_gpo
+
+     -- Beziehungen:
+     dientzurdarstellungvon   character varying[], -- -> aa_objekt 
+     hat                      character varying,   -- -> ap_lpo
+     CONSTRAINT ap_lto_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ap_lto','wkb_geometry',:alkis_epsg,'LINESTRING',2);
+
+CREATE INDEX ap_lto_geom_idx   ON ap_lto USING gist  (wkb_geometry);
+CREATE UNIQUE INDEX ap_lto_gml ON ap_lto USING btree (gml_id, beginnt);
+CREATE INDEX ap_lto_dzdv       ON ap_lto USING gin   (dientzurdarstellungvon);
+CREATE INDEX ap_lto_endet_idx  ON ap_lto USING btree (endet);
+CREATE INDEX ap_lto_hat        ON ap_lto USING btree (hat);
+
+COMMENT ON TABLE  ap_lto        IS 'AAA-PrÃ€sentationsobjekte: (REO) "LTO" TextfÃ¶rmiges PrÃ€sentationsobjekt mit linienfÃ¶rmiger Textgeometrie';
+COMMENT ON COLUMN ap_lto.gml_id IS 'Identifikator, global eindeutig';
+
+-- ap_gpo:
+COMMENT ON COLUMN ap_lto.signaturnummer IS 'SNR Signaturnummer gemÃ€Ã Signaturenkatalog. Die Signaturnummer wird nur dann angegeben, wenn fÃŒr einen Sachverhalt mehrere Signaturnummern zulÃ€ssig sind.';
+COMMENT ON COLUMN ap_lto.darstellungsprioritaet IS 'DPR DarstellungsprioritÃ€t fÃŒr Elemente der Signatur. Eine gegenÃŒber den Festlegungen des Signaturenkatalogs abweichende PrioritÃ€t wird ÃŒber dieses Attribut definiert und nicht ÃŒber eine neue Signatur.';
+COMMENT ON COLUMN ap_lto.art            IS 'ART "Art" gibt die Kennung des Attributs an, das mit dem PrÃ€sentationsobjekt dargestellt werden soll.';
+
+COMMENT ON COLUMN ap_lto.dientzurdarstellungvon IS '-> Beziehung zu aa_objekt (0..*): Durch den Verweis auf einen Set beliebiger AFIS-ALKIS-ATKIS-Objekte gibt das PrÃ€sentationsobjekt an, zu wessen PrÃ€sentation es dient. Dieser Verweis kann fÃŒr FortfÃŒhrungen ausgenutzt werden oder zur UnterdrÃŒckung von StandardprÃ€sentationen der zugrundeliegenden ALKIS-ATKIS-Objekte.
+Ein Verweis auf ein AA_Objekt vom Typ AP_GPO ist nicht zugelassen.';
+COMMENT ON COLUMN ap_lto.hat    IS '-> Beziehung zu ap_lpo (0..1): Die Relation ermÃ¶glicht es, einem textfÃ¶rmigen PrÃ€sentationsobjekt ein linienfÃ¶rmiges PrÃ€sentationsobjekt zuzuweisen. Einziger bekannter Anwendungsfall ist der Zuordnungspfeil.
+Die Anwendung dieser Relation ist nur zugelassen, wenn sie im entsprechenden Signaturenkatalog beschrieben ist. ';
+
+
+-- A P  D a r s t e l l u n g
+-- ----------------------------------------------
+-- Objektart: AP_Darstellung Kennung: 02350
+CREATE TABLE ap_darstellung (
+     ogc_fid                  serial NOT NULL,
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
+     beginnt                  character(20), -- Datumsformat
+     endet                    character(20), -- Datumsformat
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
+
+     signaturnummer           character varying, -- ap_gpo
+     darstellungsprioritaet   integer,           -- ap_gpo
+     art                      character varying, -- ap_gpo
+
+     positionierungsregel     integer,
+     -- Beziehungen:
+     dientzurdarstellungvon   character varying[], -- -> aa_objekt
+     CONSTRAINT ap_darstellung_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ap_darstellung','dummy',:alkis_epsg,'POINT',2);
+
+CREATE UNIQUE INDEX ap_darstellung_gml ON ap_darstellung USING btree (gml_id, beginnt);
+CREATE INDEX ap_darstellung_endet_idx  ON ap_darstellung USING btree (endet);
+CREATE INDEX ap_darstellung_dzdv       ON ap_darstellung  USING gin  (dientzurdarstellungvon);
+
+COMMENT ON TABLE  ap_darstellung        IS 'AAA-PrÃ€sentationsobjekte: (NREO) "AP-Darstellung"';
+COMMENT ON COLUMN ap_darstellung.gml_id IS 'Identifikator, global eindeutig';
+
+-- ap_gpo:
+COMMENT ON COLUMN ap_darstellung.signaturnummer IS 'SNR Signaturnummer gemÃ€Ã Signaturenkatalog. Die Signaturnummer wird nur dann angegeben, wenn fÃŒr einen Sachverhalt mehrere Signaturnummern zulÃ€ssig sind.';
+COMMENT ON COLUMN ap_darstellung.darstellungsprioritaet IS 'DPR DarstellungsprioritÃ€t fÃŒr Elemente der Signatur. Eine gegenÃŒber den Festlegungen des Signaturenkatalogs abweichende PrioritÃ€t wird ÃŒber dieses Attribut definiert und nicht ÃŒber eine neue Signatur.';
+COMMENT ON COLUMN ap_darstellung.art            IS 'ART "Art" gibt die Kennung des Attributs an, das mit dem PrÃ€sentationsobjekt dargestellt werden soll.';
+
+COMMENT ON COLUMN ap_darstellung.positionierungsregel IS 'PNR In diesem Attribut wird durch Verweis auf eine Regel im Signaturenkatalog beschrieben, wie Signaturen zu positionieren sind. Eine Positionierungsregel definiert z.B. welchen Abstand BÃ€umchen in einem Wald haben und ob die Verteilung regelmÃ€Ãig oder zufÃ€llig ist.';
+
+COMMENT ON COLUMN ap_darstellung.dientzurdarstellungvon IS '-> Beziehung zu aa_objekt (0..*): Durch den Verweis auf einen Set beliebiger AFIS-ALKIS-ATKIS-Objekte gibt das PrÃ€sentationsobjekt an, zu wessen PrÃ€sentation es dient. Dieser Verweis kann fÃŒr FortfÃŒhrungen ausgenutzt werden oder zur UnterdrÃŒckung von StandardprÃ€sentationen der zugrundeliegenden ALKIS-ATKIS-Objekte.
+Ein Verweis auf ein AA_Objekt vom Typ AP_GPO ist nicht zugelassen.';
+
+
+--*** ############################################################
+--*** Objektbereich: FlurstÃŒcke, Lage, Punkte
+--*** ############################################################
+
+--** Objektartengruppe: Angaben zu Festpunkten der Landesvermessung
+
+--** Objektartengruppe: Angaben zum FlurstÃŒck
+--   ===================================================================
+
+-- F l u r s t u e c k
+-- ----------------------------------------------
+-- Objektart: AX_Flurstueck Kennung: 11001
+CREATE TABLE ax_flurstueck (
+     ogc_fid                          serial NOT NULL,
+     gml_id                           character varying NOT NULL,  -- Datenbank-Tabelle interner SchlÃŒssel
+
+     -- GID: AX_Flurstueck_Kerndaten
+     -- 'FlurstÃŒck_Kerndaten' enthÃ€lt Eigenschaften des FlurstÃŒcks, die auch fÃŒr andere FlurstÃŒcksobjektarten gelten (z.B. Historisches FlurstÃŒck).
+     land                             character varying,  --
+     gemarkungsnummer                 character varying,     --
+     flurnummer                       integer,                -- Teile des FlurstÃŒckskennzeichens
+     zaehler                          integer,              --    (redundant zu flurstueckskennzeichen)
+     nenner                           integer,            --
+     flurstuecksfolge                 character varying,
+     -- daraus abgeleitet:
+     flurstueckskennzeichen           character(20),      -- Inhalt rechts mit __ auf 20 aufgefÃŒllt
+     amtlicheflaeche                  double precision,                   -- AFL
+     abweichenderrechtszustand        character varying DEFAULT 'false',  -- ARZ
+     rechtsbehelfsverfahren           character varying DEFAULT 'false',  -- RBV
+     zweifelhafterFlurstuecksnachweis character varying DEFAULT 'false',  -- ZFM Boolean
+     zeitpunktderentstehung           character varying,                  -- ZDE  Inhalt jjjj-mm-tt  besser Format date ?
+     gemeinde                         character varying,
+     -- GID: ENDE AX_Flurstueck_Kerndaten
+
+     identifier                       character varying,
+     beginnt                          character(20),         -- Timestamp der Entstehung
+     endet                            character(20),         -- Timestamp des Untergangs
+     advstandardmodell                character varying[],   -- steuert die Darstellung nach Kartentyp
+     sonstigesmodell                  character varying[],
+     anlass                           character varying,
+     name                             character varying[],
+     regierungsbezirk                 character varying,
+     kreis                            character varying,
+     stelle                           character varying[],
+     angabenzumabschnittflurstueck    character varying[],
+     kennungschluessel                character varying[],
+     flaechedesabschnitts             double precision[],
+     angabenzumabschnittnummeraktenzeichen integer[],
+     angabenzumabschnittbemerkung     character varying[],
+     -- Beziehungen:
+--   beziehtsichaufflurstueck         character varying[], -- <- ax_flurstueck (invers)
+     zeigtauf                         character varying[], -- -> ax_lagebezeichnungohnehausnummer 
+     istgebucht                       character varying,   -- -> ax_buchungsstelle 
+     weistauf                         character varying[], -- -> ax_lagebezeichnungmithausnummer 
+     gehoertanteiligzu                character varying[], -- -> ax_flurstueck
+     CONSTRAINT ax_flurstueck_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_flurstueck','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
+
+CREATE INDEX ax_flurstueck_geom_idx   ON ax_flurstueck USING gist  (wkb_geometry);
+CREATE UNIQUE INDEX ax_flurstueck_gml ON ax_flurstueck USING btree (gml_id, beginnt);
+CREATE INDEX ax_flurstueck_lgfzn      ON ax_flurstueck USING btree (land, gemarkungsnummer, flurnummer, zaehler, nenner);
+CREATE INDEX ax_flurstueck_arz        ON ax_flurstueck USING btree (abweichenderrechtszustand);
+
+--EATE INDEX ax_flurstueck_bsaf       ON ax_flurstueck USING gin   (beziehtsichaufflurstueck);
+CREATE INDEX ax_flurstueck_gaz        ON ax_flurstueck USING gin   (gehoertanteiligzu);
+CREATE INDEX ax_flurstueck_ig         ON ax_flurstueck USING btree (istgebucht);
+CREATE INDEX ax_flurstueck_kennz      ON ax_flurstueck USING btree (flurstueckskennzeichen);
+CREATE INDEX ax_flurstueck_wa         ON ax_flurstueck USING gin   (weistauf);
+CREATE INDEX ax_flurstueck_za         ON ax_flurstueck USING gin   (zeigtauf);
+
+COMMENT ON TABLE  ax_flurstueck               IS 'Angaben zum FlurstÃŒck: (REO) "FlurstÃŒck" ist ein Teil der ErdoberflÃ€che, der von einer im Liegenschaftskataster festgelegten Grenzlinie umschlossen und mit einer Nummer bezeichnet ist. Es ist die Buchungseinheit des Liegenschaftskatasters.';
+COMMENT ON COLUMN ax_flurstueck.gml_id        IS 'Identifikator, global eindeutig';
+
+COMMENT ON COLUMN ax_flurstueck.flurnummer    IS 'FLN "Flurnummer" ist die von der KatasterbehÃ¶rde zur eindeutigen Bezeichnung vergebene Nummer einer Flur, die eine Gruppe von zusammenhÃ€ngenden FlurstÃŒcken innerhalb einer Gemarkung umfasst.';
+COMMENT ON COLUMN ax_flurstueck.zaehler       IS 'ZAE  Dieses Attribut enthÃ€lt den ZÃ€hler der FlurstÃŒcknummer';
+COMMENT ON COLUMN ax_flurstueck.nenner        IS 'NEN  Dieses Attribut enthÃ€lt den Nenner der FlurstÃŒcknummer';
+COMMENT ON COLUMN ax_flurstueck.flurstueckskennzeichen IS '"FlurstÃŒckskennzeichen" ist ein von der KatasterbehÃ¶rde zur eindeutigen Bezeichnung des FlurstÃŒcks vergebenes Ordnungsmerkmal.
+Die Attributart setzt sich aus den nachfolgenden expliziten Attributarten in der angegebenen Reihenfolge zusammen:
+ 1.  Land (2 Stellen)
+ 2.  Gemarkungsnummer (4 Stellen)
+ 3.  Flurnummer (3 Stellen)
+ 4.  FlurstÃŒcksnummer
+ 4.1 ZÃ€hler (5 Stellen)
+ 4.2 Nenner (4 Stellen)
+ 5.  FlurstÃŒcksfolge (2 Stellen)
+Die Elemente sind rechtsbÃŒndig zu belegen, fehlende Stellen sind mit fÃŒhrenden Nullen zu belegen.
+Da die Flurnummer und die FlurstÃŒcksfolge optional sind, sind aufgrund der bundeseinheitlichen Definition im FlurstÃŒckskennzeichen die entsprechenden Stellen, sofern sie nicht belegt sind, durch Unterstrich "_" ersetzt.
+Gleiches gilt fÃŒr FlurstÃŒcksnummern ohne Nenner, hier ist der fehlende Nenner im FlurstÃŒckskennzeichen durch Unterstriche zu ersetzen.';
+COMMENT ON COLUMN ax_flurstueck.amtlicheflaeche           IS 'AFL "Amtliche FlÃ€che" ist der im Liegenschaftskataster festgelegte FlÃ€cheninhalt des FlurstÃŒcks in [qm]. FlurstÃŒcksflÃ€chen kleiner 0,5 qm kÃ¶nnen mit bis zu zwei Nachkommastellen gefÃŒhrt werden, ansonsten ohne Nachkommastellen.';
+COMMENT ON COLUMN ax_flurstueck.abweichenderrechtszustand IS 'ARZ "Abweichender Rechtszustand" ist ein Hinweis darauf, dass auÃerhalb des Grundbuches in einem durch Gesetz geregelten Verfahren der Bodenordnung (siehe Objektart "Bau-, Raum- oder Bodenordnungsrecht", AA "Art der Festlegung", Werte 1750, 1770, 2100 bis 2340) ein neuer Rechtszustand eingetreten ist und das amtliche Verzeichnis der jeweiligen ausfÃŒhrenden Stelle maÃgebend ist.';
+COMMENT ON COLUMN ax_flurstueck.zweifelhafterFlurstuecksnachweis IS 'ZFM "Zweifelhafter FlurstÃŒcksnachweis" ist eine Kennzeichnung eines FlurstÃŒcks, dessen Angaben nicht zweifelsfrei berichtigt werden kÃ¶nnen.';
+COMMENT ON COLUMN ax_flurstueck.rechtsbehelfsverfahren    IS 'RBV "Rechtsbehelfsverfahren" ist der Hinweis darauf, dass bei dem FlurstÃŒck ein laufendes Rechtsbehelfsverfahren anhÃ€ngig ist.';
+COMMENT ON COLUMN ax_flurstueck.zeitpunktderentstehung    IS 'ZDE "Zeitpunkt der Entstehung" ist der Zeitpunkt, zu dem das FlurstÃŒck fachlich entstanden ist.';
+COMMENT ON COLUMN ax_flurstueck.gemeinde                  IS 'Gemeindekennzeichen zur Zuordnung der FlustÃŒcksdaten zu einer Gemeinde.';
+COMMENT ON COLUMN ax_flurstueck.name                      IS 'Array mit FortfÃŒhrungsjahr und -Nummer';
+COMMENT ON COLUMN ax_flurstueck.regierungsbezirk          IS 'Regierungsbezirk';
+COMMENT ON COLUMN ax_flurstueck.kreis                     IS 'Kreis';
+-- COMMENT ON COLUMN ax_flurstueck.beziehtsichaufflurstueck  IS '<- Beziehung zu ax_flurstueck (0..*):
+-- Es handelt sich um die inverse Relationsrichtung.';
+COMMENT ON COLUMN ax_flurstueck.zeigtauf                  IS '-> Beziehung zu ax_lagebezeichnungohnehausnummer (0..*): ''FlurstÃŒck'' zeigt auf ''Lagebezeichnung ohne Hausnummer''.';
+COMMENT ON COLUMN ax_flurstueck.istgebucht                IS '-> Beziehung zu ax_buchungsstelle (1): Ein (oder mehrere) FlurstÃŒck(e) ist (sind) unter genau einer Buchungsstelle gebucht. Bei Anteilsbuchungen ist dies nur dann mÃ¶glich, wenn ein fiktives Buchungsblatt angelegt wird. Wird ein fiktives Buchunsblatt verwendet, ist die KardinalitÃ€t dieser Attributart 1..1.';
+COMMENT ON COLUMN ax_flurstueck.weistauf                  IS '-> Beziehung zu ax_lagebezeichnungmithausnummer (0..*): ''FlurstÃŒck'' weist auf ''Lagebezeichnung mit Hausnummer''.';
+COMMENT ON COLUMN ax_flurstueck.gehoertanteiligzu         IS '-> Beziehung zu ax_flurstueck (0..*): ''FlurstÃŒck'' gehÃ¶rt anteilig zu ''FlurstÃŒck''. Die Relationsart kommt nur vor bei FlurstÃŒcken, die eine Relation zu einer Buchungsstelle mit einer der Buchungsarten Anliegerweg, Anliegergraben oder Anliegerwasserlauf aufweisen.';
+
+COMMENT ON INDEX  ax_flurstueck_kennz                     IS 'Suche nach FlurstÃŒckskennzeichen';
+
+
+-- B e s o n d e r e   F l u r s t u e c k s g r e n z e
+-- -----------------------------------------------------
+-- Objektart: AX_BesondereFlurstuecksgrenze Kennung: 11002
+CREATE TABLE ax_besondereflurstuecksgrenze (
+     ogc_fid                  serial NOT NULL,
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
+     beginnt                  character(20),
+     endet                    character(20),
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
+     artderflurstuecksgrenze  integer[],
+     CONSTRAINT ax_besondereflurstuecksgrenze_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_besondereflurstuecksgrenze','wkb_geometry',:alkis_epsg,'LINESTRING',2);
+
+CREATE        INDEX ax_besondereflurstuecksgrenze_geom_idx  ON ax_besondereflurstuecksgrenze USING gist  (wkb_geometry);
+CREATE UNIQUE INDEX ax_besondereflurstuecksgrenze_gml       ON ax_besondereflurstuecksgrenze USING btree (gml_id, beginnt);
+CREATE        INDEX ax_besondereflurstuecksgrenze_adfg      ON ax_besondereflurstuecksgrenze USING gin   (artderflurstuecksgrenze);
+
+COMMENT ON TABLE  ax_besondereflurstuecksgrenze        IS 'Angaben zum FlurstÃŒck: (REO) "Besondere FlurstÃŒcksgrenze" ist ein Teil der Grenzlinie eines FlurstÃŒcks, der von genau zwei benachbarten Grenzpunkten begrenzt wird und fÃŒr den besondere Informationen vorliegen.';
+COMMENT ON COLUMN ax_besondereflurstuecksgrenze.gml_id IS 'Identifikator, global eindeutig';
+
+
+-- G r e n z p u n k t
+-- ----------------------------------------------
+-- Objektart: AX_Grenzpunkt Kennung: 11003
+CREATE TABLE ax_grenzpunkt (
+     ogc_fid                  serial NOT NULL,
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
+     beginnt                  character(20),
+     endet                    character(20),
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
+     punktkennung             character varying,
+     land                     character varying,
+     stelle                   character varying,
+     abmarkung_marke          integer,
+     festgestelltergrenzpunkt character varying,
+     besonderepunktnummer     character varying,
+     bemerkungzurabmarkung    integer,
+     sonstigeeigenschaft      character varying[],
+     art                      character varying,
+     name                     character varying[],
+     zeitpunktderentstehung   character varying,
+     relativehoehe            double precision,
+     -- Beziehungen:
+     zeigtauf                 character varying, -- -> ax_grenzpunkt
+     CONSTRAINT ax_grenzpunkt_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_grenzpunkt','dummy',:alkis_epsg,'POINT',2);
+
+CREATE UNIQUE INDEX ax_grenzpunkt_gml ON ax_grenzpunkt USING btree (gml_id, beginnt);
+CREATE INDEX ax_grenzpunkt_abmm ON ax_grenzpunkt USING btree (abmarkung_marke);
+CREATE INDEX ax_grenzpunkt_za   ON ax_grenzpunkt USING btree (zeigtauf);
+
+COMMENT ON TABLE  ax_grenzpunkt        IS 'Angaben zum FlurstÃŒck: (ZUSO) "Grenzpunkt" ist ein den Grenzverlauf bestimmender, meist durch Grenzzeichen gekennzeichneter Punkt.';
+COMMENT ON COLUMN ax_grenzpunkt.gml_id IS 'Identifikator, global eindeutig';
+
+COMMENT ON COLUMN ax_grenzpunkt.zeigtauf IS '-> Beziehung zu ax_grenzpunkt (0..1): Ein von der Geometrie der FlurstÃŒcksflÃ€che abweichender ''Grenzpunkt'' (Sonderfall des indirekt abgemarkten Grenzpunktes) zeigt auf einen ''Grenzpunkt'', der in der FlurstÃŒcksgrenze liegt.';
+
+
+--** Objektartengruppe: Angaben zur Lage
+--   ===================================================================
+
+-- L a g e b e z e i c h n u n g   o h n e   H a u s n u m m e r
+-- -------------------------------------------------------------
+-- Objektart: AX_LagebezeichnungOhneHausnummer Kennung: 12001
+CREATE TABLE ax_lagebezeichnungohnehausnummer (
+     ogc_fid                  serial NOT NULL,
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
+     beginnt                  character(20),
+     endet                    character(20),
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
+     unverschluesselt         character varying, -- Gewanne
+     land                     character varying, 
+     regierungsbezirk         character varying,
+     kreis                    character varying,
+     gemeinde                 character varying,
+     lage                     character varying, -- Strassenschluessel
+     zusatzzurlagebezeichnung character varying,
+     -- Beziehungen:
+--   beschreibt character varying[],  -- <- ax_historischesflurstueckohneraumbezug 
+--   gehoertzu character varying[],   -- <- ax_flurstueck 
+     CONSTRAINT ax_lagebezeichnungohnehausnummer_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_lagebezeichnungohnehausnummer','dummy',:alkis_epsg,'POINT',2);
+
+CREATE UNIQUE INDEX ax_lagebezeichnungohnehausnummer_gml ON ax_lagebezeichnungohnehausnummer USING btree (gml_id, beginnt);
+CREATE INDEX ax_lagebezeichnungohnehausnummer_key        ON ax_lagebezeichnungohnehausnummer USING btree (land, regierungsbezirk, kreis, gemeinde,lage);
+--EATE INDEX ax_lagebezeichnungohnehausnummer_beschreibt ON ax_lagebezeichnungohnehausnummer USING gin (beschreibt);
+--EATE INDEX ax_lagebezeichnungohnehausnummer_gehoertzu  ON ax_lagebezeichnungohnehausnummer USING gin (gehoertzu);
+
+COMMENT ON TABLE  ax_lagebezeichnungohnehausnummer        IS 'Angaben zur Lage: (NREO) "Lagebezeichnung ohne Hausnummer" ist die ortsÃŒbliche oder amtlich festgesetzte Benennung der Lage von FlurstÃŒcken, die keine Hausnummer haben (z.B. Namen und Bezeichnungen von Gewannen, StraÃen, GewÃ€ssern).';
+COMMENT ON COLUMN ax_lagebezeichnungohnehausnummer.gml_id IS 'Identifikator, global eindeutig';
+
+COMMENT ON COLUMN ax_lagebezeichnungohnehausnummer.land       IS 'SchlÃŒssel des Bundeslandes';
+COMMENT ON COLUMN ax_lagebezeichnungohnehausnummer.regierungsbezirk IS 'SchlÃŒssel des Regierungsbezirkes im Bundesland';
+COMMENT ON COLUMN ax_lagebezeichnungohnehausnummer.kreis      IS 'SchlÃŒssel des Kreises im Regierungsbezirkes';
+COMMENT ON COLUMN ax_lagebezeichnungohnehausnummer.gemeinde   IS 'SchlÃŒssel der Gemeinde im Kreis';
+COMMENT ON COLUMN ax_lagebezeichnungohnehausnummer.lage       IS 'StraÃenschlÃŒssel in der Gemeinde';
+--MMENT ON COLUMN ax_lagebezeichnungohnehausnummer.zusatzzurlagebezeichnung IS '__';
+
+--COMMENT ON COLUMN ax_lagebezeichnungohnehausnummer.beschreibt IS '<- Beziehung zu ax_historischesflurstueckohneraumbezug (0..*):
+--Es handelt sich um die inverse Relationsrichtung.';
+--COMMENT ON COLUMN ax_lagebezeichnungohnehausnummer.gehoertzu  IS '<- Beziehung zu ax_flurstueck (1..*): Eine ''Lagebezeichnung ohne Hausnummer'' gehÃ¶rt zu einem oder mehreren ''FlurstÃŒcken''.
+--Es handelt sich um die inverse Relationsrichtung.';
+
+
+-- L a g e b e z e i c h n u n g   m i t   H a u s n u m m e r
+-- -----------------------------------------------------------
+-- Objektart: AX_LagebezeichnungOhneHausnummer Kennung: 12001
+CREATE TABLE ax_lagebezeichnungmithausnummer (
+     ogc_fid             serial NOT NULL,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     land                character varying,
+     regierungsbezirk    character varying,
+     kreis               character varying,
+     gemeinde            character varying,
+     lage                character varying,   -- Strassenschluessel
+     hausnummer          character varying,   -- Nummer (blank) Zusatz
+     -- Beziehungen:
+--   hat                 character varying[], -- <- ax_historischesflurstueckohneraumbezug 
+--   beziehtsichauf      character varying,   -- <- ax_gebaeude
+--   beziehtsichauchauf  character varying,   -- <- ax_georeferenziertegebaeudeadresse
+--   gehoertzu           character varying[], -- <- ax_flurstueck 
+--   weistzum            character varying,   -- <- ax_turm 
+     CONSTRAINT ax_lagebezeichnungmithausnummer_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_lagebezeichnungmithausnummer','dummy',:alkis_epsg,'POINT',2);
+
+CREATE UNIQUE INDEX ax_lagebezeichnungmithausnummer_gml ON ax_lagebezeichnungmithausnummer USING btree (gml_id, beginnt);
+CREATE INDEX ax_lagebezeichnungmithausnummer_lage       ON ax_lagebezeichnungmithausnummer USING btree (gemeinde, lage);
+--EATE INDEX ax_lagebezeichnungmithausnummer_hat        ON ax_lagebezeichnungmithausnummer USING gin   (hat);
+--EATE INDEX ax_lagebezeichnungmithausnummer_bsa        ON ax_lagebezeichnungmithausnummer USING btree (beziehtsichauf);
+--EATE INDEX ax_lagebezeichnungmithausnummer_bsaa       ON ax_lagebezeichnungmithausnummer USING btree (beziehtsichauchauf);
+--EATE INDEX ax_lagebezeichnungmithausnummer_gehoertzu  ON ax_lagebezeichnungmithausnummer USING gin   (gehoertzu);
+--EATE INDEX ax_lagebezeichnungmithausnummer_weistzum   ON ax_lagebezeichnungmithausnummer USING btree (weistzum);
+
+COMMENT ON TABLE  ax_lagebezeichnungmithausnummer       IS 'Angaben zur Lage: (NREO) "Lagebezeichnung mit Hausnummer" ist die ortsÃŒbliche oder amtlich festgesetzte Benennung der Lage von FlurstÃŒcken und GebÃ€uden, die eine Lagebezeichnung mit Hausnummer haben.';
+-- Hinweis zur Ableitung einer punktfÃ¶rmigen Geometrie zur Verortung der Hausnummer:
+-- Bei einer abweichenden Positionierung von der Standardposition liegt ein PrÃ€sentationsobjekt (Text) vor aus dem diese abgeleitet werden kann.
+COMMENT ON COLUMN ax_lagebezeichnungmithausnummer.gml_id IS 'Identifikator, global eindeutig';
+
+COMMENT ON COLUMN ax_lagebezeichnungmithausnummer.land       IS 'SchlÃŒssel des Bundeslandes';
+COMMENT ON COLUMN ax_lagebezeichnungmithausnummer.regierungsbezirk IS 'SchlÃŒssel des Regierungsbezirkes im Bundesland';
+COMMENT ON COLUMN ax_lagebezeichnungmithausnummer.kreis      IS 'SchlÃŒssel des Kreises im Regierungsbezirkes';
+COMMENT ON COLUMN ax_lagebezeichnungmithausnummer.gemeinde   IS 'SchlÃŒssel der Gemeinde im Kreis';
+COMMENT ON COLUMN ax_lagebezeichnungmithausnummer.lage       IS 'StraÃenschlÃŒssel in der Gemeinde';
+COMMENT ON COLUMN ax_lagebezeichnungmithausnummer.hausnummer IS 'Hausnummer und Hausnummernzusatz';
+
+--COMMENT ON COLUMN ax_lagebezeichnungmithausnummer.hat IS '<- Beziehung zu ax_historischesflurstueckohneraumbezug (0..*):
+--Es handelt sich um die inverse Relationsrichtung.';
+--COMMENT ON COLUMN ax_lagebezeichnungmithausnummer.beziehtsichauf IS '<- Beziehung zu ax_gebaeude (0..1): Eine ''Lagebezeichnung mit Hausnummer'' bezieht sich auf ein ''GebÃ€ude''.
+--Es handelt sich um die inverse Relationsrichtung.';
+--COMMENT ON COLUMN ax_lagebezeichnungmithausnummer.beziehtsichauchauf IS '<- Beziehung zu ax_georeferenziertegebaeudeadresse (0..1):
+--Es handelt sich um die inverse Relationsrichtung.';
+--COMMENT ON COLUMN ax_lagebezeichnungmithausnummer.gehoertzu IS '<- Beziehung zu ax_flurstueck (1..*): Eine ''Lagebezeichnung mit Hausnummer'' gehÃ¶rt zu einem oder mehreren ''FlurstÃŒcken''.
+--Es handelt sich um die inverse Relationsrichtung.';
+--COMMENT ON COLUMN ax_lagebezeichnungmithausnummer.weistzum IS '<- Beziehung zu ax_turm (0..1): Eine ''Lagebezeichnung mit Hausnummer'' weist zum ''Turm''.
+--Es handelt sich um die inverse Relationsrichtung.';
+
+
+-- L a g e b e z e i c h n u n g   m i t  P s e u d o n u m m e r
+-- --------------------------------------------------------------
+-- Objektart: AX_LagebezeichnungMitPseudonummer Kennung: 12003
+-- NebengebÃ€ude: lfd-Nummer eines NebengebÃ€udes zu einer (Pseudo-) Hausnummer
+CREATE TABLE ax_lagebezeichnungmitpseudonummer (
+     ogc_fid             serial NOT NULL,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     land                character varying,
+     regierungsbezirk    character varying,
+     kreis               character varying,
+     gemeinde            character varying,
+     lage                character varying, -- Strassenschluessel
+     pseudonummer        character varying,
+     laufendenummer      character varying, -- leer, Zahl, "P2"
+     -- Beziehungen:
+--   gehoertzu character varying, -- <- ax_gebaeude
+     CONSTRAINT ax_lagebezeichnungmitpseudonummer_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_lagebezeichnungmitpseudonummer','dummy',:alkis_epsg,'POINT',2);
+
+CREATE UNIQUE INDEX ax_lagebezeichnungmitpseudonummer_gml ON ax_lagebezeichnungmitpseudonummer USING btree (gml_id, beginnt);
+--EATE INDEX ax_lagebezeichnungmitpseudonummer_gehoertzu ON ax_lagebezeichnungmitpseudonummer USING btree (gehoertzu);
+
+COMMENT ON TABLE  ax_lagebezeichnungmitpseudonummer        IS 'Angaben zur Lage: (NREO) "Lagebezeichnung mit Pseudonummer" ist die von der KatasterbehÃ¶rde fÃŒr ein bestehendes oder geplantes GebÃ€ude vergebene Lagebezeichnung und ggf. einem Adressierungszusatz, wenn von der Gemeinde fÃŒr das GebÃ€ude keine Lagebezeichnung mit Hausnummer vergeben wurde (z.B. Kirche, NebengebÃ€ude).';
+-- Dies sind die NebengebÃ€ude, die zu einen HauptgebÃ€ude (mit Hausnummer) durchnummeriert sind.
+COMMENT ON COLUMN ax_lagebezeichnungmitpseudonummer.gml_id IS 'Identifikator, global eindeutig';
+
+COMMENT ON COLUMN ax_lagebezeichnungmitpseudonummer.land       IS 'SchlÃŒssel des Bundeslandes';
+COMMENT ON COLUMN ax_lagebezeichnungmitpseudonummer.regierungsbezirk IS 'SchlÃŒssel des Regierungsbezirkes im Bundesland';
+COMMENT ON COLUMN ax_lagebezeichnungmitpseudonummer.kreis      IS 'SchlÃŒssel des Kreises im Regierungsbezirkes';
+COMMENT ON COLUMN ax_lagebezeichnungmitpseudonummer.gemeinde   IS 'SchlÃŒssel der Gemeinde im Kreis';
+COMMENT ON COLUMN ax_lagebezeichnungmitpseudonummer.lage       IS 'StraÃenschlÃŒssel in der Gemeinde';
+
+COMMENT ON COLUMN ax_lagebezeichnungmitpseudonummer.pseudonummer   IS '(Pseudo-) Hausnummer des zugehÃ¶rigen HauptgebÃ€udes';
+COMMENT ON COLUMN ax_lagebezeichnungmitpseudonummer.laufendenummer IS 'laufende Nummer des NebengebÃ€udes';
+
+--COMMENT ON COLUMN ax_lagebezeichnungmitpseudonummer.gehoertzu IS '<- Beziehung zu ax_gebaeude (1): Eine ''Lagebezeichnung mit Pseudonummer'' gehÃ¶rt zu einem ''GebÃ€ude''.
+--Es handelt sich um die inverse Relationsrichtung.';
 
 
 -- Georeferenzierte  G e b Ã€ u d e a d r e s s e
 -- ----------------------------------------------
+-- Objektart: AX_GeoreferenzierteGebaeudeadresse Kennung: 12006
 CREATE TABLE ax_georeferenziertegebaeudeadresse (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
      beginnt             character(20), -- Inhalt z.B. "2008-06-10T15:19:17Z"
      endet               character(20), -- Inhalt z.B. "2008-06-10T15:19:17Z"
      -- ISO: waere  "2008-06-10 15:19:17-00", timestamp-Format wird nicht geladen, bleibt leer
-     advstandardmodell   varchar,
-     anlass              varchar,
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      qualitaetsangaben   integer,  -- zb: "1000" (= Massstab)
      --             --             -- Gemeindeschluessel, bestehend aus:
-     land                integer,  -- 05 = NRW
-     regierungsbezirk    integer,  --   7
-     kreis               integer,  --    66
-     gemeinde            integer,  --      020
-     ortsteil            integer,  --         0
+     land                character varying,  -- "05" = NRW
+     regierungsbezirk    character varying,
+     kreis               character varying,
+     gemeinde            character varying,
+     ortsteil            integer,
      --
-     postleitzahl        varchar,  -- mit fuehrenden Nullen
-     ortsnamepost        varchar,  --
-     zusatzortsname      varchar,  --
-     strassenname        varchar,  --
-     strassenschluessel  integer,  -- max.  5 Stellen
-     hausnummer          varchar,  -- meist 3 Stellen
-     adressierungszusatz varchar,  -- Hausnummernzusatz-Buchstabe
+     postleitzahl        character varying,  -- mit fuehrenden Nullen
+     ortsnamepost        character varying,
+     zusatzortsname      character varying,
+     strassenname        character varying,
+     strassenschluessel  character varying,  -- max.  5 Stellen
+     hausnummer          character varying,  -- meist 3 Stellen
+     adressierungszusatz character varying,  -- Hausnummernzusatz-Buchstabe
+     -- Beziehungen:
+     hatauch             character varying,  -- <- ax_lagebezeichnungmithausnummer
      CONSTRAINT ax_georeferenziertegebaeudeadresse_pk PRIMARY KEY (ogc_fid)
 );
@@ -485,46 +816,459 @@
 
 CREATE INDEX ax_georeferenziertegebaeudeadresse_geom_idx ON ax_georeferenziertegebaeudeadresse USING gist (wkb_geometry);
-
--- Index fÃŒr alkis_beziehungen
-CREATE UNIQUE INDEX ax_georeferenziertegebaeudeadresse_gml ON ax_georeferenziertegebaeudeadresse USING btree (gml_id,beginnt);
-
--- Suchindex Adresse
+CREATE UNIQUE INDEX ax_georeferenziertegebaeudeadresse_gml ON ax_georeferenziertegebaeudeadresse USING btree (gml_id, beginnt);
 CREATE INDEX ax_georeferenziertegebaeudeadresse_adr ON ax_georeferenziertegebaeudeadresse USING btree (strassenschluessel, hausnummer, adressierungszusatz);
 
-COMMENT ON TABLE  ax_georeferenziertegebaeudeadresse        IS 'Georeferenzierte  G e b Ã€ u d e a d r e s s e';
+COMMENT ON TABLE  ax_georeferenziertegebaeudeadresse        IS 'Angaben zur Lage: (REO) "Georeferenzierte GebÃ€udeadresse" enthÃ€lt alle Informationen fÃŒr die Ausgabe der amtlichen Hauskoordinate. Die Abgabe erfolgt ÃŒber Bestandsdatenauszug bzw. NBA-Verfahren. Das bisherige Verfahren zur Abgabe der Hauskoordinaten kann durch eine XSLT-Transformation erzeugt werden.';
 COMMENT ON COLUMN ax_georeferenziertegebaeudeadresse.gml_id IS 'Identifikator, global eindeutig';
 
-
--- G r a b l o c h   d e r   B o d e n s c h Ã€ t z u n g
--- -------------------------------------------------------
-CREATE TABLE ax_grablochderbodenschaetzung (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     art                 varchar,
-     name                varchar,
-     bedeutung           integer[],
-     land                integer,
-     nummerierungsbezirk varchar,
-     gemarkungsnummer    integer,
-     nummerdesgrablochs  varchar,
-     CONSTRAINT ax_grablochderbodenschaetzung_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_grablochderbodenschaetzung','wkb_geometry',:alkis_epsg,'POINT',2);
-
-CREATE INDEX ax_grablochderbodenschaetzung_geom_idx   ON ax_grablochderbodenschaetzung USING gist  (wkb_geometry);
-CREATE UNIQUE INDEX ax_grablochderbodenschaetzung_gml ON ax_grablochderbodenschaetzung USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_grablochderbodenschaetzung        IS 'G r a b l o c h   d e r   B o d e n s c h Ã€ t z u n g';
-COMMENT ON COLUMN ax_grablochderbodenschaetzung.gml_id IS 'Identifikator, global eindeutig';
+COMMENT ON COLUMN ax_georeferenziertegebaeudeadresse.hatauch IS '<- Beziehung zu ax_lagebezeichnungmithausnummer (1): Die inverse Relation wird optional belegt, damit keine Implementierung unmittelbar zur Umstellung auf das neue Verfahren zur Ableitung der Hauskoordinate gezwungen wird.';
+
+
+--** Objektartengruppe: Angaben zum Netzpunkt
+--   ===================================================================
+
+-- A u f n a h m e p u n k t
+-- ----------------------------------------------
+-- Objektart: AX_Aufnahmepunkt Kennung: 13001
+CREATE TABLE ax_aufnahmepunkt (
+     ogc_fid             serial NOT NULL,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     punktkennung        character varying,   -- integer ist zu klein,
+     land                character varying,
+     stelle              character varying,
+     sonstigeeigenschaft character varying[],
+     vermarkung_marke    integer,
+     relativehoehe       double precision,
+     -- Beziehungen:
+     hat character varying[],                 --> ax_sicherungspunkt
+     CONSTRAINT ax_aufnahmepunkt_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_aufnahmepunkt','dummy',:alkis_epsg,'POINT',2);
+
+CREATE UNIQUE INDEX ax_aufnahmepunkt_gml ON ax_aufnahmepunkt USING btree (gml_id, beginnt);
+CREATE        INDEX ax_aufnahmepunkt_hat ON ax_aufnahmepunkt USING gin   (hat);
+
+COMMENT ON TABLE  ax_aufnahmepunkt        IS 'Angaben zum Netzpunkt: (ZUSO) "Aufnahmepunkt" ist ein Punkt des Lagefestpunktfeldes - Aufnahmepunktfeld und dient der Ã¶rtlichen Aufnahme von Objektpunkten.
+Das Aufnahmepunktfeld ist eine Verdichtungsstufe des Lagefestpunktfeldes - Trigonometrisches Festpunktfeld (Grundlagenvermessung).';
+COMMENT ON COLUMN ax_aufnahmepunkt.gml_id IS 'Identifikator, global eindeutig';
+
+COMMENT ON COLUMN ax_aufnahmepunkt.hat IS '-> Beziehung zu ax_sicherungspunkt (0..*): ''Aufnahmepunkt'' hat ''Sicherungspunkt''.';
+
+
+-- S i c h e r u n g s p u n k t
+-- ----------------------------------------------
+-- Objektart: AX_Sicherungspunkt Kennung: 13002
+CREATE TABLE ax_sicherungspunkt (
+     ogc_fid             serial NOT NULL,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     name                character varying,
+     punktkennung        character varying,
+     land                character varying,
+     stelle              character varying,
+     sonstigeeigenschaft character varying[],
+     vermarkung_marke    integer,
+     relativehoehe       double precision,
+     -- Beziehungen:
+--   beziehtsichauf      character varying, -- <- ax_sonstigervermessungspunkt
+--   gehoertzu           character varying, -- <- ax_aufnahmepunkt
+     CONSTRAINT ax_sicherungspunkt_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_sicherungspunkt','dummy',:alkis_epsg,'POINT',2);
+
+COMMENT ON TABLE  ax_sicherungspunkt IS 'Angaben zum Netzpunkt: (ZUSO "Sicherungspunkt") ist ein Punkt des Aufnahmepunktfeldes, der vermarkt ist und der Sicherung eines Aufnahmepunktes dient.';
+
+--COMMENT ON COLUMN ax_sicherungspunkt.beziehtsichauf IS '<- Beziehung zu ax_sonstigervermessungspunkt (0..1): "Sicherungspunkt" bezieht sich auf "Sonstiger Vermessungspunkt"
+--Es handelt sich um die inverse Relationsrichtung.';
+--COMMENT ON COLUMN ax_sicherungspunkt.gehoertzu      IS '<- Beziehung zu ax_aufnahmepunkt (0..1): ''Sicherungspunkt'' gehÃ¶rt zu ''Aufnahmepunkt''.
+--Es handelt sich um die inverse Relationsrichtung.';
+
+
+-- s o n s t i g e r   V e r m e s s u n g s p u n k t
+-- ---------------------------------------------------
+-- Objektart: AX_SonstigerVermessungspunkt Kennung: 13003
+CREATE TABLE ax_sonstigervermessungspunkt (
+     ogc_fid             serial NOT NULL,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     vermarkung_marke    integer,
+     punktkennung        character varying, -- integer,
+     art                 character varying,
+     land                character varying,
+     stelle              character varying,
+     sonstigeeigenschaft character varying[],
+     relativehoehe       double precision,
+     -- Beziehungen:
+     hat character varying[], --> ax_sicherungspunkt
+     CONSTRAINT ax_sonstigervermessungspunkt_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_sonstigervermessungspunkt','dummy',:alkis_epsg,'POINT',2);
+
+CREATE UNIQUE INDEX ax_sonstigervermessungspunkt_gml ON ax_sonstigervermessungspunkt USING btree (gml_id, beginnt);
+CREATE INDEX ax_sonstigervermessungspunkt_hat  ON ax_sonstigervermessungspunkt  USING gin  (hat);
+
+COMMENT ON TABLE  ax_sonstigervermessungspunkt        IS 'Angaben zum Netzpunkt: (ZUSO) "sonstiger Vermessungspunkt" ist ein Punkt des Aufnahmepunktfeldes, der weder Aufnahmepunkt noch Sicherungspunkt ist (z. B. Polygonpunkt, Liniennetzpunkt).';
+COMMENT ON COLUMN ax_sonstigervermessungspunkt.gml_id IS 'Identifikator, global eindeutig';
+
+COMMENT ON COLUMN ax_sonstigervermessungspunkt.hat IS '-> Beziehung zu ax_sicherungspunkt (0..*): "Sonstiger Vermessungspunkt" hat "Sicherungspunkt"';
+
+-- Objektart: AX_Netzpunkt Kennung: 13004
+-- ** Tabelle bisher noch nicht generiert
+
+--** Objektartengruppe: Angaben zum Punktort
+--   ===================================================================
+
+-- AX_Punktort
+-- -----------
+-- "Punktort" definiert die rÃ€umliche Position oder die ebene Lage oder die HÃ¶he eines Objektes
+-- der Objektarten "Lagefestpunkt, HÃ¶henfestpunkt, Schwerefestpunkt, Referenzstationspunkt,
+-- Grenzpunkt, Besonderer GebÃ€udepunkt, Aufnahmepunkt, Sicherungspunkt, Sonstiger Vermessungspunkt,
+-- Besonderer topographischer Punkt, Besonderer Bauwerkspunkt" in einem Bezugssystem
+-- (nach ISO 19111). Es sind keine zusammengesetzten Bezugssysteme (ISO 19111, Ziffer 6.2.3) zugelassen.
+-- Bei AX_Punktort handelt es sich um die abstrakte Verallgemeinerung der drei Punktortvarianten
+-- 'Punktort AG', 'Punktort AU' und 'Punktort TA', die sich jeweils in ihrer geometrischen AusprÃ€gung
+-- entsprechend dem AAA-Basisschema unterscheiden.
+-- Jedes Objekt Punktort kann nur zu einem Punktobjekt gehÃ¶ren, auch wenn mehrere Punkte aufeinander fallen.
+-- Es handelt sich um eine abstrakte Objektart.
+
+-- P u n k t o r t   AG
+-- ----------------------------------------------
+-- Objektart: AX_PunktortAG Kennung: 14002
+CREATE TABLE ax_punktortag (
+     ogc_fid                  serial NOT NULL,
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
+     beginnt                  character(20),
+     endet                    character(20),
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
+     art                      character varying[],
+     name                     character varying[],
+     kartendarstellung        character varying,
+     ax_datenerhebung_punktort integer,
+     genauigkeitsstufe        integer,
+     vertrauenswuerdigkeit    integer,
+     koordinatenstatus        integer,
+     hinweise                 character varying,
+     -- Beziehungen:
+     istteilvon               character varying, --> ?
+     CONSTRAINT ax_punktortag_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_punktortag','wkb_geometry',:alkis_epsg,'POINT',2);
+
+CREATE INDEX ax_punktortag_geom_idx   ON ax_punktortag USING gist  (wkb_geometry);
+CREATE UNIQUE INDEX ax_punktortag_gml ON ax_punktortag USING btree (gml_id, beginnt);
+CREATE INDEX ax_punktortag_itv_idx    ON ax_punktortag USING btree (istteilvon);
+
+COMMENT ON TABLE  ax_punktortag        IS 'Angaben zum Punktort: (REO) "Punktort AG" ist ein Punktort mit redundanzfreier Geometrie (Besonderer GebÃ€udepunkt, Besonderer Bauwerkspunkt) innerhalb eines Geometriethemas.';
+COMMENT ON COLUMN ax_punktortag.gml_id IS 'Identifikator, global eindeutig';
+
+
+-- P u n k t o r t   A U
+-- ----------------------------------------------
+-- Objektart: AX_PunktortAU Kennung: 14003
+CREATE TABLE ax_punktortau (
+     ogc_fid                       serial NOT NULL,
+     gml_id                        character varying NOT NULL,
+     identifier                    character varying,
+     beginnt                       character(20),
+     endet                         character(20),
+     advstandardmodell             character varying[],
+     sonstigesmodell               character varying[],
+     anlass                        character varying,
+     kartendarstellung             character varying, -- AX_Punktort Boolean
+     ax_datenerhebung_punktort     integer,
+     name                          character varying[],
+     individualname                character varying,
+     vertrauenswuerdigkeit         integer,
+     genauigkeitsstufe             integer,
+     koordinatenstatus             integer,           -- AX_Punktort
+--   ueberpruefungsdatum                              -- AX_Punktort
+--   qualitaetsangaben                                -- AX_Punktort
+     hinweise                      character varying, -- AX_Punktort
+     -- Beziehungen:
+     istteilvon                    character varying,
+     CONSTRAINT ax_punktortau_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_punktortau','wkb_geometry',:alkis_epsg,'POINT',3); -- 0,0,HÃ¶he
+
+CREATE INDEX ax_punktortau_geom_idx   ON ax_punktortau USING gist  (wkb_geometry);
+CREATE UNIQUE INDEX ax_punktortau_gml ON ax_punktortau USING btree (gml_id, beginnt);
+CREATE INDEX ax_punktortau_itv_idx    ON ax_punktortau USING btree (istteilvon);
+
+COMMENT ON TABLE  ax_punktortau        IS 'Angaben zum Punktort: (REO) "Punktort AU" ist ein Punktort mit unabhÃ€ngiger Geometrie ohne ZugehÃ¶rigkeit zu einem Geometriethema. 
+Er kann zu ZUSOs der folgenden Objektarten gehÃ¶ren: Grenzpunkt, Besonderer GebÃ€udepunkt, Besonderer Bauwerkspunkt, Aufnahmepunkt, Sicherungspunkt, Sonstiger Vermessungspunkt, Besonderer topographischer Punkt, Lagefestpunkt, HÃ¶henfestpunkt, Schwerefestpunkt, Referenzstationspunkt.';
+COMMENT ON COLUMN ax_punktortau.gml_id IS 'Identifikator, global eindeutig';
+
+
+-- P u n k t o r t   T A
+-- ----------------------------------------------
+-- Objektart: AX_PunktortTA Kennung: 14004
+CREATE TABLE ax_punktortta (
+     ogc_fid                       serial NOT NULL,
+     gml_id                        character varying NOT NULL,
+     identifier                    character varying,
+     beginnt                       character(20),
+     endet                         character(20),
+     advstandardmodell             character varying[],
+     sonstigesmodell               character varying[],
+     anlass                        character varying,
+     kartendarstellung             character varying,
+     description                   integer,
+     ax_datenerhebung_punktort     integer,
+     art                           character varying[],
+     name                          character varying[],
+     genauigkeitsstufe             integer,
+     vertrauenswuerdigkeit         integer,
+     koordinatenstatus             integer,
+     hinweise                      character varying,
+     -- Beziehungen:
+     istteilvon                    character varying,
+     CONSTRAINT ax_punktortta_pk   PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_punktortta','wkb_geometry',:alkis_epsg,'POINT',2);
+
+CREATE INDEX ax_punktortta_geom_idx   ON ax_punktortta USING gist  (wkb_geometry);
+CREATE UNIQUE INDEX ax_punktortta_gml ON ax_punktortta USING btree (gml_id, beginnt);
+CREATE INDEX ax_punktortta_endet_idx  ON ax_punktortta USING btree (endet);
+CREATE INDEX ax_punktortta_itv_idx    ON ax_punktortta USING btree (istteilvon);
+
+COMMENT ON TABLE  ax_punktortta        IS 'Angaben zum Punktort: (REO) "Punktort TA" ist ein Punktort, der in der FlurstÃŒcksgrenze liegt und einen Grenzpunkt verortet.';
+COMMENT ON COLUMN ax_punktortta.gml_id IS 'Identifikator, global eindeutig';
+
+
+--** Objektartengruppe: FortfÃŒhrungsnachweis
+--   ===================================================================
+
+-- F o r t f u e h r u n g s n a c h w e i s / D e c k b l a t t
+-- --------------------------------------------------------------
+-- Objektart: AX_FortfuehrungsnachweisDeckblatt Kennung: 15001
+CREATE TABLE ax_fortfuehrungsnachweisdeckblatt (
+     ogc_fid                  serial NOT NULL,
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
+     beginnt                  character(20),
+     endet                    character(20),
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
+     uri                      character varying,  -- wirklich?
+     fortfuehrungsfallnummernbereich character varying,
+     land                     character varying,
+     gemarkungsnummer         character varying,
+     laufendenummer           integer,
+     titel                    character varying,
+     erstelltam               character varying,      -- Datum jjjj-mm-tt
+     fortfuehrungsentscheidungam  character varying,
+     fortfuehrungsentscheidungvon character varying,  -- Bearbeiter-Name und -Titel
+     bemerkung                character varying,
+     -- Beziehungen:
+     beziehtsichauf           character varying,      -- Index drauf?
+     CONSTRAINT ax_fortfuehrungsnachweisdeckblatt_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_fortfuehrungsnachweisdeckblatt','dummy',:alkis_epsg,'POINT',2);
+
+COMMENT ON TABLE  ax_fortfuehrungsnachweisdeckblatt IS 'FortfÃŒhrungsnachweis: (NREO) "Fortfuehrungsnachweis-Deckblatt" enthÃ€lt alle administrativen Angaben fÃŒr einen FortfÃŒhrungsnachweis.';
+
+
+-- F o r t f u e h r u n g s f a l l
+-- ---------------------------------
+-- Objektart: AX_Fortfuehrungsfall Kennung: 15002
+CREATE TABLE ax_fortfuehrungsfall (
+     ogc_fid                            serial NOT NULL,
+     gml_id                             character varying NOT NULL,
+     identifier                         character varying,
+     beginnt                            character(20),
+     endet                              character(20),
+     advstandardmodell                  character varying[],
+     sonstigesmodell                    character varying[],
+     anlass                             character varying,
+     uri                                character varying,
+     fortfuehrungsfallnummer            integer,
+     laufendenummer                     integer,
+     ueberschriftimfortfuehrungsnachweis integer[],
+     anzahlderfortfuehrungsmitteilungen integer,
+     -- Beziehungen:
+     zeigtaufaltesflurstueck            character varying[], -- Format wie flurstueckskennzeichen (20) als Array
+     zeigtaufneuesflurstueck            character varying[], -- Format wie flurstueckskennzeichen (20) als Array
+     bemerkung                          character varying,
+     CONSTRAINT ax_fortfuehrungsfall_pk PRIMARY KEY (ogc_fid)
+);
+SELECT AddGeometryColumn('ax_fortfuehrungsfall','dummy',:alkis_epsg,'POINT',2);
+
+COMMENT ON TABLE  ax_fortfuehrungsfall IS 'FortfÃŒhrungsnachweis: (NREO) "Fortfuehrungsfall" beschreibt die notwendigen Angaben zum Aufbau eines FortfÃŒhrungsnachweises. Er legt die Reihenfolge der zu verÃ€ndernden FlurstÃŒcke innerhalb eines FortfÃŒhrungsnachweises fest (Aufbau des FortfÃŒhrungsnachweises).';
+
+
+--** Objektartengruppe: Angaben zur Reservierung
+--   ===================================================================
+
+-- R e s e r v i e r u n g
+-- -----------------------
+-- Objektart: AX_Reservierung Kennung: 16001
+CREATE TABLE ax_reservierung (
+     ogc_fid             serial NOT NULL,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     art                 integer,
+     nummer              character varying,
+     land                character varying,
+     stelle              character varying,
+     ablaufderreservierung character varying,
+     antragsnummer       character varying,
+     auftragsnummer      character varying,
+     CONSTRAINT ax_reservierung_pk PRIMARY KEY (ogc_fid)
+);
+SELECT AddGeometryColumn('ax_reservierung','dummy',:alkis_epsg,'POINT',2);
+
+COMMENT ON TABLE  ax_reservierung IS 'Angaben zur Reservierung: (NREO) "Reservierung" enthÃ€lt Ordnungsnummern des Liegenschaftskatasters, die fÃŒr eine durchzufÃŒhrende Vermessungssache reserviert sind.';
+
+
+-- P u n k t k e n n u n g   U n t e r g e g a n g e n
+-- ---------------------------------------------------
+-- Objektart: AX_PunktkennungUntergegangen Kennung: 16002
+CREATE TABLE ax_punktkennunguntergegangen (
+     ogc_fid                  serial NOT NULL,
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
+     beginnt                  character(20),
+     endet                    character(20),
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
+     punktkennung             character varying,
+     art                      integer,
+     CONSTRAINT ax_punktkennunguntergegangen_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_punktkennunguntergegangen','dummy',:alkis_epsg,'POINT',2);
+
+COMMENT ON TABLE  ax_punktkennunguntergegangen IS 'Angaben zur Reservierung: (NREO) "Punktkennung, untergegangen" enthÃ€lt Punktkennungen, die untergegangen sind.';
+
+-- Objektart: AX_PunktkennungVergleichend Kennung: 16003
+-- 'Punktkennung vergleichend' (NREO) enthÃ€lt vorlÃ€ufige Punktkennungen.
+
+
+--** Objektartengruppe: Angaben zur Historie
+--   ===================================================================
+
+-- Historisches FlurstÃŒck (ALKIS)
+-- ------------------------------
+-- Objektart: AX_HistorischesFlurstueck Kennung: 17001
+-- Die "neue" Historie, die durch FortfÃŒhrungen innerhalb von ALKIS entstanden ist.
+CREATE TABLE ax_historischesflurstueck (
+     ogc_fid                       serial NOT NULL,
+     gml_id                        character varying NOT NULL,
+     identifier                    character varying,
+     beginnt                       character(20),
+     endet                         character(20),
+     advstandardmodell             character varying[],
+     sonstigesmodell               character varying[],
+     anlass                        character varying,
+     art                           character varying[],
+     name                          character varying[],
+
+     -- GID: AX_Flurstueck_Kerndaten
+     -- 'FlurstÃŒck_Kerndaten' enthÃ€lt Eigenschaften des FlurstÃŒcks, die auch fÃŒr andere FlurstÃŒcksobjektarten gelten (z.B. Historisches FlurstÃŒck).
+     land                          character varying, --
+     gemarkungsnummer              character varying,             --
+     flurnummer                    integer,               -- Teile des FlurstÃŒckskennzeichens
+     zaehler                       integer,             --    (redundant zu flurstueckskennzeichen)
+     nenner                        integer,           --
+     -- daraus abgeleitet:
+     flurstueckskennzeichen        character(20),           -- Inhalt rechts mit __ auf 20 aufgefÃŒllt
+     amtlicheflaeche               double precision,                  -- AFL
+     abweichenderrechtszustand     character varying DEFAULT 'false', -- ARZ
+  zweifelhafterflurstuecksnachweis character varying DEFAULT 'false', -- ZFM Boolean
+     rechtsbehelfsverfahren        character varying DEFAULT 'false', -- RBV
+     zeitpunktderentstehung        character(10),                     -- ZDE  Inhalt jjjj-mm-tt  besser Format date ?
+     zeitpunktderhistorisierung    character varying,  -- oder (10) ?
+     gemeinde                      character varying,
+     -- GID: ENDE AX_Flurstueck_Kerndaten
+
+     regierungsbezirk                 character varying,
+     kreis                            character varying,
+     vorgaengerflurstueckskennzeichen character varying[],
+     nachfolgerflurstueckskennzeichen character varying[],
+     blattart                         integer,
+     buchungsart                      character varying,
+     buchungsblattkennzeichen         character varying[],
+     bezirk                           character varying,
+     buchungsblattnummermitbuchstabenerweiterung  character varying[],
+     laufendenummerderbuchungsstelle  integer,
+     CONSTRAINT ax_historischesflurstueck_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_historischesflurstueck','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
+
+CREATE INDEX ax_historischesflurstueck_geom_idx   ON ax_historischesflurstueck USING gist  (wkb_geometry);
+CREATE UNIQUE INDEX ax_historischesflurstueck_gml ON ax_historischesflurstueck USING btree (gml_id, beginnt);
+CREATE INDEX ax_historischesflurstueck_kennz      ON ax_historischesflurstueck USING btree (flurstueckskennzeichen);
+
+-- Suche nach VorgÃ€nger / Nachfolger
+CREATE INDEX idx_histfs_vor  ON ax_historischesflurstueck USING btree (vorgaengerflurstueckskennzeichen);
+CREATE INDEX idx_histfs_nach ON ax_historischesflurstueck USING btree (vorgaengerflurstueckskennzeichen);
+
+  COMMENT ON TABLE  ax_historischesflurstueck        IS 'Angaben zur Historie: (REO) "Historisches FlurstÃŒck" ist ein fachlich nicht mehr aktuelles FlurstÃŒck, das im Rahmen der Historisierung in ALKIS entsteht (ALKIS-Standardhistorie).';
+  COMMENT ON COLUMN ax_historischesflurstueck.gml_id IS 'Identifikator, global eindeutig';
+  COMMENT ON COLUMN ax_historischesflurstueck.flurnummer                IS 'FLN "Flurnummer" ist die von der KatasterbehÃ¶rde zur eindeutigen Bezeichnung vergebene Nummer einer Flur, die eine Gruppe von zusammenhÃ€ngenden FlurstÃŒcken innerhalb einer Gemarkung umfasst.';
+  COMMENT ON COLUMN ax_historischesflurstueck.zaehler                   IS 'ZAE  Dieses Attribut enthÃ€lt den ZÃ€hler der FlurstÃŒcknummer';
+  COMMENT ON COLUMN ax_historischesflurstueck.nenner                    IS 'NEN  Dieses Attribut enthÃ€lt den Nenner der FlurstÃŒcknummer';
+  COMMENT ON COLUMN ax_historischesflurstueck.flurstueckskennzeichen    IS '"FlurstÃŒckskennzeichen" ist ein von der KatasterbehÃ¶rde zur eindeutigen Bezeichnung des FlurstÃŒcks vergebenes Ordnungsmerkmal.
+Die Attributart setzt sich aus den nachfolgenden expliziten Attributarten in der angegebenen Reihenfolge zusammen:
+ 1.  Land (2 Stellen)
+ 2.  Gemarkungsnummer (4 Stellen)
+ 3.  Flurnummer (3 Stellen)
+ 4.  FlurstÃŒcksnummer
+ 4.1 ZÃ€hler (5 Stellen)
+ 4.2 Nenner (4 Stellen)
+ 5.  FlurstÃŒcksfolge (2 Stellen)
+Die Elemente sind rechtsbÃŒndig zu belegen, fehlende Stellen sind mit fÃŒhrenden Nullen zu belegen.
+Da die Flurnummer und die FlurstÃŒcksfolge optional sind, sind aufgrund der bundeseinheitlichen Definition im FlurstÃŒckskennzeichen die entsprechenden Stellen, sofern sie nicht belegt sind, durch Unterstrich "_" ersetzt.
+Gleiches gilt fÃŒr FlurstÃŒcksnummern ohne Nenner, hier ist der fehlende Nenner im FlurstÃŒckskennzeichen durch Unterstriche zu ersetzen.';
+  COMMENT ON COLUMN ax_historischesflurstueck.amtlicheflaeche           IS 'AFL "Amtliche FlÃ€che" ist der im Liegenschaftskataster festgelegte FlÃ€cheninhalt des FlurstÃŒcks in [qm]. FlurstÃŒcksflÃ€chen kleiner 0,5 qm kÃ¶nnen mit bis zu zwei Nachkommastellen gefÃŒhrt werden, ansonsten ohne Nachkommastellen.';
+  COMMENT ON COLUMN ax_historischesflurstueck.abweichenderrechtszustand IS 'ARZ "Abweichender Rechtszustand" ist ein Hinweis darauf, dass auÃerhalb des Grundbuches in einem durch Gesetz geregelten Verfahren der Bodenordnung (siehe Objektart "Bau-, Raum- oder Bodenordnungsrecht", AA "Art der Festlegung", Werte 1750, 1770, 2100 bis 2340) ein neuer Rechtszustand eingetreten ist und das amtliche Verzeichnis der jeweiligen ausfÃŒhrenden Stelle maÃgebend ist.';
+  COMMENT ON COLUMN ax_historischesflurstueck.zweifelhafterFlurstuecksnachweis IS 'ZFM "Zweifelhafter FlurstÃŒcksnachweis" ist eine Kennzeichnung eines FlurstÃŒcks, dessen Angaben nicht zweifelsfrei berichtigt werden kÃ¶nnen.';
+  COMMENT ON COLUMN ax_historischesflurstueck.rechtsbehelfsverfahren    IS 'RBV "Rechtsbehelfsverfahren" ist der Hinweis darauf, dass bei dem FlurstÃŒck ein laufendes Rechtsbehelfsverfahren anhÃ€ngig ist.';
+  COMMENT ON COLUMN ax_historischesflurstueck.zeitpunktderentstehung    IS 'ZDE "Zeitpunkt der Entstehung" ist der Zeitpunkt, zu dem das FlurstÃŒck fachlich entstanden ist.';
+  COMMENT ON COLUMN ax_historischesflurstueck.gemeinde                  IS 'GDZ "Gemeindekennzeichen zur Zuordnung der FlustÃŒcksdaten zu einer Gemeinde.';
+
+  COMMENT ON INDEX ax_historischesflurstueck_kennz IS 'Suche nach FlurstÃŒckskennzeichen';
+  COMMENT ON INDEX idx_histfs_vor                  IS 'Suchen nach VorgÃ€nger-FlurstÃŒck';
+  COMMENT ON INDEX idx_histfs_nach                 IS 'Suchen nach Nachfolger-FlurstÃŒck';
 
 
 -- H i s t o r i s c h e s   F l u r s t ÃŒ c k   A L B
 -- ---------------------------------------------------
+-- Objektart: AX_HistorischesFlurstueckALB Kennung: 17002
+
 -- Variante A: "Standardhistorie" (statt ax_historischesflurstueckohneraumbezug)
 
@@ -533,42 +1277,44 @@
 
 CREATE TABLE ax_historischesflurstueckalb (
-     ogc_fid                            serial NOT NULL,
-     gml_id                             character(16),
+     ogc_fid                         serial NOT NULL,
+     gml_id                          character varying NOT NULL,
+     identifier                      character varying,
+     beginnt                         character(20),
+     endet                           character(20),
+     advstandardmodell               character varying[],
+     sonstigesmodell                 character varying[],
+     anlass                          character varying,
+     name                            character varying[],
 
      -- GID: AX_Flurstueck_Kerndaten
      -- 'FlurstÃŒck_Kerndaten' enthÃ€lt Eigenschaften des FlurstÃŒcks, die auch fÃŒr andere FlurstÃŒcksobjektarten gelten (z.B. Historisches FlurstÃŒck).
-     land                               integer,         --
-     gemarkungsnummer                   integer,            --
-     flurnummer                         integer,               -- Teile des FlurstÃŒckskennzeichens
-     zaehler                            integer,            --    (redundant zu flurstueckskennzeichen)
-     nenner                             integer,         --
+     land                             character varying, --
+     gemarkungsnummer                 character varying,             --
+     flurnummer                       integer,               -- Teile des FlurstÃŒckskennzeichens
+     zaehler                          integer,             --    (redundant zu flurstueckskennzeichen)
+     nenner                           integer,           --
+     flurstuecksfolge                 character varying,
      -- daraus abgeleitet:
-     flurstueckskennzeichen             character(20),         -- Inhalt rechts mit __ auf 20 aufgefÃŒllt
-
-     amtlicheflaeche                    double precision,      -- AFL
-     abweichenderrechtszustand          varchar default 'false', -- ARZ
-     zweifelhafterFlurstuecksnachweis   varchar default 'false', -- ZFM Boolean
-     rechtsbehelfsverfahren             varchar default 'false', -- RBV
-     zeitpunktderentstehung             varchar,         -- ZDE  Inhalt jjjj-mm-tt  besser Format date ?
-     gemeinde                           integer,
+     flurstueckskennzeichen           character(20),         -- Inhalt rechts mit __ auf 20 aufgefÃŒllt
+
+     amtlicheflaeche                  double precision,                  -- AFL
+     abweichenderrechtszustand        character varying DEFAULT 'false', -- ARZ
+     zweifelhafterFlurstuecksnachweis character varying DEFAULT 'false', -- ZFM Boolean
+     rechtsbehelfsverfahren           character varying DEFAULT 'false', -- RBV
+     zeitpunktderentstehung           character(10),                     -- ZDE  jjjj-mm-tt
+     gemeinde                         character varying,
      -- GID: ENDE AX_Flurstueck_Kerndaten
 
-     identifier                         character(44),
-     beginnt                            character(20),
-     endet                              character(20),
-     advstandardmodell                  varchar,
-     anlass                             varchar,
-     name                               varchar[],
-     blattart                           integer,
-     buchungsart                        varchar[],
-     buchungsblattkennzeichen           varchar[],
-     bezirk                             integer,
-     buchungsblattnummermitbuchstabenerweiterung  varchar[],
-     laufendenummerderbuchungsstelle              varchar[],
-     zeitpunktderentstehungdesbezugsflurstuecks   varchar,
-     laufendenummerderfortfuehrung      varchar,
-     fortfuehrungsart                   varchar,
-     vorgaengerflurstueckskennzeichen   varchar[],
-     nachfolgerflurstueckskennzeichen   varchar[],
+     blattart                         integer,
+     buchungsart                      character varying[],
+     buchungsblattkennzeichen         character varying[],
+     bezirk                           character varying,
+     buchungsblattnummermitbuchstabenerweiterung  character varying[],
+     laufendenummerderbuchungsstelle  character varying[],
+     zeitpunktderentstehungdesbezugsflurstuecks   character varying,
+     laufendenummerderfortfuehrung    character varying,
+     fortfuehrungsart                 character varying,
+     vorgaengerflurstueckskennzeichen character varying[],
+     nachfolgerflurstueckskennzeichen character varying[],
      CONSTRAINT ax_historischesflurstueckalb_pk PRIMARY KEY (ogc_fid)
 );
@@ -576,16 +1322,9 @@
 SELECT AddGeometryColumn('ax_historischesflurstueckalb','dummy',:alkis_epsg,'POINT',2);
 
-CREATE UNIQUE INDEX ax_historischesflurstueckalb_gml ON ax_historischesflurstueckalb USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_historischesflurstueckalb        IS 'Historisches FlurstÃŒck ALB';
-COMMENT ON COLUMN ax_historischesflurstueckalb.gml_id IS 'Identifikator, global eindeutig';
-CREATE INDEX idx_histfsalb_vor
-   ON ax_historischesflurstueckalb USING btree (vorgaengerflurstueckskennzeichen /* ASC */);
-  COMMENT ON INDEX idx_histfsalb_vor IS 'Suchen nach VorgÃ€nger-FlurstÃŒck';
-
-CREATE INDEX idx_histfsalb_nach
-   ON ax_historischesflurstueckalb USING btree (vorgaengerflurstueckskennzeichen /* ASC */);
-  COMMENT ON INDEX idx_histfsalb_vor IS 'Suchen nach Nachfolger-FlurstÃŒck';
-  COMMENT ON TABLE  ax_historischesflurstueckalb        IS 'Historisches FlurstÃŒck ALB';
+CREATE UNIQUE INDEX ax_historischesflurstueckalb_gml ON ax_historischesflurstueckalb USING btree (gml_id, beginnt);
+CREATE INDEX idx_histfsalb_vor   ON ax_historischesflurstueckalb USING btree (vorgaengerflurstueckskennzeichen);
+CREATE INDEX idx_histfsalb_nach  ON ax_historischesflurstueckalb USING btree (nachfolgerflurstueckskennzeichen);
+
+  COMMENT ON TABLE  ax_historischesflurstueckalb        IS 'Angaben zur Historie: (NREO) "Historisches FlurstÃŒck ALB" ist ein nicht mehr aktuelles FlurstÃŒck, das schon im ALB historisch geworden ist und nach ALKIS migriert wird und in der ALKIS-Standardhistorie gefÃŒhrt wird.';
   COMMENT ON COLUMN ax_historischesflurstueckalb.gml_id IS 'Identifikator, global eindeutig';
   COMMENT ON COLUMN ax_historischesflurstueckalb.flurnummer                IS 'FLN "Flurnummer" ist die von der KatasterbehÃ¶rde zur eindeutigen Bezeichnung vergebene Nummer einer Flur, die eine Gruppe von zusammenhÃ€ngenden FlurstÃŒcken innerhalb einer Gemarkung umfasst.';
@@ -611,74 +1350,69 @@
   COMMENT ON COLUMN ax_historischesflurstueckalb.gemeinde                  IS 'Gemeindekennzeichen zur Zuordnung der FlustÃŒcksdaten zu einer Gemeinde.';
 
-
--- Historisches FlurstÃŒck (ALKIS)
--- ------------------------------
--- Die "neue" Historie, die durch FortfÃŒhrungen innerhalb von ALKIS entstanden ist.
-CREATE TABLE ax_historischesflurstueck (
+  COMMENT ON INDEX idx_histfsalb_vor IS 'Suchen nach VorgÃ€nger-FlurstÃŒck';
+  COMMENT ON INDEX idx_histfsalb_vor IS 'Suchen nach Nachfolger-FlurstÃŒck';
+
+
+-- Variante B: "Vollhistorie" (statt ax_historischesflurstueckalb)
+-- H i s t o r i s c h e s   F l u r s t ÃŒ c k  O h n e   R a u m b e z u g
+-- ------------------------------------------------------------------------
+-- Objektart: AX_HistorischesFlurstueckOhneRaumbezug Kennung: 17003
+CREATE TABLE ax_historischesflurstueckohneraumbezug (
+
      ogc_fid                       serial NOT NULL,
-     gml_id                        character(16),
+     gml_id                        character varying NOT NULL,
+     identifier                    character varying,
+     beginnt                       character(20),
+     endet                         character(20),
+     advstandardmodell             character varying[],
+     sonstigesmodell               character varying[],
+     anlass                        character varying,
+     name                          character varying[],
+
      -- GID: AX_Flurstueck_Kerndaten
      -- 'FlurstÃŒck_Kerndaten' enthÃ€lt Eigenschaften des FlurstÃŒcks, die auch fÃŒr andere FlurstÃŒcksobjektarten gelten (z.B. Historisches FlurstÃŒck).
-     land                          integer,         --
-     gemarkungsnummer              integer,            --
+     land                          character varying, --
+     gemarkungsnummer              character varying,             --
      flurnummer                    integer,               -- Teile des FlurstÃŒckskennzeichens
-     zaehler                       integer,            --    (redundant zu flurstueckskennzeichen)
-     nenner                        integer,         --
+     zaehler                       integer,             --    (redundant zu flurstueckskennzeichen)
+     nenner                        integer,           --
      -- daraus abgeleitet:
-     flurstueckskennzeichen        character(20),           -- Inhalt rechts mit __ auf 20 aufgefÃŒllt
-     amtlicheflaeche               double precision,        -- AFL
-     abweichenderrechtszustand     varchar default 'false', -- ARZ
-     zweifelhafterFlurstuecksnachweis varchar default 'false',   -- ZFM Boolean
-     rechtsbehelfsverfahren        varchar default 'false', -- RBV
-     zeitpunktderentstehung        varchar,           -- ZDE  Inhalt jjjj-mm-tt  besser Format date ?
-     gemeinde                      integer,
+     flurstueckskennzeichen        character(20),     -- Inhalt rechts mit __ auf 20 aufgefÃŒllt
+     amtlicheflaeche               double precision,  -- AFL
+     abweichenderrechtszustand     character varying,           -- ARZ
+     zweifelhafterFlurstuecksnachweis character varying,        -- ZFM
+     rechtsbehelfsverfahren        integer,           -- RBV
+     zeitpunktderentstehung        character varying,           -- ZDE  Inhalt jjjj-mm-tt  besser Format date ?
+     gemeinde                      character varying,
      -- GID: ENDE AX_Flurstueck_Kerndaten
-     identifier                    character(44),
-     beginnt                       character(20),
-     endet                         character(20),
-     advstandardmodell             varchar,
-     anlass                        varchar,
-     art                           varchar[],
-     name                          varchar[],
-     regierungsbezirk              integer,
-     kreis                         integer,
-     vorgaengerflurstueckskennzeichen   varchar[],
-     nachfolgerflurstueckskennzeichen   varchar[],
-     blattart                      integer,
-     buchungsart                   varchar,
-     buchungsblattkennzeichen      varchar[],
-     bezirk                        integer,
-     buchungsblattnummermitbuchstabenerweiterung  varchar[],
-     laufendenummerderbuchungsstelle    integer,
-     CONSTRAINT ax_historischesflurstueck_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_historischesflurstueck','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
-
-CREATE INDEX ax_historischesflurstueck_geom_idx   ON ax_historischesflurstueck USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_historischesflurstueck_gml ON ax_historischesflurstueck USING btree (gml_id,beginnt);
-
--- Suche nach VorgÃ€nger / Nachfolger
--- ++ Welche Methode fÃŒr ein Array?
--- Wirkt das ÃŒberhaupt bei der Suche nach einem einzelnen Wert aus dem Array?
-CREATE INDEX idx_histfs_vor ON ax_historischesflurstueck (vorgaengerflurstueckskennzeichen /* ASC */);
-CREATE INDEX idx_histfs_nach ON ax_historischesflurstueck (vorgaengerflurstueckskennzeichen /* ASC */);
-
--- COMMENT ON INDEX idx_histfsalb_vor IS 'Suchen nach VorgÃ€nger-FlurstÃŒck';
--- COMMENT ON INDEX idx_histfsalb_vor IS 'Suchen nach Nachfolger-FlurstÃŒck';
-
--- Die postgresql-Doku sagt dazu (http://www.postgresql.org/docs/9.1/static/arrays.html):
---  "Arrays are not sets;
---   searching for specific array elements can be a sign of database misdesign.
---   Consider using a separate table with a row for each item that would be an array element.
---   This will be easier to search, and is likely to scale better for a large number of elements."
-
-
-  COMMENT ON TABLE  ax_historischesflurstueck        IS 'Historisches FlurstÃŒck, ALKIS, MIT Geometrie';
-  COMMENT ON COLUMN ax_historischesflurstueck.gml_id IS 'Identifikator, global eindeutig';
-  COMMENT ON COLUMN ax_historischesflurstueck.flurnummer                IS 'FLN "Flurnummer" ist die von der KatasterbehÃ¶rde zur eindeutigen Bezeichnung vergebene Nummer einer Flur, die eine Gruppe von zusammenhÃ€ngenden FlurstÃŒcken innerhalb einer Gemarkung umfasst.';
-  COMMENT ON COLUMN ax_historischesflurstueck.zaehler                   IS 'ZAE  Dieses Attribut enthÃ€lt den ZÃ€hler der FlurstÃŒcknummer';
-  COMMENT ON COLUMN ax_historischesflurstueck.nenner                    IS 'NEN  Dieses Attribut enthÃ€lt den Nenner der FlurstÃŒcknummer';
-  COMMENT ON COLUMN ax_historischesflurstueck.flurstueckskennzeichen    IS '"FlurstÃŒckskennzeichen" ist ein von der KatasterbehÃ¶rde zur eindeutigen Bezeichnung des FlurstÃŒcks vergebenes Ordnungsmerkmal.
+
+     nachfolgerflurstueckskennzeichen   character varying[],
+     vorgaengerflurstueckskennzeichen   character varying[],
+     -- Beziehungen:
+     gehoertanteiligzu             character varying[], --> ax_historischesflurstueckohneraumbezug 
+     weistauf                      character varying[], --> ax_lagebezeichnungmithausnummer
+     zeigtauf                      character varying[], --> ax_lagebezeichnungohnehausnummer
+     istgebucht                    character varying,   --> ax_buchungsstelle
+     CONSTRAINT ax_historischesflurstueckohneraumbezug_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_historischesflurstueckohneraumbezug','dummy',:alkis_epsg,'POINT',2);
+CREATE INDEX ax_hist_fs_ohne_kennz ON ax_historischesflurstueckohneraumbezug USING btree (flurstueckskennzeichen);
+COMMENT ON INDEX ax_hist_fs_ohne_kennz IS 'Suche nach FlurstÃŒckskennzeichen';
+
+CREATE INDEX idx_histfsor_vor  ON ax_historischesflurstueckohneraumbezug USING btree (vorgaengerflurstueckskennzeichen);
+CREATE INDEX idx_histfsor_nach ON ax_historischesflurstueckohneraumbezug USING btree (vorgaengerflurstueckskennzeichen);
+
+CREATE INDEX ax_hist_gaz ON ax_historischesflurstueckohneraumbezug  USING gin   (gehoertanteiligzu);
+CREATE INDEX ax_hist_ig  ON ax_historischesflurstueckohneraumbezug  USING btree (istgebucht);
+CREATE INDEX ax_hist_wa  ON ax_historischesflurstueckohneraumbezug  USING gin   (weistauf);
+CREATE INDEX ax_hist_za  ON ax_historischesflurstueckohneraumbezug  USING gin   (zeigtauf);
+
+COMMENT ON TABLE  ax_historischesflurstueckohneraumbezug        IS 'Angaben zur Historie: (NREO) "Historisches FlurstÃŒck ohne Raumbezug" ist ein nicht mehr aktuelles FlurstÃŒck, das schon im ALB historisch geworden ist, nach ALKIS migriert und im Rahmen der Vollhistorie gefÃŒhrt wird.';
+COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.gml_id IS 'Identifikator, global eindeutig';
+COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.flurnummer                IS 'FLN "Flurnummer" ist die von der KatasterbehÃ¶rde zur eindeutigen Bezeichnung vergebene Nummer einer Flur, die eine Gruppe von zusammenhÃ€ngenden FlurstÃŒcken innerhalb einer Gemarkung umfasst.';
+COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.zaehler                   IS 'ZAE  Dieses Attribut enthÃ€lt den ZÃ€hler der FlurstÃŒcknummer';
+COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.nenner                    IS 'NEN  Dieses Attribut enthÃ€lt den Nenner der FlurstÃŒcknummer';
+COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.flurstueckskennzeichen    IS '"FlurstÃŒckskennzeichen" ist ein von der KatasterbehÃ¶rde zur eindeutigen Bezeichnung des FlurstÃŒcks vergebenes Ordnungsmerkmal.
 Die Attributart setzt sich aus den nachfolgenden expliziten Attributarten in der angegebenen Reihenfolge zusammen:
  1.  Land (2 Stellen)
@@ -692,927 +1426,24 @@
 Da die Flurnummer und die FlurstÃŒcksfolge optional sind, sind aufgrund der bundeseinheitlichen Definition im FlurstÃŒckskennzeichen die entsprechenden Stellen, sofern sie nicht belegt sind, durch Unterstrich "_" ersetzt.
 Gleiches gilt fÃŒr FlurstÃŒcksnummern ohne Nenner, hier ist der fehlende Nenner im FlurstÃŒckskennzeichen durch Unterstriche zu ersetzen.';
-  COMMENT ON COLUMN ax_historischesflurstueck.amtlicheflaeche           IS 'AFL "Amtliche FlÃ€che" ist der im Liegenschaftskataster festgelegte FlÃ€cheninhalt des FlurstÃŒcks in [qm]. FlurstÃŒcksflÃ€chen kleiner 0,5 qm kÃ¶nnen mit bis zu zwei Nachkommastellen gefÃŒhrt werden, ansonsten ohne Nachkommastellen.';
-  COMMENT ON COLUMN ax_historischesflurstueck.abweichenderrechtszustand IS 'ARZ "Abweichender Rechtszustand" ist ein Hinweis darauf, dass auÃerhalb des Grundbuches in einem durch Gesetz geregelten Verfahren der Bodenordnung (siehe Objektart "Bau-, Raum- oder Bodenordnungsrecht", AA "Art der Festlegung", Werte 1750, 1770, 2100 bis 2340) ein neuer Rechtszustand eingetreten ist und das amtliche Verzeichnis der jeweiligen ausfÃŒhrenden Stelle maÃgebend ist.';
-  COMMENT ON COLUMN ax_historischesflurstueck.zweifelhafterFlurstuecksnachweis IS 'ZFM "Zweifelhafter FlurstÃŒcksnachweis" ist eine Kennzeichnung eines FlurstÃŒcks, dessen Angaben nicht zweifelsfrei berichtigt werden kÃ¶nnen.';
-  COMMENT ON COLUMN ax_historischesflurstueck.rechtsbehelfsverfahren    IS 'RBV "Rechtsbehelfsverfahren" ist der Hinweis darauf, dass bei dem FlurstÃŒck ein laufendes Rechtsbehelfsverfahren anhÃ€ngig ist.';
-  COMMENT ON COLUMN ax_historischesflurstueck.zeitpunktderentstehung    IS 'ZDE "Zeitpunkt der Entstehung" ist der Zeitpunkt, zu dem das FlurstÃŒck fachlich entstanden ist.';
-  COMMENT ON COLUMN ax_historischesflurstueck.gemeinde                  IS 'GDZ "Gemeindekennzeichen zur Zuordnung der FlustÃŒcksdaten zu einer Gemeinde.';
-
-
--- Kennzeichen indizieren, z.B. fuer Suche aus der Historie
-CREATE INDEX ax_historischesflurstueck_kennz
-   ON ax_historischesflurstueck(flurstueckskennzeichen /* ASC NULLS LAST */);
-COMMENT ON INDEX ax_historischesflurstueck_kennz IS 'Suche nach FlurstÃŒckskennzeichen';
-
-
-
--- N  a t u r -,  U m w e l t -   o d e r   B o d e n s c h u t z r e c h t
--- ------------------------------------------------------------------------
-CREATE TABLE ax_naturumweltoderbodenschutzrecht (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     artderfestlegung    integer,
-     land                integer,
-     stelle              varchar,
-     name                varchar,
-     CONSTRAINT ax_naturumweltoderbodenschutzrecht_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_naturumweltoderbodenschutzrecht','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
-
-CREATE INDEX ax_naturumweltoderbodenschutzrecht_geom_idx   ON ax_naturumweltoderbodenschutzrecht USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_naturumweltoderbodenschutzrecht_gml ON ax_naturumweltoderbodenschutzrecht USING btree (gml_id,beginnt);
-CREATE INDEX ax_naturumweltoderbodenschutzrecht_afs ON ax_naturumweltoderbodenschutzrecht(land,stelle);
-
-COMMENT ON TABLE  ax_naturumweltoderbodenschutzrecht        IS 'N  a t u r -,  U m w e l t -   o d e r   B o d e n s c h u t z r e c h t';
-COMMENT ON COLUMN ax_naturumweltoderbodenschutzrecht.gml_id IS 'Identifikator, global eindeutig';
-
-
--- S c h u t z g e b i e t   n a c h   W a s s e r r e c h t
--- -----------------------------------------------------------
-CREATE TABLE ax_schutzgebietnachwasserrecht (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     artderfestlegung    integer,
-     land                integer,
-     stelle              varchar,
-     art                 varchar[],
-     name                varchar[],
-     nummerdesschutzgebietes  varchar,
-     CONSTRAINT ax_schutzgebietnachwasserrecht_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_schutzgebietnachwasserrecht','dummy',:alkis_epsg,'POINT',2);
-
-CREATE UNIQUE INDEX ax_schutzgebietnachwasserrecht_gml ON ax_schutzgebietnachwasserrecht USING btree (gml_id,beginnt);
-CREATE INDEX ax_schutzgebietnachwasserrecht_afs ON ax_schutzgebietnachwasserrecht(land,stelle);
-
-COMMENT ON TABLE  ax_schutzgebietnachwasserrecht        IS 'S c h u t z g e b i e t   n a c h   W a s s s e r r e c h t';
-COMMENT ON COLUMN ax_schutzgebietnachwasserrecht.gml_id IS 'Identifikator, global eindeutig';
-
--- S c h u t z g e b i e t   n a c h   N a t u r,  U m w e l t  o d e r  B o d e n s c h u t z r e c h t
--- -----------------------------------------------------------------------------------------------------
-CREATE TABLE ax_schutzgebietnachnaturumweltoderbodenschutzrecht (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     artderfestlegung    integer,
-     land                integer,
-     stelle              varchar,
-     CONSTRAINT ax_schutzgebietnachnaturumweltoderbodenschutzrecht_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_schutzgebietnachnaturumweltoderbodenschutzrecht','dummy',:alkis_epsg,'POINT',2);
-
-CREATE UNIQUE INDEX ax_schutzgebietnachnaturumweltoderbodenschutzrecht_gml ON ax_schutzgebietnachnaturumweltoderbodenschutzrecht USING btree (gml_id,beginnt);
-CREATE INDEX ax_schutzgebietnachnaturumweltoderbodenschutzrecht_afs ON ax_schutzgebietnachnaturumweltoderbodenschutzrecht(land,stelle);
-
-COMMENT ON TABLE  ax_schutzgebietnachnaturumweltoderbodenschutzrecht IS 'S c h u t z g e b i e t   n a c h   N a t u r,  U m w e l t  o d e r  B o d e n s c h u t z r e c h t';
-COMMENT ON COLUMN ax_schutzgebietnachnaturumweltoderbodenschutzrecht.gml_id IS 'Identifikator, global eindeutig';
-
-
--- S c h u t z z o n e
--- -------------------
-CREATE TABLE ax_schutzzone (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     "zone"              integer,
-     art                 varchar[],
-     CONSTRAINT ax_schutzzone_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_schutzzone','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
-
-CREATE INDEX ax_schutzzone_geom_idx   ON ax_schutzzone USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_schutzzone_gml ON ax_schutzzone USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_schutzzone        IS 'S c h u t z z o n e';
-COMMENT ON COLUMN ax_schutzzone.gml_id IS 'Identifikator, global eindeutig';
-
-
--- T o p o g r a p h i s c h e   L i n i e
--- ---------------------------------------
-CREATE TABLE ax_topographischelinie (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     liniendarstellung   integer,
-     sonstigeeigenschaft varchar,
-     CONSTRAINT ax_topographischelinie_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_topographischelinie','wkb_geometry',:alkis_epsg,'LINESTRING',2);
-
-CREATE INDEX ax_topographischelinie_geom_idx   ON ax_topographischelinie USING gist(wkb_geometry);
-CREATE UNIQUE INDEX ax_topographischelinie_gml ON ax_topographischelinie USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_topographischelinie        IS 'T o p o g r a p h i s c h e   L i n i e';
-COMMENT ON COLUMN ax_topographischelinie.gml_id IS 'Identifikator, global eindeutig';
-
-
---*** ############################################################
---*** Objektbereich: AAA Basisschema
---*** ############################################################
-
---** Objektartengruppe: AAA_Praesentationsobjekte
---   ===================================================================
-
-
--- A P   P P O
--- ----------------------------------------------
-CREATE TABLE ap_ppo (
-     ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
-     beginnt                  character(20),
-     endet                    character(20),
-     advstandardmodell        varchar[],
-     sonstigesmodell          varchar,
-     anlass                   varchar,
-     signaturnummer           varchar,
-     darstellungsprioritaet   integer,
-     art                      varchar,
-     drehwinkel               double precision,
-     CONSTRAINT ap_ppo_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ap_ppo','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POINT/MULTIPOLYGON
-
-CREATE INDEX ap_ppo_geom_idx   ON ap_ppo USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ap_ppo_gml ON ap_ppo USING btree (gml_id,beginnt);
-CREATE INDEX ap_ppo_endet      ON ap_ppo USING btree (endet);
-
-COMMENT ON TABLE  ap_ppo        IS 'PPO: PunktfÃ¶rmiges PrÃ€sentationsobjekt';
-COMMENT ON COLUMN ap_ppo.gml_id IS 'Identifikator, global eindeutig';
-
-
--- A P   L P O
--- ----------------------------------------------
-CREATE TABLE ap_lpo (
-     ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
-     beginnt                  character(20),
-     endet                    character(20),
-     advstandardmodell        varchar[],
-     anlass                   varchar,
-     signaturnummer           varchar,
-     darstellungsprioritaet   integer,
-     art                      varchar,
-     CONSTRAINT ap_lpo_pk PRIMARY KEY (ogc_fid)
-);
-SELECT AddGeometryColumn('ap_lpo','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- LINESTRING/MULTILINESTRING
-
-CREATE INDEX ap_lpo_geom_idx   ON ap_lpo USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ap_lpo_gml ON ap_lpo USING btree (gml_id,beginnt);
-CREATE INDEX ap_lpo_endet      ON ap_lpo USING btree (endet);
-
-COMMENT ON TABLE  ap_lpo        IS 'LPO: LinienfÃ¶rmiges PrÃ€sentationsobjekt';
-COMMENT ON COLUMN ap_lpo.gml_id IS 'Identifikator, global eindeutig';
-
-
--- A P   P T O
--- ----------------------------------------------
-CREATE TABLE ap_pto (
-     ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
-     beginnt                  character(20),
-     endet                    character(20),
-     advstandardmodell        varchar[],
-     anlass                   varchar,
-     schriftinhalt            varchar,
-     fontsperrung             double precision,
-     skalierung               double precision,
-     horizontaleausrichtung   varchar,
-     vertikaleausrichtung     varchar,
-     signaturnummer           varchar,
-     darstellungsprioritaet   integer,
-     art                      varchar,            -- Inhalte z.B. "ZAE_NEN" siehe unten
-     drehwinkel               double precision,   -- falsche Masseinheit fÃŒr Mapserver, im View umrechnen
-     CONSTRAINT ap_pto_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ap_pto','wkb_geometry',:alkis_epsg,'POINT',2);
-
-CREATE INDEX ap_pto_geom_idx   ON ap_pto USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ap_pto_gml ON ap_pto USING btree (gml_id,beginnt);
-CREATE INDEX art_idx           ON ap_pto USING btree (art);
-CREATE INDEX ap_pto_endet_idx  ON ap_pto USING btree (endet);
-CREATE INDEX ap_pto_sn_idx     ON ap_pto USING btree (signaturnummer);
-
-COMMENT ON TABLE  ap_pto               IS 'PTO: TextfÃ¶rmiges PrÃ€sentationsobjekt mit punktfÃ¶rmiger Textgeometrie ';
-COMMENT ON COLUMN ap_pto.gml_id        IS 'Identifikator, global eindeutig';
-COMMENT ON COLUMN ap_pto.schriftinhalt IS 'Label: anzuzeigender Text';
-COMMENT ON INDEX  art_idx              IS 'Suchindex auf hÃ€ufig benutztem Filterkriterium';
-
-
--- Die Abfrage "select distinct art from ap_pto" liefert folgende Werte:
--- "ART""BezKlassifizierungStrasse""BSA""BWF""FKT""Fliessgewaesser""FreierText""Friedhof""Gewanne"
--- "GFK""GKN""Halde_LGT""HNR""MDB""NAM""PKN""Platz""PNR""SPO""Strasse"
--- "urn:adv:fachdatenverbindung:AA_Antrag""WE1_TEXT""Weg""ZAE_NEN""ZNM""<NULL>"
-
-
-
--- A P   L T O
--- ----------------------------------------------
-CREATE TABLE ap_lto (
-     ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
-     beginnt                  character(20),
-     endet                    character(20),
-     advstandardmodell        varchar,
-     sonstigesmodell          varchar,
-     anlass                   varchar,
-     art                      varchar,
-     schriftinhalt            varchar,
-     fontsperrung             double precision,
-     skalierung               double precision,
-     horizontaleausrichtung   varchar,
-     vertikaleausrichtung     varchar,
-     signaturnummer           varchar,
-     darstellungsprioritaet   integer,
-     CONSTRAINT ap_lto_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ap_lto','wkb_geometry',:alkis_epsg,'LINESTRING',2);
-
-CREATE INDEX ap_lto_geom_idx   ON ap_lto USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ap_lto_gml ON ap_lto USING btree (gml_id,beginnt);
-CREATE INDEX ap_lto_endet_idx  ON ap_lto USING btree (endet);
-
-COMMENT ON TABLE  ap_lto        IS 'LTO: TextfÃ¶rmiges PrÃ€sentationsobjekt mit linienfÃ¶rmiger Textgeometrie';
-COMMENT ON COLUMN ap_lto.gml_id IS 'Identifikator, global eindeutig';
-
-
--- A P  D a r s t e l l u n g
--- ----------------------------------------------
-CREATE TABLE ap_darstellung (
-     ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
-     beginnt                  character(20), -- Datumsformat
-     endet                    character(20), -- Datumsformat
-     advstandardmodell        varchar[],
-     anlass                   varchar,
-     art                      varchar,
-     darstellungsprioritaet   integer,
-     signaturnummer           varchar,
-     positionierungsregel     integer,
-     CONSTRAINT ap_darstellung_pk PRIMARY KEY (ogc_fid)
-);
-
--- Dummy-Eintrag in Metatabelle
-SELECT AddGeometryColumn('ap_darstellung','dummy',:alkis_epsg,'POINT',2);
-
-CREATE UNIQUE INDEX ap_darstellung_gml ON ap_darstellung USING btree (gml_id,beginnt);
-CREATE INDEX ap_darstellung_endet_idx  ON ap_darstellung USING btree (endet);
-
-COMMENT ON TABLE  ap_darstellung        IS 'A P  D a r s t e l l u n g';
-COMMENT ON COLUMN ap_darstellung.gml_id IS 'Identifikator, global eindeutig';
-
-
---*** ############################################################
---*** Objektbereich: FlurstÃŒcke, Lage, Punkte
---*** ############################################################
-
---** Objektartengruppe: Angaben zum FlurstÃŒck
---   ===================================================================
-
--- F l u r s t u e c k
--- ----------------------------------------------
--- Kennung 11001
-CREATE TABLE ax_flurstueck (
-     ogc_fid                       serial NOT NULL,
-     gml_id                        character(16),         -- Datenbank-Tabelle interner SchlÃŒssel
-
-     -- GID: AX_Flurstueck_Kerndaten
-     -- 'FlurstÃŒck_Kerndaten' enthÃ€lt Eigenschaften des FlurstÃŒcks, die auch fÃŒr andere FlurstÃŒcksobjektarten gelten (z.B. Historisches FlurstÃŒck).
-     land                          integer,         --
-     gemarkungsnummer              integer,            --
-     flurnummer                    integer,               -- Teile des FlurstÃŒckskennzeichens
-     zaehler                       integer,            --    (redundant zu flurstueckskennzeichen)
-     nenner                        integer,         --
-     -- daraus abgeleitet:
-     flurstueckskennzeichen        character(20),         -- Inhalt rechts mit __ auf 20 aufgefÃŒllt
-     amtlicheflaeche               double precision,             -- AFL
-     abweichenderrechtszustand     varchar default 'false',      -- ARZ
-     zweifelhafterFlurstuecksnachweis varchar default 'false',   -- ZFM Boolean
-     rechtsbehelfsverfahren        varchar default 'false',      -- RBV
-     zeitpunktderentstehung        varchar,                      -- ZDE  Inhalt jjjj-mm-tt  besser Format date ?
-     gemeinde                      integer,
-     -- GID: ENDE AX_Flurstueck_Kerndaten
-
-     identifier                    character(44),
-     beginnt                       character(20),         -- Timestamp der Entstehung
-     endet                         character(20),         -- Timestamp des Untergangs
-     advstandardmodell             varchar,               -- steuert die Darstellung nach Kartentyp
-     anlass                        varchar,
-     name                          varchar[],
-     regierungsbezirk              integer,
-     kreis                         integer,
-     stelle                        varchar[],
-     angabenzumabschnittflurstueck varchar[],
-     kennungschluessel             varchar[],
-     flaechedesabschnitts          double precision[],
-     angabenzumabschnittnummeraktenzeichen integer[],
-     angabenzumabschnittbemerkung  varchar[],
-     CONSTRAINT ax_flurstueck_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_flurstueck','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
-
-CREATE INDEX ax_flurstueck_geom_idx   ON ax_flurstueck USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_flurstueck_gml ON ax_flurstueck USING btree (gml_id,beginnt);
-CREATE INDEX ax_flurstueck_lgfzn ON ax_flurstueck USING btree (land,gemarkungsnummer,flurnummer,zaehler,nenner);
-CREATE INDEX ax_flurstueck_arz ON ax_flurstueck USING btree (abweichenderrechtszustand);
-
-  COMMENT ON TABLE  ax_flurstueck                           IS '"F l u r s t u e c k" ist ein Teil der ErdoberflÃ€che, der von einer im Liegenschaftskataster festgelegten Grenzlinie umschlossen und mit einer Nummer bezeichnet ist. Es ist die Buchungseinheit des Liegenschaftskatasters.';
-  COMMENT ON COLUMN ax_flurstueck.gml_id                    IS 'Identifikator, global eindeutig';
-  COMMENT ON COLUMN ax_flurstueck.flurnummer                IS 'FLN "Flurnummer" ist die von der KatasterbehÃ¶rde zur eindeutigen Bezeichnung vergebene Nummer einer Flur, die eine Gruppe von zusammenhÃ€ngenden FlurstÃŒcken innerhalb einer Gemarkung umfasst.';
-  COMMENT ON COLUMN ax_flurstueck.zaehler                   IS 'ZAE  Dieses Attribut enthÃ€lt den ZÃ€hler der FlurstÃŒcknummer';
-  COMMENT ON COLUMN ax_flurstueck.nenner                    IS 'NEN  Dieses Attribut enthÃ€lt den Nenner der FlurstÃŒcknummer';
-  COMMENT ON COLUMN ax_flurstueck.flurstueckskennzeichen    IS '"FlurstÃŒckskennzeichen" ist ein von der KatasterbehÃ¶rde zur eindeutigen Bezeichnung des FlurstÃŒcks vergebenes Ordnungsmerkmal.
-Die Attributart setzt sich aus den nachfolgenden expliziten Attributarten in der angegebenen Reihenfolge zusammen:
- 1.  Land (2 Stellen)
- 2.  Gemarkungsnummer (4 Stellen)
- 3.  Flurnummer (3 Stellen)
- 4.  FlurstÃŒcksnummer
- 4.1 ZÃ€hler (5 Stellen)
- 4.2 Nenner (4 Stellen)
- 5.  FlurstÃŒcksfolge (2 Stellen)
-Die Elemente sind rechtsbÃŒndig zu belegen, fehlende Stellen sind mit fÃŒhrenden Nullen zu belegen.
-Da die Flurnummer und die FlurstÃŒcksfolge optional sind, sind aufgrund der bundeseinheitlichen Definition im FlurstÃŒckskennzeichen die entsprechenden Stellen, sofern sie nicht belegt sind, durch Unterstrich "_" ersetzt.
-Gleiches gilt fÃŒr FlurstÃŒcksnummern ohne Nenner, hier ist der fehlende Nenner im FlurstÃŒckskennzeichen durch Unterstriche zu ersetzen.';
-  COMMENT ON COLUMN ax_flurstueck.amtlicheflaeche           IS 'AFL "Amtliche FlÃ€che" ist der im Liegenschaftskataster festgelegte FlÃ€cheninhalt des FlurstÃŒcks in [qm]. FlurstÃŒcksflÃ€chen kleiner 0,5 qm kÃ¶nnen mit bis zu zwei Nachkommastellen gefÃŒhrt werden, ansonsten ohne Nachkommastellen.';
-  COMMENT ON COLUMN ax_flurstueck.abweichenderrechtszustand IS 'ARZ "Abweichender Rechtszustand" ist ein Hinweis darauf, dass auÃerhalb des Grundbuches in einem durch Gesetz geregelten Verfahren der Bodenordnung (siehe Objektart "Bau-, Raum- oder Bodenordnungsrecht", AA "Art der Festlegung", Werte 1750, 1770, 2100 bis 2340) ein neuer Rechtszustand eingetreten ist und das amtliche Verzeichnis der jeweiligen ausfÃŒhrenden Stelle maÃgebend ist.';
-  COMMENT ON COLUMN ax_flurstueck.zweifelhafterFlurstuecksnachweis IS 'ZFM "Zweifelhafter FlurstÃŒcksnachweis" ist eine Kennzeichnung eines FlurstÃŒcks, dessen Angaben nicht zweifelsfrei berichtigt werden kÃ¶nnen.';
-  COMMENT ON COLUMN ax_flurstueck.rechtsbehelfsverfahren    IS 'RBV "Rechtsbehelfsverfahren" ist der Hinweis darauf, dass bei dem FlurstÃŒck ein laufendes Rechtsbehelfsverfahren anhÃ€ngig ist.';
-  COMMENT ON COLUMN ax_flurstueck.zeitpunktderentstehung    IS 'ZDE "Zeitpunkt der Entstehung" ist der Zeitpunkt, zu dem das FlurstÃŒck fachlich entstanden ist.';
-  COMMENT ON COLUMN ax_flurstueck.gemeinde                  IS 'Gemeindekennzeichen zur Zuordnung der FlustÃŒcksdaten zu einer Gemeinde.';
-  COMMENT ON COLUMN ax_flurstueck.name                      IS 'Array mit FortfÃŒhrungsjahr und -Nummer';
-  COMMENT ON COLUMN ax_flurstueck.regierungsbezirk          IS 'Regierungsbezirk';
-  COMMENT ON COLUMN ax_flurstueck.kreis                     IS 'Kreis';
-
-
--- Kennzeichen indizieren, z.B. fuer Suche aus der Historie
-CREATE INDEX ax_flurstueck_kennz
-   ON ax_flurstueck USING btree (flurstueckskennzeichen /* ASC NULLS LAST*/ );
-COMMENT ON INDEX ax_flurstueck_kennz IS 'Suche nach FlurstÃŒckskennzeichen';
-
--- Relationen:
---  istGebucht                --> AX_Buchungsstelle
---  zeigtAuf                  --> AX_LagebezeichnungOhneHausnummer
---  weistAuf                  --> AX_LagebezeichnungMitHausnummer
---  gehoertAnteiligZu         --> AX_Flurstueck
---  beziehtSichAufFlurstueck  --> AX_Flurstueck
-
-
--- B e s o n d e r e   F l u r s t u e c k s g r e n z e
--- -----------------------------------------------------
-CREATE TABLE ax_besondereflurstuecksgrenze (
-     ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
-     beginnt                  character(20),
-     endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
-     artderflurstuecksgrenze  integer[],
-     CONSTRAINT ax_besondereflurstuecksgrenze_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_besondereflurstuecksgrenze','wkb_geometry',:alkis_epsg,'LINESTRING',2);
-
-CREATE INDEX ax_besondereflurstuecksgrenze_geom_idx   ON ax_besondereflurstuecksgrenze USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_besondereflurstuecksgrenze_gml ON ax_besondereflurstuecksgrenze USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_besondereflurstuecksgrenze        IS 'B e s o n d e r e   F l u r s t u e c k s g r e n z e';
-COMMENT ON COLUMN ax_besondereflurstuecksgrenze.gml_id IS 'Identifikator, global eindeutig';
-
-
--- G r e n z p u n k t
--- ----------------------------------------------
-CREATE TABLE ax_grenzpunkt (
-     ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
-     beginnt                  character(20),
-     endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
-     punktkennung             varchar,
-     land                     integer,
-     stelle                   integer,
-     abmarkung_marke          integer,
-     festgestelltergrenzpunkt varchar,
-     besonderepunktnummer     varchar,
-     bemerkungzurabmarkung    integer,
-     sonstigeeigenschaft      varchar[],
-     art                      varchar,
-     name                     varchar[],
-     zeitpunktderentstehung   varchar,
-     relativehoehe            double precision,
-     CONSTRAINT ax_grenzpunkt_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_grenzpunkt','dummy',:alkis_epsg,'POINT',2);
-
-CREATE UNIQUE INDEX ax_grenzpunkt_gml ON ax_grenzpunkt USING btree (gml_id,beginnt);
-CREATE INDEX ax_grenzpunkt_abmm ON ax_grenzpunkt USING btree (abmarkung_marke);
-
-COMMENT ON TABLE  ax_grenzpunkt        IS 'G r e n z p u n k t';
-COMMENT ON COLUMN ax_grenzpunkt.gml_id IS 'Identifikator, global eindeutig';
-
-
---** Objektartengruppe: Angaben zur Lage
---   ===================================================================
-
--- L a g e b e z e i c h n u n g   o h n e   H a u s n u m m e r
--- -------------------------------------------------------------
-CREATE TABLE ax_lagebezeichnungohnehausnummer (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     unverschluesselt    varchar,  -- Gewanne
-     land                integer,  -- Strassenschluessel
-     regierungsbezirk    integer,
-     kreis               integer,
-     gemeinde            integer,
-     lage                varchar,
-     CONSTRAINT ax_lagebezeichnungohnehausnummer_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_lagebezeichnungohnehausnummer','dummy',:alkis_epsg,'POINT',2);
-
--- Verbindungstabellen indizieren
-CREATE UNIQUE INDEX ax_lagebezeichnungohnehausnummer_gml ON ax_lagebezeichnungohnehausnummer USING btree (gml_id,beginnt);
-
--- Such-Index (z.B. fuer Navigations-Programm)
-CREATE INDEX ax_lagebezeichnungohnehausnummer_key ON ax_lagebezeichnungohnehausnummer USING btree (land, regierungsbezirk, kreis, gemeinde,lage);
-
-COMMENT ON TABLE  ax_lagebezeichnungohnehausnummer        IS 'L a g e b e z e i c h n u n g   o h n e   H a u s n u m m e r';
-COMMENT ON COLUMN ax_lagebezeichnungohnehausnummer.gml_id IS 'Identifikator, global eindeutig';
-
-
--- L a g e b e z e i c h n u n g   m i t   H a u s n u m m e r
--- -----------------------------------------------------------
---   ax_flurstueck  >weistAuf>    AX_LagebezeichnungMitHausnummer
---                  <gehoertZu<
-CREATE TABLE ax_lagebezeichnungmithausnummer (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     land                integer,
-     regierungsbezirk    integer,
-     kreis               integer,
-     gemeinde            integer,
-     lage                varchar,  -- Strassenschluessel
-     hausnummer          varchar,  -- Nummer (blank) Zusatz
-     CONSTRAINT ax_lagebezeichnungmithausnummer_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_lagebezeichnungmithausnummer','dummy',:alkis_epsg,'POINT',2);
-
-CREATE UNIQUE INDEX ax_lagebezeichnungmithausnummer_gml ON ax_lagebezeichnungmithausnummer USING btree (gml_id,beginnt); -- Verbindungstabellen indizieren
-CREATE INDEX ax_lagebezeichnungmithausnummer_lage       ON ax_lagebezeichnungmithausnummer USING btree (gemeinde, lage); -- Adressen-Suche nach Strasse
-
-COMMENT ON TABLE  ax_lagebezeichnungmithausnummer        IS 'L a g e b e z e i c h n u n g   m i t   H a u s n u m m e r';
-COMMENT ON COLUMN ax_lagebezeichnungmithausnummer.gml_id IS 'Identifikator, global eindeutig';
-
-
--- L a g e b e z e i c h n u n g   m i t  P s e u d o n u m m e r
--- --------------------------------------------------------------
--- NebengebÃ€ude: lfd-Nummer eines NebengebÃ€udes zu einer (Pseudo-) Hausnummer
-CREATE TABLE ax_lagebezeichnungmitpseudonummer (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     land                integer,
-     regierungsbezirk    integer,
-     kreis               integer,
-     gemeinde            integer,
-     lage                varchar, -- Strassenschluessel
-     pseudonummer        varchar,
-     laufendenummer      varchar, -- leer, Zahl, "P2"
-     CONSTRAINT ax_lagebezeichnungmitpseudonummer_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_lagebezeichnungmitpseudonummer','dummy',:alkis_epsg,'POINT',2);
-
--- Verbindungstabellen indizieren
-CREATE UNIQUE INDEX ax_lagebezeichnungmitpseudonummer_gml ON ax_lagebezeichnungmitpseudonummer USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_lagebezeichnungmitpseudonummer        IS 'L a g e b e z e i c h n u n g   m i t  P s e u d o n u m m e r';
-COMMENT ON COLUMN ax_lagebezeichnungmitpseudonummer.gml_id IS 'Identifikator, global eindeutig';
-
-
-
---** Objektartengruppe: Angaben zum Netzpunkt
---   ===================================================================
-
-
--- A u f n a h m e p u n k t
--- ----------------------------------------------
-CREATE TABLE ax_aufnahmepunkt (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     punktkennung        varchar,   --integer ist zu klein,
-     land                integer,
-     stelle              integer,
-     sonstigeeigenschaft varchar[],
-     vermarkung_marke    integer,
-     relativehoehe       double precision,
-     CONSTRAINT ax_aufnahmepunkt_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_aufnahmepunkt','dummy',:alkis_epsg,'POINT',2);
-
-CREATE UNIQUE INDEX ax_aufnahmepunkt_gml ON ax_aufnahmepunkt USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_aufnahmepunkt        IS 'A u f n a h m e p u n k t';
-COMMENT ON COLUMN ax_aufnahmepunkt.gml_id IS 'Identifikator, global eindeutig';
-
-
--- S i c h e r u n g s p u n k t
--- ----------------------------------------------
-CREATE TABLE ax_sicherungspunkt (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     name                varchar,
-     punktkennung        varchar,
-     land                integer,
-     stelle              integer,
-     sonstigeeigenschaft varchar[],
-     vermarkung_marke    integer,
-     relativehoehe       double precision,
-     CONSTRAINT ax_sicherungspunkt_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_sicherungspunkt','dummy',:alkis_epsg,'POINT',2);
-
-COMMENT ON TABLE  ax_sicherungspunkt        IS 'S i c h e r u n g s p u n k t';
-
--- s o n s t i g e r   V e r m e s s u n g s p u n k t
--- ---------------------------------------------------
-CREATE TABLE ax_sonstigervermessungspunkt (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     vermarkung_marke    integer,
-     punktkennung        varchar, -- integer,
-     art                 varchar,
-     land                integer,
-     stelle              integer,
-     sonstigeeigenschaft varchar[],
-     relativehoehe       double precision,
-     CONSTRAINT ax_sonstigervermessungspunkt_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_sonstigervermessungspunkt','dummy',:alkis_epsg,'POINT',2);
-
-CREATE UNIQUE INDEX ax_sonstigervermessungspunkt_gml ON ax_sonstigervermessungspunkt USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_sonstigervermessungspunkt        IS 's o n s t i g e r   V e r m e s s u n g s p u n k t';
-COMMENT ON COLUMN ax_sonstigervermessungspunkt.gml_id IS 'Identifikator, global eindeutig';
-
-
---AX_Netzpunkt
--- ** Tabelle bisher noch nicht generiert
-
-
---** Objektartengruppe: Angaben zum Punktort
---   ===================================================================
-
-
---AX_Punktort
-
-
--- P u n k t o r t   AG
--- ----------------------------------------------
-CREATE TABLE ax_punktortag (
-     ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
-     beginnt                  character(20),
-     endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
-     art                      varchar[],
-     name                     varchar[],
-     kartendarstellung        varchar,
-     ax_datenerhebung_punktort integer,
-     genauigkeitsstufe        integer,
-     vertrauenswuerdigkeit    integer,
-     koordinatenstatus        integer,
-     CONSTRAINT ax_punktortag_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_punktortag','wkb_geometry',:alkis_epsg,'POINT',2);
-
-CREATE INDEX ax_punktortag_geom_idx ON ax_punktortag USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_punktortag_gml ON ax_punktortag USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_punktortag        IS 'P u n k t o r t   AG';
-COMMENT ON COLUMN ax_punktortag.gml_id IS 'Identifikator, global eindeutig';
-
-
--- P u n k t o r t   A U
--- ----------------------------------------------
-CREATE TABLE ax_punktortau (
-     ogc_fid                       serial NOT NULL,
-     gml_id                        character(16),
-     identifier                    character(44),
-     beginnt                       character(20),
-     endet                         character(20),
-     advstandardmodell             varchar,
-     anlass                        varchar,
-     kartendarstellung             varchar,
-     ax_datenerhebung_punktort     integer,
-     name                          varchar[],
-     individualname                varchar,
-     vertrauenswuerdigkeit         integer,
-     genauigkeitsstufe             integer,
-     koordinatenstatus             integer,
-     CONSTRAINT ax_punktortau_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_punktortau','wkb_geometry',:alkis_epsg,'POINT',3); -- 0,0,HÃ¶he
-
-CREATE INDEX ax_punktortau_geom_idx ON ax_punktortau USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_punktortau_gml ON ax_punktortau USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_punktortau        IS 'P u n k t o r t   A U';
-COMMENT ON COLUMN ax_punktortau.gml_id IS 'Identifikator, global eindeutig';
-
-
--- P u n k t o r t   T A
--- ----------------------------------------------
-CREATE TABLE ax_punktortta (
-     ogc_fid                       serial NOT NULL,
-     gml_id                        character(16),
-     identifier                    character(44),
-     beginnt                       character(20),
-     endet                         character(20),
-     advstandardmodell             varchar,
-     anlass                        varchar,
-     kartendarstellung             varchar,
-     ax_datenerhebung_punktort     integer,
-     description                   integer,
-     art                           varchar[],
-     name                          varchar[],
-     genauigkeitsstufe             integer,
-     vertrauenswuerdigkeit         integer,
-     koordinatenstatus             integer,
-     CONSTRAINT ax_punktortta_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_punktortta','wkb_geometry',:alkis_epsg,'POINT',2);
-
-CREATE INDEX ax_punktortta_geom_idx ON ax_punktortta USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_punktortta_gml ON ax_punktortta USING btree (gml_id,beginnt);
-CREATE INDEX ax_punktortta_endet_idx ON ax_punktortta USING btree (endet);
-
-COMMENT ON TABLE  ax_punktortta        IS 'P u n k t o r t   T A';
-COMMENT ON COLUMN ax_punktortta.gml_id IS 'Identifikator, global eindeutig';
-
-
---** Objektartengruppe: FortfÃŒhrungsnachweis
---   ===================================================================
-
--- F o r t f u e h r u n g s n a c h w e i s / D e c k b l a t t
--- --------------------------------------------------------------
-CREATE TABLE ax_fortfuehrungsnachweisdeckblatt (
-     ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
-     beginnt                  character(20),
-     endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
-     uri                      varchar,
-     fortfuehrungsfallnummernbereich varchar,
-     land                     integer,
-     gemarkungsnummer         integer,
-     laufendenummer           integer,
-     titel                    varchar,
-     erstelltam               varchar,       -- Datum jjjj-mm-tt
-     fortfuehrungsentscheidungam  varchar,
-     fortfuehrungsentscheidungvon varchar,  -- Bearbeiter-Name und -Titel
-     bemerkung                varchar,
-     beziehtsichauf           varchar,
-     CONSTRAINT ax_fortfuehrungsnachweisdeckblatt_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_fortfuehrungsnachweisdeckblatt','dummy',:alkis_epsg,'POINT',2);
-
-COMMENT ON TABLE  ax_fortfuehrungsnachweisdeckblatt
-IS 'F o r t f u e h r u n g s n a c h w e i s / D e c k b l a t t';
-
-
--- F o r t f u e h r u n g s f a l l
--- ---------------------------------
-CREATE TABLE ax_fortfuehrungsfall (
-     ogc_fid                            serial NOT NULL,
-     gml_id                             character(16),
-     identifier                         character(44),
-     beginnt                            character(20),
-     endet                              character(20),
-     advstandardmodell                  varchar,
-     anlass                             varchar,
-     uri                                varchar,
-     fortfuehrungsfallnummer            integer,
-     laufendenummer                     integer,
-     ueberschriftimfortfuehrungsnachweis integer[],
-     anzahlderfortfuehrungsmitteilungen integer,
-     zeigtaufaltesflurstueck            varchar[], -- Format wie flurstueckskennzeichen (20) als Array
-     zeigtaufneuesflurstueck            varchar[], -- Format wie flurstueckskennzeichen (20) als Array
-     bemerkung                          varchar,
-     CONSTRAINT ax_fortfuehrungsfall_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_fortfuehrungsfall','dummy',:alkis_epsg,'POINT',2);
-
-COMMENT ON TABLE  ax_fortfuehrungsfall IS 'F o r t f u e h r u n g s f a l l';
-
-
---** Objektartengruppe: Angaben zur Reservierung
---   ===================================================================
-
--- R e s e r v i e r u n g
--- -----------------------
-CREATE TABLE ax_reservierung (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     art                 integer,
-     nummer              varchar,
-     land                integer,
-     stelle              integer,
-     ablaufderreservierung varchar,
-     antragsnummer       varchar,
-     auftragsnummer      varchar,
-     CONSTRAINT ax_reservierung_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_reservierung','dummy',:alkis_epsg,'POINT',2);
-
-COMMENT ON TABLE  ax_reservierung IS 'R e s e r v i e r u n g';
-
-
--- P u n k t k e n n u n g   U n t e r g e g a n g e n
--- ---------------------------------------------------
-CREATE TABLE ax_punktkennunguntergegangen (
-     ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
-     beginnt                  character(20),
-     endet                    character(20),
-     advstandardmodell        varchar,
-     sonstigesmodell          varchar,
-     anlass                   varchar,
-     punktkennung             varchar,
-     art                      integer,
-     CONSTRAINT ax_punktkennunguntergegangen_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_punktkennunguntergegangen','dummy',:alkis_epsg,'POINT',2);
-
-COMMENT ON TABLE  ax_punktkennunguntergegangen IS 'P u n k t k e n n u n g, untergegangen';
-
-
---** Objektartengruppe: Angaben zur Historie
---   ===================================================================
-
--- Variante B: "Vollhistorie" ( statt ax_historischesflurstueckalb)
-CREATE TABLE ax_historischesflurstueckohneraumbezug (
-     ogc_fid                       serial NOT NULL,
-     gml_id                        character(16),
-     -- GID: AX_Flurstueck_Kerndaten
-     -- 'FlurstÃŒck_Kerndaten' enthÃ€lt Eigenschaften des FlurstÃŒcks, die auch fÃŒr andere FlurstÃŒcksobjektarten gelten (z.B. Historisches FlurstÃŒck).
-     land                          integer,         --
-     gemarkungsnummer              integer,            --
-     flurnummer                    integer,               -- Teile des FlurstÃŒckskennzeichens
-     zaehler                       integer,            --    (redundant zu flurstueckskennzeichen)
-     nenner                        integer,         --
-     -- daraus abgeleitet:
-     flurstueckskennzeichen        character(20),     -- Inhalt rechts mit __ auf 20 aufgefÃŒllt
-     amtlicheflaeche               double precision,  -- AFL
-     abweichenderrechtszustand     varchar,           -- ARZ
-     zweifelhafterFlurstuecksnachweis varchar,        -- ZFM
-     rechtsbehelfsverfahren        integer,           -- RBV
-     zeitpunktderentstehung        varchar,           -- ZDE  Inhalt jjjj-mm-tt  besser Format date ?
-     gemeinde                      integer,
-     -- GID: ENDE AX_Flurstueck_Kerndaten
-     identifier                    character(44),
-     beginnt                       character(20),
-     endet                         character(20),
-     advstandardmodell             character(4),
-     anlass                        varchar,
-     name                          varchar[],          -- Array {a,b,c}
-     nachfolgerflurstueckskennzeichen   varchar[],     -- Array {a,b,c}
-     vorgaengerflurstueckskennzeichen   varchar[],     -- Array {a,b,c}
-     CONSTRAINT ax_historischesflurstueckohneraumbezug_pk PRIMARY KEY (ogc_fid)
-);
-
-  COMMENT ON TABLE  ax_historischesflurstueckohneraumbezug        IS '"Historisches FlurstÃŒck ohne Raumbezug" ist ein nicht mehr aktuelles FlurstÃŒck, das schon im ALB historisch geworden ist, nach ALKIS migriert und im Rahmen der Vollhistorie gefÃŒhrt wird.';
-  COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.gml_id IS 'Identifikator, global eindeutig';
-  COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.flurnummer                IS 'FLN "Flurnummer" ist die von der KatasterbehÃ¶rde zur eindeutigen Bezeichnung vergebene Nummer einer Flur, die eine Gruppe von zusammenhÃ€ngenden FlurstÃŒcken innerhalb einer Gemarkung umfasst.';
-  COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.zaehler                   IS 'ZAE  Dieses Attribut enthÃ€lt den ZÃ€hler der FlurstÃŒcknummer';
-  COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.nenner                    IS 'NEN  Dieses Attribut enthÃ€lt den Nenner der FlurstÃŒcknummer';
-  COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.flurstueckskennzeichen    IS '"FlurstÃŒckskennzeichen" ist ein von der KatasterbehÃ¶rde zur eindeutigen Bezeichnung des FlurstÃŒcks vergebenes Ordnungsmerkmal.
-Die Attributart setzt sich aus den nachfolgenden expliziten Attributarten in der angegebenen Reihenfolge zusammen:
- 1.  Land (2 Stellen)
- 2.  Gemarkungsnummer (4 Stellen)
- 3.  Flurnummer (3 Stellen)
- 4.  FlurstÃŒcksnummer
- 4.1 ZÃ€hler (5 Stellen)
- 4.2 Nenner (4 Stellen)
- 5.  FlurstÃŒcksfolge (2 Stellen)
-Die Elemente sind rechtsbÃŒndig zu belegen, fehlende Stellen sind mit fÃŒhrenden Nullen zu belegen.
-Da die Flurnummer und die FlurstÃŒcksfolge optional sind, sind aufgrund der bundeseinheitlichen Definition im FlurstÃŒckskennzeichen die entsprechenden Stellen, sofern sie nicht belegt sind, durch Unterstrich "_" ersetzt.
-Gleiches gilt fÃŒr FlurstÃŒcksnummern ohne Nenner, hier ist der fehlende Nenner im FlurstÃŒckskennzeichen durch Unterstriche zu ersetzen.';
-  COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.amtlicheflaeche           IS 'AFL "Amtliche FlÃ€che" ist der im Liegenschaftskataster festgelegte FlÃ€cheninhalt des FlurstÃŒcks in [qm]. FlurstÃŒcksflÃ€chen kleiner 0,5 qm kÃ¶nnen mit bis zu zwei Nachkommastellen gefÃŒhrt werden, ansonsten ohne Nachkommastellen.';
-  COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.abweichenderrechtszustand IS 'ARZ "Abweichender Rechtszustand" ist ein Hinweis darauf, dass auÃerhalb des Grundbuches in einem durch Gesetz geregelten Verfahren der Bodenordnung (siehe Objektart "Bau-, Raum- oder Bodenordnungsrecht", AA "Art der Festlegung", Werte 1750, 1770, 2100 bis 2340) ein neuer Rechtszustand eingetreten ist und das amtliche Verzeichnis der jeweiligen ausfÃŒhrenden Stelle maÃgebend ist.';
-  COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.zweifelhafterFlurstuecksnachweis IS 'ZFM "Zweifelhafter FlurstÃŒcksnachweis" ist eine Kennzeichnung eines FlurstÃŒcks, dessen Angaben nicht zweifelsfrei berichtigt werden kÃ¶nnen.';
-  COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.rechtsbehelfsverfahren    IS 'RBV "Rechtsbehelfsverfahren" ist der Hinweis darauf, dass bei dem FlurstÃŒck ein laufendes Rechtsbehelfsverfahren anhÃ€ngig ist.';
-  COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.zeitpunktderentstehung    IS 'ZDE "Zeitpunkt der Entstehung" ist der Zeitpunkt, zu dem das FlurstÃŒck fachlich entstanden ist.';
-  COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.gemeinde                  IS 'Gemeindekennzeichen zur Zuordnung der FlustÃŒcksdaten zu einer Gemeinde.';
-  COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.anlass                    IS '?';
-  COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.name                      IS 'Array mit FortfÃŒhrungsjahr und -Nummer';
-  COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.nachfolgerflurstueckskennzeichen
-  IS '"Nachfolger-FlurstÃŒckskennzeichen" ist die Bezeichnung der FlurstÃŒcke, die dem Objekt "Historisches FlurstÃŒck ohne Raumbezug" direkt nachfolgen.
+COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.amtlicheflaeche           IS 'AFL "Amtliche FlÃ€che" ist der im Liegenschaftskataster festgelegte FlÃ€cheninhalt des FlurstÃŒcks in [qm]. FlurstÃŒcksflÃ€chen kleiner 0,5 qm kÃ¶nnen mit bis zu zwei Nachkommastellen gefÃŒhrt werden, ansonsten ohne Nachkommastellen.';
+COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.abweichenderrechtszustand IS 'ARZ "Abweichender Rechtszustand" ist ein Hinweis darauf, dass auÃerhalb des Grundbuches in einem durch Gesetz geregelten Verfahren der Bodenordnung (siehe Objektart "Bau-, Raum- oder Bodenordnungsrecht", AA "Art der Festlegung", Werte 1750, 1770, 2100 bis 2340) ein neuer Rechtszustand eingetreten ist und das amtliche Verzeichnis der jeweiligen ausfÃŒhrenden Stelle maÃgebend ist.';
+COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.zweifelhafterFlurstuecksnachweis IS 'ZFM "Zweifelhafter FlurstÃŒcksnachweis" ist eine Kennzeichnung eines FlurstÃŒcks, dessen Angaben nicht zweifelsfrei berichtigt werden kÃ¶nnen.';
+COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.rechtsbehelfsverfahren    IS 'RBV "Rechtsbehelfsverfahren" ist der Hinweis darauf, dass bei dem FlurstÃŒck ein laufendes Rechtsbehelfsverfahren anhÃ€ngig ist.';
+COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.zeitpunktderentstehung    IS 'ZDE "Zeitpunkt der Entstehung" ist der Zeitpunkt, zu dem das FlurstÃŒck fachlich entstanden ist.';
+COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.gemeinde                  IS 'Gemeindekennzeichen zur Zuordnung der FlustÃŒcksdaten zu einer Gemeinde.';
+--MMENT ON COLUMN ax_historischesflurstueckohneraumbezug.anlass                    IS '?';
+COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.name                      IS 'Array mit FortfÃŒhrungsjahr und -Nummer';
+COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.nachfolgerflurstueckskennzeichen
+ IS '"Nachfolger-FlurstÃŒckskennzeichen" ist die Bezeichnung der FlurstÃŒcke, die dem Objekt "Historisches FlurstÃŒck ohne Raumbezug" direkt nachfolgen.
 Array mit Kennzeichen im Format der Spalte "flurstueckskennzeichen"';
-  COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.vorgaengerflurstueckskennzeichen
+
+COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.vorgaengerflurstueckskennzeichen
   IS '"VorgÃ€nger-FlurstÃŒckskennzeichen" ist die Bezeichnung der FlurstÃŒcke, die dem Objekt "Historisches FlurstÃŒck ohne Raumbezugs" direkt vorangehen.
 Array mit Kennzeichen im Format der Spalte "flurstueckskennzeichen"';
 
-
--- keine Geometrie, daher ersatzweise: Dummy-Eintrag in Metatabelle
-SELECT AddGeometryColumn('ax_historischesflurstueckohneraumbezug','dummy',:alkis_epsg,'POINT',2);
--- Kennzeichen indizieren, z.B. fuer Suche aus der Historie
-CREATE INDEX ax_hist_fs_ohne_kennz ON ax_historischesflurstueckohneraumbezug USING btree (flurstueckskennzeichen /* ASC NULLS LAST */ );
-COMMENT ON INDEX ax_hist_fs_ohne_kennz IS 'Suche nach FlurstÃŒckskennzeichen';
-
--- Suche nach VorgÃ€nger / Nachfolger
-CREATE INDEX idx_histfsor_vor ON ax_historischesflurstueckohneraumbezug (vorgaengerflurstueckskennzeichen /* ASC */);
--- COMMENT ON INDEX idx_histfsalb_vor IS 'Suchen nach VorgÃ€nger-FlurstÃŒck';
-
-CREATE INDEX idx_histfsor_nach ON ax_historischesflurstueckohneraumbezug (vorgaengerflurstueckskennzeichen /* ASC */);
--- COMMENT ON INDEX idx_histfsalb_vor IS 'Suchen nach Nachfolger-FlurstÃŒck';
-
+COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.gehoertanteiligzu IS '-> Beziehung zu ax_historischesflurstueckohneraumbezug (0..*): ''FlurstÃŒck ohne Raumbezug'' gehÃ¶rt anteilig zu ''FlurstÃŒck ohne Raumbezug''. Die Relationsart kommt nur vor bei FlurstÃŒcken, die eine Relation zu einer Buchungsstelle mit einer der Buchungsarten Anliegerweg, Anliegergraben oder Anliegerwasserlauf aufweist.';
+COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.weistauf   IS '-> Beziehung zu ax_lagebezeichnungmithausnummer (0..*): ''FlurstÃŒck ohne Raumbezug'' weist auf ''Lagebezeichnung mit Hausnummer''.';
+COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.zeigtauf   IS '-> Beziehung zu ax_lagebezeichnungohnehausnummer (0..*): ''FlurstÃŒck ohne Raumbezug'' zeigt auf ''Lagebezeichnung ohne Hausnummer''.';
+COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.istgebucht IS '-> Beziehung zu ax_buchungsstelle (0..1): Ein (oder mehrere) FlurstÃŒck(e) ist (sind) unter einer Buchungsstelle gebucht.';
 
 
@@ -1621,27 +1452,35 @@
 -- *** ############################################################
 
-
--- ** Objektartengruppe:Personen- und Bestandsdaten
+-- ** Objektartengruppe: Personen- und Bestandsdaten
 --   ===================================================================
 
-
--- 21001 P e r s o n
--- ----------------------------------------------
--- Buchwerk. Keine Geometrie
+-- P e r s o n
+-- ----------------------------------------------
+-- Objektart: AX_Person Kennung: 21001
 CREATE TABLE ax_person (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
-     nachnameoderfirma        varchar,
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
+     nachnameoderfirma        character varying,
      anrede                   integer,
-     vorname                  varchar,
-     geburtsname              varchar,
-     geburtsdatum             varchar,
-     namensbestandteil        varchar,
-     akademischergrad         varchar,
+     vorname                  character varying,
+     geburtsname              character varying,
+     geburtsdatum             character varying,
+     namensbestandteil        character varying,
+     akademischergrad         character varying,
+     -- Beziehungen:
+     hat                      character varying[], -- -> ax_anschrift
+--   weistauf                 character varying[], -- <- ax_namensnummer 
+     wirdvertretenvon         character varying[], -- -> ax_vertretung 
+     gehoertzu                character varying[], -- -> ax_personengruppe  
+--   uebtaus                  character varying[], -- <- ax_vertretung 
+--   besitzt                  character varying[], -- <- ax_gebaeude
+--   zeigtauf                 character varying,   -- <- ax_person
+--   benennt                  character varying[], -- <- ax_verwaltung
      CONSTRAINT ax_person_pk PRIMARY KEY (ogc_fid)
 );
@@ -1649,107 +1488,203 @@
 SELECT AddGeometryColumn('ax_person','dummy',:alkis_epsg,'POINT',2);
 
--- Verbindungstabellen indizieren
-CREATE UNIQUE INDEX id_ax_person_gml ON ax_person USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_person        IS 'NREO "Person" ist eine natÃŒrliche oder juristische Person und kann z.B. in den Rollen EigentÃŒmer, Erwerber, Verwalter oder Vertreter in Katasterangelegenheiten gefÃŒhrt werden.';
-COMMENT ON COLUMN ax_person.gml_id IS 'Identifikator, global eindeutig';
+CREATE UNIQUE INDEX id_ax_person_gml ON ax_person USING btree (gml_id, beginnt);
+
+CREATE INDEX ax_person_hat  ON ax_person  USING gin  (hat);
+--EATE INDEX ax_person_wa   ON ax_person  USING gin  (weistauf);
+CREATE INDEX ax_person_wvv  ON ax_person  USING gin  (wirdvertretenvon);
+CREATE INDEX ax_person_gz   ON ax_person  USING gin  (gehoertzu);
+--EATE INDEX ax_person_ua   ON ax_person  USING gin  (uebtaus);
+--EATE INDEX ax_person_bes  ON ax_person  USING gin  (besitzt);
+--EATE INDEX ax_person_za   ON ax_person  USING btree (zeigtauf);
+--EATE INDEX ax_person_ben  ON ax_person  USING gin  (benennt);
+
+COMMENT ON TABLE  ax_person           IS 'Personen- und Bestandsdaten: (NREO) "Person" ist eine natÃŒrliche oder juristische Person und kann z.B. in den Rollen EigentÃŒmer, Erwerber, Verwalter oder Vertreter in Katasterangelegenheiten gefÃŒhrt werden.';
+COMMENT ON COLUMN ax_person.gml_id    IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_person.namensbestandteil IS 'enthÃ€lt z.B. Titel wie "Baron"';
-COMMENT ON COLUMN ax_person.anrede IS '"Anrede" ist die Anrede der Person. Diese Attributart ist optional, da KÃ¶rperschaften und juristischen Person auch ohne Anrede angeschrieben werden kÃ¶nnen.';
+COMMENT ON COLUMN ax_person.anrede    IS '"Anrede" ist die Anrede der Person. Diese Attributart ist optional, da KÃ¶rperschaften und juristischen Person auch ohne Anrede angeschrieben werden kÃ¶nnen.';
 COMMENT ON COLUMN ax_person.akademischergrad IS '"Akademischer Grad" ist der akademische Grad der Person (z.B. Dipl.-Ing., Dr., Prof. Dr.)';
 
-
--- Relationen:
--- hat:        Die 'Person' hat 'Anschrift'.
--- weist auf:  Durch die Relation 'Person' weist auf 'Namensnummer' wird ausgedrÃŒckt, dass die Person als EigentÃŒmer,
---        Erbbauberechtigter oder kÃŒnftiger Erwerber unter der Namensnummer eines Buchungsblattes eingetragen ist.
-
+COMMENT ON COLUMN ax_person.hat       IS '-> Beziehung zu ax_anschrift (0..*): Die ''Person'' hat ''Anschrift''.';
+--COMMENT ON COLUMN ax_person.weistauf  IS '<- Beziehung zu ax_namensnummer (0..*): Durch die Relation ''Person'' weist auf ''Namensnummer'' wird ausgedrÃŒckt, dass die Person als EigentÃŒmer, Erbbauberechtigter oder kÃŒnftiger Erwerber unter der Namensnummer eines Buchungsblattes eingetragen ist.
+--Es handelt sich um die inverse Relationsrichtung.';
+COMMENT ON COLUMN ax_person.wirdvertretenvon IS '-> Beziehung zu ax_vertretung (0..*): Die ''Person'' wird von der ''Vertretung'' in Katasterangelegenheiten vertreten.';
+COMMENT ON COLUMN ax_person.gehoertzu IS '-> Beziehung zu ax_personengruppe (0..*): ''Person'' gehÃ¶rt zu ''Personengruppe''.';
+--COMMENT ON COLUMN ax_person.uebtaus   IS '<- Beziehung zu ax_vertretung (0..*): Die ''Person'' ÃŒbt die ''Vertretung'' in Katasterangelegenheiten aus.
+--Es handelt sich um die inverse Relationsrichtung.';
+--COMMENT ON COLUMN ax_person.besitzt   IS '<- Beziehung zu ax_gebaeude (0..*):
+--Es handelt sich um die inverse Relationsrichtung.';
+--COMMENT ON COLUMN ax_person.zeigtauf  IS '-> Beziehung zu ax_person (0..1): Die ''Person'' zeigt auf eine ''Person'' mit abweichenden Eigenschaften derselben Person. FÃŒr ein und dieselbe Person wurden zwei Objekte ''Person'' mit unterschiedlichen Attributen (z.B. Nachnamen durch Heirat geÃ€ndert) angelegt. Bei Verwendung der Vollhistorie mit Hilfe des Versionierungskonzeptes werden diese Eigenschaften in verschiedenen Versionen gefÃŒhrt.
+--Diese Relation wird dann nicht verwendet.';
+--COMMENT ON COLUMN ax_person.benennt   IS '<- Beziehung zu ax_verwaltung (0..*): Die Relation ''Person'' benennt ''Verwaltung'' weist der Verwaltung eine Person zu.
+--Es handelt sich um die inverse Relationsrichtung.';
 
 --AX_Personengruppe
+-- Objektart: AX_Personengruppe Kennung: 21002
+-- 'Personengruppe' ist die Zusammenfassung von Personen unter einem Ordnungsbegriff.
 -- ** Tabelle bisher noch nicht generiert
 
-
 -- A n s c h r i f t
 -- ----------------------------------------------
--- Buchwerk, keine Geometrie.
--- Konverter versucht Tabelle noch einmal anzulegen, wenn kein (Dummy-) Eintrag in Metatabelle 'geometry_columns'.
+-- Objektart: AX_Anschrift Kennung: 21003
 CREATE TABLE ax_anschrift (
+     ogc_fid                    serial NOT NULL,
+     gml_id                     character varying NOT NULL,
+     identifier                 character varying,
+     beginnt                    character(20),
+     endet                      character(20),
+     advstandardmodell          character varying[],
+     sonstigesmodell            character varying[],
+     anlass                     character varying,
+     ort_post                   character varying,
+     postleitzahlpostzustellung character varying,
+     strasse                    character varying,
+     hausnummer                 character varying,
+     bestimmungsland            character varying,
+     postleitzahlpostfach       character varying,
+     postfach                   character varying,
+     ortsteil                   character varying,
+     weitereAdressen            character varying[],
+     telefon                    character varying,
+     fax                        character varying,
+     organisationname           character varying,
+     -- Beziehungen:
+--   beziehtsichauf             character varying[],  -- <- ax_dienststelle 
+--   gehoertzu                  character varying[],  -- <- ax_person
+     CONSTRAINT ax_anschrift_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_anschrift','dummy',:alkis_epsg,'POINT',2);
+
+CREATE UNIQUE INDEX ax_anschrift_gml  ON ax_anschrift  USING btree (gml_id, beginnt);
+--EATE        INDEX ax_anschrift_bsa  ON ax_anschrift  USING gin   (beziehtsichauf);
+--EATE        INDEX ax_anschrift_gz   ON ax_anschrift  USING gin   (gehoertzu);
+
+COMMENT ON TABLE  ax_anschrift        IS 'Personen- und Bestandsdaten: (NREO) "Anschrift" ist die postalische Adresse, verbunden mit weiteren Adressen aus dem Bereich elektronischer Kommunikationsmedien.';
+COMMENT ON COLUMN ax_anschrift.gml_id IS 'Identifikator, global eindeutig';
+
+--COMMENT ON COLUMN ax_anschrift.beziehtsichauf IS '<- Beziehung zu ax_dienststelle (0..*):
+--Es handelt sich um die inverse Relationsrichtung.';
+--COMMENT ON COLUMN ax_anschrift.gehoertzu      IS '<- Beziehung zu ax_person (0..*): Eine ''Anschrift'' gehÃ¶rt zu ''Person''.
+--Es handelt sich um die inverse Relationsrichtung.';
+
+
+-- V e r w a l t u n g
+-- -------------------
+-- Objektart: AX_Verwaltung Kennung: 21004
+CREATE TABLE ax_verwaltung (
+     ogc_fid             serial NOT NULL,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     -- Beziehungen:
+--   beziehtsichauf     character varying[],  -- <- ax_buchungsstelle
+     haengtan           character varying,    -- -> ax_person
+     CONSTRAINT ax_verwaltung_pk PRIMARY KEY (ogc_fid)
+);
+SELECT AddGeometryColumn('ax_verwaltung','dummy',:alkis_epsg,'POINT',2);
+
+COMMENT ON TABLE  ax_verwaltung  IS 'Personen- und Bestandsdaten: (NREO "Verwaltung") beschreibt die Grundlagen und die Befugnisse des Verwalters entsprechend dem Wohnungseigentumsgesetz (z.B. fÃŒr Wohnungs-/Teileigentum).';
+
+--COMMENT ON COLUMN ax_verwaltung.beziehtsichauf IS '<- Beziehung zu ax_buchungsstelle (1..*): Durch die Relation ''Verwaltung'' bezieht sich auf ''Buchungsstelle'' wird augedrÃŒckt, fÃŒr welche Buchungsstellen die Verwaltung bestellt wurde.
+--Es handelt sich um die inverse Relationsrichtung.';
+COMMENT ON COLUMN ax_verwaltung.haengtan       IS '-> Beziehung zu ax_person (1): Durch die Relation ''Verwaltung'' hÃ€ngt an ''Person'' wird die Verwaltung namentlich benannt.';
+
+
+-- V e r t r e t u n g
+-- -------------------
+-- Objektart: AX_Vertretung Kennung: 21005
+CREATE TABLE ax_vertretung (
+     ogc_fid             serial NOT NULL,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     -- Beziehungen:
+--   vertritt            character varying[],  -- <- ax_person
+     haengtan            character varying,    --> ax_person
+     beziehtsichauf      character varying[],  --> ax_flurstueck
+      CONSTRAINT ax_vertretung_pk PRIMARY KEY (ogc_fid)
+);
+SELECT AddGeometryColumn('ax_vertretung','dummy',:alkis_epsg,'POINT',2);
+
+COMMENT ON TABLE  ax_vertretung IS 'Personen- und Bestandsdaten: (NREO) "Vertretung" gibt an, welche Person eine andere Person in Katasterangelegenheiten vertritt.';
+
+--COMMENT ON COLUMN ax_vertretung.vertritt       IS '<- Beziehung zu ax_person (1..*): Die Relation ''Vertretung'' vertritt ''Person'' sagt aus, welche Person durch die Vertretung vertreten wird.
+--Es handelt sich um die inverse Relationsrichtung.';
+COMMENT ON COLUMN ax_vertretung.haengtan       IS '-> Beziehung zu ax_person (1): Die Relation ''Vertretung'' hÃ€ngt an ''Person'' sagt aus, welche Person die Vertretung wahrnimmt.';
+COMMENT ON COLUMN ax_vertretung.beziehtsichauf IS '-> Beziehung zu ax_flurstueck (0..*): Die Relation ''Vertretung'' bezieht sich auf ''FlurstÃŒck'' sagt aus, fÃŒr welche FlurstÃŒcke die Vertretung wahrgenommen wird.';
+
+
+-- N a m e n s n u m m e r
+-- ----------------------------------------------
+-- AX_Namensnummer Kennung: 21006
+CREATE TABLE ax_namensnummer (
+     ogc_fid                    serial NOT NULL,
+     gml_id                     character varying NOT NULL,
+     identifier                 character varying,
+     beginnt                    character(20),
+     endet                      character(20),
+     advstandardmodell          character varying[],
+     sonstigesmodell            character varying[],
+     anlass                     character varying,
+     laufendenummernachdin1421  character(16),      -- 0000.00.00.00.00
+     zaehler                    double precision,   -- Anteil ..
+     nenner                     double precision,   --    .. als Bruch
+     eigentuemerart             integer,
+     nummer                     character varying,  -- immer leer ?
+     artderrechtsgemeinschaft   integer,            -- SchlÃŒssel
+     beschriebderrechtsgemeinschaft character varying,
+     -- Beziehungen:
+     bestehtausrechtsverhaeltnissenzu character varying, -- -> ax_namensnummer 
+     istbestandteilvon character varying,    -- -> ax_buchungsblatt
+     hatvorgaenger character varying[],      -- -> ax_namensnummer
+     benennt character varying,              -- -> ax_person
+     CONSTRAINT ax_namensnummer_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_namensnummer','dummy',:alkis_epsg,'POINT',2);
+
+CREATE UNIQUE INDEX ax_namensnummer_gml   ON ax_namensnummer  USING btree (gml_id, beginnt);
+CREATE        INDEX ax_namensnummer_barvz ON ax_namensnummer  USING btree (bestehtausrechtsverhaeltnissenzu);
+CREATE        INDEX ax_namensnummer_ben   ON ax_namensnummer  USING btree (benennt);
+CREATE        INDEX ax_namensnummer_hv    ON ax_namensnummer  USING gin   (hatvorgaenger);
+CREATE        INDEX ax_namensnummer_ibv   ON ax_namensnummer  USING btree (istbestandteilvon);
+
+COMMENT ON TABLE  ax_namensnummer        IS 'Personen- und Bestandsdaten: (NREO) "Namensnummer" ist die laufende Nummer der Eintragung, unter welcher der EigentÃŒmer oder Erbbauberechtigte im Buchungsblatt gefÃŒhrt wird. Rechtsgemeinschaften werden auch unter AX_Namensnummer gefÃŒhrt.';
+COMMENT ON COLUMN ax_namensnummer.gml_id IS 'Identifikator, global eindeutig';
+
+COMMENT ON COLUMN ax_namensnummer.bestehtausrechtsverhaeltnissenzu IS '-> Beziehung zu ax_namensnummer (0..1): Die Relation ''Namensnummer'' besteht aus RechtsverhÃ€ltnissen zu ''Namensnummer'' sagt aus, dass mehrere Namensnummern zu einer Rechtsgemeinschaft gehÃ¶ren kÃ¶nnen. Die Rechtsgemeinschaft selbst steht unter einer eigenen AX_Namensnummer, die zu allen Namensnummern der Rechtsgemeinschaft eine Relation besitzt.';
+COMMENT ON COLUMN ax_namensnummer.istbestandteilvon                IS '-> Beziehung zu ax_buchungsblatt (1): Eine ''Namensnummer'' ist Teil von einem ''Buchungsblatt''.';
+COMMENT ON COLUMN ax_namensnummer.hatvorgaenger                    IS '-> Beziehung zu ax_namensnummer (0..*): Die Relation ''Namensnummer'' hat VorgÃ€nger ''Namensnummer'' gibt Auskunft darÃŒber, aus welchen Namensnummern die aktuelle entstanden ist.';
+COMMENT ON COLUMN ax_namensnummer.benennt                          IS '-> Beziehung zu ax_person (0..1): Durch die Relation ''Namensnummer'' benennt ''Person'' wird die Person zum EigentÃŒmer, Erbbauberechtigten oder kÃŒnftigen Erwerber.';
+
+
+-- B u c h u n g s b l a t t
+-- -------------------------
+-- Objektart: AX_Buchungsblatt Kennung: 21007
+CREATE TABLE ax_buchungsblatt (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
-     ort_post                 varchar,
-     postleitzahlpostzustellung varchar,
-     strasse                  varchar,
-     hausnummer               varchar,
-     bestimmungsland          varchar,
-     postleitzahlpostfach     varchar,
-     postfach                 varchar,
-     ortsteil                 varchar,
-     weitereAdressen          varchar,
-     telefon                  varchar,
-     fax                      varchar,
-     CONSTRAINT ax_anschrift_pk PRIMARY KEY (ogc_fid)
-);
-
--- Dummy-Eintrag in Metatabelle
-SELECT AddGeometryColumn('ax_anschrift','dummy',:alkis_epsg,'POINT',2);
-
--- Index fÃŒr alkis_beziehungen
-CREATE UNIQUE INDEX ax_anschrift_gml ON ax_anschrift USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_anschrift        IS 'A n s c h r i f t';
-COMMENT ON COLUMN ax_anschrift.gml_id IS 'Identifikator, global eindeutig';
-
-
--- N a m e n s n u m m e r
--- ----------------------------------------------
--- Buchwerk. Keine Geometrie
-CREATE TABLE ax_namensnummer (
-     ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
-     beginnt                  character(20),
-     endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
-     laufendenummernachdin1421 character(16),     -- 0000.00.00.00.00
-     zaehler                  double precision,   -- Anteil ..
-     nenner                   double precision,   --    .. als Bruch
-     eigentuemerart           integer,
-     nummer                   varchar,       -- immer leer ?
-     artderrechtsgemeinschaft integer,       -- SchlÃŒssel
-     beschriebderrechtsgemeinschaft varchar,
-     CONSTRAINT ax_namensnummer_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_namensnummer','dummy',:alkis_epsg,'POINT',2);
-
--- Verbindungstabellen indizieren
-CREATE UNIQUE INDEX ax_namensnummer_gml ON ax_namensnummer USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_namensnummer        IS 'NREO "Namensnummer" ist die laufende Nummer der Eintragung, unter welcher der EigentÃŒmer oder Erbbauberechtigte im Buchungsblatt gefÃŒhrt wird. Rechtsgemeinschaften werden auch unter AX_Namensnummer gefÃŒhrt.';
-COMMENT ON COLUMN ax_namensnummer.gml_id IS 'Identifikator, global eindeutig';
-
-
--- B u c h u n g s b l a t t
--- -------------------------
-CREATE TABLE ax_buchungsblatt (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     buchungsblattkennzeichen varchar, -- integer
-     land                integer,
-     bezirk              integer,
-     buchungsblattnummermitbuchstabenerweiterung  varchar,
-    -- Konverter mault: "Warning 1: Value '001648 ' ... parsed incompletely to integer 1648." usw.
-     blattart            integer,
-     art                 varchar,
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
+     buchungsblattkennzeichen character varying,
+     land                     character varying,
+     bezirk                   character varying,
+     buchungsblattnummermitbuchstabenerweiterung  character varying,
+     blattart                 character varying,   -- bisher integer,
+     art                      character varying,
+     -- Beziehungen:
+--   bestehtaus               character varying[], -- <- ax_buchungsstelle 
      CONSTRAINT ax_buchungsblatt_pk PRIMARY KEY (ogc_fid)
 );
@@ -1757,39 +1692,77 @@
 SELECT AddGeometryColumn('ax_buchungsblatt','dummy',:alkis_epsg,'POINT',2);
 
--- Index fÃŒr alkis_beziehungen
-CREATE UNIQUE INDEX ax_buchungsblatt_gml ON ax_buchungsblatt USING btree (gml_id,beginnt);
-CREATE INDEX ax_buchungsblatt_lbb ON ax_buchungsblatt USING btree (land,bezirk,buchungsblattnummermitbuchstabenerweiterung);
-
-COMMENT ON TABLE  ax_buchungsblatt        IS 'NREO "Buchungsblatt" enthÃ€lt die Buchungen (Buchungsstellen und Namensnummern) des Grundbuchs und des Liegenschhaftskatasters (bei buchungsfreien GrundstÃŒcken).';
+CREATE UNIQUE INDEX ax_buchungsblatt_gml  ON ax_buchungsblatt USING btree (gml_id, beginnt);
+CREATE        INDEX ax_buchungsblatt_lbb  ON ax_buchungsblatt USING btree (land, bezirk, buchungsblattnummermitbuchstabenerweiterung);
+--EATE        INDEX ax_buchungsblatt_bsa  ON ax_buchungsblatt USING gin   (bestehtaus);
+
+COMMENT ON TABLE  ax_buchungsblatt        IS 'Personen- und Bestandsdaten: (NREO) "Buchungsblatt" enthÃ€lt die Buchungen (Buchungsstellen und Namensnummern) des Grundbuchs und des Liegenschhaftskatasters (bei buchungsfreien GrundstÃŒcken).
+Das Buchungsblatt fÃŒr Buchungen im Liegenschaftskataster kann entweder ein Kataster-, Erwerber-, Pseudo- oder ein Fiktives Blatt sein.';
 COMMENT ON COLUMN ax_buchungsblatt.gml_id IS 'Identifikator, global eindeutig';
+
+--COMMENT ON COLUMN ax_buchungsblatt.bestehtaus IS '<- Beziehung zu ax_buchungsstelle (0..*): ''Buchungsblatt'' besteht aus ''Buchungsstelle''. Bei einem Buchungsblatt mit der Blattart ''Fiktives Blatt'' (Wert 5000) muss die Relation zu einer aufgeteilten Buchung (Wertearten 1101, 1102, 1401 bis 1403, 2201 bis 2205 und 2401 bis 2404) bestehen.
+--Es handelt sich um die inverse Relationsrichtung.';
 
 
 -- B u c h u n g s s t e l l e
 -- -----------------------------
+-- Objektart: AX_Buchungsstelle Kennung: 21008
 CREATE TABLE ax_buchungsstelle (
-     ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
-     beginnt                  character(20),
-     endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
-     buchungsart              integer,
-     laufendenummer           varchar,
+     ogc_fid                            serial NOT NULL,
+     gml_id                             character varying NOT NULL,
+     identifier                         character varying,
+     beginnt                            character(20),
+     endet                              character(20),
+     advstandardmodell                  character varying[],
+     sonstigesmodell                    character varying[],
+     anlass                             character varying,
+     buchungsart                        integer,
+     laufendenummer                     character varying,
      beschreibungdesumfangsderbuchung   character(1),
-     zaehler                  double precision,
-     nenner                   double precision,
-     nummerimaufteilungsplan            varchar,
-     beschreibungdessondereigentums     varchar,
-     CONSTRAINT ax_buchungsstelle_pk PRIMARY KEY (ogc_fid)
+     zaehler                            double precision,
+     nenner                             double precision,
+     nummerimaufteilungsplan            character varying,
+     beschreibungdessondereigentums     character varying,
+     buchungstext                       character varying,
+     -- Beziehungen:
+     istbestandteilvon                  character varying,    -- -> ax_buchungsblatt 
+     durch                              character varying[],  -- -> ax_buchungsstelle 
+     verweistauf                        character varying[],  -- -> ax_flurstueck
+--   grundstueckbestehtaus              character varying[],  -- <- ax_flurstueck 
+     zu                                 character varying[],  -- -> ax_buchungsstelle 
+     an                                 character varying[],  -- -> ax_buchungsstelle 
+     hatvorgaenger                      character varying[],  -- -> ax_buchungsstelle
+     wirdverwaltetvon                   character varying,    -- -> ax_verwaltung
+     beziehtsichauf                     character varying[],  -- -> ax_buchungsblatt
+     CONSTRAINT ax_buchungsstelle_pk    PRIMARY KEY (ogc_fid)
 );
 
 SELECT AddGeometryColumn('ax_buchungsstelle','dummy',:alkis_epsg,'POINT',2);
 
---Index fÃŒr alkis_beziehungen
-CREATE UNIQUE INDEX ax_buchungsstelle_gml ON ax_buchungsstelle USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_buchungsstelle        IS 'NREO "Buchungsstelle" ist die unter einer laufenden Nummer im Verzeichnis des Buchungsblattes eingetragene Buchung.';
+CREATE UNIQUE INDEX ax_buchungsstelle_gml ON ax_buchungsstelle USING btree (gml_id, beginnt);
+
+CREATE INDEX ax_buchungsstelle_an     ON ax_buchungsstelle  USING gin  (an);
+CREATE INDEX ax_buchungsstelle_bsa    ON ax_buchungsstelle  USING gin  (beziehtsichauf);
+CREATE INDEX ax_buchungsstelle_durch  ON ax_buchungsstelle  USING gin  (durch);
+--EATE INDEX ax_buchungsstelle_gba    ON ax_buchungsstelle  USING gin  (grundstueckbestehtaus);
+CREATE INDEX ax_buchungsstelle_hv     ON ax_buchungsstelle  USING gin  (hatvorgaenger);
+CREATE INDEX ax_buchungsstelle_ibv    ON ax_buchungsstelle  USING btree (istbestandteilvon);
+CREATE INDEX ax_buchungsstelle_vwa    ON ax_buchungsstelle  USING gin  (verweistauf);
+CREATE INDEX ax_buchungsstelle_wvv    ON ax_buchungsstelle  USING btree (wirdverwaltetvon);
+CREATE INDEX ax_buchungsstelle_zu     ON ax_buchungsstelle  USING gin  (zu);
+
+COMMENT ON TABLE  ax_buchungsstelle        IS 'Personen- und Bestandsdaten: (NREO) "Buchungsstelle" ist die unter einer laufenden Nummer im Verzeichnis des Buchungsblattes eingetragene Buchung.';
 COMMENT ON COLUMN ax_buchungsstelle.gml_id IS 'Identifikator, global eindeutig';
+
+COMMENT ON COLUMN ax_buchungsstelle.istbestandteilvon IS '-> Beziehung zu ax_buchungsblatt (1): ''Buchungsstelle'' ist Teil von ''Buchungsblatt''. Bei ''Buchungsart'' mit einer der Wertearten fÃŒr aufgeteilte Buchungen (Wertearten 1101, 1102, 1401 bis 1403, 2201 bis 2205 und 2401 bis 2404) muss die Relation zu einem ''Buchungsblatt'' und der ''Blattart'' mit der Werteart ''Fiktives Blatt'' bestehen.';
+COMMENT ON COLUMN ax_buchungsstelle.durch IS '-> Beziehung zu ax_buchungsstelle (0..*): Eine ''Buchungsstelle'' verweist mit ''durch'' auf eine andere ''Buchungsstelle'' auf einem anderen Buchungsblatt (herrschend). Die Buchungsstelle ist belastet durch ein Recht, dass ''durch'' die andere Buchungsstelle an ihr ausgeÃŒbt wird.';
+COMMENT ON COLUMN ax_buchungsstelle.verweistauf IS '-> Beziehung zu ax_flurstueck (0..*): ''Buchungsstelle'' verweist auf ''FlurstÃŒck''.';
+--COMMENT ON COLUMN ax_buchungsstelle.grundstueckbestehtaus IS '<- Beziehung zu ax_flurstueck (0..*): Diese Relationsart legt fest, welche FlurstÃŒcke ein GrundstÃŒck bilden. Nur bei der ''Buchungsart'' mit den Wertearten 1100, 1101 und 1102 muss die Relationsart vorhanden sein, sofern nicht ein Objekt AX_HistorischesFlurstueckOhneRaumbezug ÃŒber die Relationsart ''istGebucht'' auf die Buchungsstelle verweist.
+--Es handelt sich um die inverse Relationsrichtung.';
+COMMENT ON COLUMN ax_buchungsstelle.zu IS '-> Beziehung zu ax_buchungsstelle (0..*): Eine ''Buchungsstelle'' verweist mit ''zu'' auf eine andere ''Buchungsstelle'' des gleichen Buchungsblattes (herrschend).';
+COMMENT ON COLUMN ax_buchungsstelle.an IS '-> Beziehung zu ax_buchungsstelle (0..*): Eine ''Buchungsstelle'' verweist mit ''an'' auf eine andere ''Buchungsstelle'' auf einem anderen Buchungsblatt. Die Buchungsstelle kann ein Recht (z.B. Erbbaurecht) oder einen Miteigentumsanteil ''an'' der anderen Buchungsstelle haben Die Relation zeigt stets vom begÃŒnstigten Recht zur belasteten Buchung (z.B. Erbbaurecht hat ein Recht ''an'' einem GrundstÃŒck).';
+
+COMMENT ON COLUMN ax_buchungsstelle.hatvorgaenger IS '-> Beziehung zu ax_buchungsstelle (0..*): Die Relation ''Buchungsstelle'' hat VorgÃ€nger ''Buchungsstelle'' gibt Auskunft darÃŒber, aus welchen Buchungsstellen die aktuelle Buchungsstelle entstanden ist.';
+COMMENT ON COLUMN ax_buchungsstelle.wirdverwaltetvon IS '-> Beziehung zu ax_verwaltung (0..1): Die ''Buchungsstelle'' wird verwaltet von ''Verwaltung''.';
+COMMENT ON COLUMN ax_buchungsstelle.beziehtsichauf IS '-> Beziehung zu ax_buchungsblatt (0..*): ''Buchungsstelle'' bezieht sich auf ''Buchungsblatt''.';
 
 
@@ -1798,30 +1771,27 @@
 --*** ############################################################
 
---** Objektartengruppe:Angaben zum GebÃ€ude
+--** Objektartengruppe: Angaben zum GebÃ€ude
 --   ===================================================================
-
---AX_Gebaeude
 
 -- G e b Ã€ u d e
 -- ---------------
--- Kennung 31001
--- Abgleich 2011-11-15 mit
---  http://www.bezreg-koeln.nrw.de/extra/33alkis/dokumente/Profile_NRW/ALKIS-OK-NRW_MAX_20090722.html
+-- Objektart: AX_Gebaeude Kennung: 31001
 CREATE TABLE ax_gebaeude (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar[],
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      gebaeudefunktion    integer,  -- Werte siehe SchlÃŒsseltabelle
      weiteregebaeudefunktion  integer[],
-     name                varchar[],
+     name                character varying[],
      bauweise            integer,
      anzahlderoberirdischengeschosse  integer,
      anzahlderunterirdischengeschosse integer,
-     hochhaus            varchar,  -- "true"/"false", meist aber leer
-     objekthoehe         integer,
+     hochhaus            character varying,  -- "true"/"false", meist leer
+     objekthoehe         double precision,
      dachform            integer,
      zustand             integer,
@@ -1831,11 +1801,17 @@
      baujahr             integer,
      lagezurerdoberflaeche integer,
-     dachart             varchar,
+     dachart             character varying,
      dachgeschossausbau  integer,
-     qualitaetsangaben   varchar,
+     qualitaetsangaben   character varying,
      ax_datenerhebung    integer,
      description         integer,
-     art                 varchar,
-     individualname      varchar,
+     art                 character varying,
+     individualname      character varying,
+     -- Beziehungen:
+     gehoertzu           character varying,   -- -> ax_gebaeude
+     hat                 character varying,   -- -> ax_lagebezeichnungmitpseudonummer
+     gehoert             character varying[], -- -> ax_person
+     zeigtauf            character varying[], -- -> ax_lagebezeichnungmithausnummer
+--   haengtzusammenmit   character varying,   -- <- ax_gebaeude
      CONSTRAINT ax_gebaeude_pk PRIMARY KEY (ogc_fid)
 );
@@ -1844,39 +1820,53 @@
 
 CREATE INDEX ax_gebaeude_geom_idx   ON ax_gebaeude USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_gebaeude_gml ON ax_gebaeude USING btree (gml_id,beginnt);
-
-  COMMENT ON TABLE  ax_gebaeude                    IS '"G e b Ã€ u d e" ist ein dauerhaft errichtetes Bauwerk, dessen Nachweis wegen seiner Bedeutung als Liegenschaft erforderlich ist sowie dem Zweck der Basisinformation des Liegenschaftskatasters dient.';
-  COMMENT ON COLUMN ax_gebaeude.gml_id             IS 'Identifikator, global eindeutig';
-  COMMENT ON COLUMN ax_gebaeude.gebaeudefunktion   IS 'GFK "GebÃ€udefunktion" ist die zum Zeitpunkt der Erhebung vorherrschend funktionale Bedeutung des GebÃ€udes (Dominanzprinzip). Werte siehe ax_gebaeude_funktion';
-  COMMENT ON COLUMN ax_gebaeude.weiteregebaeudefunktion IS 'WGF "Weitere GebÃ€udefunktion" sind weitere Funktionen, die ein GebÃ€ude neben der dominierenden GebÃ€udefunktion hat.';
-  COMMENT ON COLUMN ax_gebaeude.name               IS 'NAM "Name" ist der Eigenname oder die Bezeichnung des GebÃ€udes.';
-  COMMENT ON COLUMN ax_gebaeude.bauweise           IS 'BAW "Bauweise" ist die Beschreibung der Art der Bauweise. Werte siehe ax_gebaeude_bauweise';
-  COMMENT ON COLUMN ax_gebaeude.anzahlderoberirdischengeschosse IS 'AOG "Anzahl der oberirdischen Geschosse" ist die Anzahl der oberirdischen Geschosse des GebÃ€udes.';
-  COMMENT ON COLUMN ax_gebaeude.anzahlderunterirdischengeschosse IS 'AUG "Anzahl der unterirdischen Geschosse" ist die Anzahl der unterirdischen Geschosse des GebÃ€udes.';
-  COMMENT ON COLUMN ax_gebaeude.hochhaus           IS 'HOH "Hochhaus" ist ein GebÃ€ude, das nach GebÃ€udehÃ¶he und AusprÃ€gung als Hochhaus zu bezeichnen ist. FÃŒr GebÃ€ude im Geschossbau gilt dieses i.d.R. ab 8 oberirdischen Geschossen, fÃŒr andere GebÃ€ude ab einer GebÃ€udehÃ¶he von 22 m. Abweichungen hiervon kÃ¶nnen sich durch die Festlegungen in den lÃ€nderspezifischen Bauordnungen ergeben.';
-  COMMENT ON COLUMN ax_gebaeude.objekthoehe        IS 'HHO "ObjekthÃ¶he" ist die HÃ¶hendifferenz in [m] zwischen dem hÃ¶chsten Punkt der Dachkonstruktion und der festgelegten GelÃ€ndeoberflÃ€che des GebÃ€udes.';
-  COMMENT ON COLUMN ax_gebaeude.dachform           IS 'DAF "Dachform" beschreibt die charakteristische Form des Daches. Werte siehe ax_gebaeude_dachform';
-  COMMENT ON COLUMN ax_gebaeude.zustand            IS 'ZUS "Zustand" beschreibt die Beschaffenheit oder die Betriebsbereitschaft von "GebÃ€ude". Diese Attributart wird nur dann optional gefÃŒhrt, wenn der Zustand des GebÃ€udes vom nutzungsfÃ€higen Zustand abweicht. Werte siehe ax_gebaeude_zustand';
-  COMMENT ON COLUMN ax_gebaeude.geschossflaeche    IS 'GFL "GeschossflÃ€che" ist die GebÃ€udegeschossflÃ€che in [qm].';
-  COMMENT ON COLUMN ax_gebaeude.grundflaeche       IS 'GRF "GrundflÃ€che" ist die GebÃ€udegrundflÃ€che in [qm].';
-  COMMENT ON COLUMN ax_gebaeude.umbauterraum       IS 'URA "Umbauter Raum" ist der umbaute Raum [Kubikmeter] des GebÃ€udes.';
-  COMMENT ON COLUMN ax_gebaeude.baujahr            IS 'BJA "Baujahr" ist das Jahr der Fertigstellung oder der baulichen VerÃ€nderung des GebÃ€udes.';
-  COMMENT ON COLUMN ax_gebaeude.lagezurerdoberflaeche IS 'OFL "Lage zur ErdoberflÃ€che" ist die Angabe der relativen Lage des GebÃ€udes zur ErdoberflÃ€che. Diese Attributart wird nur bei nicht ebenerdigen GebÃ€uden gefÃŒhrt. 1200=Unter der ErdoberflÃ€che, 1400=AufgestÃ€ndert';
-  COMMENT ON COLUMN ax_gebaeude.dachart            IS 'DAA "Dachart" gibt die Art der Dacheindeckung (z.B. Reetdach) an.';
-  COMMENT ON COLUMN ax_gebaeude.dachgeschossausbau IS 'DGA "Dachgeschossausbau" ist ein Hinweis auf den Ausbau bzw. die AusbaufÃ€higkeit des Dachgeschosses.';
-  COMMENT ON COLUMN ax_gebaeude.qualitaetsangaben  IS 'QAG Angaben zur Herkunft der Informationen (Erhebungsstelle). Die Information ist konform zu den Vorgaben aus ISO 19115 zu reprÃ€sentieren.';
+CREATE UNIQUE INDEX ax_gebaeude_gml ON ax_gebaeude USING btree (gml_id, beginnt);
+
+CREATE INDEX ax_gebaeude_geh  ON ax_gebaeude USING gin   (gehoert);
+CREATE INDEX ax_gebaeude_gz   ON ax_gebaeude USING btree (gehoertzu);
+CREATE INDEX ax_gebaeude_hat  ON ax_gebaeude USING btree (hat);
+--EATE INDEX ax_gebaeude_hzm  ON ax_gebaeude USING btree (haengtzusammenmit);
+CREATE INDEX ax_gebaeude_za   ON ax_gebaeude USING gin   (zeigtauf);
+
+COMMENT ON TABLE  ax_gebaeude                    IS 'Angaben zum GebÃ€ude: (REO) "GebÃ€ude" ist ein dauerhaft errichtetes Bauwerk, dessen Nachweis wegen seiner Bedeutung als Liegenschaft erforderlich ist sowie dem Zweck der Basisinformation des Liegenschaftskatasters dient.';
+COMMENT ON COLUMN ax_gebaeude.gml_id             IS 'Identifikator, global eindeutig';
+COMMENT ON COLUMN ax_gebaeude.gebaeudefunktion   IS 'GFK "GebÃ€udefunktion" ist die zum Zeitpunkt der Erhebung vorherrschend funktionale Bedeutung des GebÃ€udes (Dominanzprinzip). Werte siehe ax_gebaeude_funktion';
+COMMENT ON COLUMN ax_gebaeude.weiteregebaeudefunktion IS 'WGF "Weitere GebÃ€udefunktion" sind weitere Funktionen, die ein GebÃ€ude neben der dominierenden GebÃ€udefunktion hat.';
+COMMENT ON COLUMN ax_gebaeude.name               IS 'NAM "Name" ist der Eigenname oder die Bezeichnung des GebÃ€udes.';
+COMMENT ON COLUMN ax_gebaeude.bauweise           IS 'BAW "Bauweise" ist die Beschreibung der Art der Bauweise. Werte siehe ax_gebaeude_bauweise';
+COMMENT ON COLUMN ax_gebaeude.anzahlderoberirdischengeschosse  IS 'AOG "Anzahl der oberirdischen Geschosse" ist die Anzahl der oberirdischen Geschosse des GebÃ€udes.';
+COMMENT ON COLUMN ax_gebaeude.anzahlderunterirdischengeschosse IS 'AUG "Anzahl der unterirdischen Geschosse" ist die Anzahl der unterirdischen Geschosse des GebÃ€udes.';
+COMMENT ON COLUMN ax_gebaeude.hochhaus           IS 'HOH "Hochhaus" ist ein GebÃ€ude, das nach GebÃ€udehÃ¶he und AusprÃ€gung als Hochhaus zu bezeichnen ist. FÃŒr GebÃ€ude im Geschossbau gilt dieses i.d.R. ab 8 oberirdischen Geschossen, fÃŒr andere GebÃ€ude ab einer GebÃ€udehÃ¶he von 22 m. Abweichungen hiervon kÃ¶nnen sich durch die Festlegungen in den lÃ€nderspezifischen Bauordnungen ergeben.';
+COMMENT ON COLUMN ax_gebaeude.objekthoehe        IS 'HHO "ObjekthÃ¶he" ist die HÃ¶hendifferenz in [m] zwischen dem hÃ¶chsten Punkt der Dachkonstruktion und der festgelegten GelÃ€ndeoberflÃ€che des GebÃ€udes.';
+COMMENT ON COLUMN ax_gebaeude.dachform           IS 'DAF "Dachform" beschreibt die charakteristische Form des Daches. Werte siehe ax_gebaeude_dachform';
+COMMENT ON COLUMN ax_gebaeude.zustand            IS 'ZUS "Zustand" beschreibt die Beschaffenheit oder die Betriebsbereitschaft von "GebÃ€ude". Diese Attributart wird nur dann optional gefÃŒhrt, wenn der Zustand des GebÃ€udes vom nutzungsfÃ€higen Zustand abweicht. Werte siehe ax_gebaeude_zustand';
+COMMENT ON COLUMN ax_gebaeude.geschossflaeche    IS 'GFL "GeschossflÃ€che" ist die GebÃ€udegeschossflÃ€che in [qm].';
+COMMENT ON COLUMN ax_gebaeude.grundflaeche       IS 'GRF "GrundflÃ€che" ist die GebÃ€udegrundflÃ€che in [qm].';
+COMMENT ON COLUMN ax_gebaeude.umbauterraum       IS 'URA "Umbauter Raum" ist der umbaute Raum [Kubikmeter] des GebÃ€udes.';
+COMMENT ON COLUMN ax_gebaeude.baujahr            IS 'BJA "Baujahr" ist das Jahr der Fertigstellung oder der baulichen VerÃ€nderung des GebÃ€udes.';
+COMMENT ON COLUMN ax_gebaeude.lagezurerdoberflaeche IS 'OFL "Lage zur ErdoberflÃ€che" ist die Angabe der relativen Lage des GebÃ€udes zur ErdoberflÃ€che. Diese Attributart wird nur bei nicht ebenerdigen GebÃ€uden gefÃŒhrt. 1200=Unter der ErdoberflÃ€che, 1400=AufgestÃ€ndert';
+COMMENT ON COLUMN ax_gebaeude.dachart            IS 'DAA "Dachart" gibt die Art der Dacheindeckung (z.B. Reetdach) an.';
+COMMENT ON COLUMN ax_gebaeude.dachgeschossausbau IS 'DGA "Dachgeschossausbau" ist ein Hinweis auf den Ausbau bzw. die AusbaufÃ€higkeit des Dachgeschosses.';
+COMMENT ON COLUMN ax_gebaeude.qualitaetsangaben  IS 'QAG Angaben zur Herkunft der Informationen (Erhebungsstelle). Die Information ist konform zu den Vorgaben aus ISO 19115 zu reprÃ€sentieren.';
+
+COMMENT ON COLUMN ax_gebaeude.gehoertzu         IS '-> Beziehung zu ax_gebaeude (0..1): ''GebÃ€ude'' gehÃ¶rt zu ''GebÃ€ude'', wenn die GebÃ€ude baulich zusammen gehÃ¶ren und im Gegensatz zum Bauteil eine gleichrangige Bedeutung haben.';
+COMMENT ON COLUMN ax_gebaeude.hat               IS '-> Beziehung zu ax_lagebezeichnungmitpseudonummer (0..1): ''GebÃ€ude'' hat ''Lagebezeichnung mit Pseudonummer''.';
+COMMENT ON COLUMN ax_gebaeude.gehoert           IS '-> Beziehung zu ax_person (0..*): ''GebÃ€ude'' gehÃ¶rt ''Person''. Die Relation kommt nur vor, wenn unabhÃ€ngig von Eintragungen im Grundbuch (''Buchungsstelle'' mit der Attributart ''Buchungsart'') fÃŒr das GebÃ€ude ein Eigentum nach BGB begrÃŒndet ist.';
+COMMENT ON COLUMN ax_gebaeude.zeigtauf          IS '-> Beziehung zu ax_lagebezeichnungmithausnummer (0..*): ''GebÃ€ude'' zeigt auf ''Lagebezeichnung mit Hausnummer''.';
+--COMMENT ON COLUMN ax_gebaeude.haengtzusammenmit IS '<- Beziehung zu ax_gebaeude (0..1):
+--Es handelt sich um die inverse Relationsrichtung.';
 
 
 -- B a u t e i l
 -- -------------
+-- Objektart: AX_Bauteil Kennung: 31002
 CREATE TABLE ax_bauteil (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar[],
-     sonstigesmodell          varchar[],
-     anlass                   varchar,
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
      bauart                   integer,
      dachform                 integer,
@@ -1891,7 +1881,7 @@
 CREATE INDEX ax_bauteil_geom_idx ON ax_bauteil USING gist (wkb_geometry);
 
-CREATE UNIQUE INDEX ax_bauteil_gml ON ax_bauteil USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_bauteil        IS 'B a u t e i l';
+CREATE UNIQUE INDEX ax_bauteil_gml ON ax_bauteil USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_bauteil        IS 'Angaben zum GebÃ€ude: (REO) "Bauteil" ist ein charakteristisches Merkmal eines GebÃ€udes mit gegenÃŒber dem jeweiligen Objekt "GebÃ€ude" abweichenden bzw. besonderen Eigenschaften.';
 COMMENT ON COLUMN ax_bauteil.gml_id IS 'Identifikator, global eindeutig';
 
@@ -1899,13 +1889,15 @@
 -- B e s o n d e r e   G e b Ã€ u d e l i n i e
 -- ----------------------------------------------
+-- Objektart: AX_BesondereGebaeudelinie Kennung: 31003
 CREATE TABLE ax_besonderegebaeudelinie (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
      beschaffenheit      integer[],
-     anlass              varchar,
+     anlass              character varying,
      CONSTRAINT ax_besonderegebaeudelinie_pk PRIMARY KEY (ogc_fid)
 );
@@ -1914,7 +1906,9 @@
 
 CREATE INDEX ax_besonderegebaeudelinie_geom_idx ON ax_besonderegebaeudelinie USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_besonderegebaeudelinie_gml ON ax_besonderegebaeudelinie USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE ax_besonderegebaeudelinie IS 'B e s o n d e r e   G e b Ã€ u d e l i n i e';
+CREATE UNIQUE INDEX ax_besonderegebaeudelinie_gml ON ax_besonderegebaeudelinie USING btree (gml_id, beginnt);
+
+CREATE INDEX ax_besonderegebaeudelinie_bes  ON ax_besonderegebaeudelinie  USING gin  (beschaffenheit);
+
+COMMENT ON TABLE ax_besonderegebaeudelinie IS 'Angaben zum GebÃ€ude: (REO) "Besondere GebÃ€udelinie" ist der Teil der Geometrie des Objekts "GebÃ€ude" oder des Objekts "Bauteil", der besondere Eigenschaften besitzt.';
 COMMENT ON COLUMN ax_besonderegebaeudelinie.gml_id IS 'Identifikator, global eindeutig';
 
@@ -1922,15 +1916,16 @@
 -- F i r s t l i n i e
 -- -----------------------------------------------------
+-- Objektart: AX_Firstlinie Kennung: 31004
 CREATE TABLE ax_firstlinie (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     sonstigesmodell     varchar,
-     anlass              varchar,
-     art                 varchar,
-     uri                 varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     art                 character varying,
+     uri                 character varying, -- wirklich?
      CONSTRAINT ax_firstlinie_pk PRIMARY KEY (ogc_fid)
 );
@@ -1939,7 +1934,7 @@
 
 CREATE INDEX ax_firstlinie_geom_idx ON ax_firstlinie USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_firstlinie_gml ON ax_firstlinie USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_firstlinie        IS 'F i r s t l i n i e';
+CREATE UNIQUE INDEX ax_firstlinie_gml ON ax_firstlinie USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_firstlinie        IS 'Angaben zum GebÃ€ude: (REO) "Firstlinie" kennzeichnet den Verlauf des Dachfirstes eines GebÃ€udes.';
 COMMENT ON COLUMN ax_firstlinie.gml_id IS 'Identifikator, global eindeutig';
 
@@ -1947,18 +1942,20 @@
 -- B e s o n d e r e r   G e b Ã€ u d e p u n k t
 -- -----------------------------------------------
+-- Objektart: AX_BesondererGebaeudepunkt Kennung: 31005
 CREATE TABLE ax_besonderergebaeudepunkt (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     land                integer,
-     stelle              integer,
-     punktkennung        varchar,
-     art                 varchar,
-     name                varchar[],
-     sonstigeeigenschaft varchar[],
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     land                character varying,
+     stelle              character varying,
+     punktkennung        character varying,
+     art                 character varying,
+     name                character varying[],
+     sonstigeeigenschaft character varying[],
      CONSTRAINT ax_besonderergebaeudepunkt_pk PRIMARY KEY (ogc_fid)
 );
@@ -1966,12 +1963,8 @@
 SELECT AddGeometryColumn('ax_besonderergebaeudepunkt','dummy',:alkis_epsg,'POINT',2);
 
-CREATE UNIQUE INDEX ax_besonderergebaeudepunkt_gml ON ax_besonderergebaeudepunkt USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_besonderergebaeudepunkt        IS 'B e s o n d e r e r   G e b Ã€ u d e p u n k t';
+CREATE UNIQUE INDEX ax_besonderergebaeudepunkt_gml ON ax_besonderergebaeudepunkt USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_besonderergebaeudepunkt        IS 'Angaben zum GebÃ€ude: (ZUSO) "Besonderer GebÃ€udepunkt" ist ein Punkt eines "GebÃ€udes" oder eines "Bauteils".';
 COMMENT ON COLUMN ax_besonderergebaeudepunkt.gml_id IS 'Identifikator, global eindeutig';
-
-
---AX_Nutzung_Gebaeude
--- ** Tabelle bisher noch nicht generiert
 
 
@@ -1979,4 +1972,6 @@
 --*** Objektbereich: TatsÃ€chliche Nutzung (AX_TatsaechlicheNutzung)
 --*** ############################################################
+-- Objektart: AX_TatsaechlicheNutzung Kennung: 40001
+-- abstrakte Oberklasse fÃŒr alle tatsÃ€chlichen Nutzungen
 
 -- Gemeinsame Attribute:
@@ -1984,24 +1979,22 @@
 --   DAQ qualitaetsangaben
 
-
---** Objektartengruppe: Siedlung (in Objektbereich:TatsÃ€chliche Nutzung)
---   ===================================================================
+--** Objektartengruppe: Siedlung (in Objektbereich: TatsÃ€chliche Nutzung)
+--   ====================================================================
 
 -- W o h n b a u f l Ã€ c h e
 -- ----------------------------------------------
--- 'WohnbauflÃ€che' ist eine baulich geprÃ€gte FlÃ€che einschlieÃlich der mit ihr im Zusammenhang
--- stehenden FreiflÃ€chen (z.B. VorgÃ€rten, ZiergÃ€rten, Zufahrten, StellplÃ€tze und HofraumflÃ€chen),
--- die ausschlieÃlich oder vorwiegend dem Wohnen dient.
+-- Objektart: AX_Wohnbauflaeche Kennung: 41001
 CREATE TABLE ax_wohnbauflaeche (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      artderbebauung      integer,
      zustand             integer,
-     name                varchar,
+     name                character varying,
      CONSTRAINT ax_wohnbauflaeche_pk PRIMARY KEY (ogc_fid)
 );
@@ -2011,7 +2004,7 @@
 CREATE INDEX ax_wohnbauflaeche_geom_idx ON ax_wohnbauflaeche USING gist (wkb_geometry);
 
-CREATE UNIQUE INDEX ax_wohnbauflaeche_gml ON ax_wohnbauflaeche USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_wohnbauflaeche                 IS 'W o h n b a u f l Ã€ c h e  ist eine baulich geprÃ€gte FlÃ€che einschlieÃlich der mit ihr im Zusammenhang stehenden FreiflÃ€chen (z.B. VorgÃ€rten, ZiergÃ€rten, Zufahrten, StellplÃ€tze und HofraumflÃ€chen), die ausschlieÃlich oder vorwiegend dem Wohnen dient.';
+CREATE UNIQUE INDEX ax_wohnbauflaeche_gml ON ax_wohnbauflaeche USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_wohnbauflaeche                 IS 'TatsÃ€chliche Nutzung / Siedlung: (REO) "WohnbauflÃ€che" ist eine baulich geprÃ€gte FlÃ€che einschlieÃlich der mit ihr im Zusammenhang stehenden FreiflÃ€chen (z.B. VorgÃ€rten, ZiergÃ€rten, Zufahrten, StellplÃ€tze und HofraumflÃ€chen), die ausschlieÃlich oder vorwiegend dem Wohnen dient.';
 COMMENT ON COLUMN ax_wohnbauflaeche.gml_id          IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_wohnbauflaeche.artderbebauung  IS 'BEB "Art der Bebauung" differenziert nach offener und geschlossener Bauweise aus topographischer Sicht und nicht nach gesetzlichen Vorgaben (z.B. BauGB).';
@@ -2022,15 +2015,16 @@
 -- Objektart: I n d u s t r i e -   u n d   G e w e r b e f l Ã€ c h e
 -- --------------------------------------------------------------------
--- Industrie- und GewerbeflÃ€che' ist eine FlÃ€che, die vorwiegend industriellen oder gewerblichen Zwecken dient.
+-- Objektart: AX_IndustrieUndGewerbeflaeche Kennung: 41002
 CREATE TABLE ax_industrieundgewerbeflaeche (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      funktion            integer,
-     name                varchar,
+     name                character varying,
      zustand             integer,
      foerdergut          integer,
@@ -2044,7 +2038,7 @@
 CREATE INDEX ax_industrieundgewerbeflaeche_geom_idx ON ax_industrieundgewerbeflaeche USING gist (wkb_geometry);
 
-CREATE UNIQUE INDEX ax_industrieundgewerbeflaeche_gml ON ax_industrieundgewerbeflaeche USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_industrieundgewerbeflaeche            IS 'I n d u s t r i e -   u n d   G e w e r b e f l Ã€ c h e';
+CREATE UNIQUE INDEX ax_industrieundgewerbeflaeche_gml ON ax_industrieundgewerbeflaeche USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_industrieundgewerbeflaeche            IS 'TatsÃ€chliche Nutzung / Siedlung: (REO) "Industrie- und GewerbeflÃ€che" ist eine FlÃ€che, die vorwiegend industriellen oder gewerblichen Zwecken dient.';
 COMMENT ON COLUMN ax_industrieundgewerbeflaeche.gml_id     IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_industrieundgewerbeflaeche.name       IS 'NAM "Name" ist der Eigenname von "Industrie- und GewerbeflÃ€che" insbesondere auÃerhalb von Ortslagen.';
@@ -2058,14 +2052,16 @@
 -- H a l d e
 -- ----------------------------------------------
+-- Objektart: AX_Halde Kennung: 41003
 CREATE TABLE ax_halde
 (    ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      lagergut            integer,
-     name                varchar,
+     name                character varying,
      zustand             integer,
      CONSTRAINT ax_halde_pk PRIMARY KEY (ogc_fid)
@@ -2075,8 +2071,8 @@
 
 CREATE INDEX ax_halde_geom_idx ON ax_halde USING gist (wkb_geometry);
-
-CREATE UNIQUE INDEX ax_halde_gml ON ax_halde USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE ax_halde             IS 'H a l d e';
+CREATE UNIQUE INDEX ax_halde_gml ON ax_halde USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE ax_halde             IS 'TatsÃ€chliche Nutzung / Siedlung: (REO) "Halde" ist eine FlÃ€che, auf der Material langfristig gelagert wird und beschreibt die auch im Relief zu modellierende tatsÃ€chliche AufschÃŒttung.
+Aufgeforstete Abraumhalden werden als Objekte der Objektart "Wald" erfasst.';
 COMMENT ON COLUMN ax_halde.gml_id     IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_halde.name       IS 'NAM "Name" ist die einer "Halde" zugehÃ¶rige Bezeichnung oder deren Eigenname.';
@@ -2087,16 +2083,17 @@
 -- B e r b a u b e t r i e b
 -- -------------------------
--- 'Bergbaubetrieb' ist eine FlÃ€che, die fÃŒr die FÃ¶rderung des Abbaugutes unter Tage genutzt wird.
+-- Objektart: AX_Bergbaubetrieb Kennung: 41004
 CREATE TABLE ax_bergbaubetrieb (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      abbaugut            integer,
-     name                varchar,
-     bezeichnung         varchar,
+     name                character varying,
+     bezeichnung         character varying,
      zustand             integer,
      CONSTRAINT ax_bergbaubetrieb_pk PRIMARY KEY (ogc_fid)
@@ -2106,7 +2103,7 @@
 
 CREATE INDEX ax_bergbaubetrieb_geom_idx   ON ax_bergbaubetrieb USING gist  (wkb_geometry);
-CREATE UNIQUE INDEX ax_bergbaubetrieb_gml ON ax_bergbaubetrieb USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_bergbaubetrieb             IS '"Bergbaubetrieb" ist eine FlÃ€che, die fÃŒr die FÃ¶rderung des Abbaugutes unter Tage genutzt wird.';
+CREATE UNIQUE INDEX ax_bergbaubetrieb_gml ON ax_bergbaubetrieb USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_bergbaubetrieb             IS 'TatsÃ€chliche Nutzung / Siedlung: (REO) "Bergbaubetrieb" ist eine FlÃ€che, die fÃŒr die FÃ¶rderung des Abbaugutes unter Tage genutzt wird.';
 COMMENT ON COLUMN ax_bergbaubetrieb.gml_id      IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_bergbaubetrieb.abbaugut    IS 'AGT "Abbaugut" gibt an, welches Material abgebaut wird.';
@@ -2118,15 +2115,18 @@
 -- T a g e b a u  /  G r u b e  /  S t e i n b r u c h
 -- ---------------------------------------------------
+-- Objektart: AX_TagebauGrubeSteinbruch Kennung: 41005
 CREATE TABLE ax_tagebaugrubesteinbruch (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      abbaugut            integer,
-     name                varchar,
+     name                character varying,
      zustand             integer,
+
      CONSTRAINT ax_tagebaugrubesteinbruch_pk PRIMARY KEY (ogc_fid)
 );
@@ -2136,7 +2136,7 @@
 CREATE INDEX ax_tagebaugrubesteinbruch_geom_idx ON ax_tagebaugrubesteinbruch USING gist (wkb_geometry);
 
-CREATE UNIQUE INDEX ax_tagebaugrubesteinbruchb_gml ON ax_tagebaugrubesteinbruch USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_tagebaugrubesteinbruch          IS '"T a g e b a u ,  G r u b e ,  S t e i n b r u c h"  ist eine FlÃ€che, auf der oberirdisch Bodenmaterial abgebaut wird. Rekultivierte Tagebaue, Gruben, SteinbrÃŒche werden als Objekte entsprechend der vorhandenen Nutzung erfasst.';
+CREATE UNIQUE INDEX ax_tagebaugrubesteinbruchb_gml ON ax_tagebaugrubesteinbruch USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_tagebaugrubesteinbruch          IS 'TatsÃ€chliche Nutzung / Siedlung: (REO) "Tagebau, Grube, Steinbruch" ist eine FlÃ€che, auf der oberirdisch Bodenmaterial abgebaut wird. Rekultivierte Tagebaue, Gruben, SteinbrÃŒche werden als Objekte entsprechend der vorhandenen Nutzung erfasst.';
 COMMENT ON COLUMN ax_tagebaugrubesteinbruch.gml_id   IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_tagebaugrubesteinbruch.name     IS 'NAM "Name" ist der Eigenname von "Tagebau, Grube, Steinbruch".';
@@ -2147,15 +2147,17 @@
 -- F l Ã€ c h e n   g e m i s c h t e r   N u t z u n g
 -- -----------------------------------------------------
+-- Objektart: AX_FlaecheGemischterNutzung Kennung: 41006
 CREATE TABLE ax_flaechegemischternutzung (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      artderbebauung      integer,
      funktion            integer,
-     name                varchar,
+     name                character varying,
      zustand             integer,
      CONSTRAINT ax_flaechegemischternutzung_pk PRIMARY KEY (ogc_fid)
@@ -2164,10 +2166,9 @@
 SELECT AddGeometryColumn('ax_flaechegemischternutzung','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
-CREATE INDEX ax_flaechegemischternutzung_geom_idx ON ax_flaechegemischternutzung USING gist (wkb_geometry);
-
-CREATE UNIQUE INDEX ax_flaechegemischternutzung_gml ON ax_flaechegemischternutzung USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_flaechegemischternutzung        IS '"FlÃ€che gemischter Nutzung" ist eine bebaute FlÃ€che einschlieÃlich der mit ihr im Zusammenhang stehenden FreiflÃ€che (HofraumflÃ€che, Hausgarten), auf der keine Art der baulichen Nutzung vorherrscht. Solche FlÃ€chen sind insbesondere lÃ€ndlich-dÃ¶rflich geprÃ€gte FlÃ€chen mit land- und forstwirtschaftlichen Betrieben, WohngebÃ€uden u.a. sowie stÃ€dtisch geprÃ€gte Kerngebiete mit Handelsbetrieben und zentralen Einrichtungen fÃŒr die Wirtschaft und die Verwaltung.';
-COMMENT ON COLUMN ax_flaechegemischternutzung.gml_id IS 'Identifikator, global eindeutig';
+CREATE INDEX ax_flaechegemischternutzung_geom_idx     ON ax_flaechegemischternutzung USING gist (wkb_geometry);
+CREATE UNIQUE INDEX ax_flaechegemischternutzung_gml   ON ax_flaechegemischternutzung USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_flaechegemischternutzung         IS 'TatsÃ€chliche Nutzung / Siedlung: (REO) "FlÃ€che gemischter Nutzung" ist eine bebaute FlÃ€che einschlieÃlich der mit ihr im Zusammenhang stehenden FreiflÃ€che (HofraumflÃ€che, Hausgarten), auf der keine Art der baulichen Nutzung vorherrscht. Solche FlÃ€chen sind insbesondere lÃ€ndlich-dÃ¶rflich geprÃ€gte FlÃ€chen mit land- und forstwirtschaftlichen Betrieben, WohngebÃ€uden u.a. sowie stÃ€dtisch geprÃ€gte Kerngebiete mit Handelsbetrieben und zentralen Einrichtungen fÃŒr die Wirtschaft und die Verwaltung.';
+COMMENT ON COLUMN ax_flaechegemischternutzung.gml_id  IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_flaechegemischternutzung.artderbebauung IS 'BEB "Art der Bebauung" differenziert nach offener und geschlossener Bauweise aus topographischer Sicht und nicht nach gesetzlichen Vorgaben (z.B. BauGB).';
 COMMENT ON COLUMN ax_flaechegemischternutzung.funktion       IS 'FKT "Funktion" ist die zum Zeitpunkt der Erhebung vorherrschende Nutzung (Dominanzprinzip).';
@@ -2178,15 +2179,17 @@
 -- F l Ã€ c h e   b e s o n d e r e r   f u n k t i o n a l e r   P r Ã€ g u n g
 -- -------------------------------------------------------------------------------
+-- Objektart: AX_FlaecheBesondererFunktionalerPraegung Kennung: 41007
 CREATE TABLE ax_flaechebesondererfunktionalerpraegung (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      funktion            integer,
      artderbebauung      integer,
-     name                varchar,
+     name                character varying,
      zustand             integer,
      CONSTRAINT ax_flaechebesondererfunktionalerpraegung_pk PRIMARY KEY (ogc_fid)
@@ -2195,8 +2198,8 @@
 SELECT AddGeometryColumn('ax_flaechebesondererfunktionalerpraegung','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
-CREATE INDEX ax_flaechebesondererfunktionalerpraegung_geom_idx ON ax_flaechebesondererfunktionalerpraegung USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_flaechebesondererfunktionalerpraegung_gml ON ax_flaechebesondererfunktionalerpraegung USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_flaechebesondererfunktionalerpraegung        IS '"FlÃ€che besonderer funktionaler PrÃ€gung" ist eine baulich geprÃ€gte FlÃ€che einschlieÃlich der mit ihr im Zusammenhang stehenden FreiflÃ€che, auf denen vorwiegend GebÃ€ude und/oder Anlagen zur ErfÃŒllung Ã¶ffentlicher Zwecke oder historische Anlagen vorhanden sind.';
+CREATE INDEX ax_flaechebesondererfunktionalerpraegung_geom_idx    ON ax_flaechebesondererfunktionalerpraegung USING gist (wkb_geometry);
+CREATE UNIQUE INDEX ax_flaechebesondererfunktionalerpraegung_gml  ON ax_flaechebesondererfunktionalerpraegung USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_flaechebesondererfunktionalerpraegung        IS 'TatsÃ€chliche Nutzung / Siedlung: (REO) "FlÃ€che besonderer funktionaler PrÃ€gung" ist eine baulich geprÃ€gte FlÃ€che einschlieÃlich der mit ihr im Zusammenhang stehenden FreiflÃ€che, auf denen vorwiegend GebÃ€ude und/oder Anlagen zur ErfÃŒllung Ã¶ffentlicher Zwecke oder historische Anlagen vorhanden sind.';
 COMMENT ON COLUMN ax_flaechebesondererfunktionalerpraegung.gml_id IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_flaechebesondererfunktionalerpraegung.funktion       IS 'FKT "Funktion" ist die zum Zeitpunkt der Erhebung vorherrschende Nutzung von "FlÃ€che besonderer funktionaler PrÃ€gung".';
@@ -2208,15 +2211,17 @@
 -- S p o r t - ,   F r e i z e i t -   u n d   E r h o h l u n g s f l Ã€ c h e
 -- ---------------------------------------------------------------------------
+-- Objektart: AX_SportFreizeitUndErholungsflaeche Kennung: 41008
 CREATE TABLE ax_sportfreizeitunderholungsflaeche (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      funktion            integer,
      zustand             integer,
-     name                varchar,
+     name                character varying,
      CONSTRAINT ax_sportfreizeitunderholungsflaeche_pk PRIMARY KEY (ogc_fid)
 );
@@ -2226,7 +2231,7 @@
 CREATE INDEX ax_sportfreizeitunderholungsflaeche_geom_idx ON ax_sportfreizeitunderholungsflaeche USING gist (wkb_geometry);
 
-CREATE UNIQUE INDEX ax_sportfreizeitunderholungsflaeche_gml ON ax_sportfreizeitunderholungsflaeche USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_sportfreizeitunderholungsflaeche          IS '"Sport-, Freizeit- und ErhohlungsflÃ€che" ist eine bebaute oder unbebaute FlÃ€che, die dem Sport, der Freizeitgestaltung oder der Erholung dient.';
+CREATE UNIQUE INDEX ax_sportfreizeitunderholungsflaeche_gml ON ax_sportfreizeitunderholungsflaeche USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_sportfreizeitunderholungsflaeche          IS 'TatsÃ€chliche Nutzung / Siedlung: (REO) "Sport-, Freizeit- und ErhohlungsflÃ€che" ist eine bebaute oder unbebaute FlÃ€che, die dem Sport, der Freizeitgestaltung oder der Erholung dient.';
 COMMENT ON COLUMN ax_sportfreizeitunderholungsflaeche.gml_id   IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_sportfreizeitunderholungsflaeche.funktion IS 'FKT "Funktion" ist die Art der Nutzung von "Sport-, Freizeit- und ErholungsflÃ€che".';
@@ -2237,14 +2242,16 @@
 -- F r i e d h o f
 -- ----------------
+-- Objektart: AX_Friedhof Kennung: 41009
 CREATE TABLE ax_friedhof (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      funktion            integer,
-     name                varchar,
+     name                character varying,
      zustand             integer,
      CONSTRAINT ax_friedhof_pk PRIMARY KEY (ogc_fid)
@@ -2254,7 +2261,7 @@
 
 CREATE INDEX ax_friedhof_geom_idx ON ax_friedhof USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_friedhof_gml ON ax_friedhof USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_friedhof           IS '"F r i e d h o f"  ist eine FlÃ€che, auf der Tote bestattet sind.';
+CREATE UNIQUE INDEX ax_friedhof_gml ON ax_friedhof USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_friedhof           IS 'TatsÃ€chliche Nutzung / Siedlung: (REO) "Friedhof" ist eine FlÃ€che, auf der Tote bestattet sind.';
 COMMENT ON COLUMN ax_friedhof.gml_id    IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_friedhof.funktion  IS 'FKT "Funktion" ist die Art der BegrÃ€bnisstÃ€tte.';
@@ -2263,27 +2270,29 @@
 
 
---** Objektartengruppe: Verkehr (in Objektbereich:TatsÃ€chliche Nutzung)
+--** Objektartengruppe: Verkehr (in Objektbereich: TatsÃ€chliche Nutzung)
 --   ===================================================================
 
-
 -- S t r a s s e n v e r k e h r
 -- ----------------------------------------------
+-- Objektart: AX_Strassenverkehr Kennung: 42001
 CREATE TABLE ax_strassenverkehr (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      funktion            integer,
-     name                varchar,
-     zweitname           varchar,
+     name                character varying,
+     zweitname           character varying,
      zustand             integer,
-     land                integer,
-     regierungsbezirk    integer,
-     kreis               integer,
-     gemeinde            integer,
-     lage                varchar,
+     land                character varying,
+     regierungsbezirk    character varying,
+     kreis               character varying,
+     gemeinde            character varying,
+     lage                character varying,
+     unverschluesselt    character varying,
      CONSTRAINT ax_strassenverkehr_pk PRIMARY KEY (ogc_fid)
 );
@@ -2292,7 +2301,7 @@
 
 CREATE INDEX ax_strassenverkehr_geom_idx ON ax_strassenverkehr USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_strassenverkehr_gml ON ax_strassenverkehr USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_strassenverkehr           IS '"S t r a s s e n v e r k e h r" umfasst alle fÃŒr die bauliche Anlage StraÃe erforderlichen sowie dem StraÃenverkehr dienenden bebauten und unbebauten FlÃ€chen.';
+CREATE UNIQUE INDEX ax_strassenverkehr_gml ON ax_strassenverkehr USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_strassenverkehr           IS 'TatsÃ€chliche Nutzung / Verkehr: (REO) "Strassenverkehr" umfasst alle fÃŒr die bauliche Anlage StraÃe erforderlichen sowie dem StraÃenverkehr dienenden bebauten und unbebauten FlÃ€chen.';
 COMMENT ON COLUMN ax_strassenverkehr.gml_id    IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_strassenverkehr.funktion  IS 'FKT "Funktion" beschreibt die verkehrliche Nutzung von "StraÃenverkehr".';
@@ -2304,22 +2313,23 @@
 -- W e g
 -- ----------------------------------------------
--- 'Weg' umfasst alle FlÃ€chen, die zum Befahren und/oder Begehen vorgesehen sind.
--- Zum 'Weg' gehÃ¶ren auch Seitenstreifen und GrÃ€ben zur WegentwÃ€sserung.
+-- Objektart: AX_Strassenverkehr Kennung: 42001
 CREATE TABLE ax_weg (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      funktion            integer,
-     name                varchar,
-     bezeichnung         varchar,
-     land                integer,
-     regierungsbezirk    integer,
-     kreis               integer,
-     gemeinde            integer,
-     lage                varchar,
+     name                character varying,
+     bezeichnung         character varying,
+     land                character varying,
+     regierungsbezirk    character varying,
+     kreis               character varying,
+     gemeinde            character varying,
+     lage                character varying,
+     unverschluesselt    character varying,
      CONSTRAINT ax_weg_pk PRIMARY KEY (ogc_fid)
 );
@@ -2328,7 +2338,7 @@
 
 CREATE INDEX ax_weg_geom_idx ON ax_weg USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_weg_gml ON ax_weg USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_weg              IS '"W e g" umfasst alle FlÃ€chen, die zum Befahren und/oder Begehen vorgesehen sind. Zum "Weg" gehÃ¶ren auch Seitenstreifen und GrÃ€ben zur WegentwÃ€sserung.';
+CREATE UNIQUE INDEX ax_weg_gml ON ax_weg USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_weg              IS 'TatsÃ€chliche Nutzung / Verkehr: (REO) "Weg" umfasst alle FlÃ€chen, die zum Befahren und/oder Begehen vorgesehen sind. Zum "Weg" gehÃ¶ren auch Seitenstreifen und GrÃ€ben zur WegentwÃ€sserung.';
 COMMENT ON COLUMN ax_weg.gml_id       IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_weg.funktion     IS 'FKT "Funktion" ist die zum Zeitpunkt der Erhebung objektiv erkennbare oder feststellbare vorherrschend vorkommende Nutzung.';
@@ -2339,21 +2349,23 @@
 -- P l a t z
 -- ----------------------------------------------
--- Platz' ist eine VerkehrsflÃ€che in Ortschaften oder eine ebene, befestigte oder unbefestigte FlÃ€che, die bestimmten Zwecken dient (z. B. fÃŒr Verkehr, MÃ€rkte, Festveranstaltungen).
+-- Objektart: AX_Platz Kennung: 42009
 CREATE TABLE ax_platz (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      funktion            integer,
-     name                varchar,
-     zweitname           varchar,
-     land                integer,
-     regierungsbezirk    integer,
-     kreis               integer,
-     gemeinde            integer,
-     lage            varchar,
+     name                character varying,
+     zweitname           character varying,
+     land                character varying,
+     regierungsbezirk    character varying,
+     kreis               character varying,
+     gemeinde            character varying,
+     lage                character varying,  -- StraÃenschlÃŒssel
+     unverschluesselt    character varying,  -- Gewanne?
      CONSTRAINT ax_platz_pk PRIMARY KEY (ogc_fid)
 );
@@ -2361,8 +2373,8 @@
 SELECT AddGeometryColumn('ax_platz','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
-CREATE INDEX ax_platz_geom_idx ON ax_platz USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_platz_gml ON ax_platz USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_platz           IS 'P l a t z   ist eine VerkehrsflÃ€che in Ortschaften oder eine ebene, befestigte oder unbefestigte FlÃ€che, die bestimmten Zwecken dient (z. B. fÃŒr Verkehr, MÃ€rkte, Festveranstaltungen).';
+CREATE INDEX ax_platz_geom_idx   ON ax_platz USING gist (wkb_geometry);
+CREATE UNIQUE INDEX ax_platz_gml ON ax_platz USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_platz           IS 'TatsÃ€chliche Nutzung / Verkehr: (REO) "Platz" ist eine VerkehrsflÃ€che in Ortschaften oder eine ebene, befestigte oder unbefestigte FlÃ€che, die bestimmten Zwecken dient (z. B. fÃŒr Verkehr, MÃ€rkte, Festveranstaltungen).';
 COMMENT ON COLUMN ax_platz.gml_id    IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_platz.funktion  IS 'FKT "Funktion" ist die zum Zeitpunkt der Erhebung objektiv erkennbare oder feststellbare vorkommende Nutzung.';
@@ -2373,17 +2385,19 @@
 -- B a h n v e r k e h r
 -- ----------------------------------------------
+-- Objektart: AX_Bahnverkehr Kennung: 42010
 CREATE TABLE ax_bahnverkehr (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      funktion            integer,
      bahnkategorie       integer,
-     bezeichnung         varchar,
-     nummerderbahnstrecke varchar,
-     zweitname           varchar,
+     bezeichnung         character varying,
+     nummerderbahnstrecke character varying,
+     zweitname           character varying,
      zustand             integer,
      CONSTRAINT ax_bahnverkehr_pk PRIMARY KEY (ogc_fid)
@@ -2392,12 +2406,12 @@
 SELECT AddGeometryColumn('ax_bahnverkehr','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
-CREATE INDEX ax_bahnverkehr_geom_idx ON ax_bahnverkehr USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_bahnverkehr_gml ON ax_bahnverkehr USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_bahnverkehr        IS '"B a h n v e r k e h r"  umfasst alle fÃŒr den Schienenverkehr erforderlichen FlÃ€chen.';
--- FlÃ€chen von Bahnverkehr sind
---  * der BahnkÃ¶rper (Unterbau fÃŒr Gleise; bestehend aus DÃ€mmen oder Einschnitten und deren kleineren BÃ¶schungen,
---    DurchlÃ€ssen, schmalen GrÃ€ben zur EntwÃ€sserung, StÃŒtzmauern, Unter- und ÃberfÃŒhrung, Seiten und Schutzstreifen) mit seinen Bahnstrecken
---  * an den BahnkÃ¶rper angrenzende bebaute und unbebaute FlÃ€chen (z.B. grÃ¶Ãere BÃ¶schungsflÃ€chen).
+CREATE INDEX ax_bahnverkehr_geom_idx   ON ax_bahnverkehr USING gist (wkb_geometry);
+CREATE UNIQUE INDEX ax_bahnverkehr_gml ON ax_bahnverkehr USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_bahnverkehr        IS 'TatsÃ€chliche Nutzung / Verkehr: (REO) "Bahnverkehr" umfasst alle fÃŒr den Schienenverkehr erforderlichen FlÃ€chen.
+FlÃ€chen von Bahnverkehr sind
+  * der BahnkÃ¶rper (Unterbau fÃŒr Gleise; bestehend aus DÃ€mmen oder Einschnitten und deren kleineren BÃ¶schungen,
+    DurchlÃ€ssen, schmalen GrÃ€ben zur EntwÃ€sserung, StÃŒtzmauern, Unter- und ÃberfÃŒhrung, Seiten und Schutzstreifen) mit seinen Bahnstrecken
+  * an den BahnkÃ¶rper angrenzende bebaute und unbebaute FlÃ€chen (z.B. grÃ¶Ãere BÃ¶schungsflÃ€chen).';
 
 COMMENT ON COLUMN ax_bahnverkehr.gml_id               IS 'Identifikator, global eindeutig';
@@ -2412,16 +2426,18 @@
 -- F l u g v e r k e h r
 -- ----------------------
+-- Objektart: AX_Flugverkehr Kennung: 42015
 CREATE TABLE ax_flugverkehr (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      funktion            integer,
      art                 integer,
-     name                varchar,
-     bezeichnung         varchar,
+     name                character varying,
+     bezeichnung         character varying,
      nutzung             integer,
      zustand             integer,
@@ -2432,7 +2448,7 @@
 
 CREATE INDEX ax_flugverkehr_geom_idx   ON ax_flugverkehr USING gist  (wkb_geometry);
-CREATE UNIQUE INDEX ax_flugverkehr_gml ON ax_flugverkehr USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_flugverkehr             IS '"F l u g v e r k e h r"  umfasst die baulich geprÃ€gte FlÃ€che und die mit ihr in Zusammenhang stehende FreiflÃ€che, die ausschlieÃlich oder vorwiegend dem Flugverkehr dient.';
+CREATE UNIQUE INDEX ax_flugverkehr_gml ON ax_flugverkehr USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_flugverkehr             IS 'TatsÃ€chliche Nutzung / Verkehr: (REO) "Flugverkehr" umfasst die baulich geprÃ€gte FlÃ€che und die mit ihr in Zusammenhang stehende FreiflÃ€che, die ausschlieÃlich oder vorwiegend dem Flugverkehr dient.';
 COMMENT ON COLUMN ax_flugverkehr.gml_id      IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_flugverkehr.funktion    IS 'FKT "Funktion" ist die zum Zeitpunkt der Erhebung vorherrschende Nutzung (Dominanzprinzip).';
@@ -2446,14 +2462,16 @@
 -- S c h i f f s v e r k e h r
 -- ---------------------------
+-- Objektart: AX_Schiffsverkehr Kennung: 42016
 CREATE TABLE ax_schiffsverkehr (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      funktion            integer,
-     name                varchar,
+     name                character varying,
      zustand             integer,
      CONSTRAINT ax_schiffsverkehr_pk PRIMARY KEY (ogc_fid)
@@ -2463,7 +2481,7 @@
 
 CREATE INDEX ax_schiffsverkehr_geom_idx ON ax_schiffsverkehr USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_schiffsverkehr_gml ON ax_schiffsverkehr USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_schiffsverkehr          IS '"S c h i f f s v e r k e h r"  umfasst die baulich geprÃ€gte FlÃ€che und die mit ihr in Zusammenhang stehende FreiflÃ€che, die ausschlieÃlich oder vorwiegend dem Schiffsverkehr dient.';
+CREATE UNIQUE INDEX ax_schiffsverkehr_gml ON ax_schiffsverkehr USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_schiffsverkehr          IS 'TatsÃ€chliche Nutzung / Verkehr: (REO) "Schiffsverkehr" umfasst die baulich geprÃ€gte FlÃ€che und die mit ihr in Zusammenhang stehende FreiflÃ€che, die ausschlieÃlich oder vorwiegend dem Schiffsverkehr dient.';
 COMMENT ON COLUMN ax_schiffsverkehr.gml_id   IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_schiffsverkehr.funktion IS 'FKT "Funktion" ist die zum Zeitpunkt der Erhebung vorherrschende Nutzung von "Schiffsverkehr".';
@@ -2477,23 +2495,24 @@
 -- L a n d w i r t s c h a f t
 -- ----------------------------------------------
+-- Objektart: AX_Landwirtschaft Kennung: 43001
 CREATE TABLE ax_landwirtschaft (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      vegetationsmerkmal  integer,
-     name                varchar,
+     name                character varying,
      CONSTRAINT ax_landwirtschaft_pk PRIMARY KEY (ogc_fid)
 );
-
 SELECT AddGeometryColumn('ax_landwirtschaft','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_landwirtschaft_geom_idx ON ax_landwirtschaft USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_landwirtschaft_gml ON ax_landwirtschaft USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_landwirtschaft                    IS '"L a n d w i r t s c h a f t"  ist eine FlÃ€che fÃŒr den Anbau von FeldfrÃŒchten sowie eine FlÃ€che, die beweidet und gemÃ€ht werden kann, einschlieÃlich der mit besonderen Pflanzen angebauten FlÃ€che. Die Brache, die fÃŒr einen bestimmten Zeitraum (z. B. ein halbes oder ganzes Jahr) landwirtschaftlich unbebaut bleibt, ist als "Landwirtschaft" bzw. "Ackerland" zu erfassen';
+CREATE UNIQUE INDEX ax_landwirtschaft_gml ON ax_landwirtschaft USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_landwirtschaft                    IS 'TatsÃ€chliche Nutzung / Vegetation: (REO) "Landwirtschaft" ist eine FlÃ€che fÃŒr den Anbau von FeldfrÃŒchten sowie eine FlÃ€che, die beweidet und gemÃ€ht werden kann, einschlieÃlich der mit besonderen Pflanzen angebauten FlÃ€che. Die Brache, die fÃŒr einen bestimmten Zeitraum (z. B. ein halbes oder ganzes Jahr) landwirtschaftlich unbebaut bleibt, ist als "Landwirtschaft" bzw. "Ackerland" zu erfassen';
 COMMENT ON COLUMN ax_landwirtschaft.gml_id             IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_landwirtschaft.vegetationsmerkmal IS 'VEG "Vegetationsmerkmal" ist die zum Zeitpunkt der Erhebung erkennbare oder feststellbare vorherrschend vorkommende landwirtschaftliche Nutzung (Dominanzprinzip).';
@@ -2503,15 +2522,17 @@
 -- W a l d
 -- ----------------------------------------------
+-- Objektart: AX_Wald Kennung: 43002
 CREATE TABLE ax_wald (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      vegetationsmerkmal  integer,
-     name                varchar,
-     bezeichnung         varchar,
+     name                character varying,
+     bezeichnung         character varying,
      CONSTRAINT ax_wald_pk PRIMARY KEY (ogc_fid)
 );
@@ -2520,7 +2541,7 @@
 
 CREATE INDEX ax_wald_geom_idx ON ax_wald USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_wald_gml ON ax_wald USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_wald             IS '"W a l d" ist eine FlÃ€che, die mit Forstpflanzen (WaldbÃ€ume und WaldstrÃ€ucher) bestockt ist.';
+CREATE UNIQUE INDEX ax_wald_gml ON ax_wald USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_wald             IS 'TatsÃ€chliche Nutzung / Vegetation: (REO) "Wald" ist eine FlÃ€che, die mit Forstpflanzen (WaldbÃ€ume und WaldstrÃ€ucher) bestockt ist.';
 COMMENT ON COLUMN ax_wald.gml_id      IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_wald.vegetationsmerkmal IS 'VEG "Vegetationsmerkmal" beschreibt den Bewuchs von "Wald".';
@@ -2531,14 +2552,16 @@
 -- G e h Ã¶ l z
 -- ----------------------------------------------
+-- Objektart: AX_Gehoelz Kennung: 43003
 CREATE TABLE ax_gehoelz (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      vegetationsmerkmal  integer,
-     name                varchar,
+     name                character varying,
      funktion            integer,
      CONSTRAINT ax_gehoelz_pk PRIMARY KEY (ogc_fid)
@@ -2548,7 +2571,7 @@
 
 CREATE INDEX ax_gehoelz_geom_idx ON ax_gehoelz USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_gehoelz_gml ON ax_gehoelz USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_gehoelz        IS '"G e h Ã¶ l z" ist eine FlÃ€che, die mit einzelnen BÃ€umen, Baumgruppen, BÃŒschen, Hecken und StrÃ€uchern bestockt ist.';
+CREATE UNIQUE INDEX ax_gehoelz_gml ON ax_gehoelz USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_gehoelz        IS 'TatsÃ€chliche Nutzung / Vegetation: (REO) "GehÃ¶lz" ist eine FlÃ€che, die mit einzelnen BÃ€umen, Baumgruppen, BÃŒschen, Hecken und StrÃ€uchern bestockt ist.';
 COMMENT ON COLUMN ax_gehoelz.gml_id IS 'Identifikator, global eindeutig';
 
@@ -2560,13 +2583,15 @@
 -- H e i d e
 -- ----------------------------------------------
+-- Objektart: AX_Heide Kennung: 43004
 CREATE TABLE ax_heide (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     name                varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     name                character varying,
      CONSTRAINT ax_heide_pk PRIMARY KEY (ogc_fid)
 );
@@ -2574,8 +2599,8 @@
 SELECT AddGeometryColumn('ax_heide','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
-CREATE INDEX ax_heide_geom_idx ON ax_heide USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_heide_gml ON ax_heide USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_heide        IS '"H e i d e"  ist eine meist sandige FlÃ€che mit typischen StrÃ€uchern, GrÃ€sern und geringwertigem Baumbestand.';
+CREATE INDEX ax_heide_geom_idx   ON ax_heide USING gist  (wkb_geometry);
+CREATE UNIQUE INDEX ax_heide_gml ON ax_heide USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_heide        IS 'TatsÃ€chliche Nutzung / Vegetation: (REO) "Heide" ist eine meist sandige FlÃ€che mit typischen StrÃ€uchern, GrÃ€sern und geringwertigem Baumbestand.';
 COMMENT ON COLUMN ax_heide.gml_id IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_heide.name   IS 'NAM "Name" ist der Eigenname von "Heide".';
@@ -2584,13 +2609,15 @@
 -- M o o r
 -- ----------------------------------------------
+-- Objektart: AX_Moor Kennung: 43005
 CREATE TABLE ax_moor (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     name                varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     name                character varying,
      CONSTRAINT ax_moor_pk PRIMARY KEY (ogc_fid)
 );
@@ -2599,7 +2626,7 @@
 
 CREATE INDEX ax_moor_geom_idx   ON ax_moor USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_moor_gml ON ax_moor USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_moor        IS '"M o o r"  ist eine unkultivierte FlÃ€che, deren obere Schicht aus vertorften oder zersetzten Pflanzenresten besteht.';
+CREATE UNIQUE INDEX ax_moor_gml ON ax_moor USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_moor        IS 'TatsÃ€chliche Nutzung / Vegetation: (REO) "Moor" ist eine unkultivierte FlÃ€che, deren obere Schicht aus vertorften oder zersetzten Pflanzenresten besteht.';
 -- Torfstich bzw. TorfabbauflÃ€che wird der Objektart 41005 'Tagebau, Grube, Steinbruch' mit AGT 'Torf' zugeordnet.
 COMMENT ON COLUMN ax_moor.gml_id IS 'Identifikator, global eindeutig';
@@ -2609,13 +2636,15 @@
 -- S u m p f
 -- ----------------------------------------------
+-- Objektart: AX_Sumpf Kennung: 43006
 CREATE TABLE ax_sumpf (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     name                varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     name                character varying,
      CONSTRAINT ax_sumpf_pk PRIMARY KEY (ogc_fid)
 );
@@ -2624,7 +2653,7 @@
 
 CREATE INDEX ax_sumpf_geom_idx ON ax_sumpf USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_sumpf_gml ON ax_sumpf USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_sumpf        IS '"S u m p f" ist ein wassergesÃ€ttigtes, zeitweise unter Wasser stehendes GelÃ€nde. Nach RegenfÃ€llen kurzzeitig nasse Stellen im Boden werden nicht als "Sumpf" erfasst.';
+CREATE UNIQUE INDEX ax_sumpf_gml ON ax_sumpf USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_sumpf        IS 'TatsÃ€chliche Nutzung / Vegetation: (REO) "Sumpf" ist ein wassergesÃ€ttigtes, zeitweise unter Wasser stehendes GelÃ€nde. Nach RegenfÃ€llen kurzzeitig nasse Stellen im Boden werden nicht als "Sumpf" erfasst.';
 COMMENT ON COLUMN ax_sumpf.gml_id IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_sumpf.name   IS 'NAM "Name" ist der Eigenname von "Sumpf".';
@@ -2633,14 +2662,16 @@
 -- U n l a n d  /  V e g e t a t i o n s f l Ã€ c h e
 -- ---------------------------------------------------
+-- Objektart: AX_UnlandVegetationsloseFlaeche Kennung: 43007
 CREATE TABLE ax_unlandvegetationsloseflaeche (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      oberflaechenmaterial integer,
-     name                varchar,
+     name                character varying,
      funktion            integer,
      CONSTRAINT ax_unlandvegetationsloseflaeche_pk PRIMARY KEY (ogc_fid)
@@ -2650,7 +2681,7 @@
 
 CREATE INDEX ax_unlandvegetationsloseflaeche_geom_idx ON ax_unlandvegetationsloseflaeche USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_unlandvegetationsloseflaeche_gml ON ax_unlandvegetationsloseflaeche USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_unlandvegetationsloseflaeche        IS '"Unland/Vegetationslose FlÃ€che" ist eine FlÃ€che, die dauerhaft landwirtschaftlich nicht genutzt wird, wie z.B. nicht aus dem GelÃ€nderelief herausragende Felspartien, Sand- oder EisflÃ€chen, Uferstreifen lÃ€ngs von GewÃ€ssern und SukzessionsflÃ€chen.';
+CREATE UNIQUE INDEX ax_unlandvegetationsloseflaeche_gml ON ax_unlandvegetationsloseflaeche USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_unlandvegetationsloseflaeche        IS 'TatsÃ€chliche Nutzung / Vegetation: (REO) "Unland/Vegetationslose FlÃ€che" ist eine FlÃ€che, die dauerhaft landwirtschaftlich nicht genutzt wird, wie z.B. nicht aus dem GelÃ€nderelief herausragende Felspartien, Sand- oder EisflÃ€chen, Uferstreifen lÃ€ngs von GewÃ€ssern und SukzessionsflÃ€chen.';
 COMMENT ON COLUMN ax_unlandvegetationsloseflaeche.gml_id IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_unlandvegetationsloseflaeche.oberflaechenmaterial IS 'OFM "OberflÃ€chenmaterial" ist die Beschaffenheit des Bodens von "Unland/Vegetationslose FlÃ€che". Die Attributart "OberflÃ€chenmaterial" kann nur im Zusammenhang mit der Attributart "Funktion" und der Werteart 1000 vorkommen.';
@@ -2659,39 +2690,36 @@
 
 
---** Objektartengruppe: GewÃ€sser (in Objektbereich:TatsÃ€chliche Nutzung)
+--** Objektartengruppe: GewÃ€sser (in Objektbereich: TatsÃ€chliche Nutzung)
 --   ===================================================================
 
-
 -- F l i e s s g e w Ã€ s s e r
 -- ----------------------------------------------
--- 'FlieÃgewÃ€sser' ist ein geometrisch begrenztes, oberirdisches, auf dem Festland flieÃendes GewÃ€sser,
--- das die Wassermengen sammelt, die als NiederschlÃ€ge auf die ErdoberflÃ€che fallen oder in Quellen austreten,
--- und in ein anderes GewÃ€sser, ein Meer oder in einen See transportiert
---   oder
--- in einem System von natÃŒrlichen oder kÃŒnstlichen Bodenvertiefungen verlaufendes Wasser,
--- das zur Be- und EntwÃ€sserung an- oder abgeleitet wird
---   oder
--- ein geometrisch begrenzter, fÃŒr die Schifffahrt angelegter kÃŒnstlicher Wasserlauf,
--- der in einem oder in mehreren Abschnitten die jeweils gleiche HÃ¶he des Wasserspiegels besitzt.
+-- Objektart: AX_Fliessgewaesser Kennung: 44001
 CREATE TABLE ax_fliessgewaesser (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      funktion            integer,
-     name                varchar,
+     name                character varying,
      zustand             integer,
+     unverschluesselt    character varying,
      CONSTRAINT ax_fliessgewaesser_pk PRIMARY KEY (ogc_fid)
 );
-
 SELECT AddGeometryColumn('ax_fliessgewaesser','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_fliessgewaesser_geom_idx ON ax_fliessgewaesser USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_fliessgewaesser_gml ON ax_fliessgewaesser USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_fliessgewaesser          IS '"F l i e s s g e w Ã€ s s e r" ist ein geometrisch begrenztes, oberirdisches, auf dem Festland flieÃendes GewÃ€sser, das die Wassermengen sammelt, die als NiederschlÃ€ge auf die ErdoberflÃ€che fallen oder in Quellen austreten, und in ein anderes GewÃ€sser, ein Meer oder in einen See transportiert';
+CREATE UNIQUE INDEX ax_fliessgewaesser_gml ON ax_fliessgewaesser USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_fliessgewaesser IS 'TatsÃ€chliche Nutzung / GewÃ€sser: (REO) "FlieÃgewÃ€sser" ist ein geometrisch begrenztes, oberirdisches, auf dem Festland flieÃendes GewÃ€sser, das die Wassermengen sammelt, die als NiederschlÃ€ge auf die ErdoberflÃ€che fallen oder in Quellen austreten, und in ein anderes GewÃ€sser, ein Meer oder in einen See transportiert
+ oder 
+in einem System von natÃŒrlichen oder kÃŒnstlichen Bodenvertiefungen verlaufendes Wasser, das zur Be- und EntwÃ€sserung an- oder abgeleitet wird
+ oder 
+ein geometrisch begrenzter, fÃŒr die Schifffahrt angelegter kÃŒnstlicher Wasserlauf, der in einem oder in mehreren Abschnitten die jeweils gleiche HÃ¶he des Wasserspiegels besitzt.';
+
 COMMENT ON COLUMN ax_fliessgewaesser.gml_id   IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_fliessgewaesser.funktion IS 'FKT "Funktion" ist die Art von "FlieÃgewÃ€sser".';
@@ -2702,14 +2730,16 @@
 -- H a f e n b e c k e n
 -- ---------------------
+-- Objektart: AX_Hafenbecken Kennung: 44005
 CREATE TABLE ax_hafenbecken (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      funktion            integer,
-     name                varchar,
+     name                character varying,
      nutzung             integer,
      CONSTRAINT ax_hafenbecken_pk PRIMARY KEY (ogc_fid)
@@ -2719,7 +2749,7 @@
 
 CREATE INDEX ax_hafenbecken_geom_idx   ON ax_hafenbecken USING gist  (wkb_geometry);
-CREATE UNIQUE INDEX ax_hafenbecken_gml ON ax_hafenbecken USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_hafenbecken        IS '"H a f e n b e c k e n"  ist ein natÃŒrlicher oder kÃŒnstlich angelegter oder abgetrennter Teil eines GewÃ€ssers, in dem Schiffe be- und entladen werden.';
+CREATE UNIQUE INDEX ax_hafenbecken_gml ON ax_hafenbecken USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_hafenbecken        IS 'TatsÃ€chliche Nutzung / GewÃ€sser: (REO) "Hafenbecken" ist ein natÃŒrlicher oder kÃŒnstlich angelegter oder abgetrennter Teil eines GewÃ€ssers, in dem Schiffe be- und entladen werden.';
 COMMENT ON COLUMN ax_hafenbecken.gml_id IS 'Identifikator, global eindeutig';
 
@@ -2731,18 +2761,19 @@
 -- s t e h e n d e s   G e w Ã€ s s e r
 -- ----------------------------------------------
--- 'Stehendes GewÃ€sser' ist eine natÃŒrliche oder kÃŒnstliche mit Wasser gefÃŒllte,
--- allseitig umschlossene Hohlform der LandoberflÃ€che ohne unmittelbaren Zusammenhang mit 'Meer'.
+-- Objektart: AX_StehendesGewaesser Kennung: 44006
 CREATE TABLE ax_stehendesgewaesser (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      funktion            integer,
-     name                varchar,
-     gewaesserkennziffer varchar,
+     name                character varying,
+     gewaesserkennziffer character varying,
      hydrologischesMerkmal integer,
+     unverschluesselt    character varying,
      CONSTRAINT ax_stehendesgewaesser_pk PRIMARY KEY (ogc_fid)
 );
@@ -2751,7 +2782,7 @@
 
 CREATE INDEX ax_stehendesgewaesser_geom_idx ON ax_stehendesgewaesser USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_stehendesgewaesser_gml ON ax_stehendesgewaesser USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_stehendesgewaesser           IS 's t e h e n d e s   G e w Ã€ s s e r  ist eine natÃŒrliche oder kÃŒnstliche mit Wasser gefÃŒllte, allseitig umschlossene Hohlform der LandoberflÃ€che ohne unmittelbaren Zusammenhang mit "Meer".';
+CREATE UNIQUE INDEX ax_stehendesgewaesser_gml ON ax_stehendesgewaesser USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_stehendesgewaesser           IS 'TatsÃ€chliche Nutzung / GewÃ€sser: (REO) "stehendes GewÃ€sser" ist eine natÃŒrliche oder kÃŒnstliche mit Wasser gefÃŒllte, allseitig umschlossene Hohlform der LandoberflÃ€che ohne unmittelbaren Zusammenhang mit "Meer".';
 COMMENT ON COLUMN ax_stehendesgewaesser.gml_id    IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_stehendesgewaesser.funktion  IS 'FKT "Funktion" ist die Art von "Stehendes GewÃ€sser".';
@@ -2763,15 +2794,17 @@
 -- M e e r
 -- ----------------------------------------------
+-- Objektart: AX_Meer Kennung: 44007
 CREATE TABLE ax_meer (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      funktion            integer,
-     name                varchar,
-     bezeichnung         varchar,
+     name                character varying,
+     bezeichnung         character varying,
      tidemerkmal         integer,
      CONSTRAINT ax_meer_pk PRIMARY KEY (ogc_fid)
@@ -2780,8 +2813,8 @@
 SELECT AddGeometryColumn('ax_meer','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
-CREATE INDEX ax_meer_geom_idx ON ax_meer USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_meer_gml ON ax_meer USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_meer              IS '"M e e r" ist die das Festland umgebende WasserflÃ€che.';
+CREATE INDEX ax_meer_geom_idx   ON ax_meer USING gist  (wkb_geometry);
+CREATE UNIQUE INDEX ax_meer_gml ON ax_meer USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_meer              IS 'TatsÃ€chliche Nutzung / GewÃ€sser: (REO) "Meer" ist die das Festland umgebende WasserflÃ€che.';
 COMMENT ON COLUMN ax_meer.gml_id       IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_meer.funktion     IS 'FKT "Funktion" ist die Art von "Meer".';
@@ -2791,24 +2824,8 @@
 
 
-
 --*** ############################################################
 --*** Objektbereich: Bauwerke, Einrichtungen und sonstige Angaben
 --*** ############################################################
-
---AX_BauwerkeEinrichtungenUndSonstigeAngaben
--- ** Tabelle bisher noch nicht generiert
-
---AX_DQMitDatenerhebung
--- ** Tabelle bisher noch nicht generiert
-
-
---AX_LI_Lineage_MitDatenerhebung
--- ** Tabelle bisher noch nicht generiert
-
---AX_LI_ProcessStep_MitDatenerhebung
--- ** Tabelle bisher noch nicht generiert
-
---AX_LI_Source_MitDatenerhebung
--- ** Tabelle bisher noch nicht generiert
+-- .. ist Ziel einer Relation
 
 
@@ -2818,15 +2835,19 @@
 -- T u r m
 -- ---------------------------------------------------
+-- Objektart: AX_Turm Kennung: 51001
 CREATE TABLE ax_turm (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      bauwerksfunktion    integer,
      zustand             integer,
-     name                varchar,
+     name                character varying,
+     -- Beziehungen:
+     zeigtauf            character varying, --> ax_lagebezeichnungmithausnummer
      CONSTRAINT ax_turm_pk PRIMARY KEY (ogc_fid)
 );
@@ -2835,22 +2856,28 @@
 
 CREATE INDEX ax_turm_geom_idx ON ax_turm USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_turm_gml ON ax_turm USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_turm        IS 'T u r m';
+CREATE UNIQUE INDEX ax_turm_gml ON ax_turm USING btree (gml_id, beginnt);
+
+CREATE INDEX ax_turm_za  ON ax_turm  USING btree  (zeigtauf);
+
+COMMENT ON TABLE  ax_turm        IS 'Bauwerke und Einrichtungen in SiedlungsflÃ€chen: (REO) "Turm" ist ein hoch aufragendes, auf einer verhÃ€ltnismÃ€Ãig kleinen FlÃ€che freistehendes Bauwerk.';
 COMMENT ON COLUMN ax_turm.gml_id IS 'Identifikator, global eindeutig';
 
+COMMENT ON COLUMN ax_turm.zeigtauf IS '-> Beziehung zu ax_lagebezeichnungmithausnummer (0..*): ''Turm'' zeigt auf eine ''Lagebezeichnung mit Hausnummer''.';
+
 
 -- Bauwerk oder Anlage fuer Industrie und Gewerbe
 -- ----------------------------------------------
+-- Objektart: AX_BauwerkOderAnlageFuerIndustrieUndGewerbe Kennung: 51002
 CREATE TABLE ax_bauwerkoderanlagefuerindustrieundgewerbe (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      bauwerksfunktion    integer,
-     name                varchar,
+     name                character varying,
      zustand             integer,
      objekthoehe         double precision,
@@ -2861,7 +2888,7 @@
 
 CREATE INDEX ax_bauwerkoderanlagefuerindustrieundgewerbe_geom_idx ON ax_bauwerkoderanlagefuerindustrieundgewerbe USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_bauwerkoderanlagefuerindustrieundgewerbe_gml ON ax_bauwerkoderanlagefuerindustrieundgewerbe USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE ax_bauwerkoderanlagefuerindustrieundgewerbe         IS 'Bauwerk oder Anlage fuer Industrie und Gewerbe';
+CREATE UNIQUE INDEX ax_bauwerkoderanlagefuerindustrieundgewerbe_gml ON ax_bauwerkoderanlagefuerindustrieundgewerbe USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE ax_bauwerkoderanlagefuerindustrieundgewerbe         IS 'Bauwerke und Einrichtungen in SiedlungsflÃ€chen: (REO) "Bauwerk oder Anlage fuer Industrie und Gewerbe" ist ein Bauwerk oder eine Anlage, die ÃŒberwiegend industriellen und gewerblichen Zwecken dient oder Einrichtung an Ver- und Entsorgungsleitungen ist.';
 COMMENT ON COLUMN ax_bauwerkoderanlagefuerindustrieundgewerbe.gml_id IS 'Identifikator, global eindeutig';
 
@@ -2869,16 +2896,18 @@
 -- V o r r a t s b e h Ã€ l t e r  /  S p e i c h e r b a u w e r k
 -- -----------------------------------------------------------------
+-- Objektart: AX_VorratsbehaelterSpeicherbauwerk Kennung: 51003
 CREATE TABLE ax_vorratsbehaelterspeicherbauwerk (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      speicherinhalt      integer,
      bauwerksfunktion    integer,
      lagezurerdoberflaeche integer,
-     name                varchar,
+     name                character varying,
      CONSTRAINT ax_vorratsbehaelterspeicherbauwerk_pk PRIMARY KEY (ogc_fid)
 );
@@ -2887,7 +2916,7 @@
 
 CREATE INDEX ax_vorratsbehaelterspeicherbauwerk_geom_idx ON ax_vorratsbehaelterspeicherbauwerk USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_vorratsbehaelterspeicherbauwerk_gml ON ax_vorratsbehaelterspeicherbauwerk USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_vorratsbehaelterspeicherbauwerk        IS 'V o r r a t s b e h Ã€ l t e r  /  S p e i c h e r b a u w e r k';
+CREATE UNIQUE INDEX ax_vorratsbehaelterspeicherbauwerk_gml ON ax_vorratsbehaelterspeicherbauwerk USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_vorratsbehaelterspeicherbauwerk        IS 'Bauwerke und Einrichtungen in SiedlungsflÃ€chen: (REO) "VorratsbehÃ€lter, Speicherbauwerk" ist ein geschlossenes Bauwerk zum Aufbewahren von festen, flÃŒssigen oder gasfÃ¶rmigen Stoffen.';
 COMMENT ON COLUMN ax_vorratsbehaelterspeicherbauwerk.gml_id IS 'Identifikator, global eindeutig';
 
@@ -2895,16 +2924,18 @@
 -- T r a n s p o r t a n l a g e
 -- ---------------------------------------------------
+-- Objektart: AX_Transportanlage Kennung: 51004
 CREATE TABLE ax_transportanlage (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      bauwerksfunktion    integer,
      lagezurerdoberflaeche integer,
-     art                 varchar,
-     name                varchar,
+     art                 character varying,
+     name                character varying,
      produkt             integer,
      CONSTRAINT ax_transportanlage_pk PRIMARY KEY (ogc_fid)
@@ -2914,7 +2945,7 @@
 
 CREATE INDEX ax_transportanlage_geom_idx ON ax_transportanlage USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_transportanlage_gml ON ax_transportanlage USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_transportanlage        IS 'T r a n s p o r t a n l a g e';
+CREATE UNIQUE INDEX ax_transportanlage_gml ON ax_transportanlage USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_transportanlage        IS 'Bauwerke und Einrichtungen in SiedlungsflÃ€chen: (REO) "Transportanlage" ist eine Anlage zur FÃ¶rderung oder zum Transport von FlÃŒssigkeiten, Gasen und GÃŒtern.';
 COMMENT ON COLUMN ax_transportanlage.gml_id IS 'Identifikator, global eindeutig';
 
@@ -2922,12 +2953,14 @@
 -- L e i t u n g
 -- ----------------------------------------------
+-- Objektart: AX_Leitung Kennung: 51005
 CREATE TABLE ax_leitung (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      bauwerksfunktion    integer,
      spannungsebene      integer,
@@ -2937,8 +2970,8 @@
 SELECT AddGeometryColumn('ax_leitung','wkb_geometry',:alkis_epsg,'LINESTRING',2);
 
-CREATE INDEX ax_leitung_geom_idx ON ax_leitung USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_leitung_gml ON ax_leitung USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_leitung        IS 'L e i t u n g';
+CREATE INDEX ax_leitung_geom_idx   ON ax_leitung USING gist  (wkb_geometry);
+CREATE UNIQUE INDEX ax_leitung_gml ON ax_leitung USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_leitung        IS 'Bauwerke und Einrichtungen in SiedlungsflÃ€chen: (REO) "Leitung" ist eine aus DrÃ€hten oder Fasern hergestellte Leitung zum Transport von elektrischer Energie und zur Ãbertragung von elektrischen Signalen.';
 COMMENT ON COLUMN ax_leitung.gml_id IS 'Identifikator, global eindeutig';
 
@@ -2946,15 +2979,17 @@
 -- Bauwerk oder Anlage fuer Sport, Freizeit und Erholung
 -- -----------------------------------------------------
+-- Objektart: AX_BauwerkOderAnlageFuerSportFreizeitUndErholung Kennung: 51006
 CREATE TABLE ax_bauwerkoderanlagefuersportfreizeitunderholung (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      bauwerksfunktion    integer,
      sportart            integer,
-     name                varchar,
+     name                character varying,
      CONSTRAINT ax_bauwerkoderanlagefuersportfreizeitunderholung_pk PRIMARY KEY (ogc_fid)
 );
@@ -2962,8 +2997,8 @@
 SELECT AddGeometryColumn('ax_bauwerkoderanlagefuersportfreizeitunderholung','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/POINT
 
-CREATE INDEX ax_bauwerkoderanlagefuersportfreizeitunderholung_geom_idx ON ax_bauwerkoderanlagefuersportfreizeitunderholung USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_bauwerkoderanlagefuersportfreizeitunderholung_gml ON ax_bauwerkoderanlagefuersportfreizeitunderholung USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_bauwerkoderanlagefuersportfreizeitunderholung        IS 'Bauwerk oder Anlage fuer Sport, Freizeit und Erholung';
+CREATE INDEX ax_bauwerkoderanlagefuersportfreizeitunderholung_geom_idx   ON ax_bauwerkoderanlagefuersportfreizeitunderholung USING gist (wkb_geometry);
+CREATE UNIQUE INDEX ax_bauwerkoderanlagefuersportfreizeitunderholung_gml ON ax_bauwerkoderanlagefuersportfreizeitunderholung USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_bauwerkoderanlagefuersportfreizeitunderholung        IS 'Bauwerke und Einrichtungen in SiedlungsflÃ€chen: (REO) "Bauwerk oder Anlage fÃŒr Sport, Freizeit und Erholung" ist ein Bauwerk oder eine Anlage in Sport-, Freizeit- und Erholungsanlagen.';
 COMMENT ON COLUMN ax_bauwerkoderanlagefuersportfreizeitunderholung.gml_id IS 'Identifikator, global eindeutig';
 
@@ -2971,15 +3006,16 @@
 -- Historisches Bauwerk oder historische Einrichtung
 -- -------------------------------------------------
+-- Objektart: AX_HistorischesBauwerkOderHistorischeEinrichtung Kennung: 51007
 CREATE TABLE ax_historischesbauwerkoderhistorischeeinrichtung (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     sonstigesmodell     varchar[],
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      archaeologischertyp integer,
-     name                varchar,
+     name                character varying,
      CONSTRAINT ax_historischesbauwerkoderhistorischeeinrichtung_pk PRIMARY KEY (ogc_fid)
 );
@@ -2987,8 +3023,8 @@
 SELECT AddGeometryColumn('ax_historischesbauwerkoderhistorischeeinrichtung','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/POINT
 
-CREATE INDEX ax_historischesbauwerkoderhistorischeeinrichtung_geom_idx ON ax_historischesbauwerkoderhistorischeeinrichtung USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_historischesbauwerkoderhistorischeeinrichtung_gml ON ax_historischesbauwerkoderhistorischeeinrichtung USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_historischesbauwerkoderhistorischeeinrichtung        IS 'Historisches Bauwerk oder historische Einrichtung';
+CREATE INDEX ax_historischesbauwerkoderhistorischeeinrichtung_geom_idx   ON ax_historischesbauwerkoderhistorischeeinrichtung USING gist (wkb_geometry);
+CREATE UNIQUE INDEX ax_historischesbauwerkoderhistorischeeinrichtung_gml ON ax_historischesbauwerkoderhistorischeeinrichtung USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_historischesbauwerkoderhistorischeeinrichtung        IS 'Bauwerke und Einrichtungen in SiedlungsflÃ€chen: (REO) "Historisches Bauwerk oder historische Einrichtung" ist ein Bauwerk oder eine Einrichtung vor- oder frÃŒhgeschichtlicher Kulturen.';
 COMMENT ON COLUMN ax_historischesbauwerkoderhistorischeeinrichtung.gml_id IS 'Identifikator, global eindeutig';
 
@@ -2996,15 +3032,16 @@
 -- H e i l q u e l l e  /  G a s q u e l l e
 -- ----------------------------------------------
+-- Objektart: AX_HeilquelleGasquelle Kennung: 51008
 CREATE TABLE ax_heilquellegasquelle (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     sonstigesmodell     varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      art                 integer,
-     name                varchar,
+     name                character varying,
      CONSTRAINT ax_heilquellegasquelle_pk PRIMARY KEY (ogc_fid)
 );
@@ -3013,7 +3050,7 @@
 
 CREATE INDEX ax_heilquellegasquelle_geom_idx ON ax_heilquellegasquelle USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_heilquellegasquelle_gml ON ax_heilquellegasquelle USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_heilquellegasquelle        IS 'H e i l q u e l l e  /  G a s q u e l l e';
+CREATE UNIQUE INDEX ax_heilquellegasquelle_gml ON ax_heilquellegasquelle USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_heilquellegasquelle        IS 'Bauwerke und Einrichtungen in SiedlungsflÃ€chen: (REO) "Heilquelle, Gasquelle" ist eine natÃŒrliche, Ã¶rtlich begrenzte Austrittsstelle von Heilwasser oder Gas.';
 COMMENT ON COLUMN ax_heilquellegasquelle.gml_id IS 'Identifikator, global eindeutig';
 
@@ -3021,15 +3058,21 @@
 -- sonstiges Bauwerk oder sonstige Einrichtung
 -- ----------------------------------------------
+-- Objektart: AX_SonstigesBauwerkOderSonstigeEinrichtung Kennung: 51009
 CREATE TABLE ax_sonstigesbauwerkodersonstigeeinrichtung (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      description         integer,
-     name                varchar,  -- Lippe immer leer, RLP "Relationsbelegung bei Nachmigration"
+     name                character varying,
      bauwerksfunktion    integer,
+     funktion            integer,
+     -- Beziehungen:
+     gehoertzubauwerk    character varying, --> ax_bauwerkeeinrichtungenundsonstigeangaben
+     gehoertzu           character varying, --> ax_gebaeude
      CONSTRAINT ax_sonstigesbauwerkodersonstigeeinrichtung_pk PRIMARY KEY (ogc_fid)
 );
@@ -3038,23 +3081,30 @@
 
 CREATE INDEX ax_sonstigesbauwerkodersonstigeeinrichtung_geom_idx ON ax_sonstigesbauwerkodersonstigeeinrichtung USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_sonstigesbauwerkodersonstigeeinrichtung_gml ON ax_sonstigesbauwerkodersonstigeeinrichtung USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_sonstigesbauwerkodersonstigeeinrichtung        IS 'sonstiges Bauwerk oder sonstige Einrichtung';
+CREATE UNIQUE INDEX ax_sonstigesbauwerkodersonstigeeinrichtung_gml ON ax_sonstigesbauwerkodersonstigeeinrichtung USING btree (gml_id, beginnt);
+
+CREATE INDEX ax_sonstigesbauwerkodersonstigeeinrichtung_gz  ON ax_sonstigesbauwerkodersonstigeeinrichtung USING btree (gehoertzu);
+CREATE INDEX ax_sonstigesbauwerkodersonstigeeinrichtung_gzb ON ax_sonstigesbauwerkodersonstigeeinrichtung USING btree (gehoertzubauwerk);
+
+COMMENT ON TABLE  ax_sonstigesbauwerkodersonstigeeinrichtung        IS 'Bauwerke und Einrichtungen in SiedlungsflÃ€chen: (REO) "Sonstiges Bauwerk oder sonstige Einrichtung" ist ein Bauwerk oder eine Einrichtung, das/die nicht zu den anderen Objektarten der Objektartengruppe Bauwerke und Einrichtungen gehÃ¶rt.';
 COMMENT ON COLUMN ax_sonstigesbauwerkodersonstigeeinrichtung.gml_id IS 'Identifikator, global eindeutig';
 
-
--- E i n r i c h t u n g  i n  Ã f f e n t l i c h e n  B e r e i c h e n
+COMMENT ON COLUMN ax_sonstigesbauwerkodersonstigeeinrichtung.gehoertzubauwerk IS '-> Beziehung zu ax_bauwerkeeinrichtungenundsonstigeangaben (0..1): ''AX_SonstigesBauwerkOderSonstigeEinrichtung'' kann einem anderen Bauwerk zugeordnet werden.';
+COMMENT ON COLUMN ax_sonstigesbauwerkodersonstigeeinrichtung.gehoertzu IS '-> Beziehung zu ax_gebaeude (0..1): ''AX_SonstigesBauwerkOderSonstigeEinrichtung'' kann einem GebÃ€ude zugeordnet werden, soweit dies fachlich erforderlich ist.';
+
+
+-- E i n r i c h t u n g   i n   Ã f f e n t l i c h e n  B e r e i c h e n
 -- ------------------------------------------------------------------------
+-- Objektart: AX_EinrichtungInOeffentlichenBereichen Kennung: 51010
 CREATE TABLE ax_einrichtunginoeffentlichenbereichen (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     sonstigesmodell     varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      art                 integer,
-     kilometerangabe     varchar,
+     kilometerangabe     character varying,
      CONSTRAINT ax_einrichtunginoeffentlichenbereichen_pk PRIMARY KEY (ogc_fid)
 );
@@ -3063,49 +3113,26 @@
 
 CREATE INDEX ax_einrichtunginoeffentlichenbereichen_geom_idx ON ax_einrichtunginoeffentlichenbereichen USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_einrichtunginoeffentlichenbereichen_gml ON ax_einrichtunginoeffentlichenbereichen USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_einrichtunginoeffentlichenbereichen        IS 'E i n r i c h t u n g   i n   Ã¶ f f e n t l i c h e n   B e r e i c h e n';
+CREATE UNIQUE INDEX ax_einrichtunginoeffentlichenbereichen_gml ON ax_einrichtunginoeffentlichenbereichen USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_einrichtunginoeffentlichenbereichen        IS 'Bauwerke und Einrichtungen in SiedlungsflÃ€chen: (REO) "Einrichtung in Ã¶ffentlichen Bereichen" sind GegenstÃ€nde und Einrichtungen verschiedenster Art in Ã¶ffentlichen oder Ã¶ffentlich zugÃ€nglichen Bereichen (z.B. StraÃen, Parkanlagen).';
 COMMENT ON COLUMN ax_einrichtunginoeffentlichenbereichen.gml_id IS 'Identifikator, global eindeutig';
-
-
--- E i n r i c h t u n g   f ÃŒ r   d e n   S c h i f f s v e r k e h r
--- ------------------------------------------------------------------------
-CREATE TABLE ax_einrichtungenfuerdenschiffsverkehr (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     art                 integer,
-     kilometerangabe     varchar,
-     name                varchar,
-     CONSTRAINT ax_einrichtungfuerdenschiffsverkehr_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_einrichtungenfuerdenschiffsverkehr','wkb_geometry',:alkis_epsg,'POINT',2);
-
-CREATE INDEX ax_einrichtungenfuerdenschiffsverkehr_geom_idx   ON ax_einrichtungenfuerdenschiffsverkehr USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_einrichtungenfuerdenschiffsverkehr_gml ON ax_einrichtungenfuerdenschiffsverkehr USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_einrichtungenfuerdenschiffsverkehr        IS 'E i n r i c h t u n g e n   f ÃŒ r  d e n  S c h i f f s v e r k e h r';
-COMMENT ON COLUMN ax_einrichtungenfuerdenschiffsverkehr.gml_id IS 'Identifikator, global eindeutig';
 
 
 -- B e s o n d e r e r   B a u w e r k s p u n k t
 -- -----------------------------------------------
+-- Objektart: AX_BesondererBauwerkspunkt Kennung: 51011
 CREATE TABLE ax_besondererbauwerkspunkt (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     punktkennung        varchar,
-     land                integer,
-     stelle              integer,
-     sonstigeeigenschaft varchar[],
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     punktkennung        character varying,
+     land                character varying,
+     stelle              character varying,
+     sonstigeeigenschaft character varying[],
      CONSTRAINT ax_besondererbauwerkspunkt_pk PRIMARY KEY (ogc_fid)
 );
@@ -3113,7 +3140,7 @@
 SELECT AddGeometryColumn('ax_besondererbauwerkspunkt','dummy',:alkis_epsg,'POINT',2);
 
-CREATE UNIQUE INDEX ax_besondererbauwerkspunkt_gml ON ax_besondererbauwerkspunkt USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_besondererbauwerkspunkt        IS 'B e s o n d e r e r   B a u w e r k s p u n k t';
+CREATE UNIQUE INDEX ax_besondererbauwerkspunkt_gml ON ax_besondererbauwerkspunkt USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_besondererbauwerkspunkt        IS 'Bauwerke und Einrichtungen in SiedlungsflÃ€chen: (ZUSO) "Besonderer Bauwerkspunkt" ist ein Punkt eines "Bauwerks" oder einer "Einrichtung".';
 COMMENT ON COLUMN ax_besondererbauwerkspunkt.gml_id IS 'Identifikator, global eindeutig';
 
@@ -3125,16 +3152,19 @@
 --   =======================================================================
 
+
 -- B a u w e r k   i m  V e r k e h s b e r e i c h
 -- ------------------------------------------------
+-- Objektart: AX_BauwerkImVerkehrsbereich Kennung: 53001
 CREATE TABLE ax_bauwerkimverkehrsbereich (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      bauwerksfunktion    integer,
-     name                varchar,
+     name                character varying,
      zustand             integer,
      CONSTRAINT ax_bauwerkimverkehrsbereich_pk PRIMARY KEY (ogc_fid)
@@ -3143,25 +3173,26 @@
 SELECT AddGeometryColumn('ax_bauwerkimverkehrsbereich','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
 
-CREATE INDEX ax_bauwerkimverkehrsbereich_geom_idx ON ax_bauwerkimverkehrsbereich USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_bauwerkimverkehrsbereich_gml ON ax_bauwerkimverkehrsbereich USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_bauwerkimverkehrsbereich        IS 'B a u w e r k   i m  V e r k e h s b e r e i c h';
+CREATE INDEX ax_bauwerkimverkehrsbereich_geom_idx   ON ax_bauwerkimverkehrsbereich USING gist (wkb_geometry);
+CREATE UNIQUE INDEX ax_bauwerkimverkehrsbereich_gml ON ax_bauwerkimverkehrsbereich USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_bauwerkimverkehrsbereich        IS 'Bauwerke, Anlagen und Einrichtungen fÃŒr den Verkehr: (REO) "Bauwerk im Verkehsbereich" ist ein Bauwerk, das dem Verkehr dient.';
 COMMENT ON COLUMN ax_bauwerkimverkehrsbereich.gml_id IS 'Identifikator, global eindeutig';
 
 
--- S t r a s s e n v e r k e h r s a n l a g e
--- ----------------------------------------------
+-- S t r a Ã e n v e r k e h r s a n l a g e
+-- ------------------------------------------
+-- Objektart: AX_Strassenverkehrsanlage Kennung: 53002
 CREATE TABLE ax_strassenverkehrsanlage (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     sonstigesmodell     varchar[],
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      art                 integer,
-     bezeichnung         varchar,
-     name                varchar,
+     bezeichnung         character varying,
+     name                character varying,
      CONSTRAINT ax_strassenverkehrsanlage_pk PRIMARY KEY (ogc_fid)
 );
@@ -3170,7 +3201,7 @@
 
 CREATE INDEX ax_strassenverkehrsanlage_geom_idx ON ax_strassenverkehrsanlage USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_strassenverkehrsanlage_gml ON ax_strassenverkehrsanlage USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_strassenverkehrsanlage        IS 'S t r a s s e n v e r k e h r s a n l a g e';
+CREATE UNIQUE INDEX ax_strassenverkehrsanlage_gml ON ax_strassenverkehrsanlage USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_strassenverkehrsanlage        IS 'Bauwerke, Anlagen und Einrichtungen fÃŒr den Verkehr: (REO) "StraÃenverkehrsanlage" ist eine besondere Anlage fÃŒr den StraÃenverkehr.';
 COMMENT ON COLUMN ax_strassenverkehrsanlage.gml_id IS 'Identifikator, global eindeutig';
 
@@ -3178,15 +3209,16 @@
 -- W e g  /  P f a d  /  S t e i g
 -- ----------------------------------------------
+-- Objektart: AX_WegPfadSteig Kennung: 53003
 CREATE TABLE ax_wegpfadsteig (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     sonstigesmodell     varchar[],
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      art                 integer,
-     name                varchar,
+     name                character varying,
      CONSTRAINT ax_wegpfadsteig_pk PRIMARY KEY (ogc_fid)
 );
@@ -3194,8 +3226,8 @@
 SELECT AddGeometryColumn('ax_wegpfadsteig','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- LINESTRING/POLYGON
 
-CREATE INDEX ax_wegpfadsteig_geom_idx ON ax_wegpfadsteig USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_wegpfadsteig_gml ON ax_wegpfadsteig USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_wegpfadsteig        IS 'W e g  /  P f a d  /  S t e i g';
+CREATE INDEX ax_wegpfadsteig_geom_idx   ON ax_wegpfadsteig USING gist (wkb_geometry);
+CREATE UNIQUE INDEX ax_wegpfadsteig_gml ON ax_wegpfadsteig USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_wegpfadsteig        IS 'Bauwerke, Anlagen und Einrichtungen fÃŒr den Verkehr: (REO) "Weg, Pfad, Steig" ist ein befestigter oder unbefestigter GelÃ€ndestreifen, der zum Befahren und/oder Begehen vorgesehen ist.';
 COMMENT ON COLUMN ax_wegpfadsteig.gml_id IS 'Identifikator, global eindeutig';
 
@@ -3203,16 +3235,17 @@
 -- B a h n v e r k e h r s a n l a g e
 -- ----------------------------------------------
+-- Objektart: AX_Bahnverkehrsanlage Kennung: 53004
 CREATE TABLE ax_bahnverkehrsanlage (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     sonstigesmodell     varchar[],
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      bahnhofskategorie   integer,
      bahnkategorie       integer,
-     name                varchar,
+     name                character varying,
      CONSTRAINT ax_bahnverkehrsanlage_pk PRIMARY KEY (ogc_fid)
 );
@@ -3221,7 +3254,8 @@
 
 CREATE INDEX ax_bahnverkehrsanlage_geom_idx ON ax_bahnverkehrsanlage USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_bahnverkehrsanlage_gml ON ax_bahnverkehrsanlage USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_bahnverkehrsanlage        IS 'B a h n v e r k e h r s a n l a g e';
+CREATE UNIQUE INDEX ax_bahnverkehrsanlage_gml ON ax_bahnverkehrsanlage USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_bahnverkehrsanlage        IS 'Bauwerke, Anlagen und Einrichtungen fÃŒr den Verkehr: (REO) "Bahnverkehrsanlage" ist eine FlÃ€che mit Einrichtungen zur Abwicklung des Personen und/oder GÃŒterverkehrs bei Schienenbahnen. Dazu gehÃ¶ren das EmpfangsgebÃ€ude, sonstige rÃ€umlich angegliederte Verwaltungs- und LagergebÃ€ude, bahntechnische Einrichtungen, FreiflÃ€chen und Gleisanlagen.
+Die "Bahnverkehrsanlage" der Eisenbahnen beginnt oder endet im Allgemeinen am Einfahrtssignal oder an der Einfahrtsweiche.';
 COMMENT ON COLUMN ax_bahnverkehrsanlage.gml_id IS 'Identifikator, global eindeutig';
 
@@ -3229,43 +3263,44 @@
 -- S e i l b a h n, S c h w e b e b a h n
 -- --------------------------------------
+-- Objektart: AX_SeilbahnSchwebebahn Kennung: 53005
 CREATE TABLE ax_seilbahnschwebebahn (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     sonstigesmodell     varchar[],
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      bahnkategorie       integer,
-     name                varchar,
+     name                character varying,
      CONSTRAINT ax_seilbahnschwebebahn_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_seilbahnschwebebahn','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- LINESTRING/MULTILINESTRING
-
+SELECT AddGeometryColumn('ax_seilbahnschwebebahn','wkb_geometry',:alkis_epsg,'GEOMETRY',2); 
+-- LINESTRING/MULTILINESTRING
 CREATE INDEX ax_seilbahnschwebebahn_geom_idx ON ax_seilbahnschwebebahn USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_seilbahnschwebebahn_gml ON ax_seilbahnschwebebahn USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_seilbahnschwebebahn        IS 'S e i l b a h n, S c h w e b e b a h n';
+CREATE UNIQUE INDEX ax_seilbahnschwebebahn_gml ON ax_seilbahnschwebebahn USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_seilbahnschwebebahn        IS 'Bauwerke, Anlagen und Einrichtungen fÃŒr den Verkehr: (REO) "Seilbahn, Schwebebahn" ist eine BefÃ¶rderungseinrichtung, bei der Waggons, Kabinen oder sonstige BehÃ€lter an Seilen oder festen Schienen aufgehÃ€ngt sind und sich an diesen entlang bewegen.';
 COMMENT ON COLUMN ax_seilbahnschwebebahn.gml_id IS 'Identifikator, global eindeutig';
 
 
-
 -- G l e i s
 -- ----------------------------------------------
+-- Objektart: AX_Gleis Kennung: 53006
 CREATE TABLE ax_gleis (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     sonstigesmodell     varchar[],
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      bahnkategorie       integer,
      art                 integer,
      lagezuroberflaeche  integer,
-     name                varchar,
+     name                character varying,
      CONSTRAINT ax_gleis_pk PRIMARY KEY (ogc_fid)
 );
@@ -3274,7 +3309,7 @@
 
 CREATE INDEX ax_gleis_geom_idx ON ax_gleis USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_gleis_gml ON ax_gleis USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_gleis        IS 'G l e i s';
+CREATE UNIQUE INDEX ax_gleis_gml ON ax_gleis USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_gleis        IS 'Bauwerke, Anlagen und Einrichtungen fÃŒr den Verkehr: (REO) "Gleis" ist ein zur FÃŒhrung von Schienenfahrzeugen verlegtes Schienenpaar.';
 COMMENT ON COLUMN ax_gleis.gml_id IS 'Identifikator, global eindeutig';
 
@@ -3282,16 +3317,17 @@
 -- F l u g v e r k e h r s a n l a g e
 -- -----------------------------------
+-- Objektart: AX_Flugverkehrsanlage Kennung: 53007
 CREATE TABLE ax_flugverkehrsanlage (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     sonstigesmodell     varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      art                 integer,
      oberflaechenmaterial integer,
-     name                varchar,
+     name                character varying,
      CONSTRAINT ax_flugverkehrsanlage_pk PRIMARY KEY (ogc_fid)
 );
@@ -3300,26 +3336,51 @@
 
 CREATE INDEX ax_flugverkehrsanlage_geom_idx ON ax_flugverkehrsanlage USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_flugverkehrsanlage_gml ON ax_flugverkehrsanlage USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_flugverkehrsanlage             IS 'F l u g v e r k e h r s a n l a g e';
-COMMENT ON COLUMN ax_flugverkehrsanlage.gml_id      IS 'Identifikator, global eindeutig';
-
-
---AX_EinrichtungenFuerDenSchiffsverkehr
--- ** Tabelle bisher noch nicht generiert
+CREATE UNIQUE INDEX ax_flugverkehrsanlage_gml ON ax_flugverkehrsanlage USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_flugverkehrsanlage          IS 'Bauwerke, Anlagen und Einrichtungen fÃŒr den Verkehr: (REO) "Flugverkehrsanlage" ist eine FlÃ€che, auf der Luftfahrzeuge am Boden bewegt oder abgestellt werden.';
+COMMENT ON COLUMN ax_flugverkehrsanlage.gml_id   IS 'Identifikator, global eindeutig';
+
+
+-- E i n r i c h t u n g e n  f ÃŒ r   d e n   S c h i f f s v e r k e h r
+-- ------------------------------------------------------------------------
+-- Objektart: AX_EinrichtungenFuerDenSchiffsverkehr Kennung: 53008
+CREATE TABLE ax_einrichtungenfuerdenschiffsverkehr (
+     ogc_fid             serial NOT NULL,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     art                 integer,
+     kilometerangabe     character varying,
+     name                character varying,
+     CONSTRAINT ax_einrichtungfuerdenschiffsverkehr_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_einrichtungenfuerdenschiffsverkehr','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
+
+CREATE INDEX ax_einrichtungenfuerdenschiffsverkehr_geom_idx   ON ax_einrichtungenfuerdenschiffsverkehr USING gist (wkb_geometry);
+CREATE UNIQUE INDEX ax_einrichtungenfuerdenschiffsverkehr_gml ON ax_einrichtungenfuerdenschiffsverkehr USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_einrichtungenfuerdenschiffsverkehr        IS 'Bauwerke, Anlagen und Einrichtungen fÃŒr den Verkehr: (REO) "Einrichtungen fÃŒr den Schiffsverkehr" ist ein Bauwerk, das dem Schiffsverkehr dient.';
+COMMENT ON COLUMN ax_einrichtungenfuerdenschiffsverkehr.gml_id IS 'Identifikator, global eindeutig';
 
 
 -- B a u w e r k   i m   G e w Ã€ s s e r b e r e i c h
 -- -----------------------------------------------------
+-- Objektart: AX_BauwerkImGewaesserbereich Kennung: 53009
 CREATE TABLE ax_bauwerkimgewaesserbereich (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      bauwerksfunktion    integer,
-     name                varchar,
+     name                character varying,
      zustand             integer,
      CONSTRAINT ax_bauwerkimgewaesserbereich_pk PRIMARY KEY (ogc_fid)
@@ -3329,7 +3390,7 @@
 
 CREATE INDEX ax_bauwerkimgewaesserbereich_geom_idx ON ax_bauwerkimgewaesserbereich USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_bauwerkimgewaesserbereich_gml ON ax_bauwerkimgewaesserbereich USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_bauwerkimgewaesserbereich        IS 'B a u w e r k   i m   G e w Ã€ s s e r b e r e i c h';
+CREATE UNIQUE INDEX ax_bauwerkimgewaesserbereich_gml ON ax_bauwerkimgewaesserbereich USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_bauwerkimgewaesserbereich        IS 'Bauwerke, Anlagen und Einrichtungen fÃŒr den Verkehr: (REO) "Bauwerk im GewÃ€sserbereich" ist ein Bauwerk, mit dem ein Wasserlauf unter einem Verkehrsweg oder einem anderen Wasserlauf hindurch gefÃŒhrt wird. Ein "Bauwerk im GewÃ€sserbereich" dient dem Abfluss oder der RÃŒckhaltung von GewÃ€ssern oder als Messeinrichtung zur Feststellung des Wasserstandes oder als Uferbefestigung.';
 COMMENT ON COLUMN ax_bauwerkimgewaesserbereich.gml_id IS 'Identifikator, global eindeutig';
 
@@ -3340,15 +3401,17 @@
 -- V e g a t a t i o n s m e r k m a l
 -- ----------------------------------------------
+-- Objektart: AX_Vegetationsmerkmal Kennung: 54001
 CREATE TABLE ax_vegetationsmerkmal (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      bewuchs             integer,
      zustand             integer,
-     name                varchar,
+     name                character varying,
      CONSTRAINT ax_vegetationsmerkmal_pk PRIMARY KEY (ogc_fid)
 );
@@ -3357,7 +3420,7 @@
 
 CREATE INDEX ax_vegetationsmerkmal_geom_idx ON ax_vegetationsmerkmal USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_vegetationsmerkmal_gml ON ax_vegetationsmerkmal USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_vegetationsmerkmal        IS 'V e g a t a t i o n s m e r k m a l';
+CREATE UNIQUE INDEX ax_vegetationsmerkmal_gml ON ax_vegetationsmerkmal USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_vegetationsmerkmal        IS 'Besondere Vegetationsmerkmale: (REO) "Vegatationsmerkmal" beschreibt den zusÃ€tzlichen Bewuchs oder besonderen Zustand einer GrundflÃ€che.';
 COMMENT ON COLUMN ax_vegetationsmerkmal.gml_id IS 'Identifikator, global eindeutig';
 
@@ -3368,14 +3431,16 @@
 -- G e w Ã€ s s e r m e r k m a l
 -- ----------------------------------------------
+-- Objektart: AX_Gewaessermerkmal Kennung: 55001
 CREATE TABLE ax_gewaessermerkmal (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
      art                      integer,
-     name                     varchar,
+     name                     character varying,
      CONSTRAINT ax_gewaessermerkmal_pk PRIMARY KEY (ogc_fid)
 );
@@ -3384,7 +3449,7 @@
 
 CREATE INDEX ax_gewaessermerkmal_geom_idx ON ax_gewaessermerkmal USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_gewaessermerkmal_gml ON ax_gewaessermerkmal USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_gewaessermerkmal        IS 'G e w Ã€ s s e r m e r k m a l';
+CREATE UNIQUE INDEX ax_gewaessermerkmal_gml ON ax_gewaessermerkmal USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_gewaessermerkmal        IS 'Besondere Eigenschaften von GewÃ€ssern: (REO) "GewÃ€ssermerkmal" sind besondere Eigenschaften eines GewÃ€ssers.';
 COMMENT ON COLUMN ax_gewaessermerkmal.gml_id IS 'Identifikator, global eindeutig';
 
@@ -3392,16 +3457,18 @@
 -- u n t e r g e o r d n e t e s   G e w Ã€ s s e r
 -- -------------------------------------------------
+-- Objektart: AX_UntergeordnetesGewaesser Kennung: 55002
 CREATE TABLE ax_untergeordnetesgewaesser (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
      funktion                 integer,
      lagezurerdoberflaeche    integer,
      hydrologischesmerkmal    integer,
-     name                     varchar,
+     name                     character varying,
      CONSTRAINT ax_untergeordnetesgewaesser_pk PRIMARY KEY (ogc_fid)
 );
@@ -3410,12 +3477,21 @@
 
 CREATE INDEX ax_untergeordnetesgewaesser_geom_idx ON ax_untergeordnetesgewaesser USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_untergeordnetesgewaesser_gml ON ax_untergeordnetesgewaesser USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_untergeordnetesgewaesser        IS 'u n t e r g e o r d n e t e s   G e w Ã€ s s e r';
+CREATE UNIQUE INDEX ax_untergeordnetesgewaesser_gml ON ax_untergeordnetesgewaesser USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_untergeordnetesgewaesser        IS 'Besondere Eigenschaften von GewÃ€ssern: (REO) "untergeordnetes GewÃ€sser" ist ein stehendes oder flieÃendes GewÃ€sser mit untergeordneter Bedeutung.';
 COMMENT ON COLUMN ax_untergeordnetesgewaesser.gml_id IS 'Identifikator, global eindeutig';
+
+
+-- Objektart: AX_Wasserspiegelhoehe Kennung: 57001
+-- 'WasserspiegelhÃ¶he' ist die HÃ¶he des mittleren Wasserstandes ÃŒber bzw. unter der HÃ¶henbezugsflÃ€che.
 
 
 --** Objektartengruppe: Besondere Angaben zum Verkehr
 --   ===================================================================
+-- 56001 'Netzknoten'
+-- 56002 'Nullpunkt'
+-- 56003 'Abschnitt'
+-- 56004 'Ast'
+
 
 --** Objektartengruppe: Besondere Angaben zum GewÃ€sser
@@ -3424,12 +3500,14 @@
 -- W a s s e r s p i e g e l h Ã¶ h e
 -- ---------------------------------
+-- Objektart: AX_Wasserspiegelhoehe Kennung: 57001
 CREATE TABLE ax_wasserspiegelhoehe (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
      hoehedeswasserspiegels   double precision,
      CONSTRAINT ax_wasserspiegelhoehe_pk PRIMARY KEY (ogc_fid)
@@ -3439,20 +3517,23 @@
 
 CREATE INDEX ax_wasserspiegelhoehe_geom_idx ON ax_wasserspiegelhoehe USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_wasserspiegelhoehe_gml ON ax_wasserspiegelhoehe USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_wasserspiegelhoehe  IS 'W a s s e r s p i e g e l h Ã¶ h e';
+CREATE UNIQUE INDEX ax_wasserspiegelhoehe_gml ON ax_wasserspiegelhoehe USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_wasserspiegelhoehe  IS 'Besondere Angaben zum GewÃ€sser: (REO) "WasserspiegelhÃ¶he" ist die HÃ¶he des mittleren Wasserstandes ÃŒber bzw. unter der HÃ¶henbezugsflÃ€che.';
 
 
 -- S c h i f f f a h r t s l i n i e  /  F Ã€ h r v e r k e h r
 -- -----------------------------------------------------------
+-- Objektart: AX_SchifffahrtslinieFaehrverkehr Kennung: 57002
 CREATE TABLE ax_schifffahrtsliniefaehrverkehr (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
-     art                      integer,
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
+     art                      integer[],
+     name                     character varying,
      CONSTRAINT ax_schifffahrtsliniefaehrverkehr_pk PRIMARY KEY (ogc_fid)
 );
@@ -3461,7 +3542,8 @@
 
 CREATE INDEX ax_schifffahrtsliniefaehrverkehr_geom_idx ON ax_schifffahrtsliniefaehrverkehr USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_schifffahrtsliniefaehrverkehr_gml ON ax_schifffahrtsliniefaehrverkehr USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_schifffahrtsliniefaehrverkehr  IS 'S c h i f f f a h r t s l i n i e  /  F Ã€ h r v e r k e h r';
+CREATE UNIQUE INDEX ax_schifffahrtsliniefaehrverkehr_gml ON ax_schifffahrtsliniefaehrverkehr USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_schifffahrtsliniefaehrverkehr  IS 'Besondere Angaben zum GewÃ€sser: (REO) "Schifffahrtslinie, FÃ€hrverkehr" ist die regelmÃ€Ãige Schiffs- oder FÃ€hrverbindung.';
+
 
 --*** ############################################################
@@ -3475,13 +3557,14 @@
 -- B Ã¶ s c h u n g s k l i f f
 -- -----------------------------
+-- Objektart: AX_BoeschungKliff Kennung: 61001
 CREATE TABLE ax_boeschungkliff (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar,
-     sonstigesmodell          varchar[],
-     anlass                   varchar,
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
      objekthoehe              double precision,
      CONSTRAINT ax_boeschungkliff_pk PRIMARY KEY (ogc_fid)
@@ -3490,7 +3573,9 @@
 SELECT AddGeometryColumn('ax_boeschungkliff','dummy',:alkis_epsg,'POINT',2);
 
-CREATE UNIQUE INDEX ax_boeschungkliff_gml ON ax_boeschungkliff USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_boeschungkliff        IS 'B Ã¶ s c h u n g s k l i f f';
+CREATE UNIQUE INDEX ax_boeschungkliff_gml ON ax_boeschungkliff USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_boeschungkliff        IS 'Reliefformen: (ZUSO) "BÃ¶schung" ist die zwischen zwei verschieden hoch gelegenden Ebenen geneigte GelÃ€ndeoberflÃ€che kÃŒnstlichen oder natÃŒrlichen Ursprungs.
+"Kliff" ist eine aus Lockermaterial oder Festgestein aufgebaute SteilkÃŒste.';
+
 COMMENT ON COLUMN ax_boeschungkliff.gml_id IS 'Identifikator, global eindeutig';
 
@@ -3498,14 +3583,16 @@
 -- B Ã¶ s c h u n g s f l Ã€ c h e
 -- ---------------------------------
---AX_Boeschungsflaeche GeÃ€ndert (Revisionsnummer: 1623)
+-- Objektart: AX_Boeschungsflaeche Kennung: 61002
 CREATE TABLE ax_boeschungsflaeche (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar,
-     sonstigesmodell          varchar[],
-     anlass                   varchar,
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
+     -- Beziehungen:
+     istteilvon               character varying,  -- Index drauf?
      CONSTRAINT ax_boeschungsflaeche_pk PRIMARY KEY (ogc_fid)
 );
@@ -3513,8 +3600,9 @@
 SELECT AddGeometryColumn('ax_boeschungsflaeche','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
-CREATE INDEX ax_boeschungsflaeche_geom_idx ON ax_boeschungsflaeche USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_boeschungsflaeche_gml ON ax_boeschungsflaeche USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_boeschungsflaeche        IS 'B Ã¶ s c h u n g s f l Ã€ c h e';
+CREATE INDEX ax_boeschungsflaeche_geom_idx   ON ax_boeschungsflaeche USING gist (wkb_geometry);
+CREATE UNIQUE INDEX ax_boeschungsflaeche_gml ON ax_boeschungsflaeche USING btree (gml_id, beginnt);
+CREATE INDEX ax_boeschungsflaeche_itv        ON ax_boeschungsflaeche USING btree (istteilvon);
+
+COMMENT ON TABLE  ax_boeschungsflaeche        IS 'Reliefformen: (REO) "BÃ¶schungsflÃ€che" ist eine durch GelÃ€ndekanten begrenzte GelÃ€ndeoberflÃ€che kÃŒnstlichen oder natÃŒrlichen Ursprungs.';
 COMMENT ON COLUMN ax_boeschungsflaeche.gml_id IS 'Identifikator, global eindeutig';
 
@@ -3522,14 +3610,16 @@
 -- D a m m  /  W a l l  /  D e i c h
 -- ----------------------------------------------
+-- Objektart: AX_DammWallDeich Kennung: 61003
 CREATE TABLE ax_dammwalldeich (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
      art                      integer,
-     name                     varchar,
+     name                     character varying,
      funktion                 integer,
      CONSTRAINT ax_dammwalldeich_pk PRIMARY KEY (ogc_fid)
@@ -3539,21 +3629,23 @@
 
 CREATE INDEX ax_dammwalldeich_geom_idx ON ax_dammwalldeich USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_dammwalldeich_gml ON ax_dammwalldeich USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_dammwalldeich        IS 'D a m m  /  W a l l  /  D e i c h';
+CREATE UNIQUE INDEX ax_dammwalldeich_gml ON ax_dammwalldeich USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_dammwalldeich        IS 'Reliefformen: (REO) "Damm, Wall, Deich" ist eine aus Erde oder anderen Baustoffen bestehende langgestreckte AufschÃŒttung, die Vegetation tragen kann.';
 COMMENT ON COLUMN ax_dammwalldeich.gml_id IS 'Identifikator, global eindeutig';
 
 
 -- H Ã¶ h l e n e i n g a n g
--- ------------------------- 
+-- -------------------------
+-- Objektart: AX_Hoehleneingang Kennung: 61005
 CREATE TABLE ax_hoehleneingang (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
-     name                     varchar,
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
+     name                     character varying,
      ax_datenerhebung         integer,
      CONSTRAINT ax_hoehleneingang_pk PRIMARY KEY (ogc_fid)
@@ -3563,7 +3655,7 @@
 
 CREATE INDEX ax_hoehleneingang_geom_idx ON ax_hoehleneingang USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_hoehleneingang_gml ON ax_hoehleneingang USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_hoehleneingang        IS 'HÃ¶hleneingang';
+CREATE UNIQUE INDEX ax_hoehleneingang_gml ON ax_hoehleneingang USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_hoehleneingang        IS 'Reliefformen: (REO) "HÃ¶hleneingang" ist die Ãffnung eines unterirdischen Hohlraumes an der ErdoberflÃ€che.';
 COMMENT ON COLUMN ax_hoehleneingang.gml_id IS 'Identifikator, global eindeutig';
 
@@ -3571,14 +3663,15 @@
 -- F e l s e n ,  F e l s b l o c k ,   F e l s n a d e l
 -- ------------------------------------------------------
--- Nutzung
+-- Objektart: AX_FelsenFelsblockFelsnadel Kennung: 61006
 CREATE TABLE ax_felsenfelsblockfelsnadel (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
-     name                     varchar,
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
+     name                     character varying,
      CONSTRAINT ax_felsenfelsblockfelsnadel_pk PRIMARY KEY (ogc_fid)
 );
@@ -3587,7 +3680,7 @@
 
 CREATE INDEX ax_felsenfelsblockfelsnadel_geom_idx ON ax_felsenfelsblockfelsnadel USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_felsenfelsblockfelsnadel_gml ON ax_felsenfelsblockfelsnadel USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_felsenfelsblockfelsnadel        IS 'F e l s e n ,  F e l s b l o c k ,   F e l s n a d e l';
+CREATE UNIQUE INDEX ax_felsenfelsblockfelsnadel_gml ON ax_felsenfelsblockfelsnadel USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_felsenfelsblockfelsnadel        IS 'Reliefformen: (REO) "Felsen, Felsblock, Felsnadel" ist eine aufragende Gesteinsmasse oder ein einzelner groÃer Stein.';
 COMMENT ON COLUMN ax_felsenfelsblockfelsnadel.gml_id IS 'Identifikator, global eindeutig';
 
@@ -3595,34 +3688,38 @@
 -- D ÃŒ n e
 -- -------
+-- Objektart: AX_Duene Kennung: 61007
 CREATE TABLE ax_duene (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
-     name                     varchar,
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
+     name                     character varying,
      CONSTRAINT ax_duene_pk PRIMARY KEY (ogc_fid)
 );
-
 SELECT AddGeometryColumn('ax_duene','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_duene_geom_idx ON ax_duene USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_duene_gml ON ax_duene USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_duene IS 'D ÃŒ n e';
+CREATE UNIQUE INDEX ax_duene_gml ON ax_duene USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_duene IS 'Reliefformen: (REO) "DÃŒne" ist ein vom Wind angewehter SandhÃŒgel.';
+COMMENT ON COLUMN ax_duene.gml_id IS 'Identifikator, global eindeutig';
 
 
 -- H Ã¶ h e n l i n i e
 -- --------------------
+-- Objektart: AX_Hoehenlinie Kennung: 61008
 CREATE TABLE ax_hoehenlinie (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
      hoehevonhoehenlinie      double precision,
      CONSTRAINT ax_hoehenlinie_pk PRIMARY KEY (ogc_fid)
@@ -3632,38 +3729,89 @@
 
 CREATE INDEX ax_hoehenlinie_geom_idx ON ax_hoehenlinie USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_hoehenlinie_gml ON ax_hoehenlinie USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_hoehenlinie        IS 'H Ã¶ h e n l i n i e';
+CREATE UNIQUE INDEX ax_hoehenlinie_gml ON ax_hoehenlinie USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_hoehenlinie        IS 'Reliefformen: (REO) "HÃ¶henlinie" ist die Schnittlinie einer ObjektflÃ€che (z.B. des GelÃ€ndes) mit einer FlÃ€che konstanter HÃ¶he ÃŒber oder unter einer HÃ¶henbezugsflÃ€che.';
 COMMENT ON COLUMN ax_hoehenlinie.gml_id IS 'Identifikator, global eindeutig';
 
+COMMENT ON COLUMN ax_hoehenlinie.hoehevonhoehenlinie IS 'HHL "HÃ¶he der HÃ¶henlinie" ist der vertikale Abstand von "HÃ¶henlinie" zum amtlichen Bezugssystem fÃŒr die HÃ¶he in [m] auf cm gerundet.';
+
+
+-- B e s o n d e r e r   T o p o g r a f i s c h e r   P u n k t
+-- -------------------------------------------------------------
+-- Objektart: AX_BesondererTopographischerPunkt Kennung: 61009
+CREATE TABLE ax_besonderertopographischerpunkt (
+     ogc_fid             serial NOT NULL,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     land                character varying,
+     stelle              character varying,
+     punktkennung        character varying,
+     sonstigeeigenschaft character varying[],
+     CONSTRAINT ax_besonderertopographischerpunkt_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_besonderertopographischerpunkt','dummy',:alkis_epsg,'POINT',2);
+
+CREATE UNIQUE INDEX ax_besonderertopographischerpunkt_gml ON ax_besonderertopographischerpunkt USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_besonderertopographischerpunkt        IS 'Reliefformen: (ZUSO) "Besonderer Topografischer Punkt" ist ein im Liegenschaftskataster gefÃŒhrter Topographischer Punkt.';
+COMMENT ON COLUMN ax_besonderertopographischerpunkt.gml_id IS 'Identifikator, global eindeutig';
+
+
+-- S o l l 
+-- -------
+-- Objektart: AX_Soll Kennung: 61010
+CREATE TABLE ax_soll (
+     ogc_fid               serial NOT NULL,
+     gml_id                character varying NOT NULL,
+     identifier            character varying,
+     beginnt               character(20),
+     endet                 character(20),
+     advstandardmodell     character varying[],
+     sonstigesmodell       character varying[],
+     anlass                character varying,
+     name                  character varying,
+     CONSTRAINT ax_soll_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_soll','wkb_geometry',:alkis_epsg,'POLYGON',2);
+
+CREATE INDEX ax_soll_geom_idx ON ax_soll USING gist (wkb_geometry);
+CREATE UNIQUE INDEX ax_soll_gml ON ax_soll USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_soll        IS 'Reliefformen: (REO) "Soll" ist eine runde, oft steilwandige Vertiefung in den norddeutschen GrundmorÃ€nenlandschaften; kann durch Abschmelzen von ÃŒberschÃŒtteten ToteisblÃ¶cken (Toteisloch) oder durch Schmelzen periglazialer Eislinsen entstanden sein.';
+COMMENT ON COLUMN ax_soll.gml_id IS 'Identifikator, global eindeutig';
+
+COMMENT ON COLUMN ax_soll.name   IS 'NAM "Name" ist der Eigenname von "Soll".';
 
 
 --** Objektartengruppe: PrimÃ€res DGM
 --   ===================================================================
-
---AX_Erfassung_DGM
--- ** Tabelle bisher noch nicht generiert
-
-
---AX_ErfassungMarkanterGelaendepunkt
--- ** Tabelle bisher noch nicht generiert
+-- Kennung '62000'
 
 
 -- G e l Ã€ n d e k a n t e
 -- ----------------------------------------------
+-- Objektart: AX_Gelaendekante Kennung: 62040
 CREATE TABLE ax_gelaendekante (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar,
-     sonstigesmodell          varchar,
-     anlass                   varchar,
-     istteilvon               varchar, -- Beziehung?
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
      artdergelaendekante      integer,
      ax_dqerfassungsmethode   integer,
      identifikation           integer,
      art                      integer,
+     -- Beziehungen:
+     istteilvon			character varying,
      CONSTRAINT ax_gelaendekante_pk PRIMARY KEY (ogc_fid)
 );
@@ -3671,26 +3819,31 @@
 SELECT AddGeometryColumn('ax_gelaendekante','wkb_geometry',:alkis_epsg,'LINESTRING',2);
 
-CREATE INDEX ax_gelaendekante_geom_idx ON ax_gelaendekante USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_gelaendekante_gml ON ax_gelaendekante USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_gelaendekante        IS 'G e l Ã€ n d e k a n t e';
+CREATE INDEX ax_gelaendekante_geom_idx   ON ax_gelaendekante USING gist  (wkb_geometry);
+CREATE UNIQUE INDEX ax_gelaendekante_gml ON ax_gelaendekante USING btree (gml_id, beginnt);
+CREATE INDEX ax_gelaendekante_itv_idx    ON ax_gelaendekante USING btree (istteilvon);
+
+COMMENT ON TABLE  ax_gelaendekante        IS 'PrimÃ€res DGM: (REO) "GelÃ€ndekante" ist die Schnittlinie unterschiedlich geneigter GelÃ€ndeflÃ€chen.';
 COMMENT ON COLUMN ax_gelaendekante.gml_id IS 'Identifikator, global eindeutig';
 
 
---AX_MarkanterGelaendepunkt
+-- M a r k a n t e r   G e l Ã€ n d e p u n k t
+-- -------------------------------------------
+-- Objektart: AX_MarkanterGelaendepunkt Kennung: 62070
 -- ** Tabelle bisher noch nicht generiert
+-- "Markanter GelÃ€ndepunkt" ist ein HÃ¶henpunkt an markanter Stelle des GelÃ€ndes, der zur ErgÃ€nzung eines gitterfÃ¶rmigen DGM und/oder der HÃ¶henliniendarstellung dient.
 
 
 -- B e s o n d e r e r   H Ã¶ h e n p u n k t
 -- -------------------------------------------------------------
+-- Objektart: AX_BesondererHoehenpunkt Kennung: 62090
 CREATE TABLE ax_besondererhoehenpunkt (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar,
-     sonstigesmodell          varchar,
-     anlass                   varchar,
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
      besonderebedeutung       integer,
      CONSTRAINT ax_besondererhoehenpunkt_pk PRIMARY KEY (ogc_fid)
@@ -3700,13 +3853,18 @@
 
 CREATE INDEX ax_besondererhoehenpunkt_geom_idx ON ax_besondererhoehenpunkt USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_besondererhoehenpunkt_gml ON ax_besondererhoehenpunkt USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_besondererhoehenpunkt        IS 'B e s o n d e r e r   H Ã¶ h e n - P u n k t';
+CREATE UNIQUE INDEX ax_besondererhoehenpunkt_gml ON ax_besondererhoehenpunkt USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_besondererhoehenpunkt        IS 'PrimÃ€res DGM: (REO) "Besonderer HÃ¶henpunkt" ist ein HÃ¶henpunkt mit besonderer topographischer Bedeutung.';
 COMMENT ON COLUMN ax_besondererhoehenpunkt.gml_id IS 'Identifikator, global eindeutig';
 
-
-
---** Objektartengruppe:SekundÃ€res DGM
+COMMENT ON COLUMN ax_besondererhoehenpunkt.besonderebedeutung IS 'BBD "Besondere Bedeutung" ist die besondere topographische Bedeutung des HÃ¶henpunktes.';
+
+
+--** Objektartengruppe: SekundÃ€res DGM
 --   ===================================================================
+-- Kennung '63000'
+-- 63010 'DGM-Gitter'
+-- 63020 'Abgeleitete HÃ¶henlinie'
+
 
 --*** ############################################################
@@ -3716,20 +3874,22 @@
 --** Objektartengruppe: Ãffentlich-rechtliche und sonstige Festlegungen
 --   ===================================================================
-
+-- Kennung '71000'
 
 -- K l a s s i f i z i e r u n g   n a c h   S t r a s s e n r e c h t
 -- -------------------------------------------------------------------
+-- Objektart: AX_KlassifizierungNachStrassenrecht Kennung: 71001
 CREATE TABLE ax_klassifizierungnachstrassenrecht (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
      artderfestlegung         integer,
-     land                     integer,
-     stelle                   varchar,
-     bezeichnung              varchar,
+     land                     character varying,
+     stelle                   character varying,
+     bezeichnung              character varying,
      CONSTRAINT ax_klassifizierungnachstrassenrecht_pk PRIMARY KEY (ogc_fid)
 );
@@ -3738,24 +3898,31 @@
 
 CREATE INDEX ax_klassifizierungnachstrassenrecht_geom_idx   ON ax_klassifizierungnachstrassenrecht USING gist  (wkb_geometry);
-CREATE UNIQUE INDEX ax_klassifizierungnachstrassenrecht_gml ON ax_klassifizierungnachstrassenrecht USING btree (gml_id,beginnt);
-CREATE INDEX ax_klassifizierungnachstrassenrecht_afs ON ax_klassifizierungnachstrassenrecht(land,stelle);
-
-COMMENT ON TABLE  ax_klassifizierungnachstrassenrecht        IS 'K l a s s i f i z i e r u n g   n a c h   S t r a s s e n r e c h t';
+CREATE UNIQUE INDEX ax_klassifizierungnachstrassenrecht_gml ON ax_klassifizierungnachstrassenrecht USING btree (gml_id, beginnt);
+CREATE INDEX ax_klassifizierungnachstrassenrecht_afs        ON ax_klassifizierungnachstrassenrecht USING btree (land, stelle);
+
+COMMENT ON TABLE  ax_klassifizierungnachstrassenrecht        IS 'Ãffentlich-rechtliche und sonstige Festlegungen: (REO) "Klassifizierung nach Strassenrecht" ist die auf den Grund und Boden bezogene BeschrÃ€nkung, Belastung oder andere Eigenschaft einer FlÃ€che nach Ã¶ffentlichen, straÃenrechtlichen Vorschriften.';
 COMMENT ON COLUMN ax_klassifizierungnachstrassenrecht.gml_id IS 'Identifikator, global eindeutig';
+
+
+-- Objektart: AX_AndereFestlegungNachStrassenrecht Kennung: 71002
+-- "Andere Festlegung nach StraÃenrecht" ist die auf den Grund und Boden bezogene BeschrÃ€nkung, Belastung oder andere Eigenschaft einer FlÃ€che nach Ã¶ffentlichen, straÃenrechtlichen Vorschriften.
+
 
 
 -- K l a s s i f i z i e r u n g   n a c h   W a s s e r r e c h t
 -- ---------------------------------------------------------------
+-- Objektart: AX_KlassifizierungNachWasserrecht Kennung: 71003
 CREATE TABLE ax_klassifizierungnachwasserrecht (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
      artderfestlegung         integer,
-     land                     integer,
-     stelle                   varchar,
+     land                     character varying,
+     stelle                   character varying,
      CONSTRAINT ax_klassifizierungnachwasserrecht_pk PRIMARY KEY (ogc_fid)
 );
@@ -3764,37 +3931,152 @@
 
 CREATE INDEX ax_klassifizierungnachwasserrecht_geom_idx ON ax_klassifizierungnachwasserrecht USING gist (wkb_geometry);
-CREATE INDEX ax_klassifizierungnachwasserrecht_afs ON ax_klassifizierungnachwasserrecht(land,stelle);
-
-COMMENT ON TABLE  ax_klassifizierungnachwasserrecht        IS 'K l a s s i f i z i e r u n g   n a c h   W a s s e r r e c h t';
+CREATE INDEX ax_klassifizierungnachwasserrecht_afs      ON ax_klassifizierungnachwasserrecht USING btree (land, stelle);
+
+COMMENT ON TABLE  ax_klassifizierungnachwasserrecht        IS 'Ãffentlich-rechtliche und sonstige Festlegungen: (REO) "Klassifizierung nach Wasserrecht" ist die auf den Grund und Boden bezogene BeschrÃ€nkung, Belastung oder andere Eigenschaft einer FlÃ€che nach Ã¶ffentlichen, wasserrechtlichen Vorschriften.';
 COMMENT ON COLUMN ax_klassifizierungnachwasserrecht.gml_id IS 'Identifikator, global eindeutig';
+
+
+-- A n d e r e   F e s t l e g u n g   n a c h   W a s s e r r e c h t
+-- --------------------------------------------------------------------
+-- Objektart: AX_AndereFestlegungNachWasserrecht Kennung: 71004
+CREATE TABLE ax_anderefestlegungnachwasserrecht (
+     ogc_fid             serial NOT NULL,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     artderfestlegung    integer,
+     land                character varying,
+     stelle              character varying,
+     CONSTRAINT ax_anderefestlegungnachwasserrecht_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_anderefestlegungnachwasserrecht','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
+
+CREATE        INDEX ax_anderefestlegungnachwasserrecht_geom_idx ON ax_anderefestlegungnachwasserrecht USING gist (wkb_geometry);
+CREATE UNIQUE INDEX ax_anderefestlegungnachwasserrecht_gml      ON ax_anderefestlegungnachwasserrecht USING btree (gml_id, beginnt);
+CREATE        INDEX ax_anderefestlegungnachwasserrecht_afs      ON ax_anderefestlegungnachwasserrecht(land, stelle);
+
+COMMENT ON TABLE  ax_anderefestlegungnachwasserrecht        IS 'Ãffentlich-rechtliche und sonstige Festlegungen: (REO) "Andere Festlegung nach  Wasserrecht" ist die auf den Grund und Boden bezogene BeschrÃ€nkung, Belastung oder andere Eigenschaft einer FlÃ€che nach Ã¶ffentlichen, wasserrechtlichen Vorschriften.';
+COMMENT ON COLUMN ax_anderefestlegungnachwasserrecht.gml_id IS 'Identifikator, global eindeutig';
+
+
+-- S c h u t z g e b i e t   n a c h   W a s s e r r e c h t
+-- -----------------------------------------------------------
+-- Objektart: AX_SchutzgebietNachWasserrecht Kennung: 71005
+CREATE TABLE ax_schutzgebietnachwasserrecht (
+     ogc_fid             serial NOT NULL,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     artderfestlegung    integer,
+     land                character varying,
+     stelle              character varying,
+     art                 character varying[],
+     name                character varying[],
+     nummerdesschutzgebietes  character varying,
+     CONSTRAINT ax_schutzgebietnachwasserrecht_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_schutzgebietnachwasserrecht','dummy',:alkis_epsg,'POINT',2);
+
+CREATE UNIQUE INDEX ax_schutzgebietnachwasserrecht_gml ON ax_schutzgebietnachwasserrecht USING btree (gml_id, beginnt);
+CREATE        INDEX ax_schutzgebietnachwasserrecht_afs ON ax_schutzgebietnachwasserrecht USING btree (land, stelle);
+
+COMMENT ON TABLE  ax_schutzgebietnachwasserrecht        IS 'Ãffentlich-rechtliche und sonstige Festlegungen: (NREO) "Schutzgebiet nach Wassserrecht" ist ein fachlich ÃŒbergeordnetes Gebiet von FlÃ€chen mit bodenbezogenen BeschrÃ€nkungen, Belastungen oder anderen Eigenschaften nach Ã¶ffentlichen, wasserrechtlichen Vorschriften.';
+COMMENT ON COLUMN ax_schutzgebietnachwasserrecht.gml_id IS 'Identifikator, global eindeutig';
+
+
+-- N  a t u r -,  U m w e l t -   o d e r   B o d e n s c h u t z r e c h t
+-- ------------------------------------------------------------------------
+-- Objektart: AX_NaturUmweltOderBodenschutzrecht Kennung: 71006
+CREATE TABLE ax_naturumweltoderbodenschutzrecht (
+     ogc_fid             serial NOT NULL,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     artderfestlegung    integer,
+     land                character varying,
+     stelle              character varying,
+     name                character varying,
+     CONSTRAINT ax_naturumweltoderbodenschutzrecht_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_naturumweltoderbodenschutzrecht','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
+
+CREATE        INDEX ax_naturumweltoderbodenschutzrecht_geom_idx ON ax_naturumweltoderbodenschutzrecht USING gist  (wkb_geometry);
+CREATE UNIQUE INDEX ax_naturumweltoderbodenschutzrecht_gml      ON ax_naturumweltoderbodenschutzrecht USING btree (gml_id, beginnt);
+CREATE        INDEX ax_naturumweltoderbodenschutzrecht_afs      ON ax_naturumweltoderbodenschutzrecht USING btree (land, stelle);
+
+COMMENT ON TABLE  ax_naturumweltoderbodenschutzrecht        IS 'Ãffentlich-rechtliche und sonstige Festlegungen: (REO) "Natur-, Umwelt- oder Bodenschutzrecht" ist die auf den Grund und Boden bezogene BeschrÃ€nkung, Belastung oder andere Eigenschaft einer FlÃ€che oder eines Gegenstandes nach Ã¶ffentlichen, natur-, umwelt- oder bodenschutzrechtlichen Vorschriften.';
+COMMENT ON COLUMN ax_naturumweltoderbodenschutzrecht.gml_id IS 'Identifikator, global eindeutig';
+
+
+-- S c h u t z g e b i e t   n a c h   N a t u r,  U m w e l t  o d e r  B o d e n s c h u t z r e c h t
+-- -----------------------------------------------------------------------------------------------------
+-- Objektart: AX_SchutzgebietNachNaturUmweltOderBodenschutzrecht Kennung: 71007
+CREATE TABLE ax_schutzgebietnachnaturumweltoderbodenschutzrecht (
+     ogc_fid             serial NOT NULL,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     artderfestlegung    integer,
+     land                character varying,
+     stelle              character varying,
+	name			     character varying,
+     CONSTRAINT ax_schutzgebietnachnaturumweltoderbodenschutzrecht_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_schutzgebietnachnaturumweltoderbodenschutzrecht','dummy',:alkis_epsg,'POINT',2);
+
+CREATE UNIQUE INDEX ax_schutzgebietnachnaturumweltoderbodenschutzrecht_gml ON ax_schutzgebietnachnaturumweltoderbodenschutzrecht USING btree (gml_id, beginnt);
+CREATE        INDEX ax_schutzgebietnachnaturumweltoderbodenschutzrecht_afs ON ax_schutzgebietnachnaturumweltoderbodenschutzrecht USING btree (land, stelle);
+
+COMMENT ON TABLE  ax_schutzgebietnachnaturumweltoderbodenschutzrecht IS 'Ãffentlich-rechtliche und sonstige Festlegungen: (NREO) "Schutzgebiet nach Natur, Umwelt oder Bodenschutzrecht" ist ein fachlich ÃŒbergeordnetes Gebiet von FlÃ€chen mit bodenbezogenen BeschrÃ€nkungen, Belastungen oder anderen Eigenschaften nach Ã¶ffentlichen Vorschriften.';
+COMMENT ON COLUMN ax_schutzgebietnachnaturumweltoderbodenschutzrecht.gml_id IS 'Identifikator, global eindeutig';
 
 
 -- B a u - ,   R a u m -   o d e r   B o d e n o r d n u n g s r e c h t
 -- ---------------------------------------------------------------------
--- 'Bau-, Raum- oder Bodenordnungsrecht' ist ein fachlich ÃŒbergeordnetes Gebiet von FlÃ€chen
--- mit bodenbezogenen BeschrÃ€nkungen, Belastungen oder anderen Eigenschaften nach Ã¶ffentlichen Vorschriften.
+-- Objektart: AX_BauRaumOderBodenordnungsrecht Kennung: 71008
 CREATE TABLE ax_bauraumoderbodenordnungsrecht (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
-     art                      varchar,
-     name                     varchar,
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
+     art                      character varying,
+     name                     character varying,
      artderfestlegung         integer,
-     land                     integer,
-     stelle                   varchar,
-     bezeichnung              varchar,
+     land                     character varying,
+     stelle                   character varying,
+     bezeichnung              character varying,
+     datumanordnung           character varying,
      CONSTRAINT ax_bauraumoderbodenordnungsrecht_pk PRIMARY KEY (ogc_fid)
 );
-
 SELECT AddGeometryColumn('ax_bauraumoderbodenordnungsrecht','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
-CREATE INDEX ax_bauraumoderbodenordnungsrecht_geom_idx ON ax_bauraumoderbodenordnungsrecht USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_bauraumoderbodenordnungsrecht_gml ON ax_bauraumoderbodenordnungsrecht USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_bauraumoderbodenordnungsrecht             IS 'REO: Bau-, Raum- oder Bodenordnungsrecht';
+CREATE INDEX ax_bauraumoderbodenordnungsrecht_geom_idx   ON ax_bauraumoderbodenordnungsrecht USING gist (wkb_geometry);
+CREATE UNIQUE INDEX ax_bauraumoderbodenordnungsrecht_gml ON ax_bauraumoderbodenordnungsrecht USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_bauraumoderbodenordnungsrecht             IS 'Ãffentlich-rechtliche und sonstige Festlegungen: (REO) "Bau-, Raum- oder Bodenordnungsrecht" ist ein fachlich ÃŒbergeordnetes Gebiet von FlÃ€chen mit bodenbezogenen BeschrÃ€nkungen, Belastungen oder anderen Eigenschaften nach Ã¶ffentlichen Vorschriften.';
 COMMENT ON COLUMN ax_bauraumoderbodenordnungsrecht.gml_id      IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_bauraumoderbodenordnungsrecht.artderfestlegung IS 'ADF';
@@ -3803,21 +4085,82 @@
 
 
+-- D e n k m a l s c h u t z r e c h t
+-- -----------------------------------
+-- Objektart: AX_Denkmalschutzrecht Kennung: 71009
+CREATE TABLE ax_denkmalschutzrecht (
+     ogc_fid             serial NOT NULL,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     artderfestlegung    integer,
+     land                character varying,
+     stelle              character varying,
+     art                 character varying,
+     name                character varying,
+     CONSTRAINT ax_denkmalschutzrecht_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_denkmalschutzrecht','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
+
+CREATE INDEX ax_denkmalschutzrecht_geom_idx   ON ax_denkmalschutzrecht USING gist  (wkb_geometry);
+CREATE UNIQUE INDEX ax_denkmalschutzrecht_gml ON ax_denkmalschutzrecht USING btree (gml_id, beginnt);
+CREATE INDEX ax_denkmalschutzrecht_afs        ON ax_denkmalschutzrecht(land, stelle);
+
+COMMENT ON TABLE  ax_denkmalschutzrecht        IS 'Ãffentlich-rechtliche und sonstige Festlegungen: (REO)  "Denkmalschutzrecht" ist die auf den Grund und Boden bezogene BeschrÃ€nkung, Belastung oder andere Eigenschaft einer FlÃ€che oder Gegenstand nach Ã¶ffentlichen, denkmalschutzrechtlichen Vorschriften.';
+COMMENT ON COLUMN ax_denkmalschutzrecht.gml_id IS 'Identifikator, global eindeutig';
+
+
+-- F o r s t r e c h t
+-- -------------------
+-- Objektart: AX_Forstrecht Kennung: 71010
+CREATE TABLE ax_forstrecht (
+     ogc_fid             serial NOT NULL,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     artderfestlegung    integer,
+     besonderefunktion   integer,
+     land                character varying,
+     stelle              character varying,
+     CONSTRAINT ax_forstrecht_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_forstrecht','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
+
+CREATE INDEX ax_forstrecht_geom_idx   ON ax_forstrecht USING gist  (wkb_geometry);
+CREATE UNIQUE INDEX ax_forstrecht_gml ON ax_forstrecht USING btree (gml_id, beginnt);
+CREATE INDEX ax_forstrecht_afs ON ax_forstrecht(land,stelle);
+
+COMMENT ON TABLE  ax_forstrecht        IS 'Ãffentlich-rechtliche und sonstige Festlegungen: (REO) "Forstrecht" ist die auf den Grund und Boden bezogene BeschrÃ€nkung, Belastung oder andere Eigenschaft einer FlÃ€che nach Ã¶ffentlichen, forstrechtlichen Vorschriften.';
+COMMENT ON COLUMN ax_forstrecht.gml_id IS 'Identifikator, global eindeutig';
+
+
 -- S o n s t i g e s   R e c h t
 -- -----------------------------
+-- Objektart: AX_SonstigesRecht Kennung: 71011
 CREATE TABLE ax_sonstigesrecht (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
      artderfestlegung         integer,
-     land                     integer,
-     stelle                   varchar,
-     bezeichnung              varchar,
-     characterstring          varchar,
-     art                      varchar,
-     name                     varchar,
+     land                     character varying,
+     stelle                   character varying,
+     bezeichnung              character varying,
+     characterstring          character varying,
+     art                      character varying,
+     name                     character varying,
      funktion                 integer,
      CONSTRAINT ax_sonstigesrecht_pk PRIMARY KEY (ogc_fid)
@@ -3827,29 +4170,68 @@
 
 CREATE INDEX ax_sonstigesrecht_geom_idx ON ax_sonstigesrecht USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_sonstigesrecht_gml ON ax_sonstigesrecht USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_sonstigesrecht        IS 'S o n s t i g e s   R e c h t';
+CREATE UNIQUE INDEX ax_sonstigesrecht_gml ON ax_sonstigesrecht USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_sonstigesrecht        IS 'Ãffentlich-rechtliche und sonstige Festlegungen: (REO) "Sonstiges Recht" sind die auf den Grund und Boden bezogenen BeschrÃ€nkungen, Belastungen oder anderen Eigenschaften einer FlÃ€che nach weiteren, nicht unter die Objektarten 71001 bis 71010 zu subsumierenden Ã¶ffentlich - rechtlichen Vorschriften.';
 COMMENT ON COLUMN ax_sonstigesrecht.gml_id IS 'Identifikator, global eindeutig';
+
+COMMENT ON COLUMN ax_sonstigesrecht.artderfestlegung IS 'ADF "Art der Festlegung" ist die auf den Grund und Boden bezogene Art der BeschrÃ€nkung, Belastung oder anderen Ã¶ffentlich-rechtlichen Eigenschaft.';
+
+
+-- S c h u t z z o n e
+-- -------------------
+-- Objektart: AX_Schutzzone Kennung: 71012
+CREATE TABLE ax_schutzzone (
+     ogc_fid             serial NOT NULL,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     "zone"              integer,
+     art                 character varying[],
+     -- Beziehungen:
+     istteilvon character varying, --> AX_SchutzgebietNachWasserrecht
+     CONSTRAINT ax_schutzzone_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_schutzzone','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
+
+CREATE        INDEX ax_schutzzone_geom_idx ON ax_schutzzone USING gist  (wkb_geometry);
+CREATE UNIQUE INDEX ax_schutzzone_gml      ON ax_schutzzone USING btree (gml_id, beginnt);
+CREATE        INDEX ax_schutzzone_itv      ON ax_schutzzone USING btree (istteilvon);
+
+COMMENT ON TABLE  ax_schutzzone        IS 'Ãffentlich-rechtliche und sonstige Festlegungen: (REO) "Schutzzone" ist die auf den Grund und Boden bezogene BeschrÃ€nkung, Belastung oder andere Eigenschaft einer FlÃ€che nach Ã¶ffentlichen oder wasserrechtlichen Vorschriften.';
+COMMENT ON COLUMN ax_schutzzone.gml_id IS 'Identifikator, global eindeutig';
+
+COMMENT ON COLUMN ax_schutzzone.istteilvon IS '-> Beziehung zu AX_SchutzgebietNachWasserrecht (1)';
+
 
 
 --** Objektartengruppe: BodenschÃ€tzung, Bewertung
 --   ===================================================================
+-- Kennung '72000'
 
 
 -- B o d e n s c h Ã€ t z u n g
 -- ----------------------------------------------
+-- Objektart: AX_Bodenschaetzung Kennung: 72001
 CREATE TABLE ax_bodenschaetzung (
      ogc_fid                       serial NOT NULL,
-     gml_id                        character(16),
-     identifier                    character(44),
+     gml_id                        character varying NOT NULL,
+     identifier                    character varying,
      beginnt                       character(20),
      endet                         character(20),
-     advstandardmodell             varchar,
-     anlass                        varchar,
+     advstandardmodell             character varying[],
+     sonstigesmodell               character varying[],
+     anlass                        character varying,
+     art                           character varying,
+     name                          character varying,
      kulturart                     integer,
      bodenart                      integer,
      zustandsstufeoderbodenstufe   integer,
      entstehungsartoderklimastufewasserverhaeltnisse integer[],
-     bodenzahlodergruenlandgrundzahl  integer,
+     bodenzahlodergruenlandgrundzahl integer,
      ackerzahlodergruenlandzahl    integer,
      sonstigeangaben               integer[],
@@ -3861,38 +4243,42 @@
 
 CREATE INDEX ax_bodenschaetzung_geom_idx ON ax_bodenschaetzung USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_bodenschaetzung_gml ON ax_bodenschaetzung USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_bodenschaetzung              IS '"B o d e n s c h Ã€ t z u n g" ist die kleinste Einheit einer bodengeschÃ€tzten FlÃ€che nach dem BodenschÃ€tzungsgesetz, fÃŒr die eine ErtragsfÃ€higkeit im Liegenschaftskataster nachzuweisen ist (BodenschÃ€tzungsflÃ€che). Ausgenommen sind MusterstÃŒcke, LandesmusterstÃŒcke und VergleichsstÃŒcke der BodenschÃ€tzung.';
+CREATE UNIQUE INDEX ax_bodenschaetzung_gml ON ax_bodenschaetzung USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_bodenschaetzung              IS 'BodenschÃ€tzung, Bewertung: (REO) "BodenschÃ€tzung" ist die kleinste Einheit einer bodengeschÃ€tzten FlÃ€che nach dem BodenschÃ€tzungsgesetz, fÃŒr die eine ErtragsfÃ€higkeit im Liegenschaftskataster nachzuweisen ist (BodenschÃ€tzungsflÃ€che). Ausgenommen sind MusterstÃŒcke, LandesmusterstÃŒcke und VergleichsstÃŒcke der BodenschÃ€tzung.';
 
 COMMENT ON COLUMN ax_bodenschaetzung.gml_id       IS 'Identifikator, global eindeutig';
-COMMENT ON COLUMN ax_bodenschaetzung.kulturart    IS '"Kulturart" ist die bestandskrÃ€ftig festgesetzte landwirtschaftliche Nutzungsart entsprechend dem Acker- oder GrÃŒnlandschÃ€tzungsrahmen.';
-COMMENT ON COLUMN ax_bodenschaetzung.bodenart     IS '"Bodenart" ist die nach den DurchfÃŒhrungsbestimmungen zum BodenschÃ€tzungsgesetz (SchÃ€tzungsrahmen) festgelegte Bezeichnung der Bodenart.';
-COMMENT ON COLUMN ax_bodenschaetzung.zustandsstufeoderbodenstufe     IS '"Zustandsstufe oder Bodenstufe" ist die nach den SchÃ€tzungsrahmen festgelegte Bezeichnung der Zustands- oder Bodenstufe.';
-COMMENT ON COLUMN ax_bodenschaetzung.entstehungsartoderklimastufewasserverhaeltnisse IS '"Entstehungsart oder Klimastufe/WasserverhÃ€ltnisse" ist die nach den SchÃ€tzungsrahmen festgelegte Bezeichnung der Entstehungsart oder der Klimastufe und der WasserverhÃ€ltnisse.';
-COMMENT ON COLUMN ax_bodenschaetzung.bodenzahlodergruenlandgrundzahl IS '"Bodenzahl oder GrÃŒnlandgrundzahl" ist die Wertzahl nach dem Acker- oder GrÃŒnlandschÃ€tzungsrahmen';
-COMMENT ON COLUMN ax_bodenschaetzung.ackerzahlodergruenlandzahl      IS '"Ackerzahl oder GrÃŒnlandzahl" ist die "Bodenzahl oder GrÃŒnlandgrundzahl" einschlieÃlich Ab- und Zurechnungen nach dem BodenschÃ€tzungsgesetz.';
-COMMENT ON COLUMN ax_bodenschaetzung.sonstigeangaben                 IS '"Sonstige Angaben" ist der Nachweis von Besonderheiten einer bodengeschÃ€tzten FlÃ€che.';
-COMMENT ON COLUMN ax_bodenschaetzung.jahreszahl   IS '"Jahreszahl" ist das Jahr, in dem eine Neukultur oder Tiefkultur angelegt worden ist.';
+COMMENT ON COLUMN ax_bodenschaetzung.kulturart    IS 'KUL "Kulturart" ist die bestandskrÃ€ftig festgesetzte landwirtschaftliche Nutzungsart entsprechend dem Acker- oder GrÃŒnlandschÃ€tzungsrahmen.';
+COMMENT ON COLUMN ax_bodenschaetzung.bodenart     IS 'KN1 "Bodenart" ist die nach den DurchfÃŒhrungsbestimmungen zum BodenschÃ€tzungsgesetz (SchÃ€tzungsrahmen) festgelegte Bezeichnung der Bodenart.';
+COMMENT ON COLUMN ax_bodenschaetzung.zustandsstufeoderbodenstufe     IS 'KN2 "Zustandsstufe oder Bodenstufe" ist die nach den SchÃ€tzungsrahmen festgelegte Bezeichnung der Zustands- oder Bodenstufe.';
+COMMENT ON COLUMN ax_bodenschaetzung.entstehungsartoderklimastufewasserverhaeltnisse IS 'KN3 "Entstehungsart oder Klimastufe/WasserverhÃ€ltnisse" ist die nach den SchÃ€tzungsrahmen festgelegte Bezeichnung der Entstehungsart oder der Klimastufe und der WasserverhÃ€ltnisse.';
+COMMENT ON COLUMN ax_bodenschaetzung.bodenzahlodergruenlandgrundzahl IS 'WE1 "Bodenzahl oder GrÃŒnlandgrundzahl" ist die Wertzahl nach dem Acker- oder GrÃŒnlandschÃ€tzungsrahmen';
+COMMENT ON COLUMN ax_bodenschaetzung.ackerzahlodergruenlandzahl      IS 'WE2 "Ackerzahl oder GrÃŒnlandzahl" ist die "Bodenzahl oder GrÃŒnlandgrundzahl" einschlieÃlich Ab- und Zurechnungen nach dem BodenschÃ€tzungsgesetz.';
+COMMENT ON COLUMN ax_bodenschaetzung.sonstigeangaben                 IS 'SON "Sonstige Angaben" ist der Nachweis von Besonderheiten einer bodengeschÃ€tzten FlÃ€che.';
+COMMENT ON COLUMN ax_bodenschaetzung.jahreszahl   IS 'JAH "Jahreszahl" ist das Jahr, in dem eine Neukultur oder Tiefkultur angelegt worden ist.';
 
 
 -- M u s t e r -,  L a n d e s m u s t e r -   u n d   V e r g l e i c h s s t u e c k
 -- -----------------------------------------------------------------------------------
+-- Objektart: AX_MusterLandesmusterUndVergleichsstueck Kennung: 72002
 CREATE TABLE ax_musterlandesmusterundvergleichsstueck (
-     ogc_fid                       serial NOT NULL,
-     gml_id                        character(16),
-     identifier                    character(44),
-     beginnt                       character(20),
-     endet                         character(20),
-     advstandardmodell             varchar,
-     anlass                        varchar,
-     merkmal                       integer,
-     nummer                        integer,
-     kulturart                     integer,
-     bodenart                      integer,
-     zustandsstufeoderbodenstufe   integer,
+     ogc_fid                          serial NOT NULL,
+     gml_id                           character varying NOT NULL,
+     identifier                       character varying,
+     beginnt                          character(20),
+     endet                            character(20),
+     advstandardmodell                character varying[],
+     sonstigesmodell                  character varying[],
+     anlass                           character varying,
+     art                              character varying,
+     name                             character varying,
+     merkmal                          integer,
+     nummer                           character varying, -- integer
+     kulturart                        integer,
+     bodenart                         integer,
+     zustandsstufeoderbodenstufe      integer,
      entstehungsartoderklimastufewasserverhaeltnisse integer,
-     bodenzahlodergruenlandgrundzahl  integer,
-     ackerzahlodergruenlandzahl    integer,
-     sonstigeangaben               integer[],
+     bodenzahlodergruenlandgrundzahl  character varying, -- integer
+     ackerzahlodergruenlandzahl       character varying, -- integer
+     sonstigeangaben                  integer[],
      CONSTRAINT ax_musterlandesmusterundvergleichsstueck_pk PRIMARY KEY (ogc_fid)
 );
@@ -3901,37 +4287,130 @@
 
 CREATE INDEX ax_musterlandesmusterundvergleichsstueck_geom_idx   ON ax_musterlandesmusterundvergleichsstueck USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_musterlandesmusterundvergleichsstueck_gml ON ax_musterlandesmusterundvergleichsstueck USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_musterlandesmusterundvergleichsstueck           IS '"Muster-, Landesmuster- und VergleichsstÃŒck" ist eine besondere bodengeschÃ€tzte FlÃ€che nach dem BodenschÃ€tzungsgesetz, fÃŒr die eine ErtragsfÃ€higkeit im Liegenschaftskataster nachzuweisen ist.';
+CREATE UNIQUE INDEX ax_musterlandesmusterundvergleichsstueck_gml ON ax_musterlandesmusterundvergleichsstueck USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_musterlandesmusterundvergleichsstueck           IS 'BodenschÃ€tzung, Bewertung: (REO) "Muster-, Landesmuster- und VergleichsstÃŒck" ist eine besondere bodengeschÃ€tzte FlÃ€che nach dem BodenschÃ€tzungsgesetz, fÃŒr die eine ErtragsfÃ€higkeit im Liegenschaftskataster nachzuweisen ist.';
 COMMENT ON COLUMN ax_musterlandesmusterundvergleichsstueck.gml_id    IS 'Identifikator, global eindeutig';
 
-COMMENT ON COLUMN ax_musterlandesmusterundvergleichsstueck.merkmal   IS '"Merkmal" ist die Kennzeichnung zur Unterscheidung von MusterstÃŒck, LandesmusterstÃŒck und VergleichsstÃŒck.';
-COMMENT ON COLUMN ax_musterlandesmusterundvergleichsstueck.kulturart IS '"Kulturart" ist die bestandskrÃ€ftig festgesetzte landwirtschaftliche Nutzungsart entsprechend dem Acker- oder GrÃŒnlandschÃ€tzungsrahmen.';
-COMMENT ON COLUMN ax_musterlandesmusterundvergleichsstueck.bodenart  IS '"Bodenart" ist die nach den DurchfÃŒhrungsbestimmungen zum BodenschÃ€tzungsgesetz (SchÃ€tzungsrahmen) festgelegte Bezeichnung der Bodenart.';
-COMMENT ON COLUMN ax_musterlandesmusterundvergleichsstueck.zustandsstufeoderbodenstufe     IS '"Zustandsstufe oder Bodenstufe" ist die nach den SchÃ€tzungsrahmen festgelegte Bezeichnung der Zustands- oder Bodenstufe.';
-COMMENT ON COLUMN ax_musterlandesmusterundvergleichsstueck.entstehungsartoderklimastufewasserverhaeltnisse IS '"Entstehungsart oder Klimastufe/WasserverhÃ€ltnisse" ist die nach den SchÃ€tzungsrahmen festgelegte Bezeichnung der Entstehungsart oder der Klimastufe und der WasserverhÃ€ltnisse.';
-COMMENT ON COLUMN ax_musterlandesmusterundvergleichsstueck.bodenzahlodergruenlandgrundzahl IS '"Bodenzahl oder GrÃŒnlandgrundzahl" ist die Wertzahl nach dem Acker- oder GrÃŒnlandschÃ€tzungsrahmen.';
-COMMENT ON COLUMN ax_musterlandesmusterundvergleichsstueck.ackerzahlodergruenlandzahl      IS '"Ackerzahl oder GrÃŒnlandzahl" ist die "Bodenzahl oder GrÃŒnlandgrundzahl" einschlieÃlich Ab- und Zurechnungen nach dem BodenschÃ€tzungsgesetz.';
-COMMENT ON COLUMN ax_musterlandesmusterundvergleichsstueck.sonstigeangaben                 IS '"Sonstige Angaben" ist der Nachweis von Besonderheiten einer bodengeschÃ€tzten FlÃ€che.';
+COMMENT ON COLUMN ax_musterlandesmusterundvergleichsstueck.merkmal   IS 'MDB "Merkmal" ist die Kennzeichnung zur Unterscheidung von MusterstÃŒck, LandesmusterstÃŒck und VergleichsstÃŒck.';
+COMMENT ON COLUMN ax_musterlandesmusterundvergleichsstueck.nummer    IS 'MKN "Nummer" ist ein von der Finanzverwaltung zur eindeutigen Bezeichnung der Muster-, LandesmusterstÃŒcke und VergleichsstÃŒcke vergebenes Ordnungsmerkmal (z.B.: 2328.07 mit Bundesland (23), Finanzamt (28), lfd. Nummer (07)).';
+
+COMMENT ON COLUMN ax_musterlandesmusterundvergleichsstueck.kulturart IS 'KUL "Kulturart" ist die bestandskrÃ€ftig festgesetzte landwirtschaftliche Nutzungsart entsprechend dem Acker- oder GrÃŒnlandschÃ€tzungsrahmen.';
+COMMENT ON COLUMN ax_musterlandesmusterundvergleichsstueck.bodenart  IS 'KN1 "Bodenart" ist die nach den DurchfÃŒhrungsbestimmungen zum BodenschÃ€tzungsgesetz (SchÃ€tzungsrahmen) festgelegte Bezeichnung der Bodenart.';
+COMMENT ON COLUMN ax_musterlandesmusterundvergleichsstueck.zustandsstufeoderbodenstufe     IS 'KN2 "Zustandsstufe oder Bodenstufe" ist die nach den SchÃ€tzungsrahmen festgelegte Bezeichnung der Zustands- oder Bodenstufe.';
+COMMENT ON COLUMN ax_musterlandesmusterundvergleichsstueck.entstehungsartoderklimastufewasserverhaeltnisse IS 'KN3 "Entstehungsart oder Klimastufe/WasserverhÃ€ltnisse" ist die nach den SchÃ€tzungsrahmen festgelegte Bezeichnung der Entstehungsart oder der Klimastufe und der WasserverhÃ€ltnisse.';
+COMMENT ON COLUMN ax_musterlandesmusterundvergleichsstueck.bodenzahlodergruenlandgrundzahl IS 'WE1 "Bodenzahl oder GrÃŒnlandgrundzahl" ist die Wertzahl nach dem Acker- oder GrÃŒnlandschÃ€tzungsrahmen.';
+COMMENT ON COLUMN ax_musterlandesmusterundvergleichsstueck.ackerzahlodergruenlandzahl      IS 'WE2 "Ackerzahl oder GrÃŒnlandzahl" ist die "Bodenzahl oder GrÃŒnlandgrundzahl" einschlieÃlich Ab- und Zurechnungen nach dem BodenschÃ€tzungsgesetz.';
+COMMENT ON COLUMN ax_musterlandesmusterundvergleichsstueck.sonstigeangaben                 IS 'SON "Sonstige Angaben" ist der Nachweis von Besonderheiten einer bodengeschÃ€tzten FlÃ€che.';
+
+
+-- G r a b l o c h   d e r   B o d e n s c h Ã€ t z u n g
+-- -----------------------------------------------------
+-- Objektart: AX_GrablochDerBodenschaetzung Kennung: 72003
+CREATE TABLE ax_grablochderbodenschaetzung (
+     ogc_fid             serial NOT NULL,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     art                 character varying,
+     name                character varying,
+     bedeutung           integer[],
+     land                character varying,
+     nummerierungsbezirk character varying,
+     gemarkungsnummer    character varying,
+     nummerdesgrablochs  character varying,
+     bodenzahlodergruenlandgrundzahl integer,
+     -- Beziehungen:
+     gehoertzu           character varying, --> ax_tagesabschnitt
+     CONSTRAINT ax_grablochderbodenschaetzung_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_grablochderbodenschaetzung','wkb_geometry',:alkis_epsg,'POINT',2);
+
+CREATE INDEX ax_grablochderbodenschaetzung_geom_idx   ON ax_grablochderbodenschaetzung USING gist  (wkb_geometry);
+CREATE UNIQUE INDEX ax_grablochderbodenschaetzung_gml ON ax_grablochderbodenschaetzung USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_grablochderbodenschaetzung        IS 'BodenschÃ€tzung, Bewertung: (REO) "Grabloch der BodenschÃ€tzung" ist der Lagepunkt der Profilbeschreibung von Grab-/BohrlÃ¶chern.';
+COMMENT ON COLUMN ax_grablochderbodenschaetzung.gml_id IS 'Identifikator, global eindeutig';
+
+COMMENT ON COLUMN ax_grablochderbodenschaetzung.gehoertzu IS '-> Beziehung zu ax_tagesabschnitt (0..1): Jedes Grabloch einer BodenschÃ€tzung liegt in einem Tagesabschnitt.';
+
+
+-- B e w e r t u n g
+-- ------------------
+-- Objektart: AX_Bewertung Kennung: 72004
+CREATE TABLE ax_bewertung (
+     ogc_fid                    serial NOT NULL,
+     gml_id                     character varying NOT NULL,
+     identifier                 character varying,
+     beginnt                    character(20),
+     endet                      character(20),
+     advstandardmodell          character varying[],
+     sonstigesmodell            character varying[],
+     anlass                     character varying,
+     klassifizierung            integer,
+     CONSTRAINT ax_bewertung_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_bewertung','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
+
+CREATE INDEX ax_bewertung_geom_idx   ON ax_bewertung USING gist  (wkb_geometry);
+CREATE UNIQUE INDEX ax_bewertung_gml ON ax_bewertung USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_bewertung        IS 'BodenschÃ€tzung, Bewertung: (REO) "Bewertung" ist die Klassifizierung einer FlÃ€che nach dem Bewertungsgesetz (BewertungsflÃ€che).';
+COMMENT ON COLUMN ax_bewertung.gml_id IS 'Identifikator, global eindeutig';
+
+COMMENT ON COLUMN ax_bewertung.klassifizierung IS 'KLA "Klassifizierung" ist die gesetzliche Klassifizierung nach dem Bewertungsgesetz.';
+
+
+-- T a g e s a b s c h n i t t
+-- ---------------------------
+-- Objektart: AX_Tagesabschnitt Kennung: 72006
+CREATE TABLE ax_tagesabschnitt (
+     ogc_fid                  serial NOT NULL,
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
+     beginnt                  character(20),
+     endet                    character(20),
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
+     tagesabschnittsnummer    character varying,
+     CONSTRAINT ax_tagesabschnitt_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_tagesabschnitt','wkb_geometry',:alkis_epsg,'POLYGON',2);
+
+CREATE INDEX ax_tagesabschnitt_geom_idx   ON ax_tagesabschnitt USING gist  (wkb_geometry);
+CREATE UNIQUE INDEX ax_tagesabschnitt_gml ON ax_tagesabschnitt USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE ax_tagesabschnitt         IS 'BodenschÃ€tzung, Bewertung: (REO) "Tagesabschnitt" ist ein Ordnungskriterium der SchÃ€tzungsarbeiten fÃŒr eine BewertungsflÃ€che. Innerhalb der Tagesabschnitte sind die GrablÃ¶cher eindeutig zugeordnet.';
+COMMENT ON COLUMN ax_tagesabschnitt.gml_id IS 'Identifikator, global eindeutig';
 
 
 --** Objektartengruppe: Kataloge
 --   ===================================================================
+-- Kennung '73000'
 
 
 -- B u n d e s l a n d
 -- ----------------------------------------------
+-- Objektart: AX_Bundesland Kennung: 73002
 CREATE TABLE ax_bundesland (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     schluesselgesamt    integer,
-     bezeichnung         varchar,
-     land                integer,
-     stelle              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     schluesselgesamt    character varying,
+     bezeichnung         character varying,
+     land                character varying,
+     stelle              character varying,
      CONSTRAINT ax_bundesland_pk PRIMARY KEY (ogc_fid)
 );
@@ -3939,7 +4418,7 @@
 SELECT AddGeometryColumn('ax_bundesland','dummy',:alkis_epsg,'POINT',2);
 
-CREATE UNIQUE INDEX ax_bundesland_gml ON ax_bundesland USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_bundesland        IS 'B u n d e s l a n d';
+CREATE UNIQUE INDEX ax_bundesland_gml ON ax_bundesland USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_bundesland        IS 'Kataloge: (NREO) "Bundesland" umfasst das Gebiet des jeweiligen Bundeslandes innerhalb der Bundesrepublik Deutschland.';
 COMMENT ON COLUMN ax_bundesland.gml_id IS 'Identifikator, global eindeutig';
 
@@ -3947,16 +4426,18 @@
 -- R e g i e r u n g s b e z i r k
 -- ----------------------------------------------
+-- Objektart: AX_Regierungsbezirk Kennung: 73003
 CREATE TABLE ax_regierungsbezirk (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
-     schluesselgesamt         integer,
-     bezeichnung              varchar,
-     land                     integer,
-     regierungsbezirk         integer,
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
+     schluesselgesamt         character varying,
+     bezeichnung              character varying,
+     land                     character varying,
+     regierungsbezirk         character varying,
      CONSTRAINT ax_regierungsbezirk_pk PRIMARY KEY (ogc_fid)
 );
@@ -3964,28 +4445,27 @@
 SELECT AddGeometryColumn('ax_regierungsbezirk','dummy',:alkis_epsg,'POINT',2);
 
--- Verbindungstabellen indizieren
-CREATE UNIQUE INDEX ax_regierungsbezirk_gml ON ax_regierungsbezirk USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_regierungsbezirk        IS 'R e g i e r u n g s b e z i r k';
+CREATE UNIQUE INDEX ax_regierungsbezirk_gml ON ax_regierungsbezirk USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_regierungsbezirk        IS 'Kataloge: (NREO) "Regierungsbezirk" enthÃ€lt alle zur Regierungsbezirksebene zÃ€hlenden Verwaltungseinheiten innerhalb eines Bundeslandes.';
 COMMENT ON COLUMN ax_regierungsbezirk.gml_id IS 'Identifikator, global eindeutig';
 
-
---AX_KreisRegion GeÃ€ndert (Revisionsnummer: 1658)
 
 -- K r e i s   /   R e g i o n
 -- ---------------------------
+-- Objektart: AX_KreisRegion Kennung: 73004
 CREATE TABLE ax_kreisregion (
      ogc_fid                  serial NOT NULL,
-     gml_id                   character(16),
-     identifier               character(44),
+     gml_id                   character varying NOT NULL,
+     identifier               character varying,
      beginnt                  character(20),
      endet                    character(20),
-     advstandardmodell        varchar,
-     anlass                   varchar,
-     schluesselgesamt         integer,
-     bezeichnung              varchar,
-     land                     integer,
-     regierungsbezirk         integer,
-     kreis                    integer,
+     advstandardmodell        character varying[],
+     sonstigesmodell          character varying[],
+     anlass                   character varying,
+     schluesselgesamt         character varying,
+     bezeichnung              character varying,
+     land                     character varying,
+     regierungsbezirk         character varying,
+     kreis                    character varying,
      CONSTRAINT ax_kreisregion_pk PRIMARY KEY (ogc_fid)
 );
@@ -3993,7 +4473,7 @@
 SELECT AddGeometryColumn('ax_kreisregion','dummy',:alkis_epsg,'POINT',2);
 
-CREATE UNIQUE INDEX ax_kreisregion_gml ON ax_kreisregion USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_kreisregion        IS 'K r e i s  /  R e g i o n';
+CREATE UNIQUE INDEX ax_kreisregion_gml ON ax_kreisregion USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_kreisregion        IS 'Kataloge: (NREO) "Kreis/Region" enthÃ€lt alle zur Kreisebene zÃ€hlenden Verwaltungseinheiten innerhalb eines Bundeslandes.';
 COMMENT ON COLUMN ax_kreisregion.gml_id IS 'Identifikator, global eindeutig';
 
@@ -4001,18 +4481,23 @@
 -- G e m e i n d e
 -- ----------------------------------------------
+-- Objektart: AX_Gemeinde Kennung: 73005
 CREATE TABLE ax_gemeinde (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     schluesselgesamt    integer,
-     bezeichnung         varchar,
-     land                integer,
-     regierungsbezirk    integer,
-     kreis               integer,
-     gemeinde            integer,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     schluesselgesamt    character varying,
+     bezeichnung         character varying,
+     land                character varying,  
+     regierungsbezirk    character varying,
+     kreis               character varying,
+     gemeinde            character varying,
+     stelle              character varying,
+     -- Beziehungen:
+     istamtsbezirkvon   character varying[], --> ax_dienststelle 
      CONSTRAINT ax_gemeinde_pk PRIMARY KEY (ogc_fid)
 );
@@ -4020,29 +4505,33 @@
 SELECT AddGeometryColumn('ax_gemeinde','dummy',:alkis_epsg,'POINT',2);
 
--- Index fÃŒr alkis_beziehungen
-CREATE UNIQUE INDEX ax_gemeinde_gml ON ax_gemeinde USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_gemeinde        IS 'G e m e i n d e';
+CREATE UNIQUE INDEX ax_gemeinde_gml ON ax_gemeinde USING btree (gml_id, beginnt);
+CREATE INDEX ax_gemeinde_iabv       ON ax_gemeinde USING gin   (istamtsbezirkvon);
+
+COMMENT ON TABLE  ax_gemeinde        IS 'Kataloge: (NREO) "Gemeinde" enthÃ€lt alle zur Gemeindeebene zÃ€hlenden Verwaltungseinheiten innerhalb eines Bundeslandes.';
 COMMENT ON COLUMN ax_gemeinde.gml_id IS 'Identifikator, global eindeutig';
+
+COMMENT ON COLUMN ax_gemeinde.istamtsbezirkvon IS '-> Beziehung zu ax_dienststelle (0..*): ''Gemeinde'' ist Verwaltungsbezirk einer Dienststelle.';
 
 
 -- G e m e i n d e t e i l
 -- -----------------------------------------
+-- Objektart: AX_Gemeindeteil Kennung: 73006
 CREATE TABLE ax_gemeindeteil (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     schluesselgesamt    double precision,
-     bezeichnung         varchar,
+     ogc_fid                serial NOT NULL,
+     gml_id                 character varying NOT NULL,
+     identifier             character varying,
+     beginnt                character(20),
+     endet                  character(20),
+     advstandardmodell      character varying[],
+     sonstigesmodell        character varying[],
+     anlass                 character varying,
+     schluesselgesamt       character varying,
+     bezeichnung            character varying,
      administrativefunktion integer,
-     land                integer,
-     regierungsbezirk    integer,
-     kreis               integer,
-     gemeinde            integer,
-     gemeindeteil        integer,
+     land                   character varying,
+     regierungsbezirk       character varying,
+     kreis                  character varying,
+     gemeinde               character varying,
+     gemeindeteil           integer,
      CONSTRAINT ax_gemeindeteil_pk PRIMARY KEY (ogc_fid)
 );
@@ -4050,8 +4539,7 @@
 SELECT AddGeometryColumn('ax_gemeindeteil','dummy',:alkis_epsg,'POINT',2);
 
--- Index fÃŒr alkis_beziehungen
-CREATE UNIQUE INDEX ax_gemeindeteil_gml ON ax_gemeindeteil USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_gemeindeteil        IS 'G e m e i n d e - T e i l';
+CREATE UNIQUE INDEX ax_gemeindeteil_gml ON ax_gemeindeteil USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_gemeindeteil        IS 'Kataloge: (NREO) "Gemeindeteil" enthÃ€lt alle zur Gemeindeteilebene zÃ€hlenden Verwaltungseinheiten innerhalb eines Bundeslandes.';
 COMMENT ON COLUMN ax_gemeindeteil.gml_id IS 'Identifikator, global eindeutig';
 
@@ -4059,18 +4547,19 @@
 -- G e m a r k u n g
 -- ----------------------------------------------
--- NREO, nur Schluesseltabelle: Geometrie entbehrlich
+-- Objektart: AX_Gemarkung Kennung: 73007
 CREATE TABLE ax_gemarkung (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar[],
-     anlass              varchar,
-     schluesselgesamt    integer,
-     bezeichnung         varchar,
-     land                integer,
-     gemarkungsnummer    integer,
-     stelle              integer,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     schluesselgesamt    character varying,
+     bezeichnung         character varying,
+     land                character varying,
+     gemarkungsnummer    character varying,
+     stelle              character varying,
      CONSTRAINT ax_gemarkung_pk PRIMARY KEY (ogc_fid)
 );
@@ -4078,8 +4567,8 @@
 SELECT AddGeometryColumn('ax_gemarkung','dummy',:alkis_epsg,'POINT',2);
 
-CREATE UNIQUE INDEX ax_gemarkung_gml ON ax_gemarkung USING btree (gml_id,beginnt);         -- Index fÃŒr alkis_beziehungen
+CREATE UNIQUE INDEX ax_gemarkung_gml ON ax_gemarkung USING btree (gml_id, beginnt);         -- Index fÃŒr alkis_beziehungen
 CREATE INDEX ax_gemarkung_nr         ON ax_gemarkung USING btree (land, gemarkungsnummer); -- Such-Index, Verweis aus ax_Flurstueck
 
-COMMENT ON TABLE  ax_gemarkung        IS 'G e m a r k u n g';
+COMMENT ON TABLE  ax_gemarkung        IS 'Kataloge: (NREO) "Gemarkung" ist ein Katasterbezirk, der eine zusammenhÃ€ngende Gruppe von FlurstÃŒcken umfasst. Er kann von Gemarkungsteilen/Fluren unterteilt werden.';
 COMMENT ON COLUMN ax_gemarkung.gml_id IS 'Identifikator, global eindeutig';
 
@@ -4087,16 +4576,17 @@
 -- G e m a r k u n g s t e i l   /   F l u r
 -- ----------------------------------------------
--- Schluesseltabelle: Geometrie entbehrlich
+-- Objektart: AX_GemarkungsteilFlur Kennung: 73008
 CREATE TABLE ax_gemarkungsteilflur (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     schluesselgesamt    integer,
-     bezeichnung         varchar,
-     land                integer,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     schluesselgesamt    character varying,
+     bezeichnung         character varying,
+     land                character varying,
      gemarkung           integer,
      gemarkungsteilflur  integer,
@@ -4106,58 +4596,98 @@
 SELECT AddGeometryColumn('ax_gemarkungsteilflur','dummy',:alkis_epsg,'POINT',2);
 
--- Index fÃŒr alkis_beziehungen
-CREATE UNIQUE INDEX ax_gemarkungsteilflur_gml ON ax_gemarkungsteilflur USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_gemarkungsteilflur        IS 'G e m a r k u n g s t e i l   /   F l u r';
+CREATE UNIQUE INDEX ax_gemarkungsteilflur_gml ON ax_gemarkungsteilflur USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_gemarkungsteilflur        IS 'Kataloge: (NREO) "Gemarkungsteil/Flur" enthÃ€lt die Gemarkungsteile und Fluren. Gemarkungsteile kommen nur in Bayern vor und entsprechen den Fluren in anderen BundeslÃ€ndern.';
 COMMENT ON COLUMN ax_gemarkungsteilflur.gml_id IS 'Identifikator, global eindeutig';
 
 
+-- V e r w a l t u n g s g e m e i n s c h a f t
+-- --------------------------------------------- 
+-- Objektart: AX_Verwaltungsgemeinschaft Kennung: 73009
+CREATE TABLE ax_verwaltungsgemeinschaft (
+     ogc_fid             serial NOT NULL,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     schluesselgesamt    character varying,
+     bezeichnung         character varying,
+     bezeichnungart      integer,
+     land                character varying,
+     regierungsbezirk    character varying,
+     kreis               character varying,
+     verwaltungsgemeinschaft  integer,
+     CONSTRAINT ax_verwaltungsgemeinschaft_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_verwaltungsgemeinschaft','dummy',:alkis_epsg,'POINT',2);
+
+COMMENT ON TABLE  ax_verwaltungsgemeinschaft  IS 'Kataloge: (ZUSO) "Verwaltungsgemeinschaft" bezeichnet einen Zusammenschluss von Gemeinden zur gemeinsamen ErfÃŒllung von hoheitlichen Aufgaben.';
+COMMENT ON COLUMN ax_verwaltungsgemeinschaft.gml_id IS 'Identifikator, global eindeutig';
+
+COMMENT ON COLUMN ax_verwaltungsgemeinschaft.bezeichnungart IS 'BZA "Bezeichnung (Art)" enthÃ€lt den landesspezifischen Begriff fÃŒr eine Verwaltungsgemeinschaft.';
+-- Werte:
+-- 1000 Samtgemeinde     'Samtgemeinde' umfasst in Niedersachsen das Gebiet einer Samtgemeinde.
+-- 2000 Verbandsgemeinde
+-- 3000 Amt              'Amt' umfasst das Gebiet eines Amtes, das aus Gemeinden desselben Landkreises besteht.
+
+
 -- B u c h u n g s b l a t t - B e z i r k
 -- ----------------------------------------------
+-- Objektart: AX_Buchungsblattbezirk Kennung: 73010
 CREATE TABLE ax_buchungsblattbezirk (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     schluesselgesamt    integer,
-     bezeichnung         varchar,
-     land                integer,
-     bezirk              integer,
-     stelle              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     schluesselgesamt    character varying,
+     bezeichnung         character varying,
+     land                character varying,
+     bezirk              character varying,
+     stelle              character varying,
+     -- Beziehungen:
+     gehoertzu          character varying, --> ax_dienststelle
      CONSTRAINT ax_buchungsblattbezirk_pk PRIMARY KEY (ogc_fid)
 );
-
 SELECT AddGeometryColumn('ax_buchungsblattbezirk','dummy',:alkis_epsg,'POINT',2);
 
-CREATE UNIQUE INDEX ax_buchungsblattbezirk_gml ON ax_buchungsblattbezirk USING btree (gml_id,beginnt);
-
--- Such-Index auf Land + Bezirk
--- Der Verweis von ax_buchungsblatt hat keine alkis_beziehung.
-CREATE INDEX ax_buchungsblattbez_key ON ax_buchungsblattbezirk USING btree (land, bezirk);
-
-COMMENT ON TABLE  ax_buchungsblattbezirk        IS 'Buchungsblatt- B e z i r k';
+CREATE UNIQUE INDEX ax_buchungsblattbezirk_gml ON ax_buchungsblattbezirk USING btree (gml_id, beginnt);
+CREATE INDEX ax_buchungsblattbez_ghz  ON ax_buchungsblattbezirk  USING btree  (gehoertzu);
+
+CREATE INDEX ax_buchungsblattbez_key  ON ax_buchungsblattbezirk USING btree (land, bezirk);
+
+COMMENT ON TABLE  ax_buchungsblattbezirk        IS 'Kataloge: (NREO) "Buchungsblattbezirk" enthÃ€lt die VerschlÃŒsselung von Buchungsbezirken mit der entsprechenden Bezeichnung.';
 COMMENT ON COLUMN ax_buchungsblattbezirk.gml_id IS 'Identifikator, global eindeutig';
 
+COMMENT ON COLUMN ax_buchungsblattbezirk.gehoertzu IS '-> Beziehung zu ax_dienststelle (0..1): Buchungsblattbezirk" wird von einem Grundbuchamt verwaltet, das im Katalog der Dienststellen gefÃŒhrt wird. Die Relation wird nur gebildet, wenn die Dienststelle ein Grundbuchamt ist.';
+
 
 -- D i e n s t s t e l l e
 -- ----------------------------------------------
--- NREO, nur Schluesseltabelle: Geometrie entbehrlich
+-- Objektart: AX_Dienststelle Kennung: 73011
 CREATE TABLE ax_dienststelle (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     sonstigesmodell     varchar,
-     anlass              varchar,
-     schluesselgesamt    varchar,
-     bezeichnung         varchar,
-     land                integer,
-     stelle              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     schluesselgesamt    character varying,
+     bezeichnung         character varying,
+     land                character varying,
+     stelle              character varying,
      stellenart          integer,
+     kennung             character varying,
+     -- Beziehungen:
+     hat                 character varying, --> ax_anschrift
      CONSTRAINT ax_dienststelle_pk PRIMARY KEY (ogc_fid)
 );
@@ -4165,28 +4695,40 @@
 SELECT AddGeometryColumn('ax_dienststelle','dummy',:alkis_epsg,'POINT',2);
 
--- Index fÃŒr alkis_beziehungen
-CREATE UNIQUE INDEX ax_dienststelle_gml ON ax_dienststelle USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_dienststelle        IS 'D i e n s t s t e l l e';
+CREATE UNIQUE INDEX ax_dienststelle_gml ON ax_dienststelle USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_dienststelle        IS 'Kataloge: (NREO) "Dienststelle" enthÃ€lt die VerschlÃŒsselung von Dienststellen und ÃbVi/ÃbV, die Aufgaben der Ã¶ffentlichen Verwaltung wahrnehmen, mit der entsprechenden Bezeichnung.';
 COMMENT ON COLUMN ax_dienststelle.gml_id IS 'Identifikator, global eindeutig';
+
+COMMENT ON COLUMN ax_dienststelle.stellenart IS 'SAR "Stellenart" bezeichnet die Art der Stelle.';
+COMMENT ON COLUMN ax_dienststelle.kennung    IS 'KEN "Kennung" dient zur Unterscheidung und FortfÃŒhrung der verschiedenen Katalogarten (z.B. BehÃ¶rdenkatalog) innerhalb des Dienststellenkatalogs.';
+
+COMMENT ON COLUMN ax_dienststelle.hat    IS '-> Beziehung zu ax_anschrift (0..1): ''Dienststelle'' hat eine Anschrift.';
+
+
+-- V e r b a n d
+-- -------------
+-- Objektart: AX_Verband Kennung: 73012
+-- "Verband" umfasst die VerbÃ€nde, denen Gemeinden angehÃ¶ren (z.B. PlanungsverbÃ€nde) mit den entsprechenden Bezeichnungen.
 
 
 -- L a g e b e z e i c h n u n g s - K a t a l o g e i n t r a g
 -- --------------------------------------------------------------
+-- Objektart: AX_LagebezeichnungKatalogeintrag Kennung: 73013
 CREATE TABLE ax_lagebezeichnungkatalogeintrag (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     schluesselgesamt    varchar,
-     bezeichnung         varchar,
-     land                integer,
-     regierungsbezirk    integer,
-     kreis               integer,
-     gemeinde            integer,
-     lage                varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     schluesselgesamt    character varying,
+     bezeichnung         character varying,
+     land                character varying,
+     regierungsbezirk    character varying,
+     kreis               character varying,
+     gemeinde            character varying,
+     lage                character varying, -- StraÃenschlÃŒssel
      CONSTRAINT ax_lagebezeichnungkatalogeintrag_pk PRIMARY KEY (ogc_fid)
 );
@@ -4194,5 +4736,5 @@
 SELECT AddGeometryColumn('ax_lagebezeichnungkatalogeintrag','dummy',:alkis_epsg,'POINT',2);
 
-CREATE UNIQUE INDEX ax_lagebezeichnungkatalogeintrag_gml ON ax_lagebezeichnungkatalogeintrag USING btree (gml_id,beginnt);
+CREATE UNIQUE INDEX ax_lagebezeichnungkatalogeintrag_gml ON ax_lagebezeichnungkatalogeintrag USING btree (gml_id, beginnt);
 
 -- NRW: Nummerierung Strassenschluessel innerhalb einer Gemeinde
@@ -4204,5 +4746,5 @@
 CREATE INDEX ax_lagebezeichnungkatalogeintrag_bez  ON ax_lagebezeichnungkatalogeintrag USING btree (bezeichnung);
 
-COMMENT ON TABLE  ax_lagebezeichnungkatalogeintrag              IS 'StraÃentabelle';
+COMMENT ON TABLE  ax_lagebezeichnungkatalogeintrag              IS 'Kataloge: (NREO) "Lagebezeichnung Katalogeintrag" enthÃ€lt die eindeutige VerschlÃŒsselung von Lagebezeichnungen und StraÃen innerhalb einer Gemeinde mit der entsprechenden Bezeichnung. (StraÃentabelle)';
 COMMENT ON COLUMN ax_lagebezeichnungkatalogeintrag.gml_id       IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN ax_lagebezeichnungkatalogeintrag.lage         IS 'StraÃenschlÃŒssel';
@@ -4213,17 +4755,24 @@
 --   ===================================================================
 
+
+-- Objektart: AX_Landschaft Kennung: 74001
+-- "Landschaft" ist hinsichtlich des Ã€uÃeren Erscheinungsbildes (Bodenformen, Bewuchs, Besiedlung, Bewirtschaftung) ein in bestimmter Weise geprÃ€gter Teil der ErdoberflÃ€che.
+
+
 -- k l e i n r Ã€ u m i g e r   L a n d s c h a f t s t e i l
 -- -----------------------------------------------------------
+-- Objektart: AX_KleinraeumigerLandschaftsteil Kennung: 74002
 CREATE TABLE ax_kleinraeumigerlandschaftsteil (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     sonstigesmodell     varchar[],
-     anlass              varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
      landschaftstyp      integer,
-     name                varchar
+     name                character varying,
+     CONSTRAINT ax_kleinraeumigerlandschaftsteil_pk PRIMARY KEY (ogc_fid)
 );
 
@@ -4231,73 +4780,112 @@
 
 CREATE INDEX ax_kleinraeumigerlandschaftsteil_geom_idx   ON ax_kleinraeumigerlandschaftsteil USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_kleinraeumigerlandschaftsteil_gml ON ax_kleinraeumigerlandschaftsteil USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_kleinraeumigerlandschaftsteil        IS 'k l e i n r Ã€ u m i g e r   L a n d s c h a f t s t e i l';
+CREATE UNIQUE INDEX ax_kleinraeumigerlandschaftsteil_gml ON ax_kleinraeumigerlandschaftsteil USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_kleinraeumigerlandschaftsteil        IS 'Geographische Gebietseinheiten: (REO) "kleinrÃ€umiger Landschaftsteil" ist ein kleinerer Teil der ErdoberflÃ€che, der hinsichtlich des Ã€uÃeren Erscheinungsbildes (Bodenformen, Bewuchs, Besiedlung, Bewirtschaftung) in bestimmter Weise geprÃ€gt ist.';
 COMMENT ON COLUMN ax_kleinraeumigerlandschaftsteil.gml_id IS 'Identifikator, global eindeutig';
+
+COMMENT ON COLUMN ax_kleinraeumigerlandschaftsteil.landschaftstyp IS 'LTP "Landschaftstyp" beschreibt das Erscheinungsbild von "KleinrÃ€umiger Landschaftsteil".';
+COMMENT ON COLUMN ax_kleinraeumigerlandschaftsteil.name           IS 'NAM "Name" ist der Eigenname von "KleinrÃ€umiger Landschaftsteil".';
 
 
 -- W o h n p l a t z
 -- -----------------------------------------------------------
+-- Objektart: AX_Wohnplatz Kennung: 74005
 CREATE TABLE ax_wohnplatz (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     name                varchar,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     name                character varying,
+     zweitname           character varying,
      CONSTRAINT ax_wohnplatz_pk PRIMARY KEY (ogc_fid)
 );
-
 SELECT AddGeometryColumn('ax_wohnplatz','wkb_geometry',:alkis_epsg,'POINT',2);
 
 CREATE INDEX ax_wohnplatz_geom_idx   ON ax_wohnplatz USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_wohnplatz_gml ON ax_wohnplatz USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_wohnplatz        IS 'W o h n p l a t z';
+CREATE UNIQUE INDEX ax_wohnplatz_gml ON ax_wohnplatz USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_wohnplatz        IS 'Geographische Gebietseinheiten: (REO) "Wohnplatz" ist ein bewohntes Gebiet, das einen Eigennamen trÃ€gt.';
 COMMENT ON COLUMN ax_wohnplatz.gml_id IS 'Identifikator, global eindeutig';
+COMMENT ON COLUMN ax_wohnplatz.name   IS 'NAM "Name" ist der Eigenname, amtlicher Wohnplatzname von "Wohnplatz".';
+COMMENT ON COLUMN ax_wohnplatz.zweitname IS 'ZNM "Zweitname" ist ein volkstÃŒmlicher Name insbesondere bei Objekten auÃerhalb von Ortslagen.';
 
 
 --** Objektartengruppe: Administrative Gebietseinheiten
 --   ===================================================================
-
--- ax_baublock
+-- Kennung '75000'
+
+
+-- B a u b l o c k
+-- ----------------------------------------------
+-- Objektart: AX_Baublock Kennung: 75001
+CREATE TABLE ax_baublock (
+     ogc_fid             serial NOT NULL,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     baublockbezeichnung character varying,
+     art                 integer,
+     CONSTRAINT ax_baublock_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_baublock','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
+
+CREATE INDEX ax_baublock_geom_idx   ON ax_baublock USING gist (wkb_geometry);
+CREATE UNIQUE INDEX ax_baublock_gml ON ax_baublock USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_baublock        IS 'Administrative Gebietseinheiten: (REO) "Blaubock" war eine Unterhaltungsshow des Hessischen Rundfunks im Deutschen Fernsehen, von der zwischen 1957 und 1987 insgesamt 208 Folgen produziert wurden. Der Sendetitel war "Zum Blauen Bock".';
+
+COMMENT ON COLUMN ax_baublock.gml_id IS 'Identifikator, global eindeutig';
+COMMENT ON COLUMN ax_baublock.baublockbezeichnung IS 'BBZ "Baublockbezeichnung" ist die von der Gemeinde vergebene eindeutige Bezeichnung eines Teils des Gemeindegebietes.';
+COMMENT ON COLUMN ax_baublock.art    IS 'ART "Art" ist die Art der BaublockflÃ€che.';
+
 
 
 -- w i r t s c h a f t l i c h e   E i n h e i t
 -- ---------------------------------------------
--- neu 2013-04-15
+-- Objektart: AX_WirtschaftlicheEinheit Kennung: 75002
 CREATE TABLE ax_wirtschaftlicheeinheit (
-  ogc_fid           serial NOT NULL,
-  gml_id            character varying(16),
-  identifier        character varying(28),
-  beginnt           character varying(20),
-  advstandardmodell character varying(4),
-  sonstigesmodell   character varying[],
-  anlass            integer,
-  CONSTRAINT        ax_wirtschaftlicheeinheit_pk PRIMARY KEY (ogc_fid)
+     ogc_fid           serial NOT NULL,
+     gml_id            character varying(16),
+     identifier        character varying(28),
+     beginnt           character varying(20),
+     endet             character varying(20),
+     advstandardmodell character varying[],
+     sonstigesmodell   character varying[],
+     anlass            integer,
+     CONSTRAINT        ax_wirtschaftlicheeinheit_pk PRIMARY KEY (ogc_fid)
 );
 
 SELECT AddGeometryColumn('ax_wirtschaftlicheeinheit','dummy',:alkis_epsg,'POINT',2);
 
-COMMENT ON TABLE  ax_wirtschaftlicheeinheit  IS 'w i r t s c h a f t l i c h e   E i n h e i t';
+COMMENT ON TABLE  ax_wirtschaftlicheeinheit  IS 'Administrative Gebietseinheiten: (ZUSO) "Wirtschaftliche Einheit" ist eine in der Ãrtlichkeit vorhandene wirtschaftliche Einheit mehrerer FlurstÃŒcke, die nicht mit der rechtlichen Einheit (GrundstÃŒck im rechtlichen Sinn) identisch sein muss (Beispiel: Wirtschaftliche Einheit zweier FlurstÃŒcke/GrundstÃŒcke, wobei nur ein FlurstÃŒck ein ErbbaugrundstÃŒck ist).';
 
 
 -- K o m m u n a l e s   G e b i e t
 -- ----------------------------------------------
+-- Objektart: AX_KommunalesGebiet Kennung: 75003
 CREATE TABLE ax_kommunalesgebiet (
      ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar,
-     anlass              varchar,
-     schluesselgesamt    varchar,
-     land                integer,
-     regierungsbezirk    integer,
-     kreis               integer,
-     gemeinde            integer,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     schluesselgesamt    character varying,
+     land                character varying,
+     regierungsbezirk    character varying,
+     kreis               character varying,
+     gemeinde            character varying,
      gemeindeflaeche     double precision,
      CONSTRAINT ax_kommunalesgebiet_pk PRIMARY KEY (ogc_fid)
@@ -4307,75 +4895,11 @@
 
 CREATE INDEX ax_kommunalesgebiet_geom_idx   ON ax_kommunalesgebiet USING gist (wkb_geometry);
-CREATE UNIQUE INDEX ax_kommunalesgebiet_gml ON ax_kommunalesgebiet USING btree (gml_id,beginnt);
-
-COMMENT ON TABLE  ax_kommunalesgebiet        IS 'K o m m u n a l e s   G e b i e t';
+CREATE UNIQUE INDEX ax_kommunalesgebiet_gml ON ax_kommunalesgebiet USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_kommunalesgebiet        IS 'Administrative Gebietseinheiten: (REO) "Kommunales Gebiet" ist ein Teil der ErdoberflÃ€che, der von einer festgelegten Grenzlinie umschlossen ist und den politischen Einflussbereich einer Kommune reprÃ€sentiert (z.B. Stadt-, Landgemeinde, gemeindefreies Gebiet).';
 COMMENT ON COLUMN ax_kommunalesgebiet.gml_id IS 'Identifikator, global eindeutig';
 
 
---AX_Gebiet
--- ** Tabelle bisher noch nicht generiert
-
--- ENDE Objektartengruppe  Administrative Gebietseinheiten
-
-
--- V e r t r e t u n g
--- -------------------  Objektartengruppe: Personen- und Bestandsdaten
-CREATE TABLE ax_vertretung (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar(4),
-     anlass              varchar,
-     CONSTRAINT ax_vertretung_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_vertretung','dummy',:alkis_epsg,'POINT',2);
-
-COMMENT ON TABLE  ax_vertretung IS 'V e r t r e t u n g';
-
-
--- V e r w a l t u n g s g e m e i n s c h a f t
--- ---------------------------------------------  Objektartengruppe: Kataloge
-CREATE TABLE ax_verwaltungsgemeinschaft (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar(4),
-     anlass              varchar,
-     schluesselgesamt    integer,
-     bezeichnung         varchar,
-     bezeichnungart      integer,
-     land                integer,
-     regierungsbezirk    integer,
-     kreis               integer,
-     verwaltungsgemeinschaft  integer,
-     CONSTRAINT ax_verwaltungsgemeinschaft_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_verwaltungsgemeinschaft','dummy',:alkis_epsg,'POINT',2);
-
-COMMENT ON TABLE  ax_verwaltungsgemeinschaft  IS 'V e r w a l t u n g s g e m e i n s c h a f t';
-
-
--- V e r w a l t u n g
--- -------------------   Objektartengruppe: Personen- und Bestandsdaten
-CREATE TABLE ax_verwaltung (
-     ogc_fid             serial NOT NULL,
-     gml_id              character(16),
-     identifier          character(44),
-     beginnt             character(20),
-     endet               character(20),
-     advstandardmodell   varchar(4),
-     anlass              varchar,
-     CONSTRAINT ax_verwaltung_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_verwaltung','dummy',:alkis_epsg,'POINT',2);
-
-COMMENT ON TABLE  ax_verwaltung  IS 'V e r w a l t u n g';
+-- abstrakte Objektart: AX_Gebiet Kennung: 75010
 
 
@@ -4384,8 +4908,21 @@
 --*** ############################################################
 
+
 --** Objektartengruppe: Nutzerprofile
 --   ===================================================================
-
---AX_FOLGEVA
+-- Kennung '81000'
+
+-- Objektart: AX_Benutzer Kennung: 81001
+-- In der Objektart 'Benutzer' werden allgemeine Informationen ÃŒber den Benutzer verwaltet.
+
+-- Objektart: AX_Benutzergruppe Kennung: 81002
+
+-- Objektart: AX_BenutzergruppeMitZugriffskontrolle Kennung: 81003
+-- In der Objektart 'Benutzergruppe mit Zugriffskontrolle' werden Informationen ÃŒber die Benutzer der ALKIS-Bestandsdaten verwaltet, die den Umfang der Benutzung und FortfÃŒhrung aus GrÃŒnden der Datenkonsistenz und des Datenschutzes einschrÃ€nken.
+
+-- Objektart: AX_BenutzergruppeNBA Kennung: 81004
+-- In der Objektart 'Benutzergruppe (NBA)' werden relevante Informationen fÃŒr die DurchfÃŒhrung der NBA-Versorgung, z.B. die anzuwendenden Selektionskriterien, gespeichert. 
+--  Eine gesonderte PrÃŒfung der Zugriffsrechte erfolgt in diesem Fall nicht, deren BerÃŒcksichtigung ist von dem Administrator bei der Erzeugung und Pflege der NBA-Benutzergruppen sicherzustellen.
+
 
 --*** ############################################################
@@ -4395,4 +4932,61 @@
 --** Objektartengruppe: Migrationsobjekte
 --   ===================================================================
+-- Kennung '91000'
+
+
+-- G e b Ã€ u d e a u s g e s t a l t u n g
+-- -----------------------------------------
+-- Objektart: AX_Gebaeudeausgestaltung Kennung: 91001
+CREATE TABLE ax_gebaeudeausgestaltung (
+     ogc_fid             serial NOT NULL,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     darstellung         integer,
+     zeigtauf            character varying, --> ax_gebaeude
+     CONSTRAINT ax_gebaeudeausgestaltung_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_gebaeudeausgestaltung','wkb_geometry',:alkis_epsg,'GEOMETRY',2);  -- LINESTRING/MULTILINESTRING
+
+CREATE INDEX ax_gebaeudeausgestaltung_geom_idx   ON ax_gebaeudeausgestaltung USING gist (wkb_geometry);
+CREATE UNIQUE INDEX ax_gebaeudeausgestaltung_gml ON ax_gebaeudeausgestaltung USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_gebaeudeausgestaltung          IS 'Migrationsobjekte: (REO) "GebÃ€udeausgestaltung" dient zur Speicherung von GebÃ€udeausgestaltungslinien, wenn eine Objektbildung im Zuge der Migration nicht mÃ¶glich ist.';
+COMMENT ON COLUMN ax_gebaeudeausgestaltung.gml_id   IS 'Identifikator, global eindeutig';
+COMMENT ON COLUMN ax_gebaeudeausgestaltung.zeigtauf IS '-> Beziehung zu ax_gebaeude (1): ''GebÃ€udeausgestaltung'' zeigt auf die zugehÃ¶rige Objektart ''GebÃ€ude''.';
+
+
+-- T o p o g r a p h i s c h e   L i n i e
+-- ---------------------------------------
+-- Objektart: AX_TopographischeLinie Kennung: 91002
+CREATE TABLE ax_topographischelinie (
+     ogc_fid             serial NOT NULL,
+     gml_id              character varying NOT NULL,
+     identifier          character varying,
+     beginnt             character(20),
+     endet               character(20),
+     advstandardmodell   character varying[],
+     sonstigesmodell     character varying[],
+     anlass              character varying,
+     liniendarstellung   integer,
+     sonstigeeigenschaft character varying,
+     CONSTRAINT ax_topographischelinie_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_topographischelinie','wkb_geometry',:alkis_epsg,'LINESTRING',2);
+
+CREATE INDEX ax_topographischelinie_geom_idx   ON ax_topographischelinie USING gist  (wkb_geometry);
+CREATE UNIQUE INDEX ax_topographischelinie_gml ON ax_topographischelinie USING btree (gml_id, beginnt);
+
+COMMENT ON TABLE  ax_topographischelinie        IS 'Migrationsobjekte: (REO) "Topographische Linie" ist eine topographische Abgrenzungslinie ohne Objektbedeutung, die Ãbergangsweise im Rahmen der Migration aus bestehenden VerfahrenslÃ¶sungen benÃ¶tigt wird.';
+COMMENT ON COLUMN ax_topographischelinie.gml_id IS 'Identifikator, global eindeutig';
+
+COMMENT ON COLUMN ax_topographischelinie.liniendarstellung   IS 'LDS "Liniendarstellung" bezeichnet die Art der Liniendarstellung. Diese Information wird aus bestehenden VerfahrenslÃ¶sungen ÃŒbernommen Die Attributart ist nur im Rahmen der Migration zulÃ€ssig.';
+COMMENT ON COLUMN ax_topographischelinie.sonstigeeigenschaft IS 'SOE "Sonstige Eigenschaft" sind Informationen zur topographischen Linie';
 
 
@@ -4421,13 +5015,7 @@
 
 
--- wenn schon, dann auch alle Tabellen mit Kommentaren versehen:
---COMMENT ON TABLE geometry_columns IS 'Metatabelle der Geometrie-Tabellen, Tabellen ohne Geometrie bekommen Dummy-Eintrag fÃŒr PostNAS-Konverter (GDAL/OGR)';
-COMMENT ON TABLE spatial_ref_sys  IS 'Koordinatensysteme und ihre Projektionssparameter';
-
--- Schema aktualisieren (setzt auch die Indizes neu)
--- SELECT alkis_update_schema();
-
--- In allen Tabellen die Objekte LÃ¶schen, die ein Ende-Datum haben
--- SELECT alkis_delete_all_endet();
+-- Wenn schon, dann auch alle Tabellen mit Kommentaren versehen:
+-- COMMENT ON TABLE geometry_columns IS 'Metatabelle der Geometrie-Tabellen, Tabellen ohne Geometrie bekommen Dummy-Eintrag fÃŒr PostNAS-Konverter (GDAL/OGR)';
+   COMMENT ON TABLE spatial_ref_sys  IS 'PostGIS: Koordinatensysteme und ihre Projektionssparameter';
 
 --
Index: trunk/import/datenbank_anlegen.sh
===================================================================
--- trunk/import/datenbank_anlegen.sh	(revision 328)
+++ trunk/import/datenbank_anlegen.sh	(revision 330)
@@ -6,15 +6,17 @@
 ##
 ## Stand:
-##  2012-02-10 PostNAS 07, Umbenennung
-##  2013-01-15 Zwischenstopp um Meldungen lesen zu können bevor, sie aus dem Scrollbereich verschwinden
-##  2013-04-16 Vers.-Nr. "0.7" aus dem Dateinamen von Schema und Keytable entfernt, sichten_wms.sql
-##  2013-10-16 F.J. krz: Neues Sript "pp_praesentation_sichten.sql" für Reparatur Präsentationsobjekte Straßennamen
+##  2012-02-10 F.J. krz: PostNAS 07, Umbenennung
+##  2013-01-15 F.J. krz: Zwischenstopp um Meldungen lesen zu kÃ¶nnen bevor, sie aus dem Scrollbereich verschwinden
+##  2013-04-16 F.J. krz: Vers.-Nr. "0.7" aus dem Dateinamen von Schema und Keytable entfernt, sichten_wms.sql
+##  2013-10-16 F.J. krz: Neues Sript "pp_praesentation_sichten.sql" fÃŒr Reparatur PrÃ€sentationsobjekte StraÃennamen
 ##  2013-12-03 F.J. krz: Script "sichten.sql" einbeziehen. Darin View "doppelverbindung" fuer WMS FS-Kommunal.
-##  2014-01-31 F.J. krz: Unterschiede der Datenbank-Struktur für die Varianten MIT/OHNE Historie.
+##  2014-01-31 F.J. krz: Unterschiede der Datenbank-Struktur fÃŒr die Varianten MIT/OHNE Historie.
+##  2014-09-08 F.J. krz: PostNAS 08 - Umbenennung, Kommentare, "pp_praesentation_sichten.sql" entfernen
 
 POSTNAS_HOME=$(dirname $0)
 MANDANT_HOME=$PWD
 
-# Koordinatensystem fuer Geometriefelder:
+# Koniguration: Koordinatensystem fuer Geometriefelder.
+# Wird im Folgenden mit Parameter "-v" an psql ÃŒbergeben.
 EPSG=25832
 
@@ -22,5 +24,5 @@
 function get_db_config(){
 	# welches Datenbank-Template?
-	echo ""
+	echo " "
 	echo "Datenbank-Template fuer die neue ALKIS-Datenbank?"
 	echo " (einfach Enter fuer die Voreinstellung template_postgis)"
@@ -31,9 +33,9 @@
 	until [ -n "$DBNAME" ]
 	do
-		echo ""
+		echo " "
 		echo "Name der ALKIS-Datenbank?"
 		read DBNAME
 	done
-	echo ""
+	echo " "
 	echo "Datenbank-User?  (Dieser muss eine gleichnamige Service-Datenbank haben)"
 	read DBUSER
@@ -41,10 +43,10 @@
 	until [ "$JEIN" = "j" -o "$JEIN" = "n" ]
 	do
-		echo ""
+		echo " "
 		echo "Datenbank $DBNAME wird GELOESCHT und neu angelegt  - j oder n?"
 		read JEIN
 	done
 }
-#
+
 ## aller Laster  ANFANG
 get_db_config;
@@ -71,19 +73,24 @@
 echo "connection " $con
 
-echo "******************************"
-echo "**  Neue ALKIS-Datenbank    **"
-echo "******************************"
-echo " "
-echo "** Loeschen Datenbank " ${DBNAME}
+echo " 
+******************************
+**  Neue ALKIS-Datenbank    **
+******************************
+  
+** Loeschen Datenbank " ${DBNAME}
+
 ## Hier wird vorausgesetzt, dass der User eine Service-DB hat, die seinen Namen traegt
-echo  "DROP database ${DBNAME};" | psql -p 5432 -d ${DBUSER} -U ${DBUSER} 
-echo " "
-echo "** Anlegen (leere) PostGIS-Datenbank"
+psql -p 5432 -d ${DBUSER} -U ${DBUSER} -c "DROP database ${DBNAME};"
+
+echo " 
+** Anlegen (leere) PostGIS-Datenbank"
 createdb --port=5432 --username=${DBUSER} -E utf8  -T ${DBTEMPLATE} ${DBNAME}
-echo " "
-echo "** Anlegen der Datenbank-Struktur fuer PostNAS (alkis_PostNAS_0.7_schema.sql)"
+
+echo " 
+** Anlegen der Datenbank-Struktur fuer PostNAS 0.8 (alkis_PostNAS_schema.sql)"
 psql $con -v alkis_epsg=$EPSG -U ${DBUSER} -f alkis_PostNAS_schema.sql >$MANDANT_HOME/log/schema.log
 
-# Zwischenstopp. Die Ausgabe-Zeilen sind sonst nicht mehr lesbar.
+# Zwischenstopp zum Betrachten der Ausgabe.
+# Die Menge der Zeilen ist sonst nicht mehr lesbar.
 until [ "$CHECK" = "j" -o "$CHECK" = "n" ]
 do
@@ -98,52 +105,51 @@
 
 ## Kommentar zur Datenbank (allgemein)
-psql $con -U ${DBUSER} -c "COMMENT ON DATABASE ${DBNAME} IS 'ALKIS - Konverter PostNAS 0.7';"
+psql $con -U ${DBUSER} -c "COMMENT ON DATABASE ${DBNAME} IS 'ALKIS - Konverter PostNAS 0.8';"
 
 ## Kann man das Ziel des Symlinks abfragen? Wenn Kill, dann ...
 ##   if [ -e alkis-trigger.sql ]; then
-echo " "
-echo "** Besonderheiten der Datenbank OHNE Historie"
-## auskommentieren, wenn die Datenbank MIT Historie geführt wird
-## Import-ID: Tabelle und Spalte in "alkis_beziehungen" anlegen
-psql $con -U ${DBUSER} -f alkis_PostNAS_schema_ohneHist.sql >$MANDANT_HOME/log/schema.log
-## Spalte "identifier" aus allen Tabellen entfernen (die wird nur vom Trigger MIT Historie benoetigt)
-##psql $con -U ${DBUSER} -c "SELECT alkis_drop_all_identifier();"
-psql $con -U ${DBUSER} -c "COMMENT ON DATABASE ${DBNAME} IS 'ALKIS - Konverter PostNAS 0.7 - Ohne Historie';"
+
+	# echo " 
+	# ** Besonderheiten der Datenbank OHNE Historie"
+	## Zeilen auskommentieren, wenn die Datenbank MIT Historie gefÃŒhrt wird.
+	## Import-ID: Tabelle und Spalte in "alkis_beziehungen" anlegen
+
+	# psql $con -U ${DBUSER} -f alkis_PostNAS_schema_ohneHist.sql >$MANDANT_HOME/log/schema.log
+	# psql $con -U ${DBUSER} -c "COMMENT ON DATABASE ${DBNAME} IS 'ALKIS - Konverter PostNAS 0.8 - Ohne Historie';"
+
 ## fi
 
-echo " "
-echo "** Anlegen der Datenbank-Struktur - zusaetzliche Schluesseltabellen"
+echo " 
+** Anlegen der Datenbank-Struktur - zusaetzliche Schluesseltabellen"
 ## Nur die benoetigten Tabellen fuer die Buchauskunft
 psql $con -U ${DBUSER} -f alkis_PostNAS_keytables.sql >$MANDANT_HOME/log/keytables.log
 
-echo " "
-echo "** Anlegen Optimierung Nutzungsarten (nutzungsart_definition.sql)"
+echo " 
+** Anlegen Optimierung Nutzungsarten (nutzungsart_definition.sql)"
 psql $con -U ${DBUSER} -f nutzungsart_definition.sql
 
-echo " "
-echo "** Laden NUA-Metadaten (nutzungsart_metadaten.sql) Protokoll siehe log"
+echo " 
+** Laden NUA-Metadaten (nutzungsart_metadaten.sql) Protokoll siehe log"
 psql $con -U ${DBUSER} -f nutzungsart_metadaten.sql >$MANDANT_HOME/log/meta.log
 
-echo " "
-echo "** Anlegen Post Processing Tabellen (pp_definition.sql)"
-psql $con -U ${DBUSER} -f pp_definition.sql >$MANDANT_HOME/log/pp_definition.log
+echo " 
+** Anlegen Post Processing Tabellen (pp_definition.sql)"
+psql $con -v alkis_epsg=$EPSG  -U ${DBUSER} -f pp_definition.sql >$MANDANT_HOME/log/pp_definition.log
 
-echo " "
-echo "** Anlegen Post Processing Views (pp_praesentation_sichten.sql)"
-psql $con -U ${DBUSER} -f pp_praesentation_sichten.sql >$MANDANT_HOME/log/pp_praesentation_sichten.log
-
-echo " "
-echo "** Definition von Views fuer Kartendienste (sichten_wms.sql)"
+echo " 
+** Definition von Views fuer Kartendienste (sichten_wms.sql)"
 psql $con -U ${DBUSER} -f sichten_wms.sql >$MANDANT_HOME/log/sichten_wms.log
 
-echo " "
-echo "** Definition von Views (sichten.sql)"
+echo " 
+** Definition von Views (sichten.sql)"
 psql $con -U ${DBUSER} -f sichten.sql >$MANDANT_HOME/log/sichten.log
 
-echo "** Berechtigung (grant.sql) Protokoll siehe log"
+echo " 
+** Berechtigung (grant.sql) Protokoll siehe log"
 psql $con -U ${DBUSER} -f grant.sql >$MANDANT_HOME/log/log_grant.log
+
 echo " 
 *************************************
-**  Ende Neue Datenbank ${DBNAME} 
+**  Ende Neue Datenbank ${DBNAME} **
 *************************************
-"
+ "
Index: trunk/import/alkis_PostNAS_schema_ohneHist.sql
===================================================================
--- trunk/import/alkis_PostNAS_schema_ohneHist.sql	(revision 328)
+++ trunk/import/alkis_PostNAS_schema_ohneHist.sql	(revision 330)
@@ -4,5 +4,5 @@
 -- *****************************
 --
--- Datenbankstruktur PostNAS 0.7
+-- Datenbankstruktur PostNAS 0.8
 --
 
@@ -14,20 +14,20 @@
 --                Dies setzt voraus, dass als Trigger-Function die Version "kill" eingerichtet wurde.
 
+-- 2014-08-28 FJ: Version 0.8 - zunÃ€chst ÃŒbernommen, aber ...
+--                Mittelfristig ÃŒberlegen, ob "delete_feature_hist" ohne "identifier" auskommt.
+--                Der gleiche SchlÃŒssel steht auch in "gml_id". Dann Spalte "identifier" ganz aus dem Schema entfernen.
 
 -- Die Spalte identifier aus allen Tabellen entfernen.
 -- Dies erledigt eine Function aus "alkis-functions.sql".
--- Diese Spalte wird (ausschlieÃlich?) vom Trigger fÃŒr Historie verwendet.
+-- Diese Spalte wird (ausschlieÃlich) vom Trigger fÃŒr Historie verwendet.
+
 SELECT alkis_drop_all_identifier();
 
 
--- Diese Function kann nun nicht mehr ausgefÃŒhrt werden.
+-- Die Function "delete_feature_hist" kann nun nicht mehr ausgefÃŒhrt werden.
+
 DROP FUNCTION delete_feature_hist();
 
-
---  +++ In "alkis_beziehungen" wird die Spalte "beginnt" nicht mehr verwendet.
---  +++ Die wurde gefÃŒllt mit dem Trigger "update_fields" Procedure "update_fields_beziehungen()"
---  +++ Spalte lÃ¶schen?  In Hist noch verwendet?
-
 --
---          THE  (happy)  END
+--      THE  (happy)  END
 --
Index: trunk/import/sichten.sql
===================================================================
--- trunk/import/sichten.sql	(revision 328)
+++ trunk/import/sichten.sql	(revision 330)
@@ -3,4 +3,6 @@
 -- =====
 
+--  PostNAS 0.8
+
 --  -----------------------------------------
 --  Sichten fÃŒr Fehlersuche und Daten-Analyse
@@ -9,6 +11,4 @@
 --  Dieses SQL braucht nur bei Bedarf in einer PostNAS-DB verarbeitet werden.
 --  Es werden zusÃ€tzliche Views eingerichtet, die nur bei Fehlersuche und Analyse (vom Entwickler) benÃ¶tigt werden.
-
---  PostNAS 0.7
 
 --  2012-04-17 flstnr_ohne_position
@@ -30,4 +30,6 @@
 --  2014-01-31 Kommentar
 --  2014-02-06 nachmigration_aehnliche_anschriften
+--  2014-09-02 Die Tabelle "alkis_beziehungen" ÃŒberflÃŒssig machen.
+--             Relationen nun direkt ÃŒber neue Spalten in den Objekttabellen. 
 
 -- Bausteine fÃŒr andere Views:
@@ -47,25 +49,23 @@
 
 --           DROP VIEW public.doppelverbindung;
+
 CREATE OR REPLACE VIEW public.doppelverbindung
 AS
-  SELECT v1.beziehung_von AS fsgml,       -- gml_id auf FlurstÃŒck - Seite
-         v1.beziehung_zu  AS bsgml,       -- gml_id auf Buchungs  - Seite
-      --'direkt' AS fall,
-         0 AS ba_dien
-    FROM alkis_beziehungen v1
-   WHERE v1.beziehungsart = 'istGebucht'  -- FS --> Buchung
+  -- FS >istGebucht> Buchungstelle
+  SELECT f1.gml_id             AS fsgml,    -- gml_id FlurstÃŒck
+         b1.gml_id             AS bsgml,    -- gml_id Buchungs
+         0                     AS ba_dien
+    FROM ax_flurstueck f1
+    JOIN ax_buchungsstelle b1   ON f1.istgebucht = b1.gml_id
  UNION
-  -- Buchungstelle  >an>  Buchungstelle  >istBestandteilVon>  BLATT 
-  SELECT v2.beziehung_von AS fsgml,        -- gml_id auf FlurstÃŒck - Seite
-         an.beziehung_von AS bsgml,        -- gml_id auf Buchungs  - Seite (herrschendes GB)
-      --'Recht an' AS fall,
-         dien.buchungsart AS ba_dien       -- Ein Feld aus der Zwischen-Buchung zur Fall-Unterscheidung
-    FROM alkis_beziehungen v2
-    JOIN ax_buchungsstelle dien
-      ON  v2.beziehung_zu = dien.gml_id
-    JOIN alkis_beziehungen an
-      ON dien.gml_id = an.beziehung_zu
-   WHERE v2.beziehungsart = 'istGebucht'   -- FS --> Buchung
-     AND an.beziehungsart = 'an';
+  -- FS >istGebucht> Buchungstelle  <an<  Buchungstelle
+  SELECT f2.gml_id              AS fsgml,   -- gml_id FlurstÃŒck
+         b2.gml_id              AS bsgml,   -- gml_id Buchung - (herrschendes GB)
+         dien.buchungsart       AS ba_dien  -- Ein Feld aus der Zwischen-Buchung zur Fall-Unterscheidung
+    FROM ax_flurstueck f2
+    JOIN ax_buchungsstelle dien ON f2.istGebucht = dien.gml_id
+    JOIN ax_buchungsstelle b2   ON dien.gml_id = ANY (b2.an)
+    WHERE dien.endet IS NULL;  -- FÃŒr das zusÃ€tzliche Verbindungselement die Historie hier ausschlieÃen, 
+                               -- FÃŒr andere Tabellen muss dies in dem View erfolgen, der dies verwendet.
 
 COMMENT ON VIEW public.doppelverbindung 
@@ -80,39 +80,29 @@
 -- Dies kann als "MittelstÃŒck" in den anderen Views eingefÃŒgt werden.
 
---   FlurstÃŒck  >weistAuf> ax_lagebezeichnungmithausnummer  <JOIN> ax_lagebezeichnungkatalogeintrag
---   FlurstÃŒck  >zeigtAuf> ax_lagebezeichnungohnehausnummer <JOIN> ax_lagebezeichnungkatalogeintrag
-
 --           DROP VIEW public.flst_an_strasse;
+
 CREATE OR REPLACE VIEW public.flst_an_strasse
 AS
-  SELECT vm.beziehung_von AS fsgml,          -- Join auf "gml_id" aus "ax_flurstÃŒck"
+  -- FlurstÃŒck >weistAuf> ax_lagebezeichnungMIThausnummer <JOIN> ax_lagebezeichnungkatalogeintrag
+  SELECT fm.gml_id AS fsgml,
          sm.gml_id AS stgml,                 -- Filter: gml_id der StraÃe
-      -- sm.gemeinde, sm.lage,               -- Gemeinde- und StraÃenschluessel als Filter?
          'm' AS fall                         -- SÃ€tze unterschieden: Mit HsNr
-    FROM alkis_beziehungen vm                -- Verbindung Mit
+    FROM ax_flurstueck fm                    -- FlurstÃŒck Mit
     JOIN ax_lagebezeichnungmithausnummer lm  -- Lage MIT
-      ON lm.gml_id=vm.beziehung_zu
-     AND vm.beziehungsart= 'weistAuf' 
-    JOIN ax_lagebezeichnungkatalogeintrag sm -- Ausnahmsweise mal direkt und nicht ÃŒber die "alkis_beziehungen"
-      ON lm.land=sm.land 
-     AND lm.regierungsbezirk=sm.regierungsbezirk 
-     AND lm.kreis=sm.kreis 
-     AND lm.gemeinde=sm.gemeinde 
-     AND lm.lage=sm.lage 
+      ON lm.gml_id = ANY (fm.weistauf)  
+    JOIN ax_lagebezeichnungkatalogeintrag sm
+      ON lm.land=sm.land AND lm.regierungsbezirk=sm.regierungsbezirk AND lm.kreis=sm.kreis  AND lm.gemeinde=sm.gemeinde AND lm.lage=sm.lage 
+   WHERE lm.endet IS NULL                    -- Verbinder nicht Historisch
  UNION
-  SELECT vo.beziehung_von AS fsgml,          -- Join auf gml_id aus ax_flurstÃŒck
+  -- FlurstÃŒck >zeigtAuf> ax_lagebezeichnungOHNEhausnummer <JOIN> ax_lagebezeichnungkatalogeintrag
+  SELECT fo.gml_id AS fsgml,
          so.gml_id AS stgml,                 -- Filter: gml_id der StraÃe
-      -- so.gemeinde, so.lage                -- Gemeinde- und StraÃenschluessel als Filter?
          'o' AS fall                         -- SÃ€tze unterschieden: Ohne HsNr
-    FROM alkis_beziehungen vo                -- Verbindung OHNE
+    FROM ax_flurstueck fo                    -- FlurstÃŒck OHNE
     JOIN ax_lagebezeichnungohnehausnummer lo -- Lage OHNE
-      ON lo.gml_id=vo.beziehung_zu
-     AND vo.beziehungsart= 'zeigtAuf' 
+      ON lo.gml_id = ANY (fo.zeigtauf)  
     JOIN ax_lagebezeichnungkatalogeintrag so -- StraÃe OHNE
-      ON lo.land=so.land 
-     AND lo.regierungsbezirk=so.regierungsbezirk 
-     AND lo.kreis=so.kreis 
-     AND lo.gemeinde=so.gemeinde 
-     AND lo.lage=so.lage;
+      ON lo.land=so.land AND lo.regierungsbezirk=so.regierungsbezirk AND lo.kreis=so.kreis AND lo.gemeinde=so.gemeinde AND lo.lage=so.lage
+   WHERE lo.endet IS NULL;                   -- Verbinder nicht Historisch
 
 COMMENT ON VIEW public.flst_an_strasse 
@@ -143,6 +133,6 @@
 -- Anwendungs-Beispiel: Abrechnung von AnliegerbeitrÃ€gen.
 
--- 2014-01-21: "Rechtsgemeinschaft" in den Datensatz aller anderen Namen
 --           DROP VIEW exp_csv;
+
 CREATE OR REPLACE VIEW exp_csv
 AS
@@ -164,5 +154,5 @@
   -- Buchungsstelle (GrundstÃŒck)
     s.laufendenummer                     AS bu_lfd,      -- BVNR
-    --s.zaehler, s.nenner,                                -- Anteil des GB am FS, einzelne Felder
+  --s.zaehler, s.nenner,                                 -- Anteil des GB am FS, einzelne Felder
     '=' || s.zaehler || '/' || s.nenner  AS bu_ant,      -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an')
     s.buchungsart,                                       -- verschlÃŒsselt
@@ -195,52 +185,33 @@
   JOIN doppelverbindung d               -- beide FÃ€lle ÃŒber Union-View: direkt und ÃŒber Recht von Buchung an Buchung
     ON d.fsgml = f.gml_id 
-
   JOIN ax_gemarkung g                   -- entschlÃŒsseln
     ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 
-
   JOIN ax_buchungsstelle s              -- Buchungs-Stelle
     ON d.bsgml = s.gml_id 
   JOIN ax_buchungsstelle_buchungsart b  -- EnstschlÃŒsselung der Buchungsart
     ON s.buchungsart = b.wert 
-
-  JOIN alkis_beziehungen v3             -- Buchung --> Grundbuchblatt
-    ON s.gml_id = v3.beziehung_von AND v3.beziehungsart = 'istBestandteilVon'
-  JOIN ax_buchungsblatt  gb 
-    ON v3.beziehung_zu = gb.gml_id 
-
+  JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt
+    ON gb.gml_id = s.istbestandteilvon
   JOIN ax_buchungsblattbezirk z 
     ON gb.land=z.land AND gb.bezirk=z.bezirk 
-
-  JOIN alkis_beziehungen v4             -- Blatt  --> NamNum
-    ON v4.beziehung_zu = gb.gml_id AND v4.beziehungsart = 'istBestandteilVon'  
-  JOIN ax_namensnummer nn 
-    ON v4.beziehung_von = nn.gml_id
-
-  JOIN alkis_beziehungen v5             -- NamNum --> Person 
-   -- 2014-01-20: Mit LEFT ab hier werden auch NumNum-Zeilen mit "Beschreibung der Rechtsgemeinschaft" geliefert (ohne Person)
-    ON v5.beziehung_von = nn.gml_id AND v5.beziehungsart = 'benennt'
-  JOIN ax_person p
-    ON v5.beziehung_zu = p.gml_id
-
-  LEFT JOIN alkis_beziehungen v6        -- Person --> Anschrift
-    ON v6.beziehung_von = p.gml_id AND v6.beziehungsart = 'hat' 
+  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum
+    ON gb.gml_id = nn.istbestandteilvon
+  JOIN ax_person p                      -- NamNum >benennt> Person 
+    ON p.gml_id = nn.benennt
   LEFT JOIN ax_anschrift a 
-    ON v6.beziehung_zu = a.gml_id
-
-  -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery:
-
+    ON a.gml_id = ANY (p.hat)
+
+  -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery in Spalten packen:
   -- Noch mal "GB -> NamNum", aber dieses Mal fÃŒr "Rechtsgemeinschaft".
   -- Kommt max. 1 mal je GB vor und hat keine Relation auf Person.
   LEFT JOIN
-   ( SELECT v7.beziehung_zu,
-            rg.artderrechtsgemeinschaft, 
-            rg.beschriebderrechtsgemeinschaft 
-       FROM ax_namensnummer rg 
-       JOIN alkis_beziehungen v7              -- Blatt  --> NamNum (Rechtsgemeinschaft) 
-         ON v7.beziehung_von = rg.gml_id
-      WHERE v7.beziehungsart = 'istBestandteilVon'
-        AND NOT rg.artderrechtsgemeinschaft IS NULL
-   ) AS rg                         -- Rechtsgemeinschaft
-   ON rg.beziehung_zu = gb.gml_id  -- zum GB
+   ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft 
+       FROM ax_namensnummer r 
+       JOIN ax_buchungsblatt gr
+         ON r.istbestandteilvon = gr.gml_id  -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft) 
+      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft
+   ON rg.gml_id = gb.gml_id  -- zum GB
+
+  WHERE f.endet IS NULL AND s.endet IS NULL and gb.endet IS NULL and nn.endet IS NULL AND p.endet IS NULL
 
   ORDER BY f.flurstueckskennzeichen, 
@@ -250,7 +221,4 @@
 COMMENT ON VIEW exp_csv 
  IS 'View fÃŒr einen CSV-Export aus der Buchauskunft mit alkisexport.php. Generelle Struktur. FÃŒr eine bestimmte gml_id noch den Filter setzen.';
-
-  GRANT SELECT ON TABLE exp_csv TO mb27;       -- User fÃŒr Auskunfts-Programme
---GRANT SELECT ON TABLE exp_csv TO alkisbuch;  -- User fÃŒr Auskunfts-Programme RLP-Demo
 
 
@@ -259,9 +227,12 @@
 -- Der Filter "WHERE stgml= " auf die "gml_id" von "ax_lagebezeichnungkatalogeintrag" sollte gesetzt werden
 -- um alle FlurstÃŒcke zu bekommen, die an einer StraÃe liegen.
+
 -- DROP           VIEW exp_csv_str;
+
 CREATE OR REPLACE VIEW exp_csv_str
 AS
  SELECT
-    l.stgml,                                             -- Filter: StraÃen-GML-ID
+    l.stgml,                                             -- Filter: gml_id aus "ax_lagebezeichnungkatalogeintrag"
+                                                         -- UNTERSCHIED zu exp_csv)
 
   -- FlurstÃŒck
@@ -281,5 +252,5 @@
   -- Buchungsstelle (GrundstÃŒck)
     s.laufendenummer                     AS bu_lfd,      -- BVNR
-    --s.zaehler, s.nenner,                                -- Anteil des GB am FS, einzelne Felder
+  --s.zaehler, s.nenner,                                 -- Anteil des GB am FS, einzelne Felder
     '=' || s.zaehler || '/' || s.nenner  AS bu_ant,      -- als Excel-Formel (nur bei Wohnungsgrundbuch JOIN ÃŒber 'Recht an')
     s.buchungsart,                                       -- verschlÃŒsselt
@@ -310,58 +281,37 @@
 
   FROM ax_flurstueck    f               -- FlurstÃŒck
-
   JOIN flst_an_strasse  l               -- Lage (hier zusÃ€tzlicher JOIN gegenÃŒber Version "exp_csv") 
 	ON l.fsgml = f.gml_id 
-
   JOIN doppelverbindung d               -- beide FÃ€lle ÃŒber Union-View: direkt und ÃŒber Recht von Buchung an Buchung
     ON d.fsgml = f.gml_id 
-
   JOIN ax_gemarkung g                   -- entschlÃŒsseln
     ON f.land=g.land AND f.gemarkungsnummer=g.gemarkungsnummer 
-
   JOIN ax_buchungsstelle s              -- Buchungs-Stelle
     ON d.bsgml = s.gml_id 
   JOIN ax_buchungsstelle_buchungsart b  -- EnstschlÃŒsselung der Buchungsart
     ON s.buchungsart = b.wert 
-
-  JOIN alkis_beziehungen v3             -- Buchung --> Grundbuchblatt
-    ON s.gml_id = v3.beziehung_von AND v3.beziehungsart = 'istBestandteilVon'
-  JOIN ax_buchungsblatt  gb 
-    ON v3.beziehung_zu = gb.gml_id 
-
+  JOIN ax_buchungsblatt  gb             -- Buchung >istBestandteilVon> Grundbuchblatt
+    ON gb.gml_id = s.istbestandteilvon
   JOIN ax_buchungsblattbezirk z 
     ON gb.land=z.land AND gb.bezirk=z.bezirk 
-
-  JOIN alkis_beziehungen v4             -- Blatt  --> NamNum
-    ON v4.beziehung_zu = gb.gml_id AND v4.beziehungsart = 'istBestandteilVon'  
-  JOIN ax_namensnummer nn 
-    ON v4.beziehung_von = nn.gml_id
-
-  JOIN alkis_beziehungen v5             -- NamNum --> Person 
-   -- 2014-01-20: Mit LEFT ab hier werden auch NumNum-Zeilen mit "Beschreibung der Rechtsgemeinschaft" geliefert (ohne Person)
-    ON v5.beziehung_von = nn.gml_id AND v5.beziehungsart = 'benennt'
-  JOIN ax_person p
-    ON v5.beziehung_zu = p.gml_id
-
-  LEFT JOIN alkis_beziehungen v6        -- Person --> Anschrift
-    ON v6.beziehung_von = p.gml_id AND v6.beziehungsart = 'hat' 
+  JOIN ax_namensnummer nn               -- Blatt <istBestandteilVon< NamNum
+    ON gb.gml_id = nn.istbestandteilvon
+  JOIN ax_person p                      -- NamNum >benennt> Person 
+    ON p.gml_id = nn.benennt
   LEFT JOIN ax_anschrift a 
-    ON v6.beziehung_zu = a.gml_id
-
-  -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery:
-
+    ON a.gml_id = ANY (p.hat)
+
+  -- 2mal "LEFT JOIN" verdoppelt die Zeile in der Ausgabe. Darum als Subquery in Spalten packen:
   -- Noch mal "GB -> NamNum", aber dieses Mal fÃŒr "Rechtsgemeinschaft".
   -- Kommt max. 1 mal je GB vor und hat keine Relation auf Person.
   LEFT JOIN
-   ( SELECT v7.beziehung_zu,
-            rg.artderrechtsgemeinschaft, 
-            rg.beschriebderrechtsgemeinschaft 
-       FROM ax_namensnummer rg 
-       JOIN alkis_beziehungen v7              -- Blatt  --> NamNum (Rechtsgemeinschaft) 
-         ON v7.beziehung_von = rg.gml_id
-      WHERE v7.beziehungsart = 'istBestandteilVon'
-        AND NOT rg.artderrechtsgemeinschaft IS NULL
-   ) AS rg                         -- Rechtsgemeinschaft
-   ON rg.beziehung_zu = gb.gml_id  -- zum GB
+   ( SELECT gr.gml_id, r.artderrechtsgemeinschaft, r.beschriebderrechtsgemeinschaft 
+       FROM ax_namensnummer r 
+       JOIN ax_buchungsblatt gr
+         ON r.istbestandteilvon = gr.gml_id  -- Blatt <istBestandteilVon< NamNum (Rechtsgemeinschaft) 
+      WHERE NOT r.artderrechtsgemeinschaft IS NULL ) AS rg -- Rechtsgemeinschaft
+   ON rg.gml_id = gb.gml_id  -- zum GB
+
+  WHERE f.endet IS NULL AND s.endet IS NULL and gb.endet IS NULL and nn.endet IS NULL AND p.endet IS NULL
 
   ORDER BY f.flurstueckskennzeichen, 
@@ -372,31 +322,31 @@
  IS 'View fÃŒr einen CSV-Export aus der Buchauskunft mit alkisexport.php. Liefert nur FlurstÃŒcke, die eine Lagebezeichnung MIT/OHNE Hausnummer haben. Dazu noch den Filter auf GML-ID der StraÃentabelle setzen.';
 
-  GRANT SELECT ON TABLE exp_csv_str TO mb27;       -- User fÃŒr Auskunfts-Programme
---GRANT SELECT ON TABLE exp_csv_str TO alkisbuch;  -- User fÃŒr Auskunfts-Programme RLP-Demo
-
-
--- Test-Ausgabe:
---   SELECT * FROM exp_csv_str WHERE stgml='DENW18AL000004Fl' LIMIT 40;
+-- Test: SELECT * FROM exp_csv_str WHERE stgml = 'DENW15AL100000Q8'; -- VeilchenstraÃe in LÃ¶hne
 
 
 -- Analyse: Kann es mehr als 1 "Rechtsgemeinschaft" zu einem GB-Blatt geben? 
 -- (Diese Frage stellte sich beim Design des View "exp_csv".)
--- Schritt 1: alle vorhandenen
+
+-- In umgekehrter Reihenfolge lÃ¶schen (AbhÃ€ngigkeiten).
+DROP VIEW IF EXISTS rechtsgemeinschaften_mehrfachzeilen;
+DROP VIEW IF EXISTS rechtsgemeinschaften_zaehlen;
+DROP VIEW IF EXISTS rechtsgemeinschaften_zum_grundbuch;
+
+-- Schritt 1: alle vorhandenen Rechtsgemeinschaften
+
 CREATE OR REPLACE VIEW rechtsgemeinschaften_zum_grundbuch
 AS
  SELECT
-     gb.gml_id,
+     gb.gml_id AS gb_gml,
      gb.bezirk,
      gb.buchungsblattnummermitbuchstabenerweiterung AS gb_blatt,
-     nn.artderrechtsgemeinschaft,
+     nn.gml_id AS nn_gml, nn.beginnt, nn.laufendenummernachdin1421, 
+     nn.artderrechtsgemeinschaft AS adr,
      nn.beschriebderrechtsgemeinschaft
-  FROM ax_buchungsblatt  gb 
-  JOIN alkis_beziehungen v
-    ON v.beziehung_zu = gb.gml_id AND v.beziehungsart = 'istBestandteilVon'  
-  JOIN ax_namensnummer nn 
-    ON v.beziehung_von = nn.gml_id
+  FROM ax_buchungsblatt gb 
+  JOIN ax_namensnummer  nn  ON gb.gml_id = nn.istbestandteilvon
   WHERE NOT nn.artderrechtsgemeinschaft IS NULL
-  ORDER BY gb.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung,
-           nn.laufendenummernachdin1421;
+    AND gb.endet IS NULL AND nn.endet IS NULL -- Historie weglassen
+  ORDER BY gb.bezirk, gb.buchungsblattnummermitbuchstabenerweiterung, nn.laufendenummernachdin1421;
 
 COMMENT ON VIEW rechtsgemeinschaften_zum_grundbuch 
@@ -404,15 +354,16 @@
 
 -- Schritt 2: Wo gibt es mehrere zu einem GB-Blatt
+
 CREATE OR REPLACE VIEW rechtsgemeinschaften_zaehlen
 AS
- SELECT gml_id, bezirk, gb_blatt, count(artderrechtsgemeinschaft) AS anzahl
+ SELECT gb_gml, bezirk, gb_blatt, count(adr) AS anzahl
    FROM rechtsgemeinschaften_zum_grundbuch
-   GROUP BY gml_id, bezirk, gb_blatt
-   HAVING count(artderrechtsgemeinschaft) > 1
+   GROUP BY gb_gml, bezirk, gb_blatt
+   HAVING count(adr) > 1
    ORDER BY bezirk, gb_blatt;
 
 COMMENT ON VIEW rechtsgemeinschaften_zaehlen 
- IS 'Rechtsgemeinschaften zum Grundbuchblatt zaehlen. Anzeigen, wenn es mehrere gibt.';
--- Ja, kann es geben
+ IS 'Rechtsgemeinschaften zum Grundbuchblatt zÃ€hlen. Nur Anzeigen, wenn es mehrere gibt.';
+-- Ergebnis: Ja, kann es geben
 
 -- Schritt 3: alle vorhandenen Zeilen anzeigen zu den GB-BlÃ€ttern, bei denen es mehrere gibt.
@@ -421,13 +372,13 @@
  SELECT * 
    FROM rechtsgemeinschaften_zum_grundbuch
-  WHERE gml_id IN (SELECT gml_id FROM rechtsgemeinschaften_zaehlen);
+  WHERE gb_gml IN (SELECT gb_gml FROM rechtsgemeinschaften_zaehlen);
 
 COMMENT ON VIEW rechtsgemeinschaften_mehrfachzeilen 
  IS 'GrundbuchblÃ€tter mit mehr als einer Zeile Rechtsgemeinschaft.';
+
 -- Fazit:
 -- Man findet einige wenige identische oder Ã€hnlich aussehende Zeilen zu einem Grundbuch.
 -- Das sieht also eher nach einem PostNAS-FortfÃŒhrungsproblem aus, als nach unabhÃ€ngigen Zeilen.
 -- Wurde hier eine Relation nicht sauber gelÃ¶scht?
-
 
 -- Welche Karten-Typen ?
@@ -437,4 +388,5 @@
    FROM ap_pto p 
    WHERE p.art = 'HNR';
+
 COMMENT ON VIEW kartentypen_der_texte_fuer_hnr 
   IS 'Datenanalyse: Kartentypen in Tabelle ap_pto fÃŒr Hausnummern.';
@@ -460,4 +412,5 @@
      AND p.endet IS NULL
      AND p.art IN ('AOG_AUG','PNR');
+
 COMMENT ON VIEW ap_pto_muell 
  IS 'Datenanalyse: Beschriftungen aus "ap_pto", die NICHT dargestellt werden sollen.';
@@ -475,17 +428,31 @@
 -- fÃŒr die FlurstÃŒcke, die ohne eine manuelle Position kommen.
 
--- Diese FÃ€lle identifizieren
-CREATE OR REPLACE VIEW flstnr_ohne_position
+-- Diese FÃ€lle identifizieren und unterscheiden:
+
+CREATE OR REPLACE VIEW flstnr_mit_manueller_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
-    AND f.endet IS NULL
---ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler
-  ;
-COMMENT ON VIEW flstnr_ohne_position IS 'Sicht fÃŒr Datenanalyse: FlurstÃŒcke ohne manuell gesetzte Position fÃŒr die PrÃ€sentation der FS-Nr';
+   FROM ax_flurstueck f 
+   JOIN ap_pto p ON f.gml_id = ANY( p.dientzurdarstellungvon) 
+  WHERE f.endet IS NULL;
+-- TIPP: mit zusÃ€tzlichem LIMIT auftrufen!
+
+COMMENT ON VIEW flstnr_mit_manueller_position 
+  IS 'Sicht fÃŒr Datenanalyse: FlurstÃŒcke MIT manuell gesetzter Position fÃŒr die PrÃ€sentation der FS-Nr';
+
+CREATE OR REPLACE VIEW flstnr_ohne_manuelle_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 ap_pto p ON f.gml_id = ANY( p.dientzurdarstellungvon) 
+  WHERE p.gml_id IS NULL
+    AND f.endet IS NULL;
+-- TIPP: mit zusÃ€tzlichem LIMIT auftrufen!
+
+COMMENT ON VIEW flstnr_ohne_manuelle_position 
+  IS 'Sicht fÃŒr Datenanalyse: FlurstÃŒcke OHNE manuell gesetzte Position fÃŒr die PrÃ€sentation der FS-Nr';
+
 
 -- Umbruch im Label? z.B. "Schwimm-/nbecken"
@@ -495,6 +462,6 @@
  SELECT ogc_fid, schriftinhalt, art
    FROM ap_pto 
-  WHERE not schriftinhalt is null
-    AND schriftinhalt like '%/n%';
+  WHERE NOT schriftinhalt IS NULL AND schriftinhalt LIKE '%/n%';
+
 COMMENT ON VIEW texte_mit_umbruch 
  IS 'Sicht fÃŒr Datenanalyse: Vorkommen eines Umbruchs im Label-Text.';
@@ -508,4 +475,5 @@
    FROM ax_flurstueck f
    WHERE f.endet IS NULL;
+
 COMMENT ON VIEW flurstuecks_minmax 
  IS 'Sicht fÃŒr Datenanalyse: Maximale Ausdehnung von ax_flurstueck fuer EXTENT-Angabe im Mapfile.';
@@ -517,5 +485,5 @@
          r.wkb_geometry, 
          r.gml_id, 
-         r.artderfestlegung as adfkey, -- Art der Festlegung - Key 
+         r.artderfestlegung AS adfkey, -- Art der Festlegung - Key 
          r."name",                     -- Eigenname des Gebietes
          r.stelle,                     -- Stelle Key
@@ -528,7 +496,7 @@
       ON r.artderfestlegung = a.wert
     LEFT JOIN ax_dienststelle d
-      ON r.land   = d.land 
-     AND r.stelle = d.stelle 
+      ON r.land   = d.land  AND r.stelle = d.stelle 
   WHERE r.endet IS NULL AND d.endet IS NULL ;
+
 COMMENT ON VIEW baurecht 
  IS 'Datenanalyse: EnstschlÃŒsselte Felder zu einer FlÃ€che des Baurechts.';
@@ -542,6 +510,7 @@
   WHERE           endet IS NULL
   ORDER BY        land, regierungsbezirk, kreis, gemeinde, gemarkungsnummer;
+
 COMMENT ON VIEW gemarkung_in_gemeinde 
- IS 'Welche Gemarkung liegt in welcher Gemeinde? Durch Verweise aus FlurstÃŒck.';
+ IS 'Welche Gemarkung liegt in welcher Gemeinde? Durch Verweise aus FlurstÃŒcken ermitteln.';
 
 
@@ -554,4 +523,5 @@
  WHERE    endet IS NULL
  GROUP BY st_geometrytype(wkb_geometry);
+
 COMMENT ON VIEW arten_von_flurstuecksgeometrie IS 'Datenanalyse: vorkommende Geometry-Typen in Tabelle ax_flurstueck.';
 
@@ -559,6 +529,6 @@
 -- A d r e s s e n 
 
--- Verschluesselte Lagebezeichnung (Strasse und Hausnummer) fuer eine Gemeinde
--- Schluessel der Gemeinde nach Bedarf anpassen!
+-- Verschluesselte Lagebezeichnung (Strasse und Hausnummer) fÃŒr eine Gemeinde
+-- SchlÃŒssel der Gemeinde im Filter (WHERE) nach Bedarf anpassen!
 CREATE OR REPLACE VIEW adressen_hausnummern
 AS
@@ -566,22 +536,16 @@
         s.bezeichnung AS strassenname, 
         g.bezeichnung AS gemeindename, 
-        l.land, 
-        l.regierungsbezirk, 
-        l.kreis, 
-        l.gemeinde, 
-        l.lage        AS strassenschluessel, 
-        l.hausnummer 
-    FROM   ax_lagebezeichnungmithausnummer l  
-    JOIN   ax_gemeinde g 
-      ON l.kreis=g.kreis 
-     AND l.gemeinde=g.gemeinde 
-    JOIN   ax_lagebezeichnungkatalogeintrag s 
-      ON l.kreis=s.kreis 
-     AND l.gemeinde=s.gemeinde 
-     AND l.lage = s.lage
-    WHERE l.gemeinde = 40;  -- "40" = Stadt Lage
+        l.land, l.regierungsbezirk, l.kreis, l.gemeinde, 
+        l.lage        AS strassenschluessel, l.hausnummer 
+    FROM ax_lagebezeichnungmithausnummer l  
+    JOIN ax_gemeinde g 
+      ON l.kreis=g.kreis AND l.gemeinde=g.gemeinde 
+    JOIN ax_lagebezeichnungkatalogeintrag s 
+      ON l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage = s.lage
+    WHERE l.gemeinde = '40';  -- '40' = Stadt Lage
+
 COMMENT ON VIEW adressen_hausnummern IS 'Datenanalyse: VerschlÃŒsselte Lagebezeichnung (StraÃe und Hausnummer) fÃŒr eine Gemeinde. SchlÃŒssel der Gemeinde nach Bedarf anpassen.';
 
--- Zuordnung dieser Adressen zu Flurstuecken
+-- Zuordnung Adressen zu Flurstuecken
 -- Schluessel der Gemeinde nach Bedarf anpassen!
 CREATE OR REPLACE VIEW adressen_zum_flurstueck
@@ -597,18 +561,10 @@
            l.hausnummer 
       FROM   ax_flurstueck f 
-      JOIN   alkis_beziehungen v 
-        ON f.gml_id=v.beziehung_von
-      JOIN   ax_lagebezeichnungmithausnummer l  
-        ON l.gml_id=v.beziehung_zu
-      JOIN   ax_gemeinde g 
-        ON l.kreis=g.kreis 
-       AND l.gemeinde=g.gemeinde 
-      JOIN   ax_lagebezeichnungkatalogeintrag s 
-        ON l.kreis=s.kreis 
-       AND l.gemeinde=s.gemeinde 
-       AND l.lage = s.lage
-     WHERE v.beziehungsart='weistAuf'
-       AND l.gemeinde = 40  -- "40" = Stadt Lage
+      JOIN   ax_lagebezeichnungmithausnummer l   ON  l.gml_id = ANY (f.weistauf)
+      JOIN   ax_gemeinde g   ON l.kreis=g.kreis  AND l.gemeinde=g.gemeinde 
+      JOIN   ax_lagebezeichnungkatalogeintrag s  ON  l.kreis=s.kreis AND l.gemeinde=s.gemeinde AND l.lage = s.lage
+ --  WHERE l.gemeinde = '40'  -- ggf. Anpassen
      ORDER BY f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner;
+
 COMMENT ON VIEW adressen_zum_flurstueck IS 'Datenanalyse: Zuordnung von Adressen zu Flurstuecken. SchlÃŒssel der Gemeinde nach Bedarf anpassen.';
 
@@ -620,40 +576,7 @@
     FROM ap_pto 
    WHERE not schriftinhalt is null 
-  ORDER BY art;
+   ORDER BY art;
+
 COMMENT ON VIEW beschriftung_was_kommt_vor IS 'Analyse der vorkommenden Kombinationen in ap_pto (Beschriftung)';
-
--- Ergebnis:
--- 2013: PostNAS 0.7  (aus 150,260,340)
--- ------------------
---	"AOG_AUG"				"zentrisch";"Basis"  - Schriftinhalkt immer nur "I" ?
---	"BWF"					"zentrisch";"Basis"/"zentrisch";"Mitte"
---	"BWF_ZUS"				"zentrisch";"Basis"
---	"FKT"					"zentrisch";"Basis"/"linksbÃŒndig";"Basis"/"zentrisch";"Mitte"
---	"FKT_TEXT"				"zentrisch";"Mitte"
---	"FreierText"			"zentrisch";"Basis"/"zentrisch";"Mitte"/"linksbÃŒndig";"Basis"
---	"FreierTextHHO"			"zentrisch";"Mitte"
---	"Friedhof"				"zentrisch";"Basis"
---	"Gewanne"				"zentrisch";"Basis"/"zentrisch";"Mitte"
---	"GFK"					"zentrisch";"Basis"/"zentrisch";"Mitte"
---	"HNR"					"zentrisch";"Basis"/"linksbÃŒndig";"Basis"/"zentrisch";"Mitte"  --> Hausnummer, group gebaeude
---	"HHO"					"zentrisch";"Mitte"  -- HHO = objekthoehe zu ax_gebaeude?
---	"NAM"					"zentrisch";"Basis"/"zentrisch";"Mitte"/"linksbÃŒndig";"Basis"
---	"SPO"					"zentrisch";"Basis"/
---	"Vorratsbehaelter"		"zentrisch";"Basis"
---	"WeitereHoehe"			"zentrisch";"Mitte"
---	"ZAE_NEN"				"zentrisch";"Basis"
---	"ZNM"					"zentrisch";"Basis"/"linksbÃŒndig";"Basis"
-
---* Layer "ap_pto_stra"
---                          hor ; ver / hor ; ver 
---	"BezKlassifizierungStrasse" "zent.";"Basis"	/ "linksbÃŒndig";"Basis"
---	"Platz"					"zentrisch";"Basis" / "zentrisch";"Mitte"
---	"Strasse"				"zentrisch";"Basis" / "zentrisch";"Mitte" / "linksbÃŒndig";"Basis"
---	"Weg"					"zentrisch";"Basis" / "zentrisch";"Mitte" / "linksbÃŒndig";"Basis"
-
---* geplanter layer "ap_pto_wasser"
---	"StehendesGewaesser"	"zentrisch";"Basis"
---	"Fliessgewaesser"		"zentrisch";"Basis"/"linksbÃŒndig";"Basis"
-
 
 -- FlurstÃŒcke eines EigentÃŒmers
@@ -662,11 +585,11 @@
 -- Dieser View liefert nur die (einfache) Buchungsart "GrundstÃŒck"
 -- Solche FÃ€lle wie "Erbbaurecht an GrundstÃŒck" oder "Wohnungs-/Teileigentum an aufgeteiltes GrundstÃŒck"
--- oder "Miteigentum an aufteteiltes GrundstÃŒck" fehlen in deisere Auswertung.
+-- oder "Miteigentum an aufgeteiltes GrundstÃŒck" fehlen in dieser Auswertung.
 -- Dazu siehe: "rechte_eines_eigentuemers".
 
--- Das Ergbenis ist gedacht fÃŒr den Export als CSV und Weiterverarbeitung mit einer Tabellenkalkulation
+-- Das Ergebnis ist gedacht fÃŒr den Export als CSV und Weiterverarbeitung mit einer Tabellenkalkulation
 -- oder einer einfachen Datenbank.
 
--- Auch ein Export als Shape ist moeglich (dafuer: geom hinzugefuegt, Feldnamen gekuerzt)
+-- Auch ein Export als Shape ist moeglich (dafÃŒr: geom hinzugefÃŒgt, Feldnamen gekÃŒrzt)
 -- Kommando:
 --  pgsql2shp -h localhost -p 5432 -f "/data/.../alkis_fs_gemeinde.shp"  [db-name]  public.flurstuecke_eines_eigentuemers
@@ -676,6 +599,4 @@
 -- Person <benennt< NamNum. >istBestandteilVon> Blatt <istBestandteilVon< Stelle >istGebucht> Flurstueck
 --                                              *-> Bezirk                *-> Buchungsart     *-> Gemarkung
-
--- Wobei ">xxx>" = JOIN ÃŒber die Verbindungs-Tabelle "alkis_beziehungen" mit der Beziehungsart "xxx".
 
 CREATE OR REPLACE VIEW flurstuecke_eines_eigentuemers 
@@ -700,25 +621,26 @@
       p.nachnameoderfirma          AS nachname --, 
    -- p.vorname 
-   FROM       ax_person              p
-        JOIN  alkis_beziehungen      bpn  ON bpn.beziehung_zu  = p.gml_id 
-        JOIN  ax_namensnummer        n    ON bpn.beziehung_von =n.gml_id 
-        JOIN  alkis_beziehungen      bng  ON n.gml_id = bng.beziehung_von 
-        JOIN  ax_buchungsblatt       g    ON bng.beziehung_zu = g.gml_id 
-        JOIN  ax_buchungsblattbezirk b    ON g.land = b.land AND g.bezirk = b.bezirk 
-        JOIN  alkis_beziehungen      bgs  ON bgs.beziehung_zu = g.gml_id 
-        JOIN  ax_buchungsstelle      s    ON s.gml_id = bgs.beziehung_von 
-        JOIN  ax_buchungsstelle_buchungsart art ON s.buchungsart = art.wert 
-        JOIN  alkis_beziehungen      bsf  ON bsf.beziehung_zu = s.gml_id
-        JOIN  ax_flurstueck          f    ON f.gml_id = bsf.beziehung_von 
-        JOIN  ax_gemarkung           k    ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer 
-   WHERE p.nachnameoderfirma LIKE 'Gemeinde %'   -- ** Bei Bedarf anpassen!
-     AND bpn.beziehungsart = 'benennt'           -- Namennummer     >> Person
-     AND bng.beziehungsart = 'istBestandteilVon' -- Namensnummer    >> Grundbuch
-     AND bgs.beziehungsart = 'istBestandteilVon' -- Buchungs-Stelle >> Grundbuch
-     AND bsf.beziehungsart = 'istGebucht'        -- Flurstueck      >> Buchungs-Stelle
+   FROM   ax_person              p
+     JOIN ax_namensnummer        n   -- Namennummer >benennt> Person
+       ON p.gml_id = n.benennt
+     JOIN ax_buchungsblatt       g   -- Namensnummer >istBestandteilVon> Grundbuch
+       ON n.istbestandteilvon = g.gml_id
+     JOIN ax_buchungsblattbezirk b    ON g.land = b.land AND g.bezirk = b.bezirk 
+     JOIN ax_buchungsstelle      s   -- Buchungs-Stelle >istBestandteilVon> Grundbuch
+       ON s.istbestandteilvon = g.gml_id
+     JOIN ax_buchungsstelle_buchungsart art 
+       ON s.buchungsart = art.wert 
+     JOIN ax_flurstueck          f  -- Flurstueck >istGebucht> Buchungs-Stelle
+       ON f.istgebucht = s.gml_id
+     JOIN ax_gemarkung           k    
+       ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer 
+   WHERE p.nachnameoderfirma LIKE 'Stadt %'   -- ** Bei Bedarf anpassen!
      AND p.endet IS NULL AND n.endet IS NULL AND g.endet IS NULL AND b.endet IS NULL
      AND s.endet IS NULL AND f.endet IS NULL AND k.endet IS NULL
    ORDER BY k.bezeichnung, f.flurnummer, f.zaehler, f.nenner, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung, s.laufendenummer;
-COMMENT ON VIEW flurstuecke_eines_eigentuemers IS 'Muster fÃŒr Export: Suchkriteriumnach Bedarf anpassen.';
+
+COMMENT ON VIEW flurstuecke_eines_eigentuemers 
+  IS 'Nur einfache Buchungsart "GrundstÃŒck". Muster fÃŒr Export: Suchkriterium nach Bedarf anpassen.';
+
 
 -- Rechte eines EigentÃŒmers
@@ -736,4 +658,5 @@
 -- Wobei ">xxx>" = JOIN ÃŒber die Verbindungs-Tabelle "alkis_beziehungen" mit der Beziehungsart "xxx".
 
+-- DROP VIEW rechte_eines_eigentuemers;
 CREATE OR REPLACE VIEW rechte_eines_eigentuemers 
 AS
@@ -753,5 +676,4 @@
       sh.zaehler || '/' || sh.nenner AS buchg_anteil_herr, 
       arth.bezeichner              AS buchgsa_herr, 
-      bss.beziehungsart            AS bez_art,
       artd.bezeichner              AS buchgsa_dien, 
       sd.laufendenummer            AS bvnr_dien, 
@@ -761,93 +683,29 @@
       p.nachnameoderfirma          AS nachname --,  
    -- p.vorname 
-   FROM       ax_person              p
-        JOIN  alkis_beziehungen      bpn  ON bpn.beziehung_zu  = p.gml_id 
-        JOIN  ax_namensnummer        n    ON bpn.beziehung_von =n.gml_id 
-        JOIN  alkis_beziehungen      bng  ON n.gml_id = bng.beziehung_von 
-        JOIN  ax_buchungsblatt       g    ON bng.beziehung_zu = g.gml_id 
-        JOIN  ax_buchungsblattbezirk b    ON g.land = b.land AND g.bezirk = b.bezirk 
-        JOIN  alkis_beziehungen      bgs  ON bgs.beziehung_zu = g.gml_id 
-        JOIN  ax_buchungsstelle      sh   ON sh.gml_id = bgs.beziehung_von  -- herrschende Buchung
-        JOIN  ax_buchungsstelle_buchungsart arth ON sh.buchungsart = arth.wert 
-        JOIN  alkis_beziehungen      bss  ON sh.gml_id = bss.beziehung_von
-        JOIN  ax_buchungsstelle      sd   ON sd.gml_id = bss.beziehung_zu   -- dienende Buchung
-        JOIN  ax_buchungsstelle_buchungsart artd ON sd.buchungsart = artd.wert 
-        JOIN  alkis_beziehungen      bsf  ON bsf.beziehung_zu = sd.gml_id
-        JOIN  ax_flurstueck          f    ON f.gml_id = bsf.beziehung_von 
-        JOIN  ax_gemarkung           k    ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer 
-   WHERE p.nachnameoderfirma LIKE 'Stadt %'   -- ** Bei Bedarf anpassen!
-     AND bpn.beziehungsart = 'benennt'           -- Namennummer     >> Person
-     AND bng.beziehungsart = 'istBestandteilVon' -- Namensnummer    >> Grundbuch
-     AND bgs.beziehungsart = 'istBestandteilVon' -- B-Stelle herr   >> Grundbuch
-     AND bss.beziehungsart in ('an','zu')        -- B-Stelle herr.  >> B-Stelle dien.
-     AND bsf.beziehungsart = 'istGebucht'        -- Flurstueck      >> B-Stelle dien
+   FROM   ax_person              p
+     JOIN ax_namensnummer        n    -- Namennummer >benennt> Person
+       ON p.gml_id = n.benennt
+     JOIN ax_buchungsblatt       g    -- Namensnummer >istBestandteilVon> Grundbuch
+       ON n.istBestandteilVon = g.gml_id
+     JOIN ax_buchungsblattbezirk b    
+       ON g.land = b.land AND g.bezirk = b.bezirk 
+     JOIN ax_buchungsstelle      sh  -- B-Stelle herr >istBestandteilVon> Grundbuch
+       ON sh.istbestandteilvon = g.gml_id  -- herrschende Buchung
+     JOIN ax_buchungsstelle_buchungsart arth 
+       ON sh.buchungsart = arth.wert 
+     JOIN ax_buchungsstelle      sd   -- B-Stelle herr.  >an/zu> B-Stelle dien.
+       ON (sd.gml_id =ANY(sh.an) OR sd.gml_id = ANY(sh.zu) )
+     JOIN ax_buchungsstelle_buchungsart artd 
+       ON sd.buchungsart = artd.wert
+     JOIN ax_flurstueck          f    -- Flurstueck  >istGebucht> B-Stelle dien     
+       ON f.istgebucht = sd.gml_id
+     JOIN ax_gemarkung           k    
+       ON f.land = k.land AND f.gemarkungsnummer = k.gemarkungsnummer 
+   WHERE p.nachnameoderfirma LIKE 'Stadt %'   -- ** Bei Bedarf anpassen!    
      AND p.endet IS NULL AND n.endet IS NULL AND g.endet IS NULL AND b.endet IS NULL
      AND sh.endet IS NULL AND sd.endet IS NULL AND f.endet IS NULL AND k.endet IS NULL
    ORDER BY k.bezeichnung, f.flurnummer, f.zaehler, f.nenner, g.bezirk, g.buchungsblattnummermitbuchstabenerweiterung, sh.laufendenummer;
+
 COMMENT ON VIEW rechte_eines_eigentuemers IS 'Muster fÃŒr Export: Suchkriteriumnach Bedarf anpassen. Dies ergÃ€nzt "flurstuecke_eines_eigentuemers" um die FÃ€lle mit besonderen Buchungen.';
-
--- Die 2 Views nur fuer Entwicklung: 
-
--- 	CREATE OR REPLACE VIEW beziehungen_redundant 
--- 	AS
--- 	 SELECT *
--- 	   FROM alkis_beziehungen AS bezalt
--- 	   WHERE EXISTS
--- 		   (SELECT ogc_fid
--- 			 FROM alkis_beziehungen AS bezneu
--- 			WHERE bezalt.beziehung_von = bezneu.beziehung_von
--- 			  AND bezalt.beziehung_zu  = bezneu.beziehung_zu
--- 			  AND bezalt.beziehungsart = bezneu.beziehungsart
--- 			  AND bezalt.ogc_fid       < bezneu.ogc_fid
--- 			);
--- 	COMMENT ON VIEW beziehungen_redundant IS 'Datenanalyse: alkis_beziehungen zu denen es eine identische neue Version gibt. Fehlersuche bei PostNAS-Trigger fÃŒr Replace.';
---
--- 	CREATE OR REPLACE VIEW beziehungen_redundant_in_delete
--- 	AS
--- 	SELECT *
--- 	 FROM alkis_beziehungen AS bezalt
--- 	 WHERE EXISTS
--- 		   (SELECT ogc_fid
--- 			 FROM alkis_beziehungen AS bezneu
--- 			WHERE bezalt.beziehung_von = bezneu.beziehung_von
--- 			  AND bezalt.beziehung_zu  = bezneu.beziehung_zu
--- 			  AND bezalt.beziehungsart = bezneu.beziehungsart
--- 			  AND bezalt.ogc_fid       < bezneu.ogc_fid
--- 			)
--- 		 -- mit dem Zusatz nur die Faelle aus dem letzten Durchlauf,
--- 		 -- die aktuell noch in der Delete-Tabelle stehen
--- 		 AND EXISTS
--- 			(SELECT ogc_fid
--- 			 FROM delete
--- 			 WHERE bezalt.beziehung_von = substr(featureid, 1, 16)
--- 				OR bezalt.beziehung_zu  = substr(featureid, 1, 16)
--- 			);
--- 	COMMENT ON VIEW beziehungen_redundant_in_delete IS 'Datenanalyse: alkis_beziehungen zu denen es eine identische neue Version gibt und wo das Objekt noch in der delete-Tabelle vorkommt. Fehlersuche bei PostNAS-Trigger fÃŒr Replace.';
-
-
--- Suche nach Fehler durch "Replace"
--- Wenn ax_flurstueck ÃŒber "replace" ausgetauscht wird und dabei gleichzeitig eine andere 
--- Buchungsstelle bekommt, dann bleibt die alte Buchungsstelle in den alkis_beziehungen.
--- Mail PostNAS Mailingliste von 2013-02-20
-CREATE OR REPLACE VIEW mehrfache_buchung_zu_fs
-AS
-  SELECT f.gml_id, count(b.ogc_fid) AS anzahl
-    FROM ax_flurstueck f
-    JOIN alkis_beziehungen b
-      ON f.gml_id = b.beziehung_von 
-  WHERE b.beziehungsart = 'istGebucht'
-  GROUP BY f.gml_id
-  HAVING count(b.ogc_fid) > 1;
-
--- Noch einfacher? - Auch ohne JOIN wird das selbe Ergebnis geliefert.
--- Doppelte Verweise zÃ€hlen ohne zu prÃŒfen, ob die gml_id in ax_flurstueck existiert.
---   SELECT b.beziehung_von, count(b.ogc_fid) AS anzahl
---     FROM alkis_beziehungen b
---    WHERE b.beziehungsart = 'istGebucht'
---   GROUP BY b.beziehung_von
---   HAVING count(b.ogc_fid) > 1;
-
-COMMENT ON VIEW mehrfache_buchung_zu_fs 
- IS 'Fehler: Nach replace von ax_flurtstueck mit einer neuen ax_buchungsstelle bleibt die alte Verbindung in alkis_beziehungen';
 
 
@@ -863,31 +721,25 @@
  SELECT l.gml_id, l.gemeinde, l.lage, l.hausnummer 
    FROM ax_gebaeude g
-   JOIN alkis_beziehungen b ON b.beziehung_von = g.gml_id
-   JOIN ax_lagebezeichnungmithausnummer l ON b.beziehung_zu = l.gml_id
-  WHERE b.beziehungsart = 'zeigtAuf'
+   JOIN ax_lagebezeichnungmithausnummer l  
+     ON l.gml_id = ANY(g.zeigtauf) 
   GROUP BY l.gml_id, l.gemeinde, l.lage, l.hausnummer
   HAVING count(g.gml_id) > 1;
 
 COMMENT ON VIEW fehler_hausnummer_mehrfach_verwendet
- IS 'Fehler: Nach replace von ax_lagebezeichnungmithausnummer mit einem neuen ax_gebaeude bleibt die alte Verbindung in alkis_beziehungen';
-
-
--- Der umgekehrt Fall ist erlaubt.
--- GebÃ€ude hat mehrere Nummern.
-
+ IS 'Fehlersuche: Nach replace von ax_lagebezeichnungmithausnummer mit einem neuen ax_gebaeude bleibt die alte Verbindung?';
+
+-- Ein GebÃ€ude hat mehrere Nummern.
 CREATE OR REPLACE VIEW adressen_zu_gebauede_mit_mehreren_hausnummern
 AS
- SELECT l.gml_id, l.gemeinde, l.lage, l.hausnummer -- Anzeige der Adressfelder
- FROM ax_gebaeude g1
-   JOIN alkis_beziehungen b ON b.beziehung_von = g1.gml_id
-   JOIN ax_lagebezeichnungmithausnummer l ON b.beziehung_zu = l.gml_id
-  WHERE b.beziehungsart = 'zeigtAuf' AND g1.gml_id IN -- Subquery sucht GebÃ€ude mit meherern Hausnummen
+ SELECT g1.gml_id, l1.gemeinde, l1.lage, l1.hausnummer -- Anzeige der Adressfelder
+   FROM ax_gebaeude g1
+   JOIN ax_lagebezeichnungmithausnummer l1 ON l1.gml_id = ANY(g1.zeigtauf)
+  WHERE g1.gml_id IN -- Subquery sucht GebÃ€ude mit meherern Hausnummen
    (SELECT g2.gml_id 
-    FROM ax_gebaeude g2
-    JOIN alkis_beziehungen b ON b.beziehung_von = g2.gml_id
-    JOIN ax_lagebezeichnungmithausnummer l ON b.beziehung_zu = l.gml_id
-   WHERE b.beziehungsart = 'zeigtAuf'
-   GROUP BY g2.gml_id 
-   HAVING count(l.gml_id) > 1);
+      FROM ax_gebaeude g2
+      JOIN ax_lagebezeichnungmithausnummer l2 ON l2.gml_id = ANY(g2.zeigtauf)
+     GROUP BY g2.gml_id 
+   HAVING count(l2.gml_id) > 1)
+   ORDER BY l1.gemeinde, l1.lage, l1.hausnummer;
 
 COMMENT ON VIEW adressen_zu_gebauede_mit_mehreren_hausnummern
@@ -911,43 +763,25 @@
 -- Analyse: FÃ€lle mit Erbbaurecht
 -- Benutzt den Baustein-View "doppelverbindung"
+
+--   +++ BESSER: analog doppelverbindung direkt codieren
+
 CREATE OR REPLACE VIEW erbbaurechte_suchen
 AS
-  SELECT f.gml_id, 
-  --f.flurstueckskennzeichen,
-    f.gemarkungsnummer || '-' || f.flurnummer || '-' || f.zaehler AS fssuch, f.nenner
+  SELECT f.gml_id, f.gemarkungsnummer || '-' || f.flurnummer || '-' || f.zaehler AS fssuch, f.nenner
    FROM ax_flurstueck    f 
    JOIN doppelverbindung d     -- beide FÃ€lle ÃŒber Union-View: direkt und ÃŒber Recht von BS an BS
      ON d.fsgml = f.gml_id 
+
+
+
    JOIN ax_buchungsstelle s    -- Buchungs-Stelle
      ON d.bsgml = s.gml_id 
    WHERE s.buchungsart = 2101;
 
+
+
+
 COMMENT ON VIEW erbbaurechte_suchen
  IS 'Suche nach FÃ€llen mit Buchungsrt 2101=Erbbaurecht';
-
-
--- Probleme mit der Trigger-Function "update_fields_beziehungen()"
--- Manchmal kann zu einer gml_id in "alkis_beziehungen" die zustÃ€ndige Tabelle nicht gefunden werden.
--- Nach Ãnderung der Trigger-Function am 10.12.2013 wird die Beziehung trotzdem eingetragen,
--- nur die Felder "von_typename" und "beginnt" bleiben leer.
--- 2014-01-31: Dieser Trigger wird nicht mehr verwendet.
-
-     -- Diese FÃ€lle anzeigen:
---     CREATE OR REPLACE VIEW beziehungsproblem_faelle
---    AS
---       SELECT *
---        FROM alkis_beziehungen
---        WHERE beginnt IS NULL;
---     COMMENT ON VIEW beziehungsproblem_faelle
---      IS 'Fehlersuche: Im Trigger "update_fields_beziehungen()" wurde das Objekt in seiner Tabelle nicht gefunden, darum kein "beginnt" in "alkis_beziehungen" eingetragen.';
-
-     -- Wie viele sind das?
---     CREATE OR REPLACE VIEW beziehungsproblem_zaehler
---     AS
---       SELECT count(ogc_fid) AS anzahl
---         FROM alkis_beziehungen
---        WHERE beginnt IS NULL;
---     COMMENT ON VIEW beziehungsproblem_faelle
---      IS 'Fehlersuche: Wie oft fehlt das beginnt-Feld in alkis_beziehungen?';
 
 
@@ -955,24 +789,22 @@
 -- Diese FÃ€lle fÃŒhren mÃ¶glicherweise zu unvollstÃ€ndiger Ausgabe beim Export "alle FlurstÃŒcke an einer StraÃe"
 -- weil nur Lagebezeichnung MIT und OHNE Hausnummer gesucht wird, aber keine gleich lautende Gewanne.
+
+-- DROP VIEW strasse_als_gewanne;
 CREATE OR REPLACE VIEW strasse_als_gewanne
 AS
   SELECT k.gemeinde, k.lage AS strassenschluessel,
-      -- k.bezeichnung      AS strassenname,
-         o.unverschluesselt AS gewanne,
-         count(fo.gml_id) AS anzahl_fs_gewanne
+         o.unverschluesselt AS gewanne_und_strasse, -- = k.bezeichnung = StraÃenname
+         count(f.gml_id) AS anzahl_fs_gewanne
   FROM ax_lagebezeichnungkatalogeintrag k   -- StraÃentabelle
   JOIN ax_lagebezeichnungohnehausnummer o   -- Gewanne
     ON k.bezeichnung = o.unverschluesselt   -- Gleiche Namen
-  -- Join Gewanne auf FlurstÃŒcke um nur solche FÃ€lle anzuzeigen, die verwendet werden 
+  -- Join Gewanne auf FlurstÃŒcke um nur solche FÃ€lle anzuzeigen, die hier verwendet werden.
   -- UND die auch in der gleichen Gemeinde liegen.
   -- Sonst kÃ¶nnte zufÃ€llige Namensgleichheiten aus verschiedenen Gemeinden geben. 
-  JOIN alkis_beziehungen vo
-    ON o.gml_id=vo.beziehung_zu AND vo.beziehungsart= 'zeigtAuf' 
-  JOIN ax_flurstueck fo
-    ON fo.gml_id=vo.beziehung_von
- WHERE fo.gemeinde = k.gemeinde  -- Gewanne wird fÃŒr ein Flst. in gleicher Gemeinde verwendet, wie der StraÃenschlÃŒssel
-  GROUP BY k.gemeinde, k.lage, o.unverschluesselt --, k.bezeichnung
-  ORDER BY k.gemeinde, k.lage, o.unverschluesselt --, k.bezeichnung
-  ;
+  JOIN ax_flurstueck f               --  Flurst. >zeigtAuf>  Lage
+    ON o.gml_id = ANY(f.zeigtauf)  
+ WHERE f.gemeinde = k.gemeinde  -- Gewanne wird fÃŒr ein Flst. in gleicher Gemeinde verwendet, wie der StraÃenschlÃŒssel
+  GROUP BY k.gemeinde, k.lage, o.unverschluesselt
+  ORDER BY k.gemeinde, k.lage, o.unverschluesselt;
 
 COMMENT ON VIEW strasse_als_gewanne
@@ -982,19 +814,16 @@
 -- Wie zuvor, aber die FlurstÃŒcke werden hier nicht nur gezÃ€hlt sondern auch aufgelistet.
 -- das Format des FlusrtÃŒckskennzeichens kann in die Mapbender-Navigation eingegeben werden.
+
 CREATE OR REPLACE VIEW strasse_als_gewanne_flst
 AS
-  SELECT -- fo.gml_id, 
-         fo.gemarkungsnummer || '-' || fo.flurnummer || '-' || fo.zaehler::text || COALESCE ('/' || fo.nenner::text, '') AS flstkennz,
+  SELECT fo.gemarkungsnummer || '-' || fo.flurnummer || '-' || fo.zaehler::text || COALESCE ('/' || fo.nenner::text, '') AS flstkennz,
          k.gemeinde, 
          o.unverschluesselt AS gewanne,
-      -- k.bezeichnung AS strassenname,
          k.lage        -- AS strassen_schluessel
   FROM ax_lagebezeichnungkatalogeintrag k   -- StraÃentabelle
   JOIN ax_lagebezeichnungohnehausnummer o   -- Gewanne
     ON k.bezeichnung = o.unverschluesselt   -- Gleiche Namen 
-  JOIN alkis_beziehungen vo
-    ON o.gml_id=vo.beziehung_zu AND vo.beziehungsart= 'zeigtAuf' 
-  JOIN ax_flurstueck fo
-    ON fo.gml_id=vo.beziehung_von
+   JOIN ax_flurstueck fo                    --  Flurst. >zeigtAuf>  Lage
+    ON o.gml_id = ANY(fo.zeigtauf)  
  WHERE fo.gemeinde = k.gemeinde  -- Gewanne wird fÃŒr ein Flst. in gleicher Gemeinde verwendet, wie der StraÃenschlÃŒssel
   ORDER BY fo.gemarkungsnummer, fo.flurnummer, fo.zaehler, k.gemeinde, k.bezeichnung;
@@ -1004,5 +833,4 @@
 
 
-
 -- Suche nach Fehlern in den Daten, die moeglicherweise aus der Migration stammen und
 -- im Rahmen der Nachmigration noch korrigiert werden muessen.
@@ -1011,21 +839,175 @@
 AS
   SELECT DISTINCT p.gml_id, p.nachnameoderfirma, p.vorname, 
-        a1.ort_post, a1.strasse AS strasse1, a2.strasse AS strasse2, a1.hausnummer
-     -- , b1.import_id AS import1, b2.import_id AS import2
-    FROM ax_person         p
-    JOIN alkis_beziehungen b1 ON b1.beziehung_von=p.gml_id
-    JOIN ax_anschrift      a1 ON a1.gml_id=b1.beziehung_zu
-    JOIN alkis_beziehungen b2 ON b2.beziehung_von=p.gml_id
-    JOIN ax_anschrift      a2 ON a2.gml_id=b2.beziehung_zu
-    WHERE b1.beziehungsart='hat' 
-      AND b2.beziehungsart='hat'
-      AND a1.gml_id    <>  a2.gml_id
-      AND a1.ort_post   =  a2.ort_post
-      AND a1.strasse    like trim(a2.strasse, '.') || '%'
-      AND a1.hausnummer =  a2.hausnummer
+         a1.ort_post, a1.strasse AS strasse1, a2.strasse AS strasse2, a1.hausnummer
+    FROM ax_person    p
+    JOIN ax_anschrift a1 ON a1.gml_id = ANY(p.hat)
+    JOIN ax_anschrift a2 ON a2.gml_id = ANY(p.hat)
+   WHERE a1.gml_id <> a2.gml_id
+      AND a1.ort_post =  a2.ort_post
+      AND a1.strasse like trim(a2.strasse, '.') || '%'
+      AND a1.hausnummer = a2.hausnummer
+      AND p.endet IS NULL AND a1.endet IS NULL and a2.endet IS NULL
     ORDER BY p.nachnameoderfirma, p.vorname;
 
 COMMENT ON VIEW nachmigration_aehnliche_anschriften
- IS 'Zu einer Person gibt es mehrere Anschriften, die in Ort und Hausnummer identisch sind und beim StraÃennemen entweder auch identisch sind oder eine AbkÃŒrzung mit Punkt enthalten.';
+ IS 'Nachmigration? Zu einer Person gibt es mehrere Anschriften, die in Ort und Hausnummer identisch sind und beim StraÃennemen entweder auch identisch sind oder eine AbkÃŒrzung mit Punkt enthalten.';
+
+
+-- Bevor alle inversen Relationen im Schema auskommentiert werden,
+-- noch mal in die Datenbank schauen, ob nicht doch eine davon gefÃŒllt ist.
+-- Nach dem Entfernen dieser Spalten wird der View nicht mehr funktionieren 
+-- und wird darum ebenfalls auskommentiert.
+
+/*
+CREATE OR REPLACE VIEW nicht_gefuellte_inverse_relationen_spalten
+AS
+  SELECT 'ax_flurstueck' AS tabelle, 'beziehtsichaufflurstueck' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_flurstueck WHERE NOT beziehtsichaufflurstueck IS NULL
+UNION
+  SELECT 'ax_flurstueck' AS tabelle, 'gehoertanteiligzu' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_flurstueck WHERE NOT gehoertanteiligzu IS NULL
+UNION
+  SELECT 'ax_lagebezeichnungohnehausnummer' AS tabelle, 'beschreibt' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_lagebezeichnungohnehausnummer WHERE NOT beschreibt IS NULL
+UNION
+  SELECT 'ax_lagebezeichnungohnehausnummer' AS tabelle, 'gehoertzu' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_lagebezeichnungohnehausnummer WHERE NOT gehoertzu IS NULL
+UNION
+  SELECT 'ax_lagebezeichnungmithausnummer' AS tabelle, 'hat' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_lagebezeichnungmithausnummer WHERE NOT hat IS NULL
+UNION
+  SELECT 'ax_lagebezeichnungmithausnummer' AS tabelle, 'beziehtsichauf' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_lagebezeichnungmithausnummer WHERE NOT beziehtsichauf IS NULL
+UNION
+  SELECT 'ax_lagebezeichnungmithausnummer' AS tabelle, 'beziehtsichauchauf' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_lagebezeichnungmithausnummer WHERE NOT beziehtsichauchauf IS NULL
+UNION
+  SELECT 'ax_lagebezeichnungmithausnummer' AS tabelle, 'gehoertzu' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_lagebezeichnungmithausnummer WHERE NOT gehoertzu IS NULL
+UNION
+  SELECT 'ax_lagebezeichnungmithausnummer' AS tabelle, 'weistzum' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_lagebezeichnungmithausnummer WHERE NOT weistzum IS NULL
+UNION
+  SELECT 'ax_lagebezeichnungmitpseudonummer' AS tabelle, 'gehoertzu' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_lagebezeichnungmitpseudonummer WHERE NOT gehoertzu IS NULL
+--UNION
+--  -- ist gefÃŒllt!
+--  SELECT 'ax_georeferenziertegebaeudeadresse' AS tabelle, 'hatauch' AS spalte, 
+--     count(gml_id) AS anzahl_eintraege
+--  FROM ax_georeferenziertegebaeudeadresse WHERE NOT hatauch IS NULL
+UNION
+  SELECT 'ax_sicherungspunkt' AS tabelle, 'beziehtsichauf' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_sicherungspunkt WHERE NOT beziehtsichauf IS NULL
+UNION
+  SELECT 'ax_sicherungspunkt' AS tabelle, 'gehoertzu' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_sicherungspunkt WHERE NOT gehoertzu IS NULL
+-- Punktort: ist gefÃŒllt (nicht invers)
+--UNION
+--  SELECT 'ax_punktortag' AS tabelle, 'istteilvon' AS spalte, 
+--     count(gml_id) AS anzahl_eintraege
+--  FROM ax_punktortag WHERE NOT istteilvon IS NULL
+--UNION
+--  SELECT 'ax_punktortau' AS tabelle, 'istteilvon' AS spalte, 
+--     count(gml_id) AS anzahl_eintraege
+--  FROM ax_punktortau WHERE NOT istteilvon IS NULL
+--UNION
+--  SELECT 'ax_punktortta' AS tabelle, 'istteilvon' AS spalte, 
+--     count(gml_id) AS anzahl_eintraege
+--  FROM ax_punktortta WHERE NOT istteilvon IS NULL
+UNION
+  SELECT 'ax_person' AS tabelle, 'weistauf' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_person WHERE NOT weistauf IS NULL
+UNION
+  SELECT 'ax_person' AS tabelle, 'uebtaus' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_person WHERE NOT uebtaus IS NULL
+UNION
+  SELECT 'ax_person' AS tabelle, 'besitzt' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_person WHERE NOT besitzt IS NULL
+UNION
+  SELECT 'ax_person' AS tabelle, 'zeigtauf' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_person WHERE NOT zeigtauf IS NULL
+UNION
+  SELECT 'ax_person' AS tabelle, 'benennt' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_person WHERE NOT benennt IS NULL
+UNION
+  SELECT 'ax_anschrift' AS tabelle, 'beziehtsichauf' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_anschrift WHERE NOT beziehtsichauf IS NULL
+UNION
+  SELECT 'ax_anschrift' AS tabelle, 'gehoertzu' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_anschrift WHERE NOT gehoertzu IS NULL
+UNION
+  SELECT 'ax_verwaltung' AS tabelle, 'beziehtsichauf' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_verwaltung WHERE NOT beziehtsichauf IS NULL
+UNION
+  SELECT 'ax_vertretung' AS tabelle, 'vertritt' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_vertretung WHERE NOT vertritt IS NULL
+UNION
+  SELECT 'ax_buchungsblatt' AS tabelle, 'bestehtaus' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_buchungsblatt WHERE NOT bestehtaus IS NULL
+UNION
+  SELECT 'ax_buchungsstelle' AS tabelle, 'grundstueckbestehtaus' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_buchungsstelle WHERE NOT grundstueckbestehtaus IS NULL
+UNION
+  SELECT 'ax_gebaeude' AS tabelle, 'haengtzusammenmit' AS spalte, 
+     count(gml_id) AS anzahl_eintraege
+  FROM ax_gebaeude WHERE NOT haengtzusammenmit IS NULL
+;
+
+COMMENT ON VIEW nicht_gefuellte_relationen_spalten
+ IS 'ÃberprÃŒfung auf nicht gefÃŒllte Inverse Relationen. 
+Funktioniert nur, solange diese nicht entfernt wurden.';
+
+*/
+
+-- Daraus resultiert der folgende Patch fÃŒr bereits angelegte Datenbanken:
+/*
+	ALTER TABLE ax_flurstueck                    DROP COLUMN beziehtsichaufflurstueck;
+	ALTER TABLE ax_flurstueck                    DROP COLUMN gehoertanteiligzu;
+	ALTER TABLE ax_lagebezeichnungohnehausnummer DROP COLUMN beschreibt;
+	ALTER TABLE ax_lagebezeichnungohnehausnummer DROP COLUMN gehoertzu;
+	ALTER TABLE ax_lagebezeichnungmithausnummer  DROP COLUMN hat;
+	ALTER TABLE ax_lagebezeichnungmithausnummer  DROP COLUMN beziehtsichauf;
+	ALTER TABLE ax_lagebezeichnungmithausnummer  DROP COLUMN beziehtsichauchauf;
+	ALTER TABLE ax_lagebezeichnungmithausnummer  DROP COLUMN gehoertzu;
+	ALTER TABLE ax_lagebezeichnungmithausnummer  DROP COLUMN weistzum;
+	ALTER TABLE ax_lagebezeichnungmitpseudonummer DROP COLUMN gehoertzu;
+	ALTER TABLE ax_sicherungspunkt               DROP COLUMN beziehtsichauf;
+	ALTER TABLE ax_sicherungspunkt               DROP COLUMN gehoertzu;
+	ALTER TABLE ax_person                        DROP COLUMN weistauf;
+	ALTER TABLE ax_person                        DROP COLUMN uebtaus;
+	ALTER TABLE ax_person                        DROP COLUMN besitzt;
+	ALTER TABLE ax_person                        DROP COLUMN zeigtauf;
+	ALTER TABLE ax_person                        DROP COLUMN benennt;
+	ALTER TABLE ax_anschrift                     DROP COLUMN beziehtsichauf;
+	ALTER TABLE ax_anschrift                     DROP COLUMN gehoertzu;
+	ALTER TABLE ax_verwaltung                    DROP COLUMN beziehtsichauf;
+	ALTER TABLE ax_vertretung                    DROP COLUMN vertritt;
+	ALTER TABLE ax_buchungsblatt                 DROP COLUMN bestehtaus;
+	ALTER TABLE ax_buchungsstelle                DROP COLUMN grundstueckbestehtaus;
+	ALTER TABLE ax_gebaeude                      DROP COLUMN haengtzusammenmit;
+*/
 
 
Index: trunk/import/ordner_konvertieren.sh
===================================================================
--- trunk/import/ordner_konvertieren.sh	(revision 328)
+++ trunk/import/ordner_konvertieren.sh	(revision 330)
@@ -56,5 +56,5 @@
 	#
 	echo " "
-	echo "Abschließende Bestätigung:"
+	echo "AbschlieÃende BestÃ€tigung:"
 	until [ "$JEIN" = "j" -o "$JEIN" = "n" ]
 	do
Index: trunk/import/staedtische_FS_aus_ALKIS_rlp.sql
===================================================================
--- trunk/import/staedtische_FS_aus_ALKIS_rlp.sql	(revision 328)
+++ trunk/import/staedtische_FS_aus_ALKIS_rlp.sql	(revision 330)
@@ -7,6 +7,7 @@
 -- Ggf. mÃŒssen verschiedene Schreibweisen des EigentÃŒmers oder ZusÃ€tze zum Namen berÃŒcksichtigt werden.
 
--- Stand: 2013-11-26 - hier die Version fÃŒr die ALKIS-Musterdaten RLP Mustermonzel
-
+-- Stand:
+--  2013-11-26 Version fÃŒr die ALKIS-Musterdaten RLP Mustermonzel
+--  2014-08-29 Umstellung auf Datenstruktur PostNAS 0.8 (ohne Tabelle "alkis_beziehungen")
 
 -- Voraussetzung = View "doppelverbindung" aus ALKIS PostNAS-Projekt Datei "sichten.sql"
@@ -16,80 +17,54 @@
 -- ---------------------
 
---           DROP VIEW st_flurst_exp;
-CREATE OR REPLACE VIEW st_flurst_exp
+--           DROP VIEW staedtische_flurstuecke;
+CREATE OR REPLACE VIEW staedtische_flurstuecke
 AS
-  SELECT   -- DISTINCT
+  SELECT
      f.gml_id,
      f.land, f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner,
      f.amtlicheflaeche,
-  -- f.flurstueckskennzeichen,
-  -- p.nachnameoderfirma                -- Familienname
      f.wkb_geometry
-  FROM ax_flurstueck    f               -- FlurstÃŒck
-  JOIN doppelverbindung d               -- beide FÃ€lle ÃŒber Union-View: direkt und ÃŒber Recht von BS an BS
-    ON d.fsgml = f.gml_id 
-  JOIN ax_buchungsstelle s              -- Buchungs-Stelle
-    ON d.bsgml = s.gml_id 
-  JOIN ax_buchungsstelle_buchungsart b  -- EnstschlÃŒsselung der Buchungsart
-    ON s.buchungsart = b.wert 
-  JOIN alkis_beziehungen v3             -- Grundbuch (zur Buchungs-Stelle)
-    ON s.gml_id = v3.beziehung_von  
-  JOIN ax_buchungsblatt  gb 
-    ON v3.beziehung_zu = gb.gml_id 
-  JOIN alkis_beziehungen v4             -- Namensnummer (zum GB-Blatt)
-    ON v4.beziehung_zu = gb.gml_id
-  JOIN ax_namensnummer nn 
-    ON v4.beziehung_von = nn.gml_id 
-  JOIN alkis_beziehungen v5             -- Person (zur Namensnummer)
-    ON v5.beziehung_von = nn.gml_id
-  JOIN ax_person p
-    ON v5.beziehung_zu = p.gml_id 
- WHERE v3.beziehungsart = 'istBestandteilVon'  -- Buchung  --> Blatt
-   AND v4.beziehungsart = 'istBestandteilVon'  -- Blatt    --> NamNum
-   AND v5.beziehungsart = 'benennt'            -- NamNum   --> Person
-   AND f.endet IS NULL
+  FROM ax_flurstueck    f                                        -- FlurstÃŒck
+  JOIN doppelverbindung d    ON d.fsgml = f.gml_id               -- beide FÃ€lle ÃŒber Union-View: direkt und ÃŒber Recht von BS an BS
+  JOIN ax_buchungsstelle s   ON d.bsgml = s.gml_id               -- Buchungs-Stelle
+--JOIN ax_buchungsstelle_buchungsart b ON s.buchungsart = b.wert -- EnstschlÃŒsselung Buchungsart
+  JOIN ax_buchungsblatt  gb  ON gb.gml_id = s.istbestandteilvon  -- Buchung >istBestandteilVon> Blatt
+  JOIN ax_namensnummer nn    ON gb.gml_id = nn.istbestandteilvon -- Blatt <istBestandteilVon< NamNum
+  JOIN ax_person p           ON p.gml_id  = nn.benennt           -- NamNum  >benennt> Person
+ WHERE f.endet  IS NULL
+   AND s.endet  IS NULL
+   AND gb.endet IS NULL
+   AND nn.endet IS NULL
+   AND p.endet  IS NULL
    AND p.nachnameoderfirma = 'Ortsgemeinde Osann-Monzel'; -- ** EIGENTÃMER / ERBBAUBERECHTIGTER **
 
 -- Bei Schreib-Varianten wie "Stadt XXX - Wasserwerke -" oder  "Stadt XXX - Kanalbetriebe -"
--- muss hier ggf. der LOKE-Operator verwendet werden: LIKE "Stadt XXX%"
+-- muss hier ggf. der LIKE-Operator verwendet werden: LIKE "Stadt XXX%"
 
-COMMENT ON VIEW st_flurst_exp  IS 'FlurstÃŒcke der Ortsgemeinde Osann-Monzel. FÃŒr Shape-Export: Mit Kennzeichen und FlÃ€che';
+COMMENT ON VIEW staedtische_flurstuecke  IS 'FlurstÃŒcke der Ortsgemeinde Osann-Monzel. FÃŒr Shape-Export: Mit Kennzeichen und FlÃ€che';
 
 
--- View fÃŒr Shape-Export
+-- View fÃŒr WMS
+-- ---------------------
+
 --        DROP    VIEW st_flurst;
 CREATE OR REPLACE VIEW st_flurst
 AS
-  SELECT   -- DISTINCT
+  SELECT
      f.gml_id,
-     d.ba_dien,                         -- Buchungsart der dienenden Buchung
-  -- f.land, f.gemarkungsnummer, f.flurnummer, f.zaehler, f.nenner,
-  -- f.amtlicheflaeche,
-  -- f.flurstueckskennzeichen,
-  -- p.nachnameoderfirma                -- Familienname
+     d.ba_dien, -- Buchungsart der dienenden Buchung --> CLASSITEM im WMS
      f.wkb_geometry
-  FROM ax_flurstueck    f               -- FlurstÃŒck
-  JOIN doppelverbindung d               -- beide FÃ€lle ÃŒber Union-View: direkt und ÃŒber Recht von BS an BS
-    ON d.fsgml = f.gml_id 
-  JOIN ax_buchungsstelle s              -- Buchungs-Stelle
-    ON d.bsgml = s.gml_id 
-  JOIN ax_buchungsstelle_buchungsart b  -- EnstschlÃŒsselung der Buchungsart
-    ON s.buchungsart = b.wert 
-  JOIN alkis_beziehungen v3             -- Grundbuch (zur Buchungs-Stelle)
-    ON s.gml_id = v3.beziehung_von  
-  JOIN ax_buchungsblatt  gb 
-    ON v3.beziehung_zu = gb.gml_id 
-  JOIN alkis_beziehungen v4             -- Namensnummer (zum GB-Blatt)
-    ON v4.beziehung_zu = gb.gml_id
-  JOIN ax_namensnummer nn 
-    ON v4.beziehung_von = nn.gml_id 
-  JOIN alkis_beziehungen v5             -- Person (zur Namensnummer)
-    ON v5.beziehung_von = nn.gml_id
-  JOIN ax_person p
-    ON v5.beziehung_zu = p.gml_id 
- WHERE v3.beziehungsart = 'istBestandteilVon'  -- Buchung  --> Blatt
-   AND v4.beziehungsart = 'istBestandteilVon'  -- Blatt    --> NamNum
-   AND v5.beziehungsart = 'benennt'            -- NamNum   --> Person
-   AND f.endet IS NULL
+  FROM ax_flurstueck    f                                        -- FlurstÃŒck
+  JOIN doppelverbindung d    ON d.fsgml = f.gml_id               -- beide FÃ€lle ÃŒber Union-View: direkt und ÃŒber Recht von BS an BS
+  JOIN ax_buchungsstelle s   ON d.bsgml = s.gml_id               -- Buchungs-Stelle
+  JOIN ax_buchungsstelle_buchungsart b ON s.buchungsart = b.wert -- EnstschlÃŒsselung Buchungsart
+  JOIN ax_buchungsblatt  gb  ON gb.gml_id = s.istbestandteilvon  -- Buchung >istBestandteilVon> Blatt
+  JOIN ax_namensnummer nn    ON gb.gml_id = nn.istbestandteilvon -- Blatt <istBestandteilVon< NamNum
+  JOIN ax_person p           ON p.gml_id  = nn.benennt           -- NamNum  >benennt> Person
+ WHERE f.endet  IS NULL
+   AND s.endet  IS NULL
+   AND gb.endet IS NULL
+   AND nn.endet IS NULL
+   AND p.endet  IS NULL
    AND p.nachnameoderfirma = 'Ortsgemeinde Osann-Monzel'; -- ** EIGENTÃMER / ERBBAUBERECHTIGTER **
 
@@ -100,6 +75,12 @@
 
 -- Buchungsarten darin?
---    SELECT DISTINCT ba_dien, count(gml_id) AS anzahl FROM st_flurst GROUP BY ba_dien ORDER BY ba_dien;
-
+/*
+ SELECT DISTINCT 
+     ba_dien, 
+     count(gml_id) AS anzahl 
+  FROM st_flurst 
+  GROUP BY ba_dien
+  ORDER BY ba_dien;
+*/
 
 -- the HAPPY end --
Index: trunk/import/alkis_db_patch_2014-08.sql
===================================================================
--- trunk/import/alkis_db_patch_2014-08.sql	(revision 328)
+++ 	(revision )
@@ -1,274 +1,0 @@
-
--- Straßennamen als P und L-Variante
--- =================================
-
--- Bisher wurden die Namen von Straßen, Wegen und Klassifizierungen nur angezeigt, wenn sie
--- als Punkt über die Tabelle "ap_pto" positioniert waren.
--- Nun tauchen auch Texte auf, die über Linien positioniert sind (ap_lto).
-
--- Dies Script passt die Datenbank an. Ein überarbeitetes Mapfile muss die neue Tabelle präsentiern.
-
--- Es wurden mehrere Scripte angepasst.
--- Diese treten in Kraft, sobald eine Datenbank neu angelegt und neu geladen wird.
-
--- Dies Script patcht eine bereits bestehende Datenbank.
--- Dies Script ist nur temporär im Einsatz und wird darum nicht langfristig gepflegt.
-
--- Stand 2014-08-25
-
-
--- *** aus "pp_definition.sql"
-
--- Variante für Punkt-Geometrie
-CREATE TABLE pp_strassenname_p 
-(   gid                    serial NOT NULL,
-    gml_id                 character(16),
- -- advstandardmodell      character varying[],
-    schriftinhalt          character varying,      -- Label: anzuzeigender Text
-    hor                    character varying,
-    ver                    character varying,
- -- signaturnummer         character varying,
- -- darstellungsprioritaet integer,
-    art                    character varying,
-    winkel                 double precision,
-    CONSTRAINT pp_snamp_pk  PRIMARY KEY (gid)
-) WITH (OIDS=FALSE);
-
--- :alkis_epsg = 25832
-SELECT AddGeometryColumn('pp_strassenname_p','the_geom',25832,'POINT',2);
-CREATE INDEX pp_snamp_gidx ON pp_strassenname_p USING gist(the_geom); 
-
-  COMMENT ON TABLE  pp_strassenname_p                IS 'Post-Processing: Label der Straßennamen in der Karte, Punktgeometrie. Auszug aus ap_pto.';
-
-  COMMENT ON COLUMN pp_strassenname_p.gid            IS 'Editierschlüssel der Tabelle';
---COMMENT ON COLUMN pp_strassenname_p.gml_id         IS 'Objektschlüssel des Präsentationsobjektes aus ap_pto. Zur Verbindung mit Katalog.';
-  COMMENT ON COLUMN pp_strassenname_p.gml_id         IS 'Objektschlüssel des Präsentationsobjektes aus "ax_lagebezeichnungohnehausnummer". Zur Verbindung mit Katalog beim Nachladen leerer Felder.';
-  COMMENT ON COLUMN pp_strassenname_p.schriftinhalt  IS 'Label, darzustellender Name der Straße oder Klassifikation';
-  COMMENT ON COLUMN pp_strassenname_p.hor            IS 'Horizontale Ausrichtung des Textes zur Punkt-Koordinate: linksbündig, zentrisch, ...';
-  COMMENT ON COLUMN pp_strassenname_p.ver            IS 'Vertikale   Ausrichtung des Textes zur Punkt-Koordinate: Basis, ..';
-  COMMENT ON COLUMN pp_strassenname_p.art            IS 'Klasse der Straße: Straße, Weg, .. , BezKlassifizierungStrasse';
-  COMMENT ON COLUMN pp_strassenname_p.winkel         IS 'Drehung des Textes';
-  COMMENT ON COLUMN pp_strassenname_p.the_geom       IS 'Position (Punkt) der Labels in der Karte';
-
--- Variante für Linien-Geometrie
-CREATE TABLE pp_strassenname_l 
-(   gid                    serial NOT NULL,
-    gml_id                 character(16),
-    schriftinhalt          character varying,      -- Label: anzuzeigender Text
-    hor                    character varying,
-    ver                    character varying,
-    art                    character varying,
- -- winkel                 double precision,       -- bei Linien-Variante nicht benötigt
-    CONSTRAINT pp_snaml_pk  PRIMARY KEY (gid)
-) WITH (OIDS=FALSE);
-
--- :alkis_epsg = 25832
-SELECT AddGeometryColumn('pp_strassenname_l','the_geom',25832,'LINESTRING',2); -- Hier liegt der Unterschied
-CREATE INDEX pp_snaml_gidx ON pp_strassenname USING gist(the_geom); 
-
-  COMMENT ON TABLE  pp_strassenname_l                IS 'Post-Processing: Label der Straßennamen in der Karte, Liniengeometrie. Auszug aus ap_lto.';
-
-  COMMENT ON COLUMN pp_strassenname_l.gid            IS 'Editierschlüssel der Tabelle';
-  COMMENT ON COLUMN pp_strassenname_l.gml_id         IS 'Objektschlüssel des Präsentationsobjektes aus "ax_lagebezeichnungohnehausnummer". Zur Verbindung mit Katalog beim Nachladen leerer Felder.';
-  COMMENT ON COLUMN pp_strassenname_l.schriftinhalt  IS 'Label, darzustellender Name der Straße oder Klassifikation';
-  COMMENT ON COLUMN pp_strassenname_l.hor            IS 'Horizontale Ausrichtung des Textes: linksbündig, zentrisch, ...';
-  COMMENT ON COLUMN pp_strassenname_l.ver            IS 'Vertikale   Ausrichtung des Textes: Basis, ..';
-  COMMENT ON COLUMN pp_strassenname_l.art            IS 'Klasse der Straße: Straße, Weg, .. , BezKlassifizierungStrasse';
-  COMMENT ON COLUMN pp_strassenname_l.the_geom       IS 'Position (Punkt) der Labels in der Karte';
-
-
---  *** aus "sichten_wms.sql"
-
--- HIER START für Wiederholung
-
-DROP VIEW ap_pto_stra;
-
-CREATE OR REPLACE VIEW ap_pto_stra 
-AS 
-  SELECT p.ogc_fid,
-         l.gml_id,                               -- wird im PP zum Nachladen aus Katalog gebraucht
-         p.schriftinhalt,                        -- WMS: LABELITEM
-         p.art,                                  -- WMS: CLASSITEM
-         p.horizontaleausrichtung  AS hor,       -- Verfeinern der Text-Position ..
-         p.vertikaleausrichtung    AS ver,       --  .. durch Klassifizierung hor/ver
-         p.drehwinkel * 57.296     AS winkel,    -- * 180 / Pi
-         p.wkb_geometry
-    FROM ap_pto p
-    JOIN alkis_beziehungen v   -- Relation zur Lagebezeichnung o. HsNr.
-      ON p.gml_id = v.beziehung_von
-    JOIN ax_lagebezeichnungohnehausnummer l
-      ON v.beziehung_zu = l.gml_id
-   WHERE  p.endet IS NULL                            -- nichts historisches
-     AND  p.art   IN ('Strasse','Weg','Platz','BezKlassifizierungStrasse') -- Diese Werte als CLASSES in LAYER behandeln. 
-     AND  v.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
-     AND (   'DKKM1000' = ANY (p.advstandardmodell)  -- "Lika 1000" bevorzugen
-          OR 'DLKM'     = ANY (p.advstandardmodell)   
-     -- Leopoldshöhe, Heinestraße: 'DLKM'
-           -- Ersatzweise auch "keine Angabe", aber nur wenn es keinen besseren Text zur Lage gibt
-           OR (p.advstandardmodell IS NULL
-               AND (SELECT s.ogc_fid                -- irgend ein Feld
-                      FROM ap_pto s                 -- eines anderen Textes (suchen)
-                      JOIN alkis_beziehungen vs     -- zur gleichen Lage o.HsNr
-                        ON s.gml_id = vs.beziehung_von
-                      JOIN ax_lagebezeichnungohnehausnummer ls
-                        ON vs.beziehung_zu = ls.gml_id
-                     WHERE ls.gml_id = l.gml_id
-                       AND vs.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
-                       AND NOT s.advstandardmodell IS NULL 
-                     LIMIT 1  -- einer reicht als Beweis
-                   ) IS NULL 
-              ) -- "Subquery IS NULL" liefert true wenn kein weiterer Text gefunden wird
-         )
-;
-
-COMMENT ON VIEW ap_pto_stra 
-  IS 'Sicht für Kartendarstellung: Beschriftung aus "ap_pto" für Lagebezeichnung mit Art "Straße", "Weg", "Platz" oder Klassifizierung.
- Vorzugsweise mit advstandardmodell="DKKM1000", ersatzweise ohne Angabe. Dient im Script pp_laden.sql zum ersten Füllen der Tabelle "pp_strassenname_p".';
-
--- Daten aus dem View "ap_pto_stra" werden im PostProcessing gespeichert in der Tabelle "pp_strassenname_p".
--- 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.
-
-
-DROP VIEW ap_lto_stra;
-
-CREATE OR REPLACE VIEW ap_lto_stra 
-AS 
-  SELECT p.ogc_fid,
-         l.gml_id,                               -- wird im PP zum Nachladen aus Katalog gebraucht
-         p.schriftinhalt,                        -- WMS: LABELITEM
-         p.art,                                  -- WMS: CLASSITEM
-         p.horizontaleausrichtung  AS hor,       -- Verfeinern der Text-Position ..
-         p.vertikaleausrichtung    AS ver,       --  .. durch Klassifizierung hor/ver
-         p.wkb_geometry
-    FROM ap_lto p
-    JOIN alkis_beziehungen v   -- Relation zur Lagebezeichnung o. HsNr.
-      ON p.gml_id = v.beziehung_von
-    JOIN ax_lagebezeichnungohnehausnummer l
-      ON v.beziehung_zu = l.gml_id
-   WHERE  p.endet IS NULL                            -- nichts historisches
-     AND  p.art   IN ('Strasse','Weg','Platz','BezKlassifizierungStrasse') -- Diese Werte als CLASSES in LAYER behandeln. 
-     AND  v.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
-
---   AND (   ('DKKM1000' = ANY (p.advstandardmodell)     -- "Lika 1000" bevorzugen
---        OR ('DLKM'     = ANY (p.advstandardmodell)  ) 
-
-     -- ++ Muss als Array angelegt sein!!
-     AND ( NOT p.advstandardmodell  IS NULL          -- ++ Zwischenlösung bis DB mit neuem Schema (2014-08-22) angelegt und geladen wurde ++
-
-           -- Ersatzweise auch "keine Angabe", aber nur wenn es keinen besseren Text zur Lage gibt
-           OR (p.advstandardmodell IS NULL
-               AND (SELECT s.ogc_fid                -- irgend ein Feld
-                      FROM ap_lto s                 -- eines anderen Textes (suchen)
-                      JOIN alkis_beziehungen vs     -- zur gleichen Lage o.HsNr
-                        ON s.gml_id = vs.beziehung_von
-                      JOIN ax_lagebezeichnungohnehausnummer ls
-                        ON vs.beziehung_zu = ls.gml_id
-                     WHERE ls.gml_id = l.gml_id
-                       AND vs.beziehungsart = 'dientZurDarstellungVon' -- kann, muss aber nicht
-                       AND NOT s.advstandardmodell IS NULL 
-                     LIMIT 1  -- einer reicht als Beweis
-                   ) IS NULL 
-              ) -- "Subquery IS NULL" liefert true wenn kein weiterer Text gefunden wird
-         )
-;
-COMMENT ON VIEW ap_lto_stra 
-  IS 'Sicht für Kartendarstellung: Beschriftung aus "ap_lto" für Lagebezeichnung mit Art "Straße", "Weg", "Platz" oder Klassifizierung.
- Vorzugsweise mit advstandardmodell="DKKM1000", ersatzweise ohne Angabe. Dient im Script pp_laden.sql zum ersten Füllen der Tabelle "pp_strassenname_l".';
-
--- 2014-08-22: Daten aus dem View "ap_lto_stra" werden im PostProcessing gespeichert in den Tabellen "pp_strassenname_l".
--- Der View übernimmt die Auswahl des passenden advstandardmodell.
--- In der Tabelle werden dann die leer gebliebenen Label aus dem Katalog noch ergänzt.
-
-
--- *** aus "pp_laden.sql"
-
--- 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;
-
--- 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;
-
-
--- *** aus "grant.sql"
-
--- Berechtigungen
-
-  GRANT SELECT ON TABLE  pp_strassenname_p                 TO ms6;
-  GRANT SELECT ON TABLE  pp_strassenname_l                 TO ms6;
-
-
--- Zwischenzeitlich auch noch die alte Tabelle (ohne _P + _L-Trennung) aktualisieren
--- Wirkt in Produktion bis zur Einführung der angepassten Mapfiles (Entwickler-Version)
-
--- Alles auf Anfang
-TRUNCATE pp_strassenname;
-
-INSERT INTO pp_strassenname (gml_id, schriftinhalt, hor, ver, art, winkel, the_geom)
-       SELECT gml_id, schriftinhalt, hor, ver, art, winkel, wkb_geometry
-       FROM ap_pto_stra; 
-
-UPDATE pp_strassenname  p
-   SET schriftinhalt =    
-   ( 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;
-
-
--- ENDE --
