Index: trunk/data/konvert/postnas_0.7/nutzungsart_definition.sql
===================================================================
--- trunk/data/konvert/postnas_0.7/nutzungsart_definition.sql	(revision 176)
+++ trunk/data/konvert/postnas_0.7/nutzungsart_definition.sql	(revision 178)
@@ -52,14 +52,16 @@
 -- Dies ist die Voraussetzung fÃŒr eine performante Auskunft.
 
+--DROP TABLE nutzung;
 CREATE TABLE nutzung (
 	gml_id		character(16),
---	gml_id		character varying(32),
+	beginnt		character(20),	-- mehrfache gml_id eindeutig machen, Datenfehler?
 	nutz_id		integer,
 	class		integer,
 	info		integer,
 	zustand		integer,
-	"name"		character varying(50),
-	bezeichnung	character varying(50),
-	CONSTRAINT	nutzung_pk      PRIMARY KEY (gml_id),
+	"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)
 		REFERENCES nutzung_meta (nutz_id) MATCH SIMPLE
@@ -68,5 +70,11 @@
 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?
 
 -- 'class' ist nur innerhalb einer Gruppe ein sinvoller Index
@@ -77,5 +85,5 @@
 
 -- Kommentare
-COMMENT ON TABLE  nutzung             IS 'Zusammenfassung von 26 einzelnen Tabellen des Objektbereiches "TatsÃ€chliche Nutzung".';
+COMMENT ON TABLE  nutzung             IS 'Zusammenfassung von 26 Tabellen des Objektbereiches "TatsÃ€chliche Nutzung".';
 COMMENT ON COLUMN nutzung.gml_id      IS 'Identifikator, global eindeutig';
 COMMENT ON COLUMN nutzung.nutz_id     IS 'Index fuer die Quell-Tabelle bei der Zusammenfassung in der Tabelle "nutzung".';
@@ -108,3 +116,35 @@
 COMMENT ON COLUMN nutzung_class.blabla     IS 'Weitere ErlÃ€uterungen und Definitionen dazu.';
 
+
+-- Fehlersuche nach GDAL Patch #5444:
+-- 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
+	FROM nutzung a 
+	JOIN nutzung b 
+	  ON a.gml_id = b.gml_id
+	WHERE a.beginnt < b.beginnt
+	--LIMIT 100
+	;
+
+-- Vorkommende Geometry-Typen
+
+--  SELECT a.gml_id, st_geometrytype(a.wkb_geometry) as geomtype ,a.artderbebauung, a.zustand, a.name, a.beginnt
+--  FROM ax_wohnbauflaeche a WHERE geometrytype(wkb_geometry) <> 'POLYGON';
+
+--  SELECT a.gml_id, st_geometrytype(a.wkb_geometry) as geomtype ,a.artderbebauung, a.zustand, a.name, a.beginnt
+--  FROM ax_wohnbauflaeche a WHERE geometrytype(wkb_geometry) <> 'POLYGON';
+
+-- Ergebnis:    Ein MULTIPOLYGON
+-- Konsequenz:  nur Polygone kopieren.
+
 -- END --
Index: trunk/data/konvert/postnas_0.7/sichten.sql
===================================================================
--- trunk/data/konvert/postnas_0.7/sichten.sql	(revision 176)
+++ trunk/data/konvert/postnas_0.7/sichten.sql	(revision 178)
@@ -7,4 +7,5 @@
 --  2012-02-25 PostNAS 07, Umbenennung
 --  2012-04-17 flstnr_ohne_position
+--  2012-04-24 pauschal Filter 'endet IS NULL' um historische Objekte auszublenden
 
 
@@ -32,4 +33,6 @@
    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
   --AND p."art" = 'ZAE_NEN'
   ;
@@ -56,4 +59,6 @@
     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
    --AND p."art" = 'ZAE_NEN'
  UNION 
@@ -64,4 +69,5 @@
     LEFT JOIN alkis_beziehungen v  ON v.beziehung_zu = f.gml_id
    WHERE v.beziehungsart is NULL
+     AND f.endet IS NULL
   ;
 
@@ -79,14 +85,16 @@
 CREATE OR REPLACE VIEW s_hausnummer_gebaeude 
 AS 
- SELECT ap_pto.ogc_fid, 
-        ap_pto.wkb_geometry, -- Point
-        ap_pto.drehwinkel * 57.296 AS drehwinkel,   -- umn: ANGLE [drehwinkel]
-        ax_lagebezeichnungmithausnummer.hausnummer  -- umn: LABELITEM
-   FROM ap_pto
-   JOIN alkis_beziehungen 
-     ON ap_pto.gml_id = alkis_beziehungen.beziehung_von
-   JOIN ax_lagebezeichnungmithausnummer 
-     ON alkis_beziehungen.beziehung_zu  = ax_lagebezeichnungmithausnummer.gml_id
-  WHERE alkis_beziehungen.beziehungsart = 'dientZurDarstellungVon';
+ SELECT p.ogc_fid, 
+        p.wkb_geometry,				-- Point
+        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';
@@ -98,16 +106,18 @@
 CREATE OR REPLACE VIEW s_nummer_nebengebaeude 
 AS 
- SELECT ap_pto.ogc_fid, 
-        ap_pto.wkb_geometry, 
-        ap_pto.drehwinkel * 57.296 AS drehwinkel,        -- umn: ANGLE [drehwinkel]
-     -- alkis_beziehungen.beziehungsart,                 -- TEST
-     -- ax_lagebezeichnungmitpseudonummer.pseudonummer,  -- die HsNr des zugehoerigen Hauptgebaeudes
-        ax_lagebezeichnungmitpseudonummer.laufendenummer -- umn: LABELITEM - die laufende Nummer des Nebengebaeudes
-   FROM ap_pto
-   JOIN alkis_beziehungen 
-     ON ap_pto.gml_id = alkis_beziehungen.beziehung_von
-   JOIN ax_lagebezeichnungmitpseudonummer 
-     ON alkis_beziehungen.beziehung_zu  = ax_lagebezeichnungmitpseudonummer.gml_id
-  WHERE alkis_beziehungen.beziehungsart = 'dientZurDarstellungVon'
+ SELECT p.ogc_fid, 
+        p.wkb_geometry, 
+        p.drehwinkel * 57.296 AS drehwinkel,	-- umn: ANGLE [drehwinkel]
+     -- v.beziehungsart,		-- TEST
+     -- 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
 ;
 
@@ -120,15 +130,17 @@
 CREATE OR REPLACE VIEW s_zugehoerigkeitshaken_flurstueck 
 AS 
- SELECT ap_ppo.ogc_fid, 
-        ap_ppo.wkb_geometry, 
-        ap_ppo.drehwinkel * 57.296 AS drehwinkel,
-        ax_flurstueck.flurstueckskennzeichen
-   FROM ap_ppo
-   JOIN alkis_beziehungen 
-     ON ap_ppo.gml_id = alkis_beziehungen.beziehung_von
-   JOIN ax_flurstueck 
-     ON alkis_beziehungen.beziehung_zu = ax_flurstueck.gml_id
-  WHERE ap_ppo.art = 'Haken'
-    AND alkis_beziehungen.beziehungsart = 'dientZurDarstellungVon';
+ SELECT p.ogc_fid, 
+        p.wkb_geometry, 
+        p.drehwinkel * 57.296 AS drehwinkel,
+        f.flurstueckskennzeichen
+   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
+  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 'fuer Kartendarstellung';
@@ -140,14 +152,16 @@
 CREATE OR REPLACE VIEW s_zuordungspfeil_flurstueck 
 AS 
- SELECT ap_lpo.ogc_fid, 
-        ap_lpo.wkb_geometry
-   FROM ap_lpo
-   JOIN alkis_beziehungen 
-     ON ap_lpo.gml_id = alkis_beziehungen.beziehung_von
-   JOIN ax_flurstueck 
-     ON alkis_beziehungen.beziehung_zu = ax_flurstueck.gml_id
-  WHERE ap_lpo.art = 'Pfeil'
-    AND alkis_beziehungen.beziehungsart = 'dientZurDarstellungVon'
-    AND ('DKKM1000' ~~ ANY (ap_lpo.advstandardmodell));
+ SELECT l.ogc_fid, 
+        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
+  WHERE l.art = 'Pfeil'
+    AND v.beziehungsart = 'dientZurDarstellungVon'
+    AND ('DKKM1000' ~~ ANY (l.advstandardmodell))
+    AND f.endet IS NULL
+    AND l.endet IS NULL;
 
 COMMENT ON VIEW s_zuordungspfeil_flurstueck IS 'fuer Kartendarstellung: Zuordnungspfeil FlurstÃŒcksnummer';
@@ -156,15 +170,18 @@
 CREATE OR REPLACE VIEW s_zuordungspfeilspitze_flurstueck 
 AS 
- SELECT ap_lpo.ogc_fid, (((st_azimuth(st_pointn(ap_lpo.wkb_geometry, 1), 
-        st_pointn(ap_lpo.wkb_geometry, 2)) * (- (180)::double precision)) / pi()) + (90)::double precision) AS winkel, 
-        st_startpoint(ap_lpo.wkb_geometry) AS wkb_geometry 
-   FROM ap_lpo
-   JOIN alkis_beziehungen 
-     ON ap_lpo.gml_id = alkis_beziehungen.beziehung_von
-   JOIN ax_flurstueck 
-     ON alkis_beziehungen.beziehung_zu = ax_flurstueck.gml_id
-  WHERE ap_lpo.art = 'Pfeil'
-    AND alkis_beziehungen.beziehungsart = 'dientZurDarstellungVon'
-    AND ('DKKM1000' ~~ ANY (ap_lpo.advstandardmodell));
+ SELECT l.ogc_fid, 
+        (((st_azimuth(st_pointn(l.wkb_geometry, 1), 
+        st_pointn(l.wkb_geometry, 2)) * (- (180)::double precision)) / pi()) + (90)::double precision) AS winkel, 
+        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
+  WHERE l.art = 'Pfeil'
+    AND v.beziehungsart = 'dientZurDarstellungVon'
+    AND ('DKKM1000' ~~ ANY (l.advstandardmodell))
+    AND f.endet IS NULL
+    AND l.endet IS NULL;
 
 COMMENT ON VIEW s_zuordungspfeilspitze_flurstueck IS 'fuer Kartendarstellung: Zuordnungspfeil FlurstÃŒcksnummer, Spitze';
@@ -178,12 +195,13 @@
 CREATE OR REPLACE VIEW s_beschriftung 
 AS 
-  SELECT ap_pto.ogc_fid, 
-         ap_pto.schriftinhalt, 
-         ap_pto.art, 
-         ap_pto.drehwinkel * 57.296 AS winkel, -- * 180 / Pi
-         ap_pto.wkb_geometry 
-    FROM ap_pto 
-   WHERE not ap_pto.schriftinhalt IS NULL 
-     AND art NOT IN ('HNR', 'PNR');
+  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', 'PNR');
 
 -- Feb. 2012 PostNAS 0.6: 'ZAE_NEN' kommt nicht mehr vor!
@@ -214,15 +232,17 @@
 CREATE OR REPLACE VIEW s_zuordungspfeil_gebaeude 
 AS 
- SELECT ap_lpo.ogc_fid, 
+ SELECT l.ogc_fid, 
      -- alkis_beziehungen.beziehungsart, -- TEST
      -- ap_lpo.art, -- TEST
-        ap_lpo.wkb_geometry
-   FROM ap_lpo
-   JOIN alkis_beziehungen 
-     ON ap_lpo.gml_id = alkis_beziehungen.beziehung_von
-   JOIN ax_gebaeude 
-     ON alkis_beziehungen.beziehung_zu = ax_gebaeude.gml_id
-  WHERE ap_lpo.art = 'Pfeil'
-    AND alkis_beziehungen.beziehungsart = 'dientZurDarstellungVon';
+        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
+  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 'fuer Kartendarstellung: Zuordnungspfeil fÃŒr GebÃ€ude-Nummer';
@@ -236,5 +256,5 @@
 
 
-CREATE VIEW sk2004_zuordnungspfeil 
+CREATE OR REPLACE VIEW sk2004_zuordnungspfeil 
 AS
  SELECT ap.ogc_fid, ap.wkb_geometry 
@@ -247,5 +267,5 @@
 --      Siehe s_zuordungspfeil_flurstueck 
 
-CREATE VIEW sk2004_zuordnungspfeil_spitze 
+CREATE OR REPLACE VIEW sk2004_zuordnungspfeil_spitze 
 AS
  SELECT ap.ogc_fid, (((st_azimuth(st_pointn(ap.wkb_geometry, 1), 
@@ -363,4 +383,5 @@
  --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
   ;
@@ -372,16 +393,17 @@
 CREATE OR REPLACE VIEW s_allgemeine_texte 
 AS 
- SELECT ap_pto.ogc_fid, 
-      --ap_pto.wkb_geometry, 
-      --ap_pto.gml_id,
-        ap_pto.art, 
-        ap_pto.drehwinkel * 57.296 AS drehwinkel,   -- * 180 / Pi
-        ap_pto.schriftinhalt
-   FROM ap_pto
-  WHERE NOT ap_pto.art = 'ZAE_NEN' 
-    AND NOT ap_pto.art = 'HNR' 
-    AND NOT ap_pto.art = 'FKT' 
-    AND NOT ap_pto.art = 'Friedhof' 
-    AND ap_pto.schriftinhalt IS NOT NULL;
+ SELECT p.ogc_fid, 
+      --p.wkb_geometry, 
+      --p.gml_id,
+        p.art, 
+        p.drehwinkel * 57.296 AS drehwinkel,   -- * 180 / Pi
+        p.schriftinhalt
+   FROM ap_pto p
+  WHERE NOT p.art = 'ZAE_NEN' 
+    AND NOT p.art = 'HNR' 
+    AND NOT p.art = 'FKT' 
+    AND NOT p.art = 'Friedhof' 
+    AND p.schriftinhalt IS NOT NULL
+    AND p.endet IS NULL;
 
 
@@ -420,5 +442,5 @@
 
 
--- EXTENT fÃŒr Mapfile eines Mandenten ermitteln
+-- EXTENT fÃŒr das Mapfile eines Mandanten ermitteln
 
 CREATE OR REPLACE VIEW flurstuecks_minmax AS 
@@ -427,5 +449,6 @@
         max(st_xmax(wkb_geometry)) AS r_max, 
         max(st_ymax(wkb_geometry)) AS h_max
-   FROM public.ax_flurstueck;
+   FROM ax_flurstueck f
+   WHERE f.endet IS NULL;
 
 COMMENT ON VIEW flurstuecks_minmax IS 'Maximale Ausdehnung von ax_flurstueck fuer EXTENT-Angabe im Mapfile';
@@ -454,5 +477,8 @@
       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
  ;
 
@@ -470,4 +496,5 @@
   SELECT DISTINCT land, regierungsbezirk, kreis, gemeinde, gemarkungsnummer
   FROM            ax_flurstueck
+  WHERE           endet IS NULL
   ORDER BY        land, regierungsbezirk, kreis, gemeinde, gemarkungsnummer
 ;
@@ -483,4 +510,5 @@
           st_geometrytype(wkb_geometry)
  FROM     ax_flurstueck
+ WHERE    endet IS NULL
  GROUP BY st_geometrytype(wkb_geometry);
 
@@ -494,5 +522,5 @@
 
 
-CREATE VIEW  adressen_hausnummern
+CREATE OR REPLACE VIEW adressen_hausnummern
 AS
     SELECT 
@@ -519,5 +547,5 @@
 -- Schluessel der Gemeinde nach Bedarf anpassen!
 
-CREATE VIEW adressen_zum_flurstueck
+CREATE OR REPLACE VIEW adressen_zum_flurstueck
 AS
     SELECT
@@ -573,5 +601,5 @@
 -- Wobei ">xxx>" = JOIN ÃŒber die Verbindungs-Tabelle "alkis_beziehungen" mit der Beziehungsart "xxx".
 
-CREATE VIEW flurstuecke_eines_eigentuemers 
+CREATE OR REPLACE VIEW flurstuecke_eines_eigentuemers 
 AS 
    SELECT 
@@ -611,4 +639,11 @@
      AND bgs.beziehungsart = 'istBestandteilVon' -- Buchungs-Stelle >> Grundbuch
      AND bsf.beziehungsart = 'istGebucht'        -- Flurstueck      >> Buchungs-Stelle
+     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,
@@ -641,5 +676,5 @@
 
 
-CREATE VIEW rechte_eines_eigentuemers 
+CREATE OR REPLACE VIEW rechte_eines_eigentuemers 
 AS
    SELECT 
@@ -687,4 +722,12 @@
      AND bss.beziehungsart in ('an','zu')        -- B-Stelle herr.  >> B-Stelle dien.
      AND bsf.beziehungsart = 'istGebucht'        -- Flurstueck      >> B-Stelle dien
+     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,
Index: trunk/data/konvert/postnas_0.7/alkis_PostNAS_0.7_schema.sql
===================================================================
--- trunk/data/konvert/postnas_0.7/alkis_PostNAS_0.7_schema.sql	(revision 176)
+++ trunk/data/konvert/postnas_0.7/alkis_PostNAS_0.7_schema.sql	(revision 178)
@@ -4,5 +4,5 @@
 -- *****************************
 --
--- Datenbankstruktur PostNAS 0.7  (GDAL aus aktuellem Trunc)
+-- Datenbankstruktur PostNAS 0.7  (GDAL aus aktuellem Trunk)
 --
 -- Stand
@@ -20,8 +20,21 @@
 
 -- 2012-02-28 FJ: ZusammenfÃŒhren von Ãnderungen aus SVN (AE: Anfang Februar) mit eigener Version
---                Auskommentierte Zeilen "identifier" entfernt.
 --                Feld "gemeindezugehoerigkeit" auskommentiert.
 --                Bereinigung Kommentare.
 
+-- 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 VernÃŒpfung Trigger -> Function
+--                Typ 'GEOMETRY' bei Tabellen: AX_WegPfadSteig, AX_UntergeordnetesGewaesser
 
 --  VERSIONS-NUMMER:
@@ -38,4 +51,5 @@
   SET default_with_oids = false;
 
+-- \set ON_ERROR_STOP
 
 -- T u n i n g :
@@ -49,4 +63,379 @@
 
 
+
+-- =======================
+-- Stored Procedures laden
+-- =======================
+-- \i alkis-functions.sql
+
+-- Alle ALKIS-Tabellen lÃ¶schen
+CREATE OR REPLACE FUNCTION alkis_drop() RETURNS void AS $$
+DECLARE
+	c RECORD;
+BEGIN
+	-- drop views
+	FOR c IN SELECT table_type,table_name FROM information_schema.tables WHERE table_schema='public' AND ( substr(table_name,1,3) IN ('ax_','ap_','ks_') OR table_name IN ('alkis_beziehungen','delete')) ORDER BY table_type DESC LOOP
+		IF c.table_type = 'VIEW' THEN
+			RAISE NOTICE 'Dropping view %', c.table_name;
+			EXECUTE 'DROP VIEW '||c.table_name;
+		ELSIF c.table_type = 'BASE TABLE' THEN
+			RAISE NOTICE 'Dropping table %', c.table_name;
+			EXECUTE 'DROP TABLE '||c.table_name;
+		ELSE
+			RAISE NOTICE 'Unexpected type %,%', c.table_type, c.table_name;
+		END IF;
+	END LOOP;
+
+	-- clean geometry_columns
+	DELETE FROM geometry_columns 
+		WHERE f_table_schema='public' 
+		AND ( substr(f_table_name,1,2) IN ('ax_','ap_','ks_') 
+		 OR f_table_name IN ('alkis_beziehungen','delete') );
+END;
+$$ LANGUAGE plpgsql;
+
+-- Alle ALKIS-Tabellen leeren
+CREATE OR REPLACE FUNCTION alkis_delete() RETURNS void AS $$
+DECLARE
+	c RECORD;
+BEGIN
+	-- drop views
+	FOR c IN SELECT table_name FROM information_schema.tables WHERE table_schema='public' AND ( substr(table_name,1,3) IN ('ax_','ap_','ks_') OR table_name IN ('alkis_beziehungen','delete') AND table_type='BASE TABLE') LOOP
+		RAISE NOTICE 'Deleting from %', c.table_name;
+		EXECUTE 'DELETE FROM '||c.table_name;
+	END LOOP;
+END;
+$$ LANGUAGE plpgsql;
+
+-- Ãbersicht erzeugen, die alle alkis_beziehungen mit den Typen der beteiligen ALKIS-Objekte versieht
+CREATE OR REPLACE FUNCTION alkis_mviews() RETURNS void AS $$
+DECLARE
+	sql TEXT;
+	delim TEXT;
+	c RECORD;
+BEGIN
+	DROP VIEW IF EXISTS vbeziehungen;
+	DROP VIEW IF EXISTS vobjekte;
+	DROP TABLE IF EXISTS vobjekte;
+
+	delim := '';
+	sql := 'CREATE TABLE vobjekte AS ';
+
+	FOR c IN SELECT table_name from information_schema.columns WHERE column_name='gml_id' LOOP
+		sql := sql || delim || 'SELECT gml_id,''' || c.table_name || ''' AS table_name FROM ' || c.table_name;
+		delim := ' UNION ';
+	END LOOP;
+
+	EXECUTE sql;
+
+	CREATE UNIQUE INDEX vobjekte_gmlid ON vobjekte(gml_id,beginnt);
+	CREATE INDEX vobjekte_table ON vobjekte(table_name);
+
+	DROP TABLE IF EXISTS vbeziehungen;
+	CREATE TABLE vbeziehungen AS
+		SELECT beziehung_von,(SELECT table_name FROM vobjekte WHERE gml_id=beziehung_von) AS typ_von
+			,beziehungsart
+			,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);
+END;
+$$ LANGUAGE plpgsql;
+
+-- Indizes erzeugen
+CREATE OR REPLACE FUNCTION alkis_update_schema() RETURNS void AS $$
+DECLARE
+	sql TEXT;
+	c RECORD;
+	i RECORD;
+	n INTEGER;
+BEGIN
+	-- Spalten in delete ergÃ€nzen
+	SELECT count(*) INTO n FROM information_schema.columns WHERE table_schema='public' AND table_name='delete' AND column_name='ignored';
+	IF n=0 THEN
+		ALTER TABLE "delete" ADD ignored BOOLEAN;
+	END IF;
+
+	SELECT count(*) INTO n FROM information_schema.columns WHERE table_schema='public' AND table_name='delete' AND column_name='context';
+	IF n=0 THEN
+		ALTER TABLE "delete" ADD context VARCHAR;
+	END IF;
+
+	SELECT count(*) INTO n FROM information_schema.columns WHERE table_schema='public' AND table_name='delete' AND column_name='safetoignore';
+	IF n=0 THEN
+		ALTER TABLE "delete" ADD safetoignore VARCHAR;
+	END IF;
+
+	SELECT count(*) INTO n FROM information_schema.columns WHERE table_schema='public' AND table_name='delete' AND column_name='replacedby';
+	IF n=0 THEN
+	  ALTER TABLE "delete" ADD replacedBy VARCHAR;
+	END IF;
+
+	-- Spalte identifier ergÃ€nzen, wo sie fehlt
+	FOR c IN SELECT table_name FROM information_schema.columns a WHERE a.column_name='gml_id'
+		AND     EXISTS (SELECT * FROM information_schema.columns b WHERE b.column_name='beginnt'    AND a.table_catalog=b.table_catalog AND a.table_schema=b.table_schema AND a.table_name=b.table_name)
+		AND NOT EXISTS (SELECT * FROM information_schema.columns b WHERE b.column_name='identifier' AND a.table_catalog=b.table_catalog AND a.table_schema=b.table_schema AND a.table_name=b.table_name)
+	LOOP
+		EXECUTE 'ALTER TABLE ' || c.table_name || ' ADD identifier character(44)';
+	END LOOP;
+
+	-- Spalte endet ergÃ€nzen, wo sie fehlt
+	FOR c IN SELECT table_name FROM information_schema.columns a WHERE a.column_name='gml_id'
+		AND     EXISTS (SELECT * FROM information_schema.columns b WHERE b.column_name='beginnt' AND a.table_catalog=b.table_catalog AND a.table_schema=b.table_schema AND a.table_name=b.table_name)
+		AND NOT EXISTS (SELECT * FROM information_schema.columns b WHERE b.column_name='endet'   AND a.table_catalog=b.table_catalog AND a.table_schema=b.table_schema AND a.table_name=b.table_name)
+	LOOP
+		EXECUTE 'ALTER TABLE ' || c.table_name || ' ADD endet character(20) CHECK (endet>beginnt)';
+	END LOOP;
+
+	-- Lebensdauer-Constraint ergÃ€nzen
+	FOR c IN SELECT table_name FROM information_schema.columns a WHERE a.column_name='gml_id'
+		AND EXISTS (SELECT * FROM information_schema.columns b WHERE b.column_name='beginnt' AND a.table_catalog=b.table_catalog AND a.table_schema=b.table_schema AND a.table_name=b.table_name)
+		AND EXISTS (SELECT * FROM information_schema.columns b WHERE b.column_name='endet'   AND a.table_catalog=b.table_catalog AND a.table_schema=b.table_schema AND a.table_name=b.table_name)
+	LOOP
+		EXECUTE 'ALTER TABLE ' || c.table_name || ' DROP CONSTRAINT IF EXISTS ' || c.table_name || '_lebensdauer';
+		EXECUTE 'ALTER TABLE ' || c.table_name || ' ADD CONSTRAINT ' || c.table_name || '_lebensdauer CHECK (beginnt IS NOT NULL AND endet>beginnt)';
+	END LOOP;
+
+	-- Indizes aktualisieren
+	FOR c IN SELECT table_name from information_schema.columns a WHERE a.column_name='gml_id'
+		AND EXISTS (SELECT * FROM information_schema.columns b WHERE b.column_name='beginnt' AND a.table_catalog=b.table_catalog AND a.table_schema=b.table_schema AND a.table_name=b.table_name)
+	LOOP
+		-- Vorhandene Indizes droppen (TODO: LÃ¶scht auch die SonderfÃ€lle - entfernen)
+		FOR i IN EXECUTE 'SELECT indexname FROM pg_indexes WHERE NOT indexname LIKE ''%_pk'' AND schemaname=''public'' AND tablename='''||c.table_name||'''' LOOP
+			EXECUTE 'DROP INDEX ' || i.indexname;
+		END LOOP;
+
+		-- Indizes erzeugen
+		EXECUTE 'CREATE UNIQUE INDEX ' || c.table_name || '_id ON ' || c.table_name || '(gml_id,beginnt)';
+		EXECUTE 'CREATE UNIQUE INDEX ' || c.table_name || '_ident ON ' || c.table_name || '(identifier)';
+		EXECUTE 'CREATE INDEX ' || c.table_name || '_gmlid ON ' || c.table_name || '(gml_id)';
+		EXECUTE 'CREATE INDEX ' || c.table_name || '_beginnt ON ' || c.table_name || '(beginnt)';
+		EXECUTE 'CREATE INDEX ' || c.table_name || '_endet ON ' || c.table_name || '(endet)';
+	END LOOP;
+
+	-- Geometrieindizes aktualisieren
+	FOR c IN SELECT table_name from information_schema.columns a WHERE a.column_name='gml_id'
+		AND EXISTS (SELECT * FROM information_schema.columns b WHERE b.column_name='wkb_geometry' AND a.table_catalog=b.table_catalog AND a.table_schema=b.table_schema AND a.table_name=b.table_name)
+	LOOP
+		EXECUTE 'CREATE INDEX ' || c.table_name || '_geom ON ' || c.table_name || ' USING GIST (wkb_geometry)';
+	END LOOP;
+END;
+$$ LANGUAGE plpgsql;
+
+
+-- LÃ¶schsatz verarbeiten (MIT Historie)
+-- context='delete'        => "endete" auf aktuelle Zeit setzen
+-- context='replace'       => "endete" des ersetzten auf "beginnt" des neuen Objekts setzen
+CREATE OR REPLACE FUNCTION delete_feature_hist() RETURNS TRIGGER AS $$
+DECLARE
+	sql TEXT;
+	gml_id TEXT;
+	endete TEXT;
+	n INTEGER;
+BEGIN
+	NEW.context := lower(NEW.context);
+	gml_id      := substr(NEW.featureid, 1, 16);
+
+	IF NEW.context IS NULL THEN
+		NEW.context := 'delete';
+	END IF;
+
+	IF NEW.context='delete' THEN
+		endete := to_char(CURRENT_TIMESTAMP AT TIME ZONE 'UTC','YYYY-MM-DD"T"HH24:MI:SS"Z"');
+
+	ELSIF NEW.context='replace' THEN
+		NEW.safetoignore := lower(NEW.safetoignore);
+
+		IF NEW.safetoignore IS NULL THEN
+			RAISE EXCEPTION '%: safeToIgnore nicht gesetzt.', NEW.featureid;
+		ELSIF NEW.safetoignore<>'true' AND NEW.safetoignore<>'false' THEN
+			RAISE EXCEPTION '%: safeToIgnore ''%'' ungÃŒltig (''true'' oder ''false'' erwartet).', NEW.featureid, NEW.safetoignore;
+		END IF;
+
+		IF NEW.replacedBy IS NULL OR NEW.replacedBy = '' THEN
+			IF NEW.safetoignore = 'true' THEN
+				RAISE NOTICE '%: Nachfolger nicht gesetzt - ignoriert', NEW.featureid;
+				NEW.ignored := true;
+				RETURN NEW;
+			ELSE
+				RAISE EXCEPTION '%: Nachfolger nicht gesetzt', NEW.featureid;
+			END IF;
+		END IF;
+
+		sql := 'SELECT beginnt FROM ' || NEW.typename || ' WHERE identifier=''urn:adv:oid:' || NEW.replacedBy || '''';
+		-- RAISE NOTICE 'SQL: %', sql; 
+		
+		-- FEHLER: identifier enthÃ€lt nur gml_id, aber nicht den Timestamp dahinter
+		--         Daher wird das zu ersetzende Obejkt nicht gefunden
+		
+		EXECUTE sql INTO endete;
+
+/*
+		IF endete IS NULL AND length(NEW.replacedBy)>16 THEN
+			RAISE NOTICE '%: Nachfolger % nicht gefunden - versuche ''%''', NEW.featureid, substr(NEW.replacedBy, 1, 16);
+			sql := 'SELECT beginnt FROM ' || NEW.typename
+			    || ' WHERE gml_id=''' || substr(NEW.replacedBy, 1, 16) || ''''
+			    || ' AND endete IS NULL'
+			    || ' AND identifier<>''urn:adv:oid:'|| NEW.featureid || '''';
+			EXECUTE sql INTO endete;
+		END IF;
+ */
+
+		IF endete IS NULL THEN
+			IF NEW.safetoignore = 'true' THEN
+				RAISE NOTICE '%: Nachfolger % nicht gefunden - ignoriert', NEW.featureid, NEW.replacedBy;
+				NEW.ignored := true;
+				RETURN NEW;
+			ELSE
+				RAISE EXCEPTION '%: Nachfolger % nicht gefunden', NEW.featureid, NEW.replacedBy;
+			END IF;
+		END IF;
+
+		-- RAISE NOTICE '%: Nachfolgeobjekt beginnt um %.', NEW.featureid, endete;
+	ELSE
+		RAISE EXCEPTION '%: UngÃŒltiger Kontext % (''delete'' oder ''replace'' erwartet).', NEW.featureid, NEW.context;
+	END IF;
+
+	sql := 'UPDATE ' || NEW.typename
+		|| ' SET endet=''' || endete || ''''
+		|| ' WHERE (identifier=''urn:adv:oid:' || NEW.featureid || ''' OR identifier=''urn:adv:oid:' || gml_id || ''')'
+		|| ' AND endet IS NULL';
+	-- RAISE NOTICE 'SQL: %', sql; 
+	EXECUTE sql;
+	GET DIAGNOSTICS n = ROW_COUNT;
+	IF n<>1 THEN
+		RAISE NOTICE 'SQL: %', sql; 
+		IF NEW.context = 'delete' OR NEW.safetoignore = 'true' THEN
+			RAISE NOTICE '%: Untergangsdatum von % Objekte statt nur einem auf % gesetzt - ignoriert', NEW.featureid, n, endete;
+			NEW.ignored := true;
+			RETURN NEW;
+		ELSE
+			RAISE EXCEPTION '%: Untergangsdatum von % Objekte statt nur einem auf % gesetzt - ignoriert', NEW.featureid, n, endete;
+		END IF;
+	END IF;
+
+	NEW.ignored := false;
+	RETURN NEW;
+END;
+$$ LANGUAGE plpgsql;
+
+
+-- LÃ¶schsatz verarbeiten (OHNE Historie)
+-- historische Objekte werden sofort gelÃ¶scht.
+-- Siehe Mail W. Jacobs vom 23.03.2012 in PostNAS-Mailingliste
+CREATE OR REPLACE FUNCTION delete_feature_kill() RETURNS TRIGGER AS $$
+DECLARE
+	query TEXT;
+	gml_id TEXT;
+BEGIN
+	NEW.typename := lower(NEW.typename);
+	NEW.context := lower(NEW.context);
+	gml_id      := substr(NEW.featureid, 1, 16);
+
+	IF NEW.context IS NULL THEN
+		NEW.context := 'delete';
+	END IF;
+
+	IF NEW.context='delete' THEN
+		query := 'DELETE FROM ' || NEW.typename || ' WHERE gml_id = ''' || gml_id || '''';
+		EXECUTE query;
+
+		query := 'DELETE FROM alkis_beziehungen WHERE beziehung_von = ''' || gml_id || ''' OR beziehung_zu = ''' || gml_id || '''';
+		EXECUTE query;
+	ELSE
+		-- replace
+		query := 'DELETE FROM ' || NEW.typename || ' WHERE gml_id = ''' || gml_id || '''';
+		EXECUTE query;
+		-- alkis_beziehungen bleibt so
+	END IF;
+
+	NEW.ignored := false;
+	RETURN NEW;
+END;
+$$ LANGUAGE plpgsql;
+
+-- Im Trigger 'delete_feature_trigger' muss eine dieser beiden Functions (_hist oder _kill) verlinkt werden, 
+-- je nachdem ob nur aktuelle oder auch historische Objekte in der Datenbank gefÃŒhrt werden sollen.
+
+
+-- Wenn die Datenbank MIT Historie angelegt wurde, aber eigentlich stÃ¶rt die nur.
+-- Dann kann nach dem Laden hiermit aufgerÃ€umt werden.
+CREATE OR REPLACE FUNCTION alkis_delete_all_endet() RETURNS void AS $$
+DECLARE
+	c RECORD;
+BEGIN
+	-- In allen Tabellen die Objekte LÃ¶schen, die ein Ende-Datum haben
+	FOR c IN 
+		SELECT table_name 
+		FROM information_schema.columns a 
+		WHERE a.column_name='endet'
+		ORDER BY table_name
+	LOOP
+		EXECUTE 'DELETE FROM ' || c.table_name || ' WHERE NOT endet IS NULL';
+		RAISE NOTICE 'LÃ¶sche ended in: %', c.table_name;
+	END LOOP;
+END;
+$$ LANGUAGE plpgsql;
+
+
+-- Alle Tabellen lÃ¶schen
+-- SELECT alkis_drop();
+
+
+-- 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
+	ignored		boolean DEFAULT false,	-- Satz wurde nicht verarbeitet
+	CONSTRAINT delete_pk PRIMARY KEY (ogc_fid)
+);
+
+
+-- Dummy-Eintrag in Metatabelle
+SELECT AddGeometryColumn('delete','dummy',25832,'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 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.';
+COMMENT ON COLUMN delete.context      IS 'Operation ''delete'' oder ''replace''';
+COMMENT ON COLUMN delete.safetoignore IS 'Attribut safeToIgnore von wfsext:Replace';
+COMMENT ON COLUMN delete.replacedBy   IS 'gml_id des Objekts, das featureid ersetzt';
+COMMENT ON COLUMN delete.ignored      IS 'LÃ¶schsatz wurde ignoriert';
+
+
+-- Trigger auf "delete"
+
+--  Optionen  (A)  O D E R  (B)
+
+
+--  (A)  -  Function 'delete_feature_kill'   bei delete und replace wird das alte Objekt sofort entfernt
+
+ CREATE TRIGGER delete_feature_trigger 
+        BEFORE INSERT ON delete 
+        FOR EACH ROW 
+           EXECUTE PROCEDURE delete_feature_kill();
+
+
+--  (B)  -  Function 'delete_feature_hist'  das alte Objekt bekommt einen Eintrag in 'endet'
+--                                          (aktuell ist: WHERE endet IS NULL)
+
+-- CREATE TRIGGER delete_feature_trigger 
+--        BEFORE INSERT ON delete 
+--        FOR EACH ROW 
+--           EXECUTE PROCEDURE delete_feature_hist();
+
+
 -- COMMENT ON DATABASE *** IS 'ALKIS - PostNAS 0.7';
 
@@ -61,6 +450,8 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	sonstigesmodell		character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet			character(20),
+	sonstigesmodell 	varchar,
 	anlass			integer,
 	bauwerksfunktion	integer,
@@ -68,5 +459,5 @@
 );
 
-SELECT AddGeometryColumn('ks_sonstigesbauwerk','wkb_geometry','25832','POLYGON',2);
+SELECT AddGeometryColumn('ks_sonstigesbauwerk','wkb_geometry',25832,'GEOMETRY',2);
 
 CREATE INDEX ks_sonstigesbauwerk_geom_idx ON ks_sonstigesbauwerk USING gist (wkb_geometry);
@@ -89,5 +480,5 @@
 	ogc_fid			serial NOT NULL,
 	beziehung_von		character(16),         --> gml_id
-	beziehungsart		character varying(35),     --  Liste siehe unten
+	beziehungsart		varchar,               --  Liste siehe unten
 	beziehung_zu		character(16),         --> gml_id
 	CONSTRAINT alkis_beziehungen_pk PRIMARY KEY (ogc_fid)
@@ -97,7 +488,5 @@
 
 -- Dummy-Eintrag in Metatabelle
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'alkis_beziehungen', 'dummy', 2, 25832, 'POINT');
+SELECT AddGeometryColumn('alkis_beziehungen','dummy',25832,'POINT',2);
 
 COMMENT ON TABLE  alkis_beziehungen               IS 'zentrale Multi-Verbindungstabelle';
@@ -122,6 +511,8 @@
 	ogc_fid				serial NOT NULL,
 	gml_id				character(16),
+	identifier			character(44),
 	beginnt				character(20),
-	advstandardmodell		character varying(9),
+	endet 				character(20),
+	advstandardmodell		varchar,
 	anlass				integer,
 	artderfestlegung		integer,
@@ -129,12 +520,8 @@
 );
 
-SELECT AddGeometryColumn('ax_anderefestlegungnachwasserrecht','wkb_geometry','25832','POLYGON',2);
-
-CREATE INDEX ax_anderefestlegungnachwasserrecht_geom_idx
-  ON ax_anderefestlegungnachwasserrecht USING gist (wkb_geometry);
-
--- DROP INDEX ax_anderefestlegungnachwasserrecht_gml;
-CREATE UNIQUE INDEX ax_anderefestlegungnachwasserrecht_gml 
-                 ON ax_anderefestlegungnachwasserrecht USING btree (gml_id);
+SELECT AddGeometryColumn('ax_anderefestlegungnachwasserrecht','wkb_geometry',25832,'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);
 
 COMMENT ON TABLE  ax_anderefestlegungnachwasserrecht        IS 'Andere Festlegung nach  W a s s e r r e c h t';
@@ -145,28 +532,18 @@
 -- ----------------------------------------------
 CREATE TABLE ax_baublock (
-	ogc_fid serial NOT NULL,
-	gml_id			character(16),
-	beginnt			character(20),
+	ogc_fid			serial NOT NULL,
+	gml_id			character(16),
+	identifier		character(44),
+	beginnt			character(20),
+	endet			character(20),
 	advstandardmodell	character(9),
 	anlass			integer,
 	baublockbezeichnung	integer,
-  CONSTRAINT ax_baublock_pk PRIMARY KEY (ogc_fid)
-);
-SELECT AddGeometryColumn('ax_baublock','wkb_geometry','25832','MULTIPOLYGON',2);
-
--- auf POLYGON erweitern
-ALTER TABLE ax_baublock 
-  DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-ALTER TABLE ax_baublock
-  ADD CONSTRAINT enforce_geotype_wkb_geometry CHECK (geometrytype(wkb_geometry) = 'POLYGON'::text 
-                                                  OR geometrytype(wkb_geometry) = 'MULTIPOLYGON'::text 
-                                                  OR wkb_geometry IS NULL);
-
+	CONSTRAINT ax_baublock_pk PRIMARY KEY (ogc_fid)
+);
+SELECT AddGeometryColumn('ax_baublock','wkb_geometry',25832,'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);
+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';
@@ -179,20 +556,19 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	land			integer,
 	stelle			integer,
-	punktkennung		character varying(15), -- integer
+	punktkennung		varchar, -- integer
 	--sonstigeeigenschaft character(26),
 	CONSTRAINT ax_besonderertopographischerpunkt_pk PRIMARY KEY (ogc_fid)
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_besonderertopographischerpunkt', 'dummy', 2, 25832, 'POINT');
-
-CREATE UNIQUE INDEX ax_besonderertopographischerpunkt_gml 
-                 ON ax_besonderertopographischerpunkt USING btree (gml_id);
+SELECT AddGeometryColumn('ax_besonderertopographischerpunkt','dummy',25832,'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';
@@ -205,6 +581,8 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	klassifizierung		integer,
@@ -212,10 +590,8 @@
 );
 
-SELECT AddGeometryColumn('ax_bewertung','wkb_geometry','25832','POLYGON',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);
+SELECT AddGeometryColumn('ax_bewertung','wkb_geometry',25832,'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';
@@ -228,28 +604,19 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	artderfestlegung	integer,
-	art			character varying(40), -- (15)
-	"name"			character varying(25), -- (15)
-  CONSTRAINT ax_denkmalschutzrecht_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_denkmalschutzrecht','wkb_geometry','25832','POLYGON',2);
-
--- auf MULTIPOLYGON erweitern
-ALTER TABLE ax_denkmalschutzrecht 
-  DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-ALTER TABLE ax_denkmalschutzrecht
-  ADD CONSTRAINT enforce_geotype_wkb_geometry CHECK (geometrytype(wkb_geometry) = 'POLYGON'::text 
-                                                  OR geometrytype(wkb_geometry) = 'MULTIPOLYGON'::text 
-                                                  OR wkb_geometry IS NULL);
-
-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);
+	art			varchar, -- (15)
+	"name"			varchar, -- (15)
+	CONSTRAINT ax_denkmalschutzrecht_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_denkmalschutzrecht','wkb_geometry',25832,'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);
 
 COMMENT ON TABLE  ax_denkmalschutzrecht        IS 'D e n k m a l s c h u t z r e c h t';
@@ -260,19 +627,20 @@
 -- -----------------------------------------
 CREATE TABLE ax_gebaeudeausgestaltung (
-	ogc_fid serial NOT NULL,
-	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character(9),
+	ogc_fid			serial NOT NULL,
+	gml_id			character(16),
+	identifier		character(44),
+	beginnt			character(20),
+	endet			character(20),
+	advstandardmodell	character(4),
 	anlass			integer,
 	darstellung		integer,
+	zeigtauf		varchar,
 	CONSTRAINT ax_gebaeudeausgestaltung_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_gebaeudeausgestaltung','wkb_geometry','25832','LINESTRING',2);
+SELECT AddGeometryColumn('ax_gebaeudeausgestaltung','wkb_geometry',25832,'LINESTRING',2);
 
 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);
+CREATE UNIQUE INDEX ax_gebaeudeausgestaltung_gml ON ax_gebaeudeausgestaltung USING btree (gml_id,beginnt);
 
 COMMENT ON TABLE  ax_gebaeudeausgestaltung        IS 'G e b a e u d e a u s g e s t a l t u n g';
@@ -285,8 +653,10 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
+	identifier		character(44),
 	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"
 --	beginnt			timestamp,		-- timestamp-Format wird nicht geladen, bleibt leer
-	advstandardmodell	character varying(9),
+	advstandardmodell	varchar,
 	anlass			integer,
 	qualitaetsangaben	integer,		-- zb: "1000" (= Massstab)
@@ -298,27 +668,23 @@
 	ortsteil		integer,		--         0
 	--			--			-- --
-	postleitzahl		character varying(5),	-- mit fuehrenden Nullen
-	ortsnamepost		character varying(40),	-- 
-	zusatzortsname		character varying(30),	-- 
-	strassenname		character varying(50),	-- 
+	postleitzahl		varchar,	-- mit fuehrenden Nullen
+	ortsnamepost		varchar,	-- 
+	zusatzortsname		varchar,	-- 
+	strassenname		varchar,	-- 
 	strassenschluessel	integer,		-- max.  5 Stellen
 	hausnummer		integer,		-- meist 3 Stellen
-	adressierungszusatz	character varying(1),	-- Hausnummernzusatz-Buchstabe
+	adressierungszusatz	varchar,	-- Hausnummernzusatz-Buchstabe
 	CONSTRAINT ax_georeferenziertegebaeudeadresse_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_georeferenziertegebaeudeadresse','wkb_geometry','25832','POINT',2);
+SELECT AddGeometryColumn('ax_georeferenziertegebaeudeadresse','wkb_geometry',25832,'POINT',2);
 
 CREATE INDEX ax_georeferenziertegebaeudeadresse_geom_idx ON ax_georeferenziertegebaeudeadresse USING gist (wkb_geometry);
 
 -- Index fÃŒr alkis_beziehungen
-CREATE INDEX ax_georeferenziertegebaeudeadresse_gml 
-          ON ax_georeferenziertegebaeudeadresse USING btree (gml_id);
+CREATE UNIQUE INDEX ax_georeferenziertegebaeudeadresse_gml ON ax_georeferenziertegebaeudeadresse USING btree (gml_id,beginnt);
 
 -- Suchindex Adresse
-CREATE INDEX ax_georeferenziertegebaeudeadresse_adr 
-          ON ax_georeferenziertegebaeudeadresse 
-  USING btree (strassenschluessel, hausnummer, adressierungszusatz);
-
+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';
@@ -331,12 +697,14 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	anlass			integer,
-	art			character varying(40),  --(15)
-	"name"			character varying(27),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	anlass			integer,
+	art			varchar,
+	"name"			varchar,
 	bedeutung		integer,
 	land			integer,
-	nummerierungsbezirk	character varying(10),
+	nummerierungsbezirk	varchar,
 	gemarkungsnummer 	integer,
 	nummerdesgrablochs	integer,
@@ -344,12 +712,8 @@
 );
 
-SELECT AddGeometryColumn('ax_grablochderbodenschaetzung','wkb_geometry','25832','POINT',2);
-
-CREATE INDEX ax_grablochderbodenschaetzung_geom_idx  
-          ON ax_grablochderbodenschaetzung  USING gist  (wkb_geometry);
-
--- DROP INDEX ax_grablochderbodenschaetzung_gml;
-CREATE UNIQUE INDEX ax_grablochderbodenschaetzung_gml 
-                 ON ax_grablochderbodenschaetzung USING btree (gml_id);
+SELECT AddGeometryColumn('ax_grablochderbodenschaetzung','wkb_geometry',25832,'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 a e t z u n g';
@@ -361,55 +725,55 @@
 -- Variante A: "Standardhistorie" (statt ax_historischesflurstueckohneraumbezug)
 
--- Diese Tabelle bleibt beim Laden mit produktiven Daten (Vollhistorie) leer.
--- Wird vorÃŒbergehend benÃ¶tigt fÃŒr die Demodaten RLP Mustermonzel.
+-- Die "alte" Historie, die schon aus dem VorgÃ€ngerverfahren ALB ÃŒbernommen wurde.
+-- VorgÃ€nger-Nachfolger-Beziehungen, ohne Geometrie
 
 CREATE TABLE ax_historischesflurstueckalb (
-	ogc_fid			serial NOT NULL,
-	gml_id			character(16),
+	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,         --
+	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 character(5),        -- ARZ
-	zweifelhafterFlurstuecksnachweis character(5), -- ZFM Boolean
-	rechtsbehelfsverfahren	integer,               -- RBV
-	zeitpunktderentstehung	character(10),         -- ZDE  Inhalt jjjj-mm-tt  besser Format date ?
+	flurstueckskennzeichen		character(20),         -- Inhalt rechts mit __ auf 20 aufgefÃŒllt
+
+	amtlicheflaeche			double precision,      -- AFL
+	abweichenderrechtszustand	character(5),          -- ARZ
+	zweifelhafterFlurstuecksnachweis character(5),         -- ZFM Boolean
+	rechtsbehelfsverfahren		integer,               -- RBV
+	zeitpunktderentstehung		character(10),         -- ZDE  Inhalt jjjj-mm-tt  besser Format date ?
 --	gemeindezugehoerigkeit	integer,
 	gemeinde		integer,
 	-- GID: ENDE AX_Flurstueck_Kerndaten
 
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	anlass			integer,
-	"name"			character varying[],
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	anlass			integer,
+	"name"			varchar[],
 	blattart		integer,
-	buchungsart		character varying(11),
+	buchungsart		varchar,
 	buchungsblattkennzeichen	integer,
 	bezirk					integer,
-	buchungsblattnummermitbuchstabenerweiterung	character varying(7), --integer,
+	buchungsblattnummermitbuchstabenerweiterung	varchar, --integer,
 	laufendenummerderbuchungsstelle			integer,
-	zeitpunktderentstehungdesbezugsflurstuecks	character varying(10),
-
-	vorgaengerflurstueckskennzeichen	character varying[],
-	nachfolgerflurstueckskennzeichen	character varying[],
+	zeitpunktderentstehungdesbezugsflurstuecks	varchar,
+
+	vorgaengerflurstueckskennzeichen	varchar[],
+	nachfolgerflurstueckskennzeichen	varchar[],
 	CONSTRAINT ax_historischesflurstueckalb_pk PRIMARY KEY (ogc_fid)
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_historischesflurstueckalb', 'dummy', 2, 25832, 'POINT');
-
-CREATE UNIQUE INDEX ax_historischesflurstueckalb_gml 
-                 ON ax_historischesflurstueckalb USING btree (gml_id);
-
--- Suche nach VorgÃ€nger / Nachfolger
--- ++ Welche Methode fÃŒr ein Array? Wirkt das bei der Suche nach einem einzelnen Wert aus dem Array?
+SELECT AddGeometryColumn('ax_historischesflurstueckalb','dummy',25832,'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 (vorgaengerflurstueckskennzeichen ASC);
@@ -459,64 +823,52 @@
 	nenner				integer,         --
 	-- daraus abgeleitet:
-	flurstueckskennzeichen	character(20),         -- Inhalt rechts mit __ auf 20 aufgefÃŒllt
-	amtlicheflaeche			double precision,      -- AFL
-	abweichenderrechtszustand	character varying(5),  -- ARZ
-	zweifelhafterFlurstuecksnachweis character varying(5), -- ZFM Boolean
-	rechtsbehelfsverfahren		integer,               -- RBV
-	zeitpunktderentstehung		character(10),         -- ZDE  Inhalt jjjj-mm-tt  besser Format date ?
+	flurstueckskennzeichen	character(20),			-- Inhalt rechts mit __ auf 20 aufgefÃŒllt
+	amtlicheflaeche			double precision,	-- AFL
+	abweichenderrechtszustand	varchar,		-- ARZ
+	zweifelhafterFlurstuecksnachweis varchar,		-- ZFM Boolean
+	rechtsbehelfsverfahren		integer,		-- RBV
+	zeitpunktderentstehung		character(10),		-- ZDE  Inhalt jjjj-mm-tt  besser Format date ?
 --	gemeindezugehoerigkeit		integer,
 	gemeinde			integer,
 	-- GID: ENDE AX_Flurstueck_Kerndaten
+	identifier			character(44),
 	beginnt				character(20),
-	advstandardmodell		character varying(9),
+	endet 				character(20),
+	advstandardmodell		varchar,
 	anlass				integer,
-	art				character varying[], -- Array
-	"name"				character varying[], -- Array
+	art				varchar[],
+	"name"				varchar[],
 	regierungsbezirk		integer,
 	kreis				integer,
-	vorgaengerflurstueckskennzeichen	character varying[],  -- array von FS-Kennzeichen
-	nachfolgerflurstueckskennzeichen	character varying[],
+	vorgaengerflurstueckskennzeichen	varchar[],
+	nachfolgerflurstueckskennzeichen	varchar[],
 	blattart			integer,
 	buchungsart			integer,
 	buchungsblattkennzeichen	double precision,
 	bezirk				integer,
-	buchungsblattnummermitbuchstabenerweiterung	character(20), --integer, -- hier lÃ€nger als (7)!
+	buchungsblattnummermitbuchstabenerweiterung	character(20), -- hier lÃ€nger als (7)!
 	laufendenummerderbuchungsstelle	integer,
 	CONSTRAINT ax_historischesflurstueck_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_historischesflurstueck','wkb_geometry','25832','POLYGON',2);
-
--- auf MULTIPOLYGON erweitern
-ALTER TABLE ax_historischesflurstueck 
-  DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-ALTER TABLE ax_historischesflurstueck
-  ADD CONSTRAINT enforce_geotype_wkb_geometry CHECK (geometrytype(wkb_geometry) = 'POLYGON'::text 
-                                                  OR geometrytype(wkb_geometry) = 'MULTIPOLYGON'::text 
-                                                  OR wkb_geometry IS NULL);
-
-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);
-
+SELECT AddGeometryColumn('ax_historischesflurstueck','wkb_geometry',25832,'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);
-COMMENT ON INDEX idx_histfsalb_vor IS 'Suchen nach VorgÃ€nger-FlurstÃŒck';
-
-CREATE INDEX idx_histfs_nach
-   ON ax_historischesflurstueck (vorgaengerflurstueckskennzeichen ASC);
-COMMENT ON INDEX idx_histfsalb_vor IS 'Suchen nach Nachfolger-FlurstÃŒck';
+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. 
+--  "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."
 
 
@@ -559,6 +911,8 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	artderfestlegung	integer,
@@ -566,20 +920,8 @@
 );
 
-SELECT AddGeometryColumn('ax_naturumweltoderbodenschutzrecht','wkb_geometry','25832','POLYGON',2);
-
--- auf MULTIPOLYGON erweitern
-ALTER TABLE ax_naturumweltoderbodenschutzrecht 
-  DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-ALTER TABLE ax_naturumweltoderbodenschutzrecht
-  ADD CONSTRAINT enforce_geotype_wkb_geometry CHECK (geometrytype(wkb_geometry) = 'POLYGON'::text 
-                                                  OR geometrytype(wkb_geometry) = 'MULTIPOLYGON'::text 
-                                                  OR wkb_geometry IS NULL);
-
-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);
+SELECT AddGeometryColumn('ax_naturumweltoderbodenschutzrecht','wkb_geometry',25832,'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);
 
 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';
@@ -587,29 +929,49 @@
 
 
--- 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
+-- 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),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	artderfestlegung	integer,
-	art			character varying(40), --(15)
-	"name"			character varying(20),
-	nummerdesschutzgebietes	character varying(20),
+	art			varchar[], --(15)
+	"name"			varchar[],
+	nummerdesschutzgebietes	varchar,
 	CONSTRAINT ax_schutzgebietnachwasserrecht_pk PRIMARY KEY (ogc_fid)
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_schutzgebietnachwasserrecht', 'dummy', 2, 25832, 'POINT');
-
-CREATE UNIQUE INDEX ax_schutzgebietnachwasserrecht_gml 
-                 ON ax_schutzgebietnachwasserrecht USING btree (gml_id);
+SELECT AddGeometryColumn('ax_schutzgebietnachwasserrecht','dummy',25832,'POINT',2);
+
+CREATE UNIQUE INDEX ax_schutzgebietnachwasserrecht_gml ON ax_schutzgebietnachwasserrecht USING btree (gml_id,beginnt);
 
 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			integer,
+	artderfestlegung	integer,
+	CONSTRAINT ax_schutzgebietnachnaturumweltoderbodenschutzrecht_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_schutzgebietnachnaturumweltoderbodenschutzrecht','dummy',25832,'POINT',2);
+
+CREATE UNIQUE INDEX ax_schutzgebietnachnaturumweltoderbodenschutzrecht_gml ON ax_schutzgebietnachnaturumweltoderbodenschutzrecht USING btree (gml_id,beginnt);
+
+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
@@ -618,27 +980,18 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	"zone"			integer,
-	art			character varying(40), --(15)
+	art			varchar[], --(15)
 	CONSTRAINT ax_schutzzone_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_schutzzone','wkb_geometry','25832','POLYGON',2);
-
--- auf MULTIPOLYGON erweitern
-ALTER TABLE ax_schutzzone 
-  DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-ALTER TABLE ax_schutzzone
-  ADD CONSTRAINT enforce_geotype_wkb_geometry CHECK (geometrytype(wkb_geometry) = 'POLYGON'::text 
-                                                  OR geometrytype(wkb_geometry) = 'MULTIPOLYGON'::text 
-                                                  OR wkb_geometry IS NULL);
-
-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);
+SELECT AddGeometryColumn('ax_schutzzone','wkb_geometry',25832,'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';
@@ -651,18 +1004,18 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	liniendarstellung	integer,
-	sonstigeeigenschaft	character varying(21),
+	sonstigeeigenschaft	varchar,
 	CONSTRAINT ax_topographischelinie_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_topographischelinie','wkb_geometry','25832','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);
+SELECT AddGeometryColumn('ax_topographischelinie','wkb_geometry',25832,'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';
@@ -683,24 +1036,20 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying[],
-	sonstigesmodell		character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar[],
+	sonstigesmodell		varchar,
 	anlass			integer,
 	signaturnummer		integer,
-	art			character varying(20),
+	art			varchar,
 	drehwinkel		double precision,
 	CONSTRAINT ap_ppo_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ap_ppo','wkb_geometry','25832','MULTIPOINT',2);  
-
--- verschiedene Geometrie-Typen (0.5: POINT -> MULTIPOINT)
-ALTER TABLE ap_ppo DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-CREATE INDEX ap_ppo_geom_idx ON ap_ppo USING gist (wkb_geometry);
-
--- Verbindungstabellen indizieren
-CREATE INDEX ap_ppo_gml 
-          ON ap_ppo     USING btree (gml_id);
+SELECT AddGeometryColumn('ap_ppo','wkb_geometry',25832,'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);
 
 COMMENT ON TABLE  ap_ppo        IS 'PPO: PunktfÃ¶rmiges PrÃ€sentationsobjekt';
@@ -713,18 +1062,17 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying[],	-- Array!
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar[],		-- Array!
 	anlass			integer,
 	signaturnummer		integer,
-	art			character varying(5),
+	art			varchar,
 	CONSTRAINT ap_lpo_pk PRIMARY KEY (ogc_fid)
 );
-SELECT AddGeometryColumn('ap_lpo','wkb_geometry','25832','LINESTRING',2);
-
-CREATE INDEX ap_lpo_geom_idx ON ap_lpo USING gist (wkb_geometry);
-
---DROP INDEX ap_lpo_gml;
-CREATE UNIQUE INDEX ap_lpo_gml 
-                 ON ap_lpo USING btree (gml_id);
+SELECT AddGeometryColumn('ap_lpo','wkb_geometry',25832,'LINESTRING',2);
+
+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);
 
 COMMENT ON TABLE  ap_lpo        IS 'LPO: LinienfÃ¶rmiges PrÃ€sentationsobjekt';
@@ -737,25 +1085,25 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying[],
-	anlass			integer,
-	schriftinhalt		character varying(50),  -- (47)
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar[],
+	anlass			integer,
+	schriftinhalt		varchar,  -- (47)
 	fontsperrung		double precision,
 	skalierung		double precision,
-	horizontaleausrichtung	character varying(13),
-	vertikaleausrichtung	character varying(5),
+	horizontaleausrichtung	varchar,
+	vertikaleausrichtung	varchar,
 	signaturnummer		integer,
-	art			character varying(40),  -- Inhalte z.B. "ZAE_NEN" siehe unten
+	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','25832','POINT',2);
-
-CREATE INDEX ap_pto_geom_idx ON ap_pto USING gist (wkb_geometry);
-
--- Verbindungstabellen indizieren
-CREATE INDEX ap_pto_gml ON ap_pto USING btree (gml_id);
-CREATE INDEX art_idx    ON ap_pto USING btree (art);
+SELECT AddGeometryColumn('ap_pto','wkb_geometry',25832,'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);
 
 COMMENT ON TABLE  ap_pto               IS 'PTO: TextfÃ¶rmiges PrÃ€sentationsobjekt mit punktfÃ¶rmiger Textgeometrie ';
@@ -777,23 +1125,23 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	sonstigesmodell		character varying(9),
-	anlass			integer,
-	art			character varying(3),
-	schriftinhalt		character varying(40),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	sonstigesmodell		varchar,
+	anlass			integer,
+	art			varchar,
+	schriftinhalt		varchar,
 	fontsperrung		integer,
 	skalierung		integer,
-	horizontaleausrichtung	character varying(12),
-	vertikaleausrichtung	character varying(5),
+	horizontaleausrichtung	varchar,
+	vertikaleausrichtung	varchar,
 	CONSTRAINT ap_lto_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ap_lto','wkb_geometry','25832','LINESTRING',2);
-
-CREATE INDEX ap_lto_geom_idx ON ap_lto USING gist (wkb_geometry);
-
--- Verbindungstabellen indizieren
-CREATE INDEX ap_lto_gml ON ap_lto USING btree (gml_id);
+SELECT AddGeometryColumn('ap_lto','wkb_geometry',25832,'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);
 
 COMMENT ON TABLE  ap_lto        IS 'LTO: TextfÃ¶rmiges PrÃ€sentationsobjekt mit linienfÃ¶rmiger Textgeometrie';
@@ -806,8 +1154,10 @@
 	ogc_fid			serial NOT NULL, 
 	gml_id			character(16), 
+	identifier		character(44),
 	beginnt			character(20),			-- Datumsformat
-	advstandardmodell	character varying(9),
+	endet 			character(20),			-- Datumsformat
+	advstandardmodell	varchar,
 	anlass			integer, 
-	art			character varying(40),		-- (37)
+	art			varchar,		-- (37)
 	signaturnummer		integer,
 	CONSTRAINT ap_darstellung_pk PRIMARY KEY (ogc_fid)
@@ -815,11 +1165,7 @@
 
 -- Dummy-Eintrag in Metatabelle
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ap_darstellung', 'dummy', 2, 25832, 'POINT');
-
---DROP INDEX ap_darstellung_gml;
-CREATE UNIQUE INDEX ap_darstellung_gml 
-                 ON ap_darstellung USING btree (gml_id);
+SELECT AddGeometryColumn('ap_darstellung','dummy',25832,'POINT',2);
+
+CREATE UNIQUE INDEX ap_darstellung_gml ON ap_darstellung USING btree (gml_id,beginnt);
 
 COMMENT ON TABLE  ap_darstellung        IS 'A P  D a r s t e l l u n g';
@@ -840,5 +1186,5 @@
 	ogc_fid				serial NOT NULL,
 	gml_id				character(16),         -- Datenbank-Tabelle interner SchlÃŒssel
---	zustaendigeStelle		character varying,     -- ZST
+--	zustaendigeStelle		varchar,               -- ZST
 
 	-- GID: AX_Flurstueck_Kerndaten
@@ -854,18 +1200,19 @@
 
 	amtlicheflaeche			double precision,      -- AFL
-	abweichenderrechtszustand	character varying(5),  -- ARZ
-	zweifelhafterFlurstuecksnachweis character varying(5), -- ZFM Boolean
+	abweichenderrechtszustand	varchar,               -- ARZ
+	zweifelhafterFlurstuecksnachweis varchar,              -- ZFM Boolean
 	rechtsbehelfsverfahren		integer,               -- RBV
 	zeitpunktderentstehung		character(10),         -- ZDE  Inhalt jjjj-mm-tt  besser Format date ?
 
---	gemeindezugehoerigkeit		integer,		-- raus 28.02.2012, bleibt leer
 	gemeinde			integer,
 	-- GID: ENDE AX_Flurstueck_Kerndaten
 
-	beginnt				character(20),         -- Timestamp der Enststehung
-	advstandardmodell 		character varying(9),  -- steuert die Darstellung nach Kartentyp
-	anlass				integer,               -- 
---	art				character varying[],   -- Wozu braucht man das? Weglassen?
-	"name"				character varying[],   -- 03.11.2011: array, Buchauskunft anpassen!
+	identifier			character(44),         -- global eindeutige Objektnummer
+	beginnt				character(20),         -- Timestamp der Entstehung
+	endet 				character(20),         -- Timestamp des Untergangs
+	advstandardmodell 		varchar,               -- steuert die Darstellung nach Kartentyp
+	anlass				integer,
+--	art				varchar[],   -- Wozu braucht man das? Weglassen?
+	"name"				varchar[],   -- 03.11.2011: array, Buchauskunft anpassen!
 	regierungsbezirk		integer,
 	kreis				integer,
@@ -873,10 +1220,11 @@
 -- neu aus SVN-Version 28.02.2012 hinzugefuegt
 -- Dies ist noch zu ueberpruefen
-	angabenzumabschnittflurstueck	character varying[],
+	angabenzumabschnittflurstueck	varchar[],
 --	"gemeindezugehoerigkeit|ax_gemeindekennzeichen|land" integer, -- siehe "land"
-	kennungschluessel		character varying[],
+	kennungschluessel		varchar[],
 	flaechedesabschnitts		double precision[],
+
 	angabenzumabschnittnummeraktenzeichen integer[],
-	angabenzumabschnittbemerkung	character varying[],
+	angabenzumabschnittbemerkung	varchar[],
 
 	-- siehe alkis_relationen
@@ -888,14 +1236,8 @@
 );
 
-
-SELECT AddGeometryColumn('ax_flurstueck','wkb_geometry','25832','MULTIPOLYGON',2);
--- verschiedene Geometrietypen?
-ALTER TABLE ax_flurstueck DROP CONSTRAINT enforce_geotype_wkb_geometry;
+SELECT AddGeometryColumn('ax_flurstueck','wkb_geometry',25832,'GEOMETRY',2);
 
 CREATE INDEX ax_flurstueck_geom_idx   ON ax_flurstueck USING gist (wkb_geometry);
-
--- Verbindungstabellen indizieren
-CREATE UNIQUE INDEX ax_flurstueck_gml
-                 ON ax_flurstueck  USING btree (gml_id);
+CREATE UNIQUE INDEX ax_flurstueck_gml ON ax_flurstueck USING btree (gml_id,beginnt);
 
   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.';
@@ -948,6 +1290,8 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	artderflurstuecksgrenze	integer[],  -- geaendert. 18.09.2011
@@ -955,11 +1299,8 @@
 );
 
-SELECT AddGeometryColumn('ax_besondereflurstuecksgrenze','wkb_geometry','25832','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);
+SELECT AddGeometryColumn('ax_besondereflurstuecksgrenze','wkb_geometry',25832,'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';
@@ -972,27 +1313,25 @@
 	ogc_fid				serial NOT NULL,
 	gml_id				character(16),
+	identifier			character(44),
 	beginnt				character(20),
-	advstandardmodell		character varying(9),
+	endet 				character(20),
+	advstandardmodell		varchar,
 	anlass				integer,
-	punktkennung			character varying(15), -- integer,
+	punktkennung			varchar, -- integer,
 	land				integer,
 	stelle				integer,
 	abmarkung_marke			integer,
-	festgestelltergrenzpunkt	character varying(4),
+	festgestelltergrenzpunkt	varchar,
 	bemerkungzurabmarkung		integer,
-	sonstigeeigenschaft		character varying[],
-	art				character varying(40), --(37)
-	"name"				character varying[],
+	sonstigeeigenschaft		varchar[],
+	art				varchar, --(37)
+	"name"				varchar[],
 	zeitpunktderentstehung		integer,
 	CONSTRAINT ax_grenzpunkt_pk PRIMARY KEY (ogc_fid)
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_grenzpunkt', 'dummy', 2, 25832, 'POINT');
-
--- DROP INDEX ax_grenzpunkt_gml;
-CREATE UNIQUE INDEX ax_grenzpunkt_gml 
-                 ON ax_grenzpunkt USING btree (gml_id);
+SELECT AddGeometryColumn('ax_grenzpunkt','dummy',25832,'POINT',2);
+
+CREATE UNIQUE INDEX ax_grenzpunkt_gml ON ax_grenzpunkt USING btree (gml_id,beginnt);
 
 COMMENT ON TABLE  ax_grenzpunkt        IS 'G r e n z p u n k t';
@@ -1008,23 +1347,22 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	anlass			integer,
-	unverschluesselt	character varying(61), -- StraÃenname
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	anlass			integer,
+	unverschluesselt	varchar, -- StraÃenname
 	land			integer,
 	regierungsbezirk	integer,
 	kreis			integer,
 	gemeinde		integer,
-	lage			character varying(5),
+	lage			varchar,
 	CONSTRAINT ax_lagebezeichnungohnehausnummer_pk PRIMARY KEY (ogc_fid)
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_lagebezeichnungohnehausnummer', 'dummy', 2, 25832, 'POINT');
+SELECT AddGeometryColumn('ax_lagebezeichnungohnehausnummer','dummy',25832,'POINT',2);
 
 -- Verbindungstabellen indizieren
-CREATE UNIQUE INDEX ax_lagebezeichnungohnehausnummer_gml 
-                 ON ax_lagebezeichnungohnehausnummer USING btree (gml_id);
+CREATE UNIQUE INDEX ax_lagebezeichnungohnehausnummer_gml ON ax_lagebezeichnungohnehausnummer USING btree (gml_id,beginnt);
 
 -- Such-Index (z.B. fuer Navigations-Programm)
@@ -1042,6 +1380,8 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	land			integer,
@@ -1049,20 +1389,13 @@
 	kreis			integer,
 	gemeinde		integer,
-	lage			character varying(5),	-- Strassenschluessel
-	hausnummer		character varying(6),	-- Nummer (blank) Zusatz
+	lage			varchar,	-- Strassenschluessel
+	hausnummer		varchar,	-- Nummer (blank) Zusatz
 	CONSTRAINT ax_lagebezeichnungmithausnummer_pk PRIMARY KEY (ogc_fid)
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_lagebezeichnungmithausnummer', 'dummy', 2, 25832, 'POINT');
-
--- Verbindungstabellen indizieren
-CREATE UNIQUE INDEX ax_lagebezeichnungmithausnummer_gml 
-                 ON ax_lagebezeichnungmithausnummer USING btree (gml_id);
-
--- Adressen-Suche nach Strasse
-CREATE INDEX ax_lagebezeichnungmithausnummer_lage 
-          ON ax_lagebezeichnungmithausnummer USING btree (gemeinde, lage);
+SELECT AddGeometryColumn('ax_lagebezeichnungmithausnummer','dummy',25832,'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';
@@ -1076,6 +1409,8 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	land			integer,
@@ -1083,17 +1418,14 @@
 	kreis			integer,
 	gemeinde		integer,
-	lage			character varying(5), -- Strassenschluessel
-	pseudonummer		character varying(5),
-	laufendenummer		character varying(2), -- leer, Zahl, "P2"
+	lage			varchar, -- Strassenschluessel
+	pseudonummer		varchar,
+	laufendenummer		varchar, -- leer, Zahl, "P2"
 	CONSTRAINT ax_lagebezeichnungmitpseudonummer_pk PRIMARY KEY (ogc_fid)
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_lagebezeichnungmitpseudonummer', 'dummy', 2, 25832, 'POINT');
+SELECT AddGeometryColumn('ax_lagebezeichnungmitpseudonummer','dummy',25832,'POINT',2);
 
 -- Verbindungstabellen indizieren
-CREATE UNIQUE INDEX ax_lagebezeichnungmitpseudonummer_gml 
-                 ON ax_lagebezeichnungmitpseudonummer USING btree (gml_id);
+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';
@@ -1111,22 +1443,20 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	anlass			integer,
-	punktkennung		character varying(15),   --integer ist zu klein,
+	identifier              character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	anlass			integer,
+	punktkennung		varchar,   --integer ist zu klein,
 	land			integer,
 	stelle			integer,
-	sonstigeeigenschaft	character varying[],
+	sonstigeeigenschaft	varchar[],
 	vermarkung_marke	integer,
 	CONSTRAINT ax_aufnahmepunkt_pk PRIMARY KEY (ogc_fid)
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_aufnahmepunkt', 'dummy', 2, 25832, 'POINT');
-
--- DROP INDEX ax_aufnahmepunkt_gml;
-CREATE UNIQUE INDEX ax_aufnahmepunkt_gml 
-                 ON ax_aufnahmepunkt USING btree (gml_id);
+SELECT AddGeometryColumn('ax_aufnahmepunkt','dummy',25832,'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';
@@ -1139,27 +1469,18 @@
 CREATE TABLE ax_sicherungspunkt (
 	ogc_fid			serial NOT NULL,
-	gml_id			character varying(16),
-	beginnt			character varying(20),
-	advstandardmodell	character varying(9),
-	anlass			integer,
-	"name"			character varying(15),
-	punktkennung		character varying(15),
+	gml_id			varchar,
+	beginnt			varchar,
+	advstandardmodell	varchar,
+	anlass			integer,
+	"name"			varchar,
+	punktkennung		varchar,
 	land			integer,
 	stelle			integer,
-	sonstigeeigenschaft	character varying(22),
+	sonstigeeigenschaft	varchar,
 	vermarkung_marke	integer,
  	CONSTRAINT ax_sicherungspunkt_pk PRIMARY KEY (ogc_fid)
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_sicherungspunkt', 'dummy', 2, 25832, 'POINT');
-
-CREATE UNIQUE INDEX ax_sicherungspunkt_idx 
-                 ON ax_sicherungspunkt USING btree (gml_id);
-
-COMMENT ON TABLE  ax_sicherungspunkt        IS 'S i c h e r u n g s - P u n k t';
-COMMENT ON COLUMN ax_sicherungspunkt.gml_id IS 'Identifikator, global eindeutig';
-
+SELECT AddGeometryColumn('ax_sicherungspunkt','dummy',25832,'POINT',2);
 
 
@@ -1169,22 +1490,20 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	vermarkung_marke	integer,
-	punktkennung		character varying(15), -- integer,
+	punktkennung		varchar, -- integer,
 	land			integer,
 	stelle			integer,
-	sonstigeeigenschaft	character varying[],
+	sonstigeeigenschaft	varchar[],
 	CONSTRAINT ax_sonstigervermessungspunkt_pk PRIMARY KEY (ogc_fid)
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_sonstigervermessungspunkt', 'dummy', 2, 25832, 'POINT');
-
--- DROP INDEX ax_sonstigervermessungspunkt_gml;
-CREATE UNIQUE INDEX ax_sonstigervermessungspunkt_gml 
-                 ON ax_sonstigervermessungspunkt USING btree (gml_id);
+SELECT AddGeometryColumn('ax_sonstigervermessungspunkt','dummy',25832,'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';
@@ -1208,12 +1527,14 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	anlass			integer,
-	art			character varying[],
-	"name"			character varying[],
-	--kartendarstellung	character varying(5), -- true/false
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	anlass			integer,
+	art			varchar[],
+	"name"			varchar[],
+	--kartendarstellung	varchar, -- true/false
 	kartendarstellung	integer,
---	"qualitaetsangaben|ax_dqpunktort|herkunft|li_lineage|processstep" integer, -- character varying[],
+--	"qualitaetsangaben|ax_dqpunktort|herkunft|li_lineage|processstep" integer, -- varchar[],
 	genauigkeitsstufe	integer,
 	vertrauenswuerdigkeit	integer,
@@ -1221,11 +1542,8 @@
 );
 
-SELECT AddGeometryColumn('ax_punktortag','wkb_geometry','25832','POINT',2);
+SELECT AddGeometryColumn('ax_punktortag','wkb_geometry',25832,'POINT',2);
 
 CREATE INDEX ax_punktortag_geom_idx ON ax_punktortag USING gist (wkb_geometry);
-
---DROP INDEX ax_punktortag_gml;
-CREATE UNIQUE INDEX ax_punktortag_gml 
-                 ON ax_punktortag USING btree (gml_id);
+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';
@@ -1238,14 +1556,16 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	anlass			integer,
---	kartendarstellung	character varying(5), -- true / false: boolean
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	anlass			integer,
+--	kartendarstellung	varchar, -- true / false: boolean
 	kartendarstellung	integer, 
---	art			character varying(61),  - entbehrlich
-	"name"			character varying(26),
---	"qualitaetsangaben|ax_dqpunktort|herkunft|li_lineage|processstep" integer,  --character varying[],
---	datetime		character varying(40),
-	individualname		character varying(7),
+--	art			varchar, -- entbehrlich
+	"name"			varchar[],
+--	"qualitaetsangaben|ax_dqpunktort|herkunft|li_lineage|processstep" integer,  --varchar[],
+--	datetime		character(24)[],
+	individualname		varchar,
 	vertrauenswuerdigkeit	integer,
 	genauigkeitsstufe	integer,
@@ -1253,11 +1573,8 @@
 );
 
-SELECT AddGeometryColumn('ax_punktortau','wkb_geometry','25832','POINT',2);
+SELECT AddGeometryColumn('ax_punktortau','wkb_geometry',25832,'POINT',3); -- 0,0,HÃ¶he
 
 CREATE INDEX ax_punktortau_geom_idx ON ax_punktortau USING gist (wkb_geometry);
-
---DROP INDEX ax_punktortau_gml;
-CREATE UNIQUE INDEX ax_punktortau_gml 
-                 ON ax_punktortau USING btree (gml_id);
+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';
@@ -1270,11 +1587,13 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	kartendarstellung	integer,      -- boolean
 	description		integer,
-	art			character varying[],  -- character(61),
-	"name"			character varying[],
+	art			varchar[],
+	"name"			varchar[],
 	genauigkeitsstufe	integer,
 	vertrauenswuerdigkeit	integer,
@@ -1282,11 +1601,8 @@
 );
 
-SELECT AddGeometryColumn('ax_punktortta','wkb_geometry','25832','POINT',2);
+SELECT AddGeometryColumn('ax_punktortta','wkb_geometry',25832,'POINT',2);
 
 CREATE INDEX ax_punktortta_geom_idx ON ax_punktortta USING gist (wkb_geometry);
-
---DROP INDEX ax_punktortta_gml;
-CREATE UNIQUE INDEX ax_punktortta_gml 
-                 ON ax_punktortta USING btree (gml_id);
+CREATE UNIQUE INDEX ax_punktortta_gml ON ax_punktortta USING btree (gml_id,beginnt);
 
 COMMENT ON TABLE  ax_punktortta        IS 'P u n k t o r t   T A';
@@ -1302,26 +1618,25 @@
 	ogc_fid				serial NOT NULL,
 	gml_id				character(16),
-	beginnt				character varying(20),
-	advstandardmodell		character varying(9),
+	identifier			character(44),
+	beginnt				character(20),
+	endet				character(20),
+	advstandardmodell		varchar,
 	anlass				integer,
---	art				character varying(43),		-- entbehrlich
-	uri				character varying(28),
-	fortfuehrungsfallnummernbereich	character varying(7),
+--	art				varchar,		-- entbehrlich
+	uri				varchar,
+	fortfuehrungsfallnummernbereich	varchar,
 	land				integer, -- ingemarkung|ax_gemarkung_schluessel
 	gemarkungsnummer		integer, -- ingemarkung|ax_gemarkung_schluessel
 	laufendenummer			integer,
-	titel				character varying(40),
-	erstelltam			character varying(10),		-- Datum jjjj-mm-tt
-	fortfuehrungsentscheidungam	character varying(10),
-	fortfuehrungsentscheidungvon	character varying(40),		-- Bearbeiter-Name und -Titel
-	bemerkung			character varying(80),
+	titel				varchar,
+	erstelltam			varchar,		-- Datum jjjj-mm-tt
+	fortfuehrungsentscheidungam	varchar,
+	fortfuehrungsentscheidungvon	varchar,		-- Bearbeiter-Name und -Titel
+	bemerkung			varchar,
 	beziehtsichauf			character varying,
 	CONSTRAINT ax_fortfuehrungsnachweisdeckblatt_pk PRIMARY KEY (ogc_fid)
 );
 
--- Dummy-Eintrag in Metatabelle geometry-columns um PostNAS-Meldungen zu vermeiden:
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_fortfuehrungsnachweisdeckblatt', 'dummy', 2, 25832, 'POINT');
+SELECT AddGeometryColumn('ax_fortfuehrungsnachweisdeckblatt','dummy',25832,'POINT',2);
 
 COMMENT ON TABLE  ax_fortfuehrungsnachweisdeckblatt
@@ -1334,23 +1649,22 @@
 	ogc_fid					serial NOT NULL,
 	gml_id					character(16),
-	beginnt					character varying(20),
-	advstandardmodell			character varying(9),
+	identifier				character(44),
+	beginnt					character(20),
+	endet					character(20),
+	advstandardmodell			varchar,
 	anlass					integer,
---	art					character varying(40),  -- entbehrlich
-	uri					character varying(28),
+--	art					varchar,  -- entbehrlich
+	uri					varchar,
 	fortfuehrungsfallnummer			integer,
 	laufendenummer				integer,
 	ueberschriftimfortfuehrungsnachweis	integer[],
 	anzahlderfortfuehrungsmitteilungen	integer,
-	zeigtaufaltesflurstueck			character varying[], -- Format wie flurstueckskennzeichen (20) als Array
-	zeigtaufneuesflurstueck			character varying[], -- Format wie flurstueckskennzeichen (20) als Array
-	bemerkung				character varying(14),
+	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)
 );
 
--- Dummy-Eintrag in Metatabelle geometry-columns um PostNAS-Meldungen zu vermeiden:
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_fortfuehrungsfall', 'dummy', 2, 25832, 'POINT');
+SELECT AddGeometryColumn('ax_fortfuehrungsfall','dummy',25832,'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';
@@ -1365,21 +1679,17 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character varying(20),
-	advstandardmodell	character varying(9),
+	beginnt			varchar,
+	advstandardmodell	varchar,
 	art			integer,
-	nummer			character varying(20),
+	nummer			varchar,
 	land			integer,
 	stelle			integer,
-	ablaufderreservierung	character varying(10),
-	antragsnummer		character varying(13),
-	auftragsnummer		character varying(17),
+	ablaufderreservierung	varchar,
+	antragsnummer		varchar,
+	auftragsnummer		varchar,
 	CONSTRAINT ax_reservierung_pk PRIMARY KEY (ogc_fid)
 );
 
--- Dummy-Eintrag in Metatabelle geometry-columns um PostNAS-Meldungen zu vermeiden:
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_reservierung', 'dummy', 2, 25832, 'POINT');
-
+SELECT AddGeometryColumn('ax_reservierung','dummy',25832,'POINT',2);
 
 -- 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
@@ -1388,17 +1698,15 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character varying(20),
-	advstandardmodell	character varying(9),
-	sonstigesmodell		character varying(9),
-	anlass			integer,
-	punktkennung		character varying(15),
+	beginnt			varchar,
+	advstandardmodell	varchar,
+	sonstigesmodell		varchar,
+	anlass			integer,
+	punktkennung		varchar,
 	art			integer,
 	CONSTRAINT ax_punktkennunguntergegangen_pk PRIMARY KEY (ogc_fid)
 );
 
--- Dummy-Eintrag in Metatabelle geometry-columns um PostNAS-Meldungen zu vermeiden:
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_punktkennunguntergegangen', 'dummy', 2, 25832, 'POINT');
+SELECT AddGeometryColumn('ax_punktkennunguntergegangen','dummy',25832,'POINT',2);
+
 
 
@@ -1420,6 +1728,6 @@
 	flurstueckskennzeichen		character(20),         -- Inhalt rechts mit __ auf 20 aufgefÃŒllt
 	amtlicheflaeche			double precision,      -- AFL
-	abweichenderrechtszustand	character varying(5),  -- ARZ
-	zweifelhafterFlurstuecksnachweis character varying(5), -- ZFM Boolean
+	abweichenderrechtszustand	varchar,               -- ARZ
+	zweifelhafterFlurstuecksnachweis varchar,              -- ZFM Boolean
 	rechtsbehelfsverfahren		integer,               -- RBV
 	zeitpunktderentstehung		character(10),         -- ZDE  Inhalt jjjj-mm-tt  besser Format date ?
@@ -1427,11 +1735,13 @@
 	gemeinde			integer,
 	-- GID: ENDE AX_Flurstueck_Kerndaten
+	identifier			character(44),
 	beginnt				character(20),
-	advstandardmodell		character varying(9),
+	endet 				character(20),
+	advstandardmodell		character(4),
 	anlass				integer,
---	art				character varying[], -- Array {a,b,c}  -- verzichtbar?
-	"name"				character varying[], -- Array {a,b,c}
-	nachfolgerflurstueckskennzeichen	character varying[], -- Array {a,b,c}
-	vorgaengerflurstueckskennzeichen	character varying[], -- Array {a,b,c}
+--	art				varchar[], -- Array {a,b,c}
+	"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)
 );
@@ -1472,22 +1782,16 @@
 
 -- keine Geometrie, daher ersatzweise: Dummy-Eintrag in Metatabelle
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_historischesflurstueckohneraumbezug', 'dummy', 2, 25832, 'POINT');
-
+SELECT AddGeometryColumn('ax_historischesflurstueckohneraumbezug','dummy',25832,'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);
+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
 -- ++ Welche Methode fÃŒr ein Array? Wirkt das bei der Suche nach einem einzelnen Wert aus dem Array?
-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';
+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';
 
 
@@ -1508,9 +1812,11 @@
 	ogc_fid				serial NOT NULL,
 	gml_id				character(16),
+	identifier			character(44),
 	beginnt				character(20),
-	advstandardmodell		character varying(9),
-	--sonstigesmodell		character varying(9),
+	endet 				character(20),
+	advstandardmodell		varchar,
+	--sonstigesmodell		varchar,
 	anlass				integer,
-	nachnameoderfirma		character varying(100), --(97),
+	nachnameoderfirma		varchar, --(97),
 	anrede				integer,        -- 'Anrede' ist die Anrede der Person. Diese Attributart ist optional, da KÃ¶rperschaften und juristischen Person auch ohne Anrede angeschrieben werden kÃ¶nnen.
 	-- Bezeichner	Wert
@@ -1518,22 +1824,19 @@
 	--       Herr	2000
 	--      Firma	3000
-	vorname				character varying(40),  --(31),
-	geburtsname			character varying(50),  --(36),
-	geburtsdatum			character varying(10),  -- Datumsformat?
-	namensbestandteil		character varying(20),
-	akademischergrad		character varying(16),  -- 'Akademischer Grad' ist der akademische Grad der Person (z.B. Dipl.-Ing., Dr., Prof. Dr.)
-	--art				character varying(40),  -- (37)  Wozu?
-	--uri				character varying(28),  -- Wozu ?
-	-- hat				character varying,      -- bliebt leer, Beziehung?
+	vorname				varchar,  --(31),
+	geburtsname			varchar,  --(36),
+	geburtsdatum			varchar,  -- Datumsformat?
+	namensbestandteil		varchar,
+	akademischergrad		varchar,  -- 'Akademischer Grad' ist der akademische Grad der Person (z.B. Dipl.-Ing., Dr., Prof. Dr.)
+	--art				varchar,  -- (37)  Wozu?
+	--uri				varchar,  -- Wozu ?
+	-- hat				varchar,      -- bliebt leer, Beziehung?
 	CONSTRAINT ax_person_pk PRIMARY KEY (ogc_fid)
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_person', 'dummy', 2, 25832, 'POINT');
+SELECT AddGeometryColumn('ax_person','dummy',25832,'POINT',2);
 
 -- Verbindungstabellen indizieren
-CREATE UNIQUE INDEX id_ax_person_gml   
-                 ON ax_person  USING btree (gml_id);
+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.';
@@ -1558,26 +1861,25 @@
 	ogc_fid				serial NOT NULL,
 	gml_id				character(16),
+	identifier			character(44),
 	beginnt				character(20),
-	advstandardmodell		character varying(9),
-	--sonstigesmodell		character varying(9),
+	endet 				character(20),
+	advstandardmodell		varchar,
+	--sonstigesmodell		varchar,
 	anlass				integer,
-	--art				character varying[],
-	--uri				character varying[],
-	ort_post			character varying(30),
+	--art				varchar[],
+	--uri				varchar[],
+	ort_post			varchar,
 	postleitzahlpostzustellung	integer,
-	strasse				character varying(40),
-	hausnummer			character varying(9), -- integer
-	bestimmungsland			character varying(30),
+	strasse				varchar,
+	hausnummer			varchar, -- integer
+	bestimmungsland			varchar,
 	CONSTRAINT ax_anschrift_pk PRIMARY KEY (ogc_fid)
 );
 
 -- Dummy-Eintrag in Metatabelle
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_anschrift', 'dummy', 2, 25832, 'POINT');
+SELECT AddGeometryColumn('ax_anschrift','dummy',25832,'POINT',2);
 
 -- Index fÃŒr alkis_beziehungen
-CREATE UNIQUE INDEX ax_anschrift_gml 
-                 ON ax_anschrift USING btree (gml_id);
+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';
@@ -1591,6 +1893,8 @@
 	ogc_fid				serial NOT NULL,
 	gml_id				character(16),
+	identifier			character(44),
 	beginnt				character(20),
-	advstandardmodell		character varying(9),
+	endet 				character(20),
+	advstandardmodell		varchar,
 	anlass				integer,
 	laufendenummernachdin1421	character(16),      -- 0000.00.00.00.00
@@ -1598,7 +1902,7 @@
 	nenner				double precision,   --    .. als Bruch 
 	eigentuemerart			integer,
-	nummer				character varying(6), -- immer leer ?
+	nummer				varchar, -- immer leer ?
 	artderrechtsgemeinschaft	integer,            -- SchlÃŒssel
-	beschriebderrechtsgemeinschaft	character varying(1000),  -- (977)
+	beschriebderrechtsgemeinschaft	varchar,  -- (977)
 	CONSTRAINT ax_namensnummer_pk PRIMARY KEY (ogc_fid)
 );
@@ -1606,11 +1910,8 @@
 -- Filter   istbestandteilvon <> '' or benennt <> '' or bestehtausrechtsverhaeltnissenzu <> ''
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_namensnummer', 'dummy', 2, 25832, 'POINT');
+SELECT AddGeometryColumn('ax_namensnummer','dummy',25832,'POINT',2);
 
 -- Verbindungstabellen indizieren
-CREATE UNIQUE INDEX ax_namensnummer_gml 
-                 ON ax_namensnummer USING btree (gml_id);
+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.';
@@ -1623,23 +1924,23 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	anlass			integer,
-	buchungsblattkennzeichen	character varying(13), -- integer
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	anlass			integer,
+	buchungsblattkennzeichen	varchar, -- integer
 	land			integer,
 	bezirk			integer,
-	buchungsblattnummermitbuchstabenerweiterung	character varying(7),
+	buchungsblattnummermitbuchstabenerweiterung	varchar,
 	blattart		integer,
-	art			character varying(15),
+	art			varchar,
 	-- "name" character(13),  -- immer leer?
 	CONSTRAINT ax_buchungsblatt_pk PRIMARY KEY (ogc_fid)
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_buchungsblatt', 'dummy', 2, 25832, 'POINT');
+SELECT AddGeometryColumn('ax_buchungsblatt','dummy',25832,'POINT',2);
 
 -- Index fÃŒr alkis_beziehungen
-CREATE INDEX ax_buchungsblatt_gml ON ax_buchungsblatt USING btree (gml_id);
+CREATE UNIQUE INDEX ax_buchungsblatt_gml ON ax_buchungsblatt USING btree (gml_id,beginnt);
 
 COMMENT ON TABLE  ax_buchungsblatt        IS 'NREO "Buchungsblatt" enthÃ€lt die Buchungen (Buchungsstellen und Namensnummern) des Grundbuchs und des Liegenschhaftskatasters (bei buchungsfreien GrundstÃŒcken).';
@@ -1652,6 +1953,8 @@
 	ogc_fid				serial NOT NULL,
 	gml_id				character(16),
+	identifier			character(44),
 	beginnt				character(20),
-	advstandardmodell		character varying(9),
+	endet 				character(20),
+	advstandardmodell		varchar,
 	anlass				integer,
 	buchungsart			integer,
@@ -1662,16 +1965,13 @@
 	zaehler				double precision,
 	nenner				integer,
-	nummerimaufteilungsplan		character varying(40),   -- (32)
-	beschreibungdessondereigentums	character varying(400),  -- (291)
+	nummerimaufteilungsplan		varchar,   -- (32)
+	beschreibungdessondereigentums	varchar,  -- (291)
 	CONSTRAINT ax_buchungsstelle_pk PRIMARY KEY (ogc_fid)
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_buchungsstelle', 'dummy', 2, 25832, 'POINT');
+SELECT AddGeometryColumn('ax_buchungsstelle','dummy',25832,'POINT',2);
 
 --Index fÃŒr alkis_beziehungen
-CREATE UNIQUE INDEX ax_buchungsstelle_gml 
-                 ON ax_buchungsstelle USING btree (gml_id);
+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.';
@@ -1696,50 +1996,40 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying[],	-- verÃ€ndert [] 2012-02-03
---	sonstigesmodell		character(9),
-	anlass			integer,
-	gebaeudefunktion	integer,		-- Werte siehe SchlÃŒsseltabelle
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar[],	-- verÃ€ndert [] 2012-02-03
+	anlass			integer,
+	gebaeudefunktion	integer,	-- Werte siehe SchlÃŒsseltabelle
 	weiteregebaeudefunktion	integer,
-	"name"			character varying(25),
---	nutzung			character varying,	-- ???
+	"name"			varchar,
+--	nutzung			varchar,	-- ???
 	bauweise		integer,
 	anzahlderoberirdischengeschosse	integer,
 	anzahlderunterirdischengeschosse	integer, 
-	hochhaus		character varying(5),	-- Neu 2011-11-15  Boolean "true"/"false", meist aber leer
+	hochhaus		varchar,	-- Neu 2011-11-15  Boolean "true"/"false", meist aber leer
 	objekthoehe		integer,
-	dachform		integer,		-- Neu 2011-11-15
+	dachform		integer,	-- Neu 2011-11-15
 	zustand			integer,
-	geschossflaeche		integer,		-- Neu 2011-11-15
-	grundflaeche		integer,		-- Neu 2011-11-15
-	umbauterraum		integer,		-- Neu 2011-11-15
-	baujahr			integer,		-- Neu 2011-11-15
+	geschossflaeche		integer,	-- Neu 2011-11-15
+	grundflaeche		integer,	-- Neu 2011-11-15
+	umbauterraum		integer,	-- Neu 2011-11-15
+	baujahr			integer,	-- Neu 2011-11-15
 	lagezurerdoberflaeche	integer,
-	dachart			character varying(30),	-- Neu 2011-11-15
-	dachgeschossausbau	integer,		-- Neu 2011-11-15
-	qualitaetsangaben	character varying(8),	-- neu 2011-11-15
-	ax_datenerhebung	integer,		-- OBK, nicht in GeoInfoDok ??
-	description		integer,		-- neu 2012-02-02
-	art			character varying(40),	-- neu 2012-02-02
-	individualname		character varying(7),	-- neu 2012-02-02
+	dachart			varchar,	-- Neu 2011-11-15
+	dachgeschossausbau	integer,	-- Neu 2011-11-15
+	qualitaetsangaben	varchar,	-- neu 2011-11-15
+	ax_datenerhebung	integer,	-- OBK, nicht in GeoInfoDok ??
+	description		integer,	-- neu 2012-02-02
+	art			varchar,	-- neu 2012-02-02
+	individualname		varchar,	-- neu 2012-02-02
 
 	CONSTRAINT ax_gebaeude_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_gebaeude','wkb_geometry','25832','MULTIPOLYGON',2);
-
--- auf MULTIPOLYGON erweitern
-ALTER TABLE ax_gebaeude 
-  DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-ALTER TABLE ax_gebaeude
-  ADD CONSTRAINT enforce_geotype_wkb_geometry CHECK (geometrytype(wkb_geometry) = 'POLYGON'::text 
-                                                  OR geometrytype(wkb_geometry) = 'MULTIPOLYGON'::text 
-                                                  OR wkb_geometry IS NULL);
-
-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);
+SELECT AddGeometryColumn('ax_gebaeude','wkb_geometry',25832,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
+
+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.';
@@ -1791,7 +2081,9 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	sonstigesmodell		character varying[],
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	sonstigesmodell		varchar[],
 	anlass			integer,
 	bauart			integer,
@@ -1800,10 +2092,9 @@
 );
 
-SELECT AddGeometryColumn('ax_bauteil','wkb_geometry','25832','POLYGON',2);
+SELECT AddGeometryColumn('ax_bauteil','wkb_geometry',25832,'GEOMETRY',2);
 
 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);
+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';
@@ -1816,6 +2107,8 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	beschaffenheit		integer,
 	anlass			integer,
@@ -1823,10 +2116,8 @@
 );
 
-SELECT AddGeometryColumn('ax_besonderegebaeudelinie','wkb_geometry','25832','LINESTRING',2);
+SELECT AddGeometryColumn('ax_besonderegebaeudelinie','wkb_geometry',25832,'LINESTRING',2);
 
 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);
+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 a e u d e l i n i e';
@@ -1839,19 +2130,19 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	sonstigesmodell		character varying(9),
-	anlass			integer,
-	art			character varying(40),
-	uri			character varying(28),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	sonstigesmodell		varchar,
+	anlass			integer,
+	art			varchar,
+	uri			varchar,
 	CONSTRAINT ax_firstlinie_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_firstlinie','wkb_geometry','25832','LINESTRING',2);
+SELECT AddGeometryColumn('ax_firstlinie','wkb_geometry',25832,'LINESTRING',2);
 
 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);
+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';
@@ -1864,22 +2155,20 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	land			integer,
 	stelle			integer,
-	punktkennung		character varying(15), -- integer,
-	art			character varying(40), --(37)
-	"name"			character varying[],
+	punktkennung		varchar, -- integer,
+	art			varchar, --(37)
+	"name"			varchar[],
 	CONSTRAINT ax_besonderergebaeudepunkt_pk PRIMARY KEY (ogc_fid)
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_besonderergebaeudepunkt', 'dummy', 2, 25832, 'POINT');
-
--- DROP INDEX ax_besonderergebaeudepunkt_gml;  
-CREATE UNIQUE INDEX ax_besonderergebaeudepunkt_gml 
-                 ON ax_besonderergebaeudepunkt USING btree (gml_id);
+SELECT AddGeometryColumn('ax_besonderergebaeudepunkt','dummy',25832,'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 a e u d e p u n k t';
@@ -1911,20 +2200,20 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	artderbebauung		integer,
 	zustand			integer,
-	name			character varying(50),
+	name			varchar,
 	CONSTRAINT ax_wohnbauflaeche_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_wohnbauflaeche','wkb_geometry','25832','POLYGON',2);
-
-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);
+SELECT AddGeometryColumn('ax_wohnbauflaeche','wkb_geometry',25832,'GEOMETRY',2);
+
+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 a e 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.';
@@ -1941,9 +2230,11 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	funktion		integer,
-	name			character varying(50),
+	name			varchar,
 	zustand			integer,
 	foerdergut		integer, -- Die Attributart 'FÃ¶rdergut' kann nur in Verbindung mit der Attributart 'Funktion' und der Werteart 2510 vorkommen.
@@ -1953,14 +2244,9 @@
 );
 
-SELECT AddGeometryColumn('ax_industrieundgewerbeflaeche','wkb_geometry','25832','POLYGON',2);
-
--- POLYGON und POINT
-ALTER TABLE ax_industrieundgewerbeflaeche DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-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);
+SELECT AddGeometryColumn('ax_industrieundgewerbeflaeche','wkb_geometry',25832,'GEOMETRY',2); -- POLYGON/POINT
+
+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 a e c h e';
@@ -1979,19 +2265,20 @@
 (	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	lagergut		integer,
-	"name"			character varying(50),
+	"name"			varchar,
 	zustand			integer,
 	CONSTRAINT ax_halde_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_halde','wkb_geometry','25832','POLYGON',2);
+SELECT AddGeometryColumn('ax_halde','wkb_geometry',25832,'GEOMETRY',2);
 
 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);
+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';
@@ -2008,21 +2295,20 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	abbaugut		integer,
-	"name"			character varying(50),
-	bezeichnung		character varying(50),
+	"name"			varchar,
+	bezeichnung		varchar,
 	zustand			integer,
 	CONSTRAINT ax_bergbaubetrieb_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_bergbaubetrieb','wkb_geometry','25832','POLYGON',2);
-
-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);
+SELECT AddGeometryColumn('ax_bergbaubetrieb','wkb_geometry',25832,'GEOMETRY',2);
+
+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.';
@@ -2039,19 +2325,20 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	abbaugut		integer,
-	"name"			character varying(50),
+	"name"			varchar,
 	zustand			integer,
 	CONSTRAINT ax_tagebaugrubesteinbruch_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_tagebaugrubesteinbruch','wkb_geometry','25832','POLYGON',2);
+SELECT AddGeometryColumn('ax_tagebaugrubesteinbruch','wkb_geometry',25832,'GEOMETRY',2);
 
 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);
+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.';
@@ -2067,21 +2354,21 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	artderbebauung		integer,
 	funktion		integer,
-	"name"			character varying(50),
+	"name"			varchar,
 	zustand			integer,
 	CONSTRAINT ax_flaechegemischternutzung_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_flaechegemischternutzung','wkb_geometry','25832','POLYGON',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);
+SELECT AddGeometryColumn('ax_flaechegemischternutzung','wkb_geometry',25832,'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.';
@@ -2098,20 +2385,20 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	funktion		integer,
 	artderbebauung		integer,
-	"name"			character varying(50),
+	"name"			varchar,
 	zustand			integer,
 	CONSTRAINT ax_flaechebesondererfunktionalerpraegung_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_flaechebesondererfunktionalerpraegung','wkb_geometry','25832','POLYGON',2);
+SELECT AddGeometryColumn('ax_flaechebesondererfunktionalerpraegung','wkb_geometry',25832,'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);
+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.';
@@ -2128,20 +2415,20 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	funktion		integer,
 	zustand			integer,
-	"name"			character varying(50),
+	"name"			varchar,
 	CONSTRAINT ax_sportfreizeitunderholungsflaeche_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_sportfreizeitunderholungsflaeche','wkb_geometry','25832','POLYGON',2);
-
-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);
+SELECT AddGeometryColumn('ax_sportfreizeitunderholungsflaeche','wkb_geometry',25832,'GEOMETRY',2);
+
+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.';
@@ -2157,20 +2444,19 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	funktion		integer,
-	"name"			character varying(50),
+	"name"			varchar,
 	zustand			integer,
 	CONSTRAINT ax_friedhof_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_friedhof','wkb_geometry','25832','POLYGON',2);
-
-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);
+SELECT AddGeometryColumn('ax_friedhof','wkb_geometry',25832,'GEOMETRY',2);
+
+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.';
@@ -2190,10 +2476,12 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	funktion		integer,
-	"name"			character varying(50),
-	zweitname		character varying(50),
+	"name"			varchar,
+	zweitname		varchar,
 	zustand			integer,
 	land			integer,	-- neu 2012-02-28
@@ -2201,15 +2489,12 @@
 	kreis			integer,	-- neu 2012-02-28
 	gemeinde		integer,	-- neu 2012-02-28
-	lage			character varying(5), -- neu 2012-02-28
+	lage			varchar,	-- neu 2012-02-28
 	CONSTRAINT ax_strassenverkehr_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_strassenverkehr','wkb_geometry','25832','POLYGON',2);
-
-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);
+SELECT AddGeometryColumn('ax_strassenverkehr','wkb_geometry',25832,'GEOMETRY',2);
+
+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.';
@@ -2228,25 +2513,24 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	funktion		integer,
-	name			character varying(50),
-	bezeichnung		character varying(50),
+	name			varchar,
+	bezeichnung		varchar,
 	land			integer,	-- neu 2012-02-28
 	regierungsbezirk	integer,	-- neu 2012-02-28
 	kreis			integer,	-- neu 2012-02-28
 	gemeinde		integer,	-- neu 2012-02-28
-	lage			character varying(5), -- neu 2012-02-28
+	lage			varchar,	-- neu 2012-02-28
 	CONSTRAINT ax_weg_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_weg','wkb_geometry','25832','POLYGON',2);
-
-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);
+SELECT AddGeometryColumn('ax_weg','wkb_geometry',25832,'GEOMETRY',2);
+
+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.';
@@ -2263,25 +2547,24 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	funktion		integer,
-	"name"			character varying(50),
-	zweitname		character varying(50),
+	"name"			varchar,
+	zweitname		varchar,
 	land			integer,	-- neu 2012-02-28
 	regierungsbezirk	integer,	-- neu 2012-02-28
 	kreis			integer,	-- neu 2012-02-28
 	gemeinde		integer,	-- neu 2012-02-28
-	lage			character varying(5), -- neu 2012-02-28
+	lage			varchar,	-- neu 2012-02-28
 	CONSTRAINT ax_platz_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_platz','wkb_geometry','25832','POLYGON',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);
+SELECT AddGeometryColumn('ax_platz','wkb_geometry',25832,'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).';
@@ -2297,23 +2580,22 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	funktion		integer,
 	bahnkategorie		integer,
-	bezeichnung		character varying(50),
-	nummerderbahnstrecke	character varying(20),
-	zweitname		character varying(50),
+	bezeichnung		varchar,
+	nummerderbahnstrecke	varchar,
+	zweitname		varchar,
 	zustand			integer,
 	CONSTRAINT ax_bahnverkehr_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_bahnverkehr','wkb_geometry','25832','POLYGON',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);
+SELECT AddGeometryColumn('ax_bahnverkehr','wkb_geometry',25832,'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.';
@@ -2337,11 +2619,13 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	funktion 		integer,
 	art			integer,
-	"name"			character varying(50),
-	bezeichnung		character varying(50),
+	"name"			varchar,
+	bezeichnung		varchar,
 	nutzung			integer,
 	zustand			integer,
@@ -2349,11 +2633,8 @@
 );
 
-SELECT AddGeometryColumn('ax_flugverkehr','wkb_geometry','25832','POLYGON',2);
-
-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);
+SELECT AddGeometryColumn('ax_flugverkehr','wkb_geometry',25832,'GEOMETRY',2);
+
+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.';
@@ -2372,20 +2653,19 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	funktion		integer,
-	"name"			character varying(50),
+	"name"			varchar,
 	zustand			integer,
 	CONSTRAINT ax_schiffsverkehr_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_schiffsverkehr','wkb_geometry','25832','POLYGON',2);
-
-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);
+SELECT AddGeometryColumn('ax_schiffsverkehr','wkb_geometry',25832,'GEOMETRY',2);
+
+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.';
@@ -2405,19 +2685,18 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	vegetationsmerkmal	integer,
-	name			character varying(50),
+	name			varchar,
 	CONSTRAINT ax_landwirtschaft_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_landwirtschaft','wkb_geometry','25832','POLYGON',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);
+SELECT AddGeometryColumn('ax_landwirtschaft','wkb_geometry',25832,'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';
@@ -2432,20 +2711,19 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	vegetationsmerkmal	integer,
-	name			character varying(50),
-	bezeichnung		character varying(40),
+	name			varchar,
+	bezeichnung		varchar,
 	CONSTRAINT ax_wald_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_wald','wkb_geometry','25832','POLYGON',2);
-
-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);
+SELECT AddGeometryColumn('ax_wald','wkb_geometry',25832,'GEOMETRY',2);
+
+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.';
@@ -2461,20 +2739,19 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass 			integer,
 	vegetationsmerkmal	integer,
-	"name"			character varying(50),
+	"name"			varchar,
 	funktion		integer,
 	CONSTRAINT ax_gehoelz_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_gehoelz','wkb_geometry','25832','POLYGON',2);
-
-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);
+SELECT AddGeometryColumn('ax_gehoelz','wkb_geometry',25832,'GEOMETRY',2);
+
+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 o e l z" ist eine FlÃ€che, die mit einzelnen BÃ€umen, Baumgruppen, BÃŒschen, Hecken und StrÃ€uchern bestockt ist.';
@@ -2491,18 +2768,17 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	anlass			integer,
-	"name"			character varying(50),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	anlass			integer,
+	"name"			varchar,
 	CONSTRAINT ax_heide_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_heide','wkb_geometry','25832','POLYGON',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);
+SELECT AddGeometryColumn('ax_heide','wkb_geometry',25832,'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.';
@@ -2516,18 +2792,17 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	anlass			integer,
-	"name"			character varying(50),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	anlass			integer,
+	"name"			varchar,
 	CONSTRAINT ax_moor_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_moor','wkb_geometry','25832','POLYGON',2);
-
-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);
+SELECT AddGeometryColumn('ax_moor','wkb_geometry',25832,'GEOMETRY',2);
+
+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.';
@@ -2542,18 +2817,17 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	anlass			integer,
-	"name"			character varying(50),
-  CONSTRAINT ax_sumpf_pk PRIMARY KEY (ogc_fid)
-);
-
-SELECT AddGeometryColumn('ax_sumpf','wkb_geometry','25832','POLYGON',2);
-
-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);
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	anlass			integer,
+	"name"			varchar,
+	CONSTRAINT ax_sumpf_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_sumpf','wkb_geometry',25832,'GEOMETRY',2);
+
+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.';
@@ -2567,20 +2841,19 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	oberflaechenmaterial	integer,
-	"name"			character varying(50),
+	"name"			varchar,
 	funktion		integer,
 	CONSTRAINT ax_unlandvegetationsloseflaeche_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_unlandvegetationsloseflaeche','wkb_geometry','25832','POLYGON',2);
-
-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);
+SELECT AddGeometryColumn('ax_unlandvegetationsloseflaeche','wkb_geometry',25832,'GEOMETRY',2);
+
+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.';
@@ -2610,20 +2883,19 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	funktion		integer,
-	"name"			character varying(50),
+	"name"			varchar,
 	zustand			integer,
 	CONSTRAINT ax_fliessgewaesser_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_fliessgewaesser','wkb_geometry','25832','POLYGON',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);
+SELECT AddGeometryColumn('ax_fliessgewaesser','wkb_geometry',25832,'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 a e 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';
@@ -2639,20 +2911,19 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	funktion		integer,
-	"name"			character varying(50),
+	"name"			varchar,
 	nutzung			integer,
 	CONSTRAINT ax_hafenbecken_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_hafenbecken','wkb_geometry','25832','POLYGON',2);
-
-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);
+SELECT AddGeometryColumn('ax_hafenbecken','wkb_geometry',25832,'GEOMETRY',2);
+
+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.';
@@ -2671,21 +2942,20 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	funktion		integer,
-	name			character varying(50),
-	gewaesserkennziffer	character varying(30),
+	name			varchar,
+	gewaesserkennziffer	varchar,
 	hydrologischesMerkmal	integer,
 	CONSTRAINT ax_stehendesgewaesser_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_stehendesgewaesser','wkb_geometry','25832','POLYGON',2);
-
-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);
+SELECT AddGeometryColumn('ax_stehendesgewaesser','wkb_geometry',25832,'GEOMETRY',2);
+
+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 a e 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".';
@@ -2702,21 +2972,20 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	funktion		integer,
-	"name"			character varying(50),
-	bezeichnung		character varying(50),
+	"name"			varchar,
+	bezeichnung		varchar,
 	tidemerkmal		integer,
 	CONSTRAINT ax_meer_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_meer','wkb_geometry','25832','POLYGON',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);
+SELECT AddGeometryColumn('ax_meer','wkb_geometry',25832,'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.';
@@ -2758,6 +3027,8 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	bauwerksfunktion	integer,
@@ -2765,11 +3036,8 @@
 );
 
-SELECT AddGeometryColumn('ax_turm','wkb_geometry','25832','POLYGON',2);
-
-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);
+SELECT AddGeometryColumn('ax_turm','wkb_geometry',25832,'GEOMETRY',2);
+
+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';
@@ -2782,6 +3050,8 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	bauwerksfunktion	integer,
@@ -2789,14 +3059,8 @@
 );
 
-SELECT AddGeometryColumn('ax_bauwerkoderanlagefuerindustrieundgewerbe','wkb_geometry','25832','POLYGON',2);
-
--- POLYGON und POINT
-ALTER TABLE ax_bauwerkoderanlagefuerindustrieundgewerbe DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-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);
+SELECT AddGeometryColumn('ax_bauwerkoderanlagefuerindustrieundgewerbe','wkb_geometry',25832,'GEOMETRY',2); -- POLYGON/POINT
+
+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';
@@ -2809,6 +3073,8 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	speicherinhalt		integer,
@@ -2817,20 +3083,8 @@
 );
 
-SELECT AddGeometryColumn('ax_vorratsbehaelterspeicherbauwerk','wkb_geometry','25832','POLYGON',2);
-
--- auf MULTIPOLYGON erweitern
-ALTER TABLE ax_vorratsbehaelterspeicherbauwerk 
-  DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-ALTER TABLE ax_vorratsbehaelterspeicherbauwerk
-  ADD CONSTRAINT enforce_geotype_wkb_geometry CHECK (geometrytype(wkb_geometry) = 'POLYGON'::text 
-                                                  OR geometrytype(wkb_geometry) = 'MULTIPOLYGON'::text 
-                                                  OR wkb_geometry IS NULL);
-
-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);
+SELECT AddGeometryColumn('ax_vorratsbehaelterspeicherbauwerk','wkb_geometry',25832,'GEOMETRY',2);
+
+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 a e l t e r  /  S p e i c h e r b a u w e r k';
@@ -2843,21 +3097,20 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	bauwerksfunktion	integer,
 	lagezurerdoberflaeche	integer,
-	art			character varying(40),  --(15)
-	"name"			character varying(20),  -- (3) "NPL", "RMR"
+	art			varchar,  --(15)
+	"name"			varchar,  -- (3) "NPL", "RMR"
 	CONSTRAINT ax_transportanlage_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_transportanlage','wkb_geometry','25832','LINESTRING',2);
-
-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);
+SELECT AddGeometryColumn('ax_transportanlage','wkb_geometry',25832,'LINESTRING',2);
+
+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';
@@ -2870,6 +3123,8 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	bauwerksfunktion	integer,
@@ -2878,11 +3133,8 @@
 );
 
-SELECT AddGeometryColumn('ax_leitung','wkb_geometry','25832','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);
+SELECT AddGeometryColumn('ax_leitung','wkb_geometry',25832,'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';
@@ -2895,22 +3147,18 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	bauwerksfunktion	integer,
-	-- "name"		character varying(15),
+	-- "name"		varchar,
 	CONSTRAINT ax_bauwerkoderanlagefuersportfreizeitunderholung_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_bauwerkoderanlagefuersportfreizeitunderholung','wkb_geometry','25832','POLYGON',2);
-
---POLYGON  oder POINT
-ALTER TABLE ax_bauwerkoderanlagefuersportfreizeitunderholung DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-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);
+SELECT AddGeometryColumn('ax_bauwerkoderanlagefuersportfreizeitunderholung','wkb_geometry',25832,'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';
@@ -2923,7 +3171,9 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	sonstigesmodell		character varying[],
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	sonstigesmodell		varchar[],
 	anlass			integer,
 	archaeologischertyp	integer,
@@ -2931,15 +3181,8 @@
 );
 
-SELECT AddGeometryColumn('ax_historischesbauwerkoderhistorischeeinrichtung','wkb_geometry','25832','POLYGON',2);
-
--- POLYGON und POINT
-ALTER TABLE  ax_historischesbauwerkoderhistorischeeinrichtung
-	DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-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);
+SELECT AddGeometryColumn('ax_historischesbauwerkoderhistorischeeinrichtung','wkb_geometry',25832,'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';
@@ -2952,20 +3195,19 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	sonstigesmodell		character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet			character(20),
+	advstandardmodell	varchar,
+	sonstigesmodell		varchar,
 	anlass			integer,
 	art			integer,
-	"name"			character varying(13),
+	"name"			varchar,
 	CONSTRAINT ax_heilquellegasquelle_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_heilquellegasquelle','wkb_geometry','25832','POINT',2);
-
-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);
+SELECT AddGeometryColumn('ax_heilquellegasquelle','wkb_geometry',25832,'POINT',2);
+
+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';
@@ -2978,24 +3220,20 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	anlass			integer,
---	art			character varying(40),	-- Inhalt = "urn:adv:fachdatenverbindung:AA_Antrag" oder leer, wozu?
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	anlass			integer,
+--	art			varchar,	-- Inhalt = "urn:adv:fachdatenverbindung:AA_Antrag" oder leer, wozu?
 	description		integer,		-- neu 03.02.2012
-	"name"			character varying(35),	-- Lippe immer leer, RLP "Relationsbelegung bei Nachmigration"
+	"name"			varchar,	-- Lippe immer leer, RLP "Relationsbelegung bei Nachmigration"
 	bauwerksfunktion	integer,
 	CONSTRAINT ax_sonstigesbauwerkodersonstigeeinrichtung_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_sonstigesbauwerkodersonstigeeinrichtung','wkb_geometry','25832','POLYGON',2);
-
--- POLYGON und LINESTRING
-ALTER TABLE ax_sonstigesbauwerkodersonstigeeinrichtung DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-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);
+SELECT AddGeometryColumn('ax_sonstigesbauwerkodersonstigeeinrichtung','wkb_geometry',25832,'GEOMETRY',2); -- POLYGON/LINESTRING
+
+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';
@@ -3008,6 +3246,8 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	sonstigesmodell		character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet			character(20),
+	sonstigesmodell		varchar,
 	anlass			integer,
 	art			integer,
@@ -3015,11 +3255,8 @@
 );
 
-SELECT AddGeometryColumn('ax_einrichtunginoeffentlichenbereichen','wkb_geometry','25832','POINT',2);
-
-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);
+SELECT AddGeometryColumn('ax_einrichtunginoeffentlichenbereichen','wkb_geometry',25832,'POINT',2);
+
+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   O e f f e n t l i c h e n   B e r e i c h e n';
@@ -3032,20 +3269,19 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	anlass			integer,
-	punktkennung		character varying(15), -- integer,
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	anlass			integer,
+	punktkennung		varchar, -- integer,
 	land			integer,
 	stelle			integer,
-	--sonstigeeigenschaft	character varying(26),
+	--sonstigeeigenschaft	character(26),
 	CONSTRAINT ax_besondererbauwerkspunkt_pk PRIMARY KEY (ogc_fid)
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_besondererbauwerkspunkt', 'dummy', 2, 25832, 'POINT');
-
-CREATE UNIQUE INDEX ax_besondererbauwerkspunkt_gml 
-                 ON ax_besondererbauwerkspunkt USING btree (gml_id);
+SELECT AddGeometryColumn('ax_besondererbauwerkspunkt','dummy',25832,'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';
@@ -3064,6 +3300,8 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	bauwerksfunktion	integer,
@@ -3071,15 +3309,8 @@
 );
 
---SELECT AddGeometryColumn('ax_bauwerkimverkehrsbereich','wkb_geometry','25832','POLYGON',2);
-SELECT AddGeometryColumn('ax_bauwerkimverkehrsbereich','wkb_geometry','25832','MULTIPOLYGON',2);
-
--- POLYGON und LINESTRING
-ALTER TABLE ax_bauwerkimverkehrsbereich DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-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);
+SELECT AddGeometryColumn('ax_bauwerkimverkehrsbereich','wkb_geometry',25832,'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';
@@ -3093,23 +3324,15 @@
 	gml_id			character(16),
 	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	sonstigesmodell		character varying[],
+	endet 			character(20),
+	advstandardmodell	varchar,
+	sonstigesmodell		varchar[],
 	anlass			integer,
 	art			integer 
 );
 
-SELECT AddGeometryColumn('ax_strassenverkehrsanlage','wkb_geometry','25832','POLYGON',2);
-
--- LINESTRING und POLYGON
-ALTER TABLE ax_strassenverkehrsanlage DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-ALTER TABLE ONLY ax_strassenverkehrsanlage
-	ADD CONSTRAINT ax_strassenverkehrsanlage_pk PRIMARY KEY (ogc_fid);
-
-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);
+SELECT AddGeometryColumn('ax_strassenverkehrsanlage','wkb_geometry',25832,'GEOMETRY',2); -- LINESTRING/MULTIPOLYGON
+
+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';
@@ -3122,7 +3345,9 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	sonstigesmodell		character varying[],
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	sonstigesmodell		varchar[],
 	anlass			integer,
 	art			integer,
@@ -3130,14 +3355,8 @@
 );
 
-SELECT AddGeometryColumn('ax_wegpfadsteig','wkb_geometry','25832','LINESTRING',2);
-
--- LINESTRING und POLYGON
-ALTER TABLE ax_wegpfadsteig DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-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);
+SELECT AddGeometryColumn('ax_wegpfadsteig','wkb_geometry',25832,'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';
@@ -3151,6 +3370,7 @@
 	gml_id			character(16),
 	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	sonstigesmodell		character varying[],
+	endet 			character(20),
+	advstandardmodell	varchar,
+	sonstigesmodell		varchar[],
 	anlass			integer,
 	bahnhofskategorie	integer,
@@ -3159,11 +3379,8 @@
 );
 
-SELECT AddGeometryColumn('ax_bahnverkehrsanlage','wkb_geometry','25832','POINT',2);
-
-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);
+SELECT AddGeometryColumn('ax_bahnverkehrsanlage','wkb_geometry',25832,'POINT',2);
+
+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';
@@ -3180,7 +3397,9 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	sonstigesmodell		character varying[],
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	sonstigesmodell		varchar[],
 	anlass			integer,
 	bahnkategorie		integer,
@@ -3188,14 +3407,8 @@
 );
 
-SELECT AddGeometryColumn('ax_gleis','wkb_geometry','25832','LINESTRING',2);
-
--- auch POLYGON
-ALTER TABLE ax_gleis DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-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);
+SELECT AddGeometryColumn('ax_gleis','wkb_geometry',25832,'GEOMETRY',2); -- LINESTRING/POLYGON
+
+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';
@@ -3208,21 +3421,20 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	sonstigesmodell		character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet			character(20),
+	advstandardmodell	varchar,
+	sonstigesmodell		varchar,
 	anlass			integer,
 	art			integer,
 	oberflaechenmaterial	integer,
-	"name"			character varying(50),
+	"name"			varchar,
 	CONSTRAINT ax_flugverkehrsanlage_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_flugverkehrsanlage','wkb_geometry','25832','POLYGON',2);
-
-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);
+SELECT AddGeometryColumn('ax_flugverkehrsanlage','wkb_geometry',25832,'GEOMETRY',2);
+
+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';
@@ -3239,6 +3451,8 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	bauwerksfunktion	integer,
@@ -3246,14 +3460,8 @@
 );
 
-SELECT AddGeometryColumn('ax_bauwerkimgewaesserbereich','wkb_geometry','25832','POLYGON',2);
-
--- Es wird (auch) LINESTRING / POINT geliefert!
-ALTER TABLE ax_bauwerkimgewaesserbereich DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-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);
+SELECT AddGeometryColumn('ax_bauwerkimgewaesserbereich','wkb_geometry',25832,'GEOMETRY',2); -- LINESTRING/POINT
+
+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 a e s s e r b e r e i c h';
@@ -3269,6 +3477,8 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	bewuchs			integer,
@@ -3276,14 +3486,8 @@
 );
 
-SELECT AddGeometryColumn('ax_vegetationsmerkmal','wkb_geometry','25832','POLYGON',2);
-
--- verschiedene Geometrietypen
-ALTER TABLE ONLY ax_vegetationsmerkmal DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-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);
+SELECT AddGeometryColumn('ax_vegetationsmerkmal','wkb_geometry',25832,'GEOMETRY',2);
+
+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';
@@ -3299,6 +3503,8 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	art			integer,
@@ -3306,11 +3512,8 @@
 );
 
-SELECT AddGeometryColumn('ax_gewaessermerkmal','wkb_geometry','25832','POINT',2);
-
-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);
+SELECT AddGeometryColumn('ax_gewaessermerkmal','wkb_geometry',25832,'POINT',2);
+
+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 a e s s e r m e r k m a l';
@@ -3323,6 +3526,8 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	funktion		integer,
@@ -3330,14 +3535,8 @@
 );
 
-SELECT AddGeometryColumn('ax_untergeordnetesgewaesser','wkb_geometry','25832','LINESTRING',2);
-
--- LINESTRING und POLYGON
-ALTER TABLE ax_untergeordnetesgewaesser DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-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);
+SELECT AddGeometryColumn('ax_untergeordnetesgewaesser','wkb_geometry',25832,'GEOMETRY',2); -- LINESTRING/POLYGON
+
+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 a e s s e r';
@@ -3371,18 +3570,13 @@
 	gml_id			character(16),
 	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	sonstigesmodell		character varying[],
+	endet 			character(20),
+	advstandardmodell	varchar,
+	sonstigesmodell		varchar[],
 	anlass			integer
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_boeschungkliff', 'dummy', 2, 25832, 'POINT');
-
-ALTER TABLE ONLY ax_boeschungkliff
-	ADD CONSTRAINT ax_boeschungkliff_pk PRIMARY KEY (ogc_fid);
-
-CREATE UNIQUE INDEX ax_boeschungkliff_gml 
-                 ON ax_boeschungkliff USING btree (gml_id);
+SELECT AddGeometryColumn('ax_boeschungkliff','dummy',25832,'POINT',2);
+
+CREATE UNIQUE INDEX ax_boeschungkliff_gml ON ax_boeschungkliff USING btree (gml_id,beginnt);
 
 COMMENT ON TABLE  ax_boeschungkliff        IS 'B o e s c h u n g s k l i f f';
@@ -3397,17 +3591,15 @@
 	gml_id			character(16),
 	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	sonstigesmodell		character varying[],
+	endet 			character(20),
+	advstandardmodell	varchar,
+	sonstigesmodell		varchar[],
 	anlass			integer,
 	CONSTRAINT ax_boeschungsflaeche_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_boeschungsflaeche','wkb_geometry','25832','POLYGON',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);
+SELECT AddGeometryColumn('ax_boeschungsflaeche','wkb_geometry',25832,'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 o e s c h u n g s f l a e c h e';
@@ -3420,6 +3612,8 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	art			integer,
@@ -3427,14 +3621,8 @@
 );
 
-SELECT AddGeometryColumn('ax_dammwalldeich','wkb_geometry','25832','LINESTRING',2);
-
--- LINESTRING oder POLYGON
-ALTER TABLE ax_dammwalldeich DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-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);
+SELECT AddGeometryColumn('ax_dammwalldeich','wkb_geometry',25832,'GEOMETRY',2); -- LINESTRING/POLYGON
+
+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';
@@ -3452,18 +3640,17 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	anlass			integer,
-	name			character varying(30),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	anlass			integer,
+	name			varchar,
 	CONSTRAINT ax_felsenfelsblockfelsnadel_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_felsenfelsblockfelsnadel','wkb_geometry','25832','POLYGON',2);
-
-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);
+SELECT AddGeometryColumn('ax_felsenfelsblockfelsnadel','wkb_geometry',25832,'GEOMETRY',2);
+
+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';
@@ -3495,7 +3682,9 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	sonstigesmodell		character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet			character(20),
+	advstandardmodell	varchar,
+	sonstigesmodell		varchar,
 	anlass			integer,
 	istteilvon		character varying, -- Beziehung?
@@ -3506,11 +3695,8 @@
 );
 
-SELECT AddGeometryColumn('ax_gelaendekante','wkb_geometry','25832','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);
+SELECT AddGeometryColumn('ax_gelaendekante','wkb_geometry',25832,'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 a e n d e k a n t e';
@@ -3525,9 +3711,11 @@
 -- -------------------------------------------------------------
 CREATE TABLE ax_besondererhoehenpunkt (
-	ogc_fid serial NOT NULL,
-	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	sonstigesmodell		character varying(9),
+	ogc_fid			serial NOT NULL,
+	gml_id 			character(16),
+	identifier 		character(44),
+	beginnt 		character(20),
+	endet  			character(20),
+	advstandardmodell	varchar,
+	sonstigesmodell		varchar,
 	anlass			integer,
 	besonderebedeutung	integer,
@@ -3535,11 +3723,8 @@
 );
 
-SELECT AddGeometryColumn('ax_besondererhoehenpunkt','wkb_geometry','25832','POINT',2);
-
-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);
+SELECT AddGeometryColumn('ax_besondererhoehenpunkt','wkb_geometry',25832,'POINT',2);
+
+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';
@@ -3564,30 +3749,18 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	artderfestlegung	integer,
-	bezeichnung		character varying(40),
+	bezeichnung		varchar,
 	CONSTRAINT ax_klassifizierungnachstrassenrecht_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_klassifizierungnachstrassenrecht','wkb_geometry','25832','POLYGON',2);
-
--- auf MULTIPOLYGON erweitern
-ALTER TABLE ax_klassifizierungnachstrassenrecht 
-  DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-ALTER TABLE ax_klassifizierungnachstrassenrecht
-  ADD CONSTRAINT enforce_geotype_wkb_geometry CHECK (geometrytype(wkb_geometry) = 'POLYGON'::text 
-                                                  OR geometrytype(wkb_geometry) = 'MULTIPOLYGON'::text 
-						  OR geometrytype(wkb_geometry) = 'LINESTRING'::text 
-                                                  OR wkb_geometry IS NULL);
-
-
-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);
+SELECT AddGeometryColumn('ax_klassifizierungnachstrassenrecht','wkb_geometry',25832,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
+
+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);
 
 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';
@@ -3600,6 +3773,8 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	artderfestlegung	integer,
@@ -3607,17 +3782,7 @@
 );
 
-SELECT AddGeometryColumn('ax_klassifizierungnachwasserrecht','wkb_geometry','25832','POLYGON',2);
-
--- auf MULTIPOLYGON erweitern
-ALTER TABLE ax_klassifizierungnachwasserrecht 
-  DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-ALTER TABLE ax_klassifizierungnachwasserrecht
-  ADD CONSTRAINT enforce_geotype_wkb_geometry CHECK (geometrytype(wkb_geometry) = 'POLYGON'::text 
-                                                  OR geometrytype(wkb_geometry) = 'MULTIPOLYGON'::text 
-                                                  OR wkb_geometry IS NULL);
-
-CREATE INDEX ax_klassifizierungnachwasserrecht_geom_idx
-          ON ax_klassifizierungnachwasserrecht USING gist (wkb_geometry);
+SELECT AddGeometryColumn('ax_klassifizierungnachwasserrecht','wkb_geometry',25832,'GEOMETRY',2);
+
+CREATE INDEX ax_klassifizierungnachwasserrecht_geom_idx ON ax_klassifizierungnachwasserrecht USING gist (wkb_geometry);
 
 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';
@@ -3632,27 +3797,22 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	anlass			integer,
-	art			character varying(40), -- (15)
-	"name"			character varying(15),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	anlass			integer,
+	art			varchar, -- (15)
+	"name"			varchar,
 	artderfestlegung	integer,
 	land			integer,
-	stelle			character varying(7), 
-	bezeichnung		character varying(24), 
+	stelle			varchar,
+	bezeichnung		varchar, 
 	CONSTRAINT ax_bauraumoderbodenordnungsrecht_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_bauraumoderbodenordnungsrecht','wkb_geometry','25832','MULTIPOLYGON',2);
-
--- verschiedene Goemetrie-Typen
-ALTER TABLE ax_bauraumoderbodenordnungsrecht 
-  DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-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);
+SELECT AddGeometryColumn('ax_bauraumoderbodenordnungsrecht','wkb_geometry',25832,'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';
@@ -3668,29 +3828,25 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	artderfestlegung	integer,
 	land			integer,
-	stelle			character varying(5),
-	bezeichnung		character varying(20),
+	stelle			varchar,
+	bezeichnung		varchar,
 	characterstring		integer,
-	art			character varying(40),  --(15)
-	"name"			character varying(20), 
---	"qualitaetsangaben|ax_dqmitdatenerhebung|herkunft|li_lineage|pro" character varying(8),
---	datetime		character varying(20),
+	art			varchar,  --(15)
+	"name"			varchar,
+--	"qualitaetsangaben|ax_dqmitdatenerhebung|herkunft|li_lineage|pro" varchar,
+--	datetime		varchar,
 	CONSTRAINT ax_sonstigesrecht_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_sonstigesrecht','wkb_geometry','25832','POLYGON',2);
-
-ALTER TABLE ax_sonstigesrecht 
-  DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-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);
+SELECT AddGeometryColumn('ax_sonstigesrecht','wkb_geometry',25832,'GEOMETRY',2);
+
+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';
@@ -3707,9 +3863,11 @@
 	ogc_fid				serial NOT NULL,
 	gml_id				character(16),
+	identifier			character(44),
 	beginnt				character(20),
-	advstandardmodell		character varying(9),
+	endet 				character(20),
+	advstandardmodell		varchar,
 	anlass				integer,
-	art				character varying(40), -- (15)
-	"name"				character varying(33),
+	art				varchar, -- (15)
+	"name"				varchar,
 	kulturart			integer,
 	bodenart			integer,
@@ -3723,20 +3881,8 @@
 );
 
-SELECT AddGeometryColumn('ax_bodenschaetzung','wkb_geometry','25832','POLYGON',2);
-
--- auf MULTIPOLYGON erweitern
-ALTER TABLE ax_bodenschaetzung 
-  DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-ALTER TABLE ax_bodenschaetzung
-  ADD CONSTRAINT enforce_geotype_wkb_geometry CHECK (geometrytype(wkb_geometry) = 'POLYGON'::text 
-                                                  OR geometrytype(wkb_geometry) = 'MULTIPOLYGON'::text 
-                                                  OR wkb_geometry IS NULL);
-
-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);
+SELECT AddGeometryColumn('ax_bodenschaetzung','wkb_geometry',25832,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
+
+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 a e t z u n g';
@@ -3749,6 +3895,8 @@
 	ogc_fid				serial NOT NULL,
 	gml_id				character(16),
+	identifier			character(44),
 	beginnt				character(20), 
-	advstandardmodell		character varying(9),
+	endet 				character(20), 
+	advstandardmodell		varchar,
 	anlass				integer,
 	merkmal				integer,
@@ -3760,28 +3908,14 @@
 	bodenzahlodergruenlandgrundzahl	integer,
 	ackerzahlodergruenlandzahl	integer,
-	art				character varying(40),  -- (15)
-	"name"				character varying(27),
+	art				varchar,  -- (15)
+	"name"				varchar,
 	CONSTRAINT ax_musterlandesmusterundvergleichsstueck_pk PRIMARY KEY (ogc_fid)
 );
 
 
-SELECT AddGeometryColumn('ax_musterlandesmusterundvergleichsstueck','wkb_geometry','25832','POLYGON',2);
-
--- auf MULTIPOLYGON erweitern
--- es kommt auch POINT vor !?
-ALTER TABLE ax_musterlandesmusterundvergleichsstueck 
-  DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-ALTER TABLE ax_musterlandesmusterundvergleichsstueck
-  ADD CONSTRAINT enforce_geotype_wkb_geometry CHECK (geometrytype(wkb_geometry) = 'POLYGON'::text 
-                                                  OR geometrytype(wkb_geometry) = 'MULTIPOLYGON'::text 
-                                                  OR geometrytype(wkb_geometry) = 'POINT'::text 
-                                                  OR wkb_geometry IS NULL);
-
-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);
+SELECT AddGeometryColumn('ax_musterlandesmusterundvergleichsstueck','wkb_geometry',25832,'GEOMETRY',2); -- POLYGON/POINT
+
+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 Vergleichsstueck';
@@ -3798,19 +3932,18 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	schluesselgesamt	integer,
-	bezeichnung		character varying(30), --(22)
+	bezeichnung		varchar, --(22)
 	land			integer,
 	CONSTRAINT ax_bundesland_pk PRIMARY KEY (ogc_fid)
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_bundesland', 'dummy', 2, 25832, 'POINT');
-
-CREATE UNIQUE INDEX ax_bundesland_gml 
-                 ON ax_bundesland USING btree (gml_id);
+SELECT AddGeometryColumn('ax_bundesland','dummy',25832,'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';
@@ -3823,9 +3956,11 @@
 	ogc_fid				serial NOT NULL,
 	gml_id				character(16),
+	identifier			character(44),
 	beginnt				character(20),
-	advstandardmodell		character varying(9),
+	endet 				character(20),
+	advstandardmodell		varchar,
 	anlass				integer,
 	schluesselgesamt		integer,
-	bezeichnung			character varying(20),
+	bezeichnung			varchar,
 	land				integer,
 	regierungsbezirk		integer,
@@ -3833,11 +3968,8 @@
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_regierungsbezirk', 'dummy', 2, 25832, 'POINT');
+SELECT AddGeometryColumn('ax_regierungsbezirk','dummy',25832,'POINT',2);
 
 -- Verbindungstabellen indizieren
-CREATE UNIQUE INDEX ax_regierungsbezirk_gml 
-                 ON ax_regierungsbezirk USING btree (gml_id);
+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';
@@ -3852,9 +3984,11 @@
 	ogc_fid				serial NOT NULL,
 	gml_id				character(16),
+	identifier			character(44),
 	beginnt				character(20),
-	advstandardmodell		character varying(9),
+	endet 				character(20),
+	advstandardmodell		varchar,
 	anlass				integer,
 	schluesselgesamt		integer,
-	bezeichnung			character varying(20),
+	bezeichnung			varchar,
 	land				integer,
 	regierungsbezirk		integer,
@@ -3863,10 +3997,7 @@
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_kreisregion', 'dummy', 2, 25832, 'POINT');
-
-CREATE UNIQUE INDEX ax_kreisregion_gml 
-                 ON ax_kreisregion USING btree (gml_id);
+SELECT AddGeometryColumn('ax_kreisregion','dummy',25832,'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';
@@ -3879,9 +4010,11 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	schluesselgesamt	integer,
-	bezeichnung		character varying(25),
+	bezeichnung		varchar,
 	land			integer,
 	regierungsbezirk	integer,
@@ -3891,11 +4024,8 @@
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_gemeinde', 'dummy', 2, 25832, 'POINT');
+SELECT AddGeometryColumn('ax_gemeinde','dummy',25832,'POINT',2);
 
 -- Index fÃŒr alkis_beziehungen
-CREATE UNIQUE INDEX ax_gemeinde_gml 
-                 ON ax_gemeinde USING btree (gml_id);
+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';
@@ -3907,10 +4037,12 @@
 CREATE TABLE ax_gemeindeteil (
 	ogc_fid			serial NOT NULL,
-	gml_id			character varying(16),
-	beginnt			character varying(20),
-	advstandardmodell	character varying(9),
+	gml_id			character(16),
+	identifier		character(44),
+	beginnt			character(20),
+	endet			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	schluesselgesamt	double precision,
-	bezeichnung		character varying(40),
+	bezeichnung		varchar,
 	administrativefunktion	integer,
 	land			integer,
@@ -3922,11 +4054,8 @@
 );
 
+SELECT AddGeometryColumn('ax_gemeindeteil','dummy',25832,'POINT',2);
+
 -- Index fÃŒr alkis_beziehungen
-CREATE UNIQUE INDEX ax_gemeindeteil_gml 
-                 ON ax_gemeindeteil USING btree (gml_id);
-
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_gemeindeteil', 'dummy', 2, 25832, 'POINT');
+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';
@@ -3940,9 +4069,11 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	schluesselgesamt	integer,
-	bezeichnung		character varying(23),
+	bezeichnung		varchar,
 	land			integer,
 	gemarkungsnummer	integer,  -- Key
@@ -3952,15 +4083,8 @@
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_gemarkung', 'dummy', 2, 25832, 'POINT');
-
--- Index fÃŒr alkis_beziehungen
-CREATE UNIQUE INDEX ax_gemarkung_gml 
-                 ON ax_gemarkung USING btree (gml_id);
-
--- Such-Index, Verweis aus ax_Flurstueck
-CREATE INDEX ax_gemarkung_nr  
-          ON ax_gemarkung USING btree (land, gemarkungsnummer);
+SELECT AddGeometryColumn('ax_gemarkung','dummy',25832,'POINT',2);
+
+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';
@@ -3974,9 +4098,11 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	schluesselgesamt	integer,
-	bezeichnung		character varying(7), -- integer,
+	bezeichnung		varchar, -- integer,
 	land			integer,
 	gemarkung		integer,
@@ -3985,11 +4111,8 @@
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_gemarkungsteilflur', 'dummy', 2, 25832, 'POINT');
+SELECT AddGeometryColumn('ax_gemarkungsteilflur','dummy',25832,'POINT',2);
 
 -- Index fÃŒr alkis_beziehungen
-CREATE UNIQUE INDEX ax_gemarkungsteilflur_gml 
-                 ON ax_gemarkungsteilflur USING btree (gml_id);
+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';
@@ -4002,27 +4125,25 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	schluesselgesamt	integer,
-	bezeichnung		character varying(26),
+	bezeichnung		varchar,
 	land			integer,
 	bezirk			integer,
 --	"gehoertzu|ax_dienststelle_schluessel|land" integer,
-	stelle			character varying(4),
+	stelle			varchar,
 	CONSTRAINT ax_buchungsblattbezirk_pk PRIMARY KEY (ogc_fid)
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_buchungsblattbezirk', 'dummy', 2, 25832, 'POINT');
-
-CREATE UNIQUE INDEX ax_buchungsblattbezirk_gml 
-                 ON ax_buchungsblattbezirk USING btree (gml_id);
+SELECT AddGeometryColumn('ax_buchungsblattbezirk','dummy',25832,'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);
+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';
@@ -4036,12 +4157,14 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	sonstigesmodell		character varying(9),
-	anlass			integer,
-	schluesselgesamt	character varying(7),
-	bezeichnung		character varying(120), -- 102
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	sonstigesmodell		varchar,
+	anlass			integer,
+	schluesselgesamt	varchar,
+	bezeichnung		varchar, -- 102
 	land			integer,
-	stelle			character varying(5),
+	stelle			varchar,
 	stellenart		integer,
 	-- hat character	varying,
@@ -4049,11 +4172,8 @@
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_dienststelle', 'dummy', 2, 25832, 'POINT');
+SELECT AddGeometryColumn('ax_dienststelle','dummy',25832,'POINT',2);
 
 -- Index fÃŒr alkis_beziehungen
-CREATE UNIQUE INDEX ax_dienststelle_gml 
-                 ON ax_dienststelle USING btree (gml_id);
+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';
@@ -4066,35 +4186,30 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	anlass			integer,
-	schluesselgesamt	character varying(13),
-	bezeichnung		character varying(28),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	anlass			integer,
+	schluesselgesamt	varchar,
+	bezeichnung		varchar,
 	land			integer,
 	regierungsbezirk	integer,
 	kreis			integer,
 	gemeinde		integer,
-	lage			character varying(5),
+	lage			varchar,
 	CONSTRAINT ax_lagebezeichnungkatalogeintrag_pk PRIMARY KEY (ogc_fid)
 );
 
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'ax_lagebezeichnungkatalogeintrag', 'dummy', 2, 25832, 'POINT');
-
-CREATE UNIQUE INDEX ax_lagebezeichnungkatalogeintrag_gml 
-                 ON ax_lagebezeichnungkatalogeintrag USING btree (gml_id);
+SELECT AddGeometryColumn('ax_lagebezeichnungkatalogeintrag','dummy',25832,'POINT',2);
+
+CREATE UNIQUE INDEX ax_lagebezeichnungkatalogeintrag_gml ON ax_lagebezeichnungkatalogeintrag USING btree (gml_id,beginnt);
 
 -- NRW: Nummerierung Strassenschluessel innerhalb einer Gemeinde
 -- Die Kombination Gemeinde und StraÃenschlÃŒssel ist also ein eindeutiges Suchkriterium.
-CREATE INDEX ax_lagebezeichnungkatalogeintrag_lage 
-          ON ax_lagebezeichnungkatalogeintrag USING btree (gemeinde, lage);
+CREATE INDEX ax_lagebezeichnungkatalogeintrag_lage ON ax_lagebezeichnungkatalogeintrag USING btree (gemeinde, lage);
 
 -- Suchindex (Verwendung in Navigations-Programm)
-CREATE INDEX ax_lagebezeichnungkatalogeintrag_gesa 
-          ON ax_lagebezeichnungkatalogeintrag USING btree (schluesselgesamt);
-
-CREATE INDEX ax_lagebezeichnungkatalogeintrag_bez
-          ON ax_lagebezeichnungkatalogeintrag USING btree (bezeichnung);
+CREATE INDEX ax_lagebezeichnungkatalogeintrag_gesa ON ax_lagebezeichnungkatalogeintrag USING btree (schluesselgesamt);
+CREATE INDEX ax_lagebezeichnungkatalogeintrag_bez  ON ax_lagebezeichnungkatalogeintrag USING btree (bezeichnung);
 
 COMMENT ON TABLE  ax_lagebezeichnungkatalogeintrag              IS 'StraÃentabelle';
@@ -4113,21 +4228,16 @@
 	gml_id			character(16),
 	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	sonstigesmodell		character varying[],
+	endet 			character(20),
+	advstandardmodell	varchar,
+	sonstigesmodell		varchar[],
 	anlass			integer,
 	landschaftstyp		integer,
-	name			character varying(20)
-);
-
-SELECT AddGeometryColumn('ax_kleinraeumigerlandschaftsteil','wkb_geometry','25832','POINT',2);
-
-ALTER TABLE ONLY ax_kleinraeumigerlandschaftsteil
-	ADD CONSTRAINT ax_kleinraeumigerlandschaftsteil_pk PRIMARY KEY (ogc_fid);
-
-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);
+	name			varchar
+);
+
+SELECT AddGeometryColumn('ax_kleinraeumigerlandschaftsteil','wkb_geometry',25832,'POINT',2);
+
+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 a e u m i g e r   L a n d s c h a f t s t e i l';
@@ -4140,18 +4250,17 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
-	anlass			integer,
-	"name"			character varying(20),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	anlass			integer,
+	"name"			varchar,
 	CONSTRAINT ax_wohnplatz_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_wohnplatz','wkb_geometry','25832','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);
+SELECT AddGeometryColumn('ax_wohnplatz','wkb_geometry',25832,'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';
@@ -4168,6 +4277,8 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			character(20),
-	advstandardmodell	character varying(9),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
 	anlass			integer,
 	schluesselgesamt	integer,
@@ -4179,14 +4290,8 @@
 );
 
-SELECT AddGeometryColumn('ax_kommunalesgebiet','wkb_geometry','25832','MULTIPOLYGON',2);
-
--- verschiedene Geometrietypen?
-ALTER TABLE ax_kommunalesgebiet DROP CONSTRAINT enforce_geotype_wkb_geometry;
-
-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);
+SELECT AddGeometryColumn('ax_kommunalesgebiet','wkb_geometry',25832,'GEOMETRY',2);
+
+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';
@@ -4239,60 +4344,15 @@
 
 
--- wenn schon, dann auch alle Tabellen mit Kommanteren versehen:
-COMMENT ON TABLE geometry_columns IS 'Metatabelle der Geometrie-Tabellen, Tabellen ohne Geometrie bekommen Dummy-Eintrag fÃŒr PostNAS-Konverter (GDAL)';
-COMMENT ON TABLE spatial_ref_sys  IS 'Koordinatensysteme und ihre Projektionssparameter';
-
-
--- Tabelle delete fÃŒr LÃ¶sch- und FortfÃŒhrungsdatensÃ€tze
-CREATE TABLE "delete" (
-	ogc_fid		serial NOT NULL,
-	typename	character varying(255),
-	featureid	character(32),
-	CONSTRAINT delete_pk PRIMARY KEY (ogc_fid)
-);
-
--- Erweiterung anstehend:
---  Siehe http://trac.wheregroup.com/PostNAS/ticket/16
--- We need a new column type of type character which can contain update or 
--- delete depending on whether the object comes from a wfs:Delete or a 'wfsext:Replace'.
-
-
--- Dummy-Eintrag in Metatabelle
-INSERT INTO geometry_columns 
-       (f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
-VALUES ('', 'public', 'delete', 'dummy', 2, 25832, 'POINT');
-
-COMMENT ON TABLE "delete" IS 'Hilfstabelle fÃŒr das temporÃ€re Zwischenspeichern von LÃ¶schinformationen wÃ€hrend einer Aktualisierung ÃŒber NAS-NBA-Verfahren.';
-COMMENT ON COLUMN delete.typename   IS 'Objektart, also Name der Tabelle, aus der das Obejkt zu lÃ¶schen ist.';
-COMMENT ON COLUMN delete.featureid  IS 'Zusammen gesetzt aus GML-ID (16) und Zeitstempel.';
-
---
--- Funktion to run after import of the delete-Layer
---
--- Siehe:  http://trac.wheregroup.com/PostNAS/wiki/SchrittfuerSchritt#ImportvonFortf%C3%BChrungsdatens%C3%A4tzen
--- zu lÃ¶schende Objekte (gml_id, Stelle 1-16) werden zunÃ€chst in die Tabelle 'delete' eingetragen.
--- Dann werden sie mit dieser Function aus den Fachtabellen und der Beziehungstabelle gelÃ¶scht.
-CREATE FUNCTION deleteFeature(typename text, featureid text) RETURNS text 
-AS $$ 
- DECLARE 
-  query text;
-  res text; 
- BEGIN 
-     query := 'DELETE FROM ' || $1 || ' WHERE gml_id = ''' || $2 || '''';
-     EXECUTE query;
-     query := 'DELETE FROM alkis_beziehungen WHERE beziehung_von = ''' || $2 || ''' OR beziehung_zu = ''' || $2 || '''';
-     EXECUTE query;
-
-     IF FOUND THEN 
-	--RAISE NOTICE 'query successfull % ', query; 
-	res := 1;
-     ELSE 
-        --RAISE NOTICE 'query no object found % ', query; 
-        res := 0;
-     END IF; 
-  RETURN res; 
- END; 
-$$ LANGUAGE plpgsql; 
-
+-- 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();
 
 --
Index: trunk/data/konvert/postnas_0.7/alkis_PostNAS_0.7_keytables.sql
===================================================================
--- trunk/data/konvert/postnas_0.7/alkis_PostNAS_0.7_keytables.sql	(revision 176)
+++ trunk/data/konvert/postnas_0.7/alkis_PostNAS_0.7_keytables.sql	(revision 178)
@@ -1,4 +1,4 @@
 
--- ALKIS-Datenbank aus dem Konverter PostNAS 0.6
+-- ALKIS-Datenbank aus dem Konverter PostNAS 0.7
 
 -- Z u s a e t z l i c h e   S c h l u e s s e l t a b e l l e n
@@ -10,6 +10,5 @@
 -- Die Tabellen werden vom Buchwerk-Auskunftsprogramm benoetigt.
 
--- Dies Script kann nach dem Anlegen der Datenbank mit dem Script 'alkis_PostNAS_0.5_schema.sql'
--- verarbeitet werden.
+-- Dies Script kann nach dem Anlegen der Datenbank mit dem Script 'alkis_PostNAS_0.7_schema.sql' verarbeitet werden.
 
 -- Alternativ kann eine Template-Datenbbank bereits mit diesen Schluesseltabellen angelegt werden.
@@ -1241,3 +1240,4 @@
 INSERT INTO ax_sonstigesrecht_artdf (bezeichner, wert) VALUES ('Belastung nach Â§7 Abs. 2 GBO',9700);
 INSERT INTO ax_sonstigesrecht_artdf (bezeichner, wert) VALUES ('Sonstiges',9999);
+
 -- ENDE --
Index: trunk/data/konvert/postnas_0.7/pp_laden.sql
===================================================================
--- trunk/data/konvert/postnas_0.7/pp_laden.sql	(revision 176)
+++ trunk/data/konvert/postnas_0.7/pp_laden.sql	(revision 178)
@@ -9,4 +9,5 @@
 --  2012-02-17 Optimierung
 --  2012-04-17 Flurstuecksnummern auf Standardposition
+--  2012-04-24 Generell Filter 'endet IS NULL' um historische Objekte auszublenden
 
 
@@ -45,4 +46,6 @@
       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'
    UNION 
@@ -53,4 +56,5 @@
       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.
@@ -83,4 +87,5 @@
   SELECT DISTINCT land, regierungsbezirk, kreis, gemeinde, gemarkungsnummer
   FROM            ax_flurstueck
+  WHERE           endet IS NULL
   ORDER BY        land, regierungsbezirk, kreis, gemeinde, gemarkungsnummer 
 ;
@@ -103,4 +108,5 @@
        AND a.kreis=b.kreis
        AND a.gemeinde=b.gemeinde
+       AND b.endet IS NULL
    );
 
@@ -112,4 +118,5 @@
      WHERE a.land=b.land 
        AND a.gemarkung=b.gemarkungsnummer
+       AND b.endet IS NULL
    );
 
@@ -122,4 +129,8 @@
 -- Wenn ein Gebiet durch geometrische Filter im NBA ausgegeben wurde, dann gibt es Randstreifen, 
 -- die zu Pseudo-Fluren zusammen gefasst werden. Fachlich falsch!
+
+-- ToDo:
+--   TopologyException: found non-noded intersection between   ...
+--   Nur "geprüfte Flurstücke" verwenden?  Filter?
 
 INSERT INTO pp_flur (land, regierungsbezirk, kreis, gemarkung, flurnummer, anz_fs, the_geom )
@@ -128,4 +139,5 @@
            multi(st_union(st_buffer(f.wkb_geometry,0))) AS the_geom 
      FROM  ax_flurstueck f
+     WHERE f.endet IS NULL
   GROUP BY f.land, f.regierungsbezirk, f.kreis, f.gemarkungsnummer, f.flurnummer;
 
Index: trunk/data/konvert/postnas_0.7/nutzungsart_laden.sql
===================================================================
--- trunk/data/konvert/postnas_0.7/nutzungsart_laden.sql	(revision 176)
+++ trunk/data/konvert/postnas_0.7/nutzungsart_laden.sql	(revision 178)
@@ -16,4 +16,6 @@
 
 --  2012-02-10 PostNAS 07, Umbenennung
+--  2012-04-24 keine historischen Flaechen (..WHERE endet IS NULL), 
+--             Feld 'beginnt' mitnehmen wegen Doppelbelegung gml_id (noch klÃ€ren)
 
 SET client_encoding = 'UTF-8';
@@ -37,56 +39,72 @@
 
 -- 01 REO: ax_Wohnbauflaeche
-INSERT INTO nutzung (gml_id, nutz_id, class,          info, zustand, name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 1,       artderbebauung, null ,zustand, name, null,        wkb_geometry 
-  FROM ax_wohnbauflaeche;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class,          info, zustand, name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 1,       artderbebauung, null ,zustand, name, null,        wkb_geometry 
+  FROM ax_wohnbauflaeche
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 
 
 -- 02 REO: ax_IndustrieUndGewerbeflaeche
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class,    info, zustand, name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 2,       funktion, null, zustand, name, null,        wkb_geometry 
-  FROM ax_industrieundgewerbeflaeche;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class,    info, zustand, name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 2,       funktion, null, zustand, name, null,        wkb_geometry 
+  FROM ax_industrieundgewerbeflaeche
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 
 
 -- 03 REO: ax_Halde
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class,    info, zustand, name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 3,       lagergut, null, zustand, name, null,        wkb_geometry 
-  FROM ax_halde;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class,    info, zustand, name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 3,       lagergut, null, zustand, name, null,        wkb_geometry 
+  FROM ax_halde
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 
 
 -- 04 ax_Bergbaubetrieb
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class,    info, zustand, name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 4,       abbaugut, null, zustand, name, null,        wkb_geometry 
-  FROM ax_bergbaubetrieb;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class,    info, zustand, name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 4,       abbaugut, null, zustand, name, null,        wkb_geometry 
+  FROM ax_bergbaubetrieb
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 
 
 -- 05 REO: ax_TagebauGrubeSteinbruch
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class,    info, zustand, name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 5,       abbaugut, null, zustand, name, null,        wkb_geometry 
-  FROM ax_tagebaugrubesteinbruch;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class,    info, zustand, name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 5,       abbaugut, null, zustand, name, null,        wkb_geometry 
+  FROM ax_tagebaugrubesteinbruch
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 
 
 -- 06 REO: ax_FlaecheGemischterNutzung
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class,    info, zustand, name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 6,       funktion, null, zustand, name, null,        wkb_geometry 
-  FROM ax_flaechegemischternutzung;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class,    info, zustand, name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 6,       funktion, null, zustand, name, null,        wkb_geometry 
+  FROM ax_flaechegemischternutzung
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 
 
 -- 07 REO: ax_FlaecheBesondererFunktionalerPraegung
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class,    info,           zustand, name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 7,       funktion, artderbebauung, zustand, name, null,        wkb_geometry 
-  FROM ax_flaechebesondererfunktionalerpraegung;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class,    info,           zustand, name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 7,       funktion, artderbebauung, zustand, name, null,        wkb_geometry 
+  FROM ax_flaechebesondererfunktionalerpraegung
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 
 
 -- 08 REO: ax_SportFreizeitUndErholungsflaeche
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class,    info, zustand, name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 8,       funktion, null, zustand, name, null,        wkb_geometry 
-  FROM ax_sportfreizeitunderholungsflaeche;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class,    info, zustand, name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 8,       funktion, null, zustand, name, null,        wkb_geometry 
+  FROM ax_sportfreizeitunderholungsflaeche
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 -- weiteres Feld: name char(20)?
 
@@ -94,7 +112,9 @@
 -- 09 REO: ax_Friedhof
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class,    info, zustand, name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 9,       funktion, null, zustand, name, null,        wkb_geometry 
-  FROM ax_friedhof;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class,    info, zustand, name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 9,       funktion, null, zustand, name, null,        wkb_geometry 
+  FROM ax_friedhof
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 
 
@@ -103,28 +123,35 @@
 -- 10 ax_Strassenverkehr
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class,    info,   zustand, name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 10,      funktion, null,   zustand, name, zweitname,   wkb_geometry 
-  FROM ax_strassenverkehr;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class,    info,   zustand, name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 10,      funktion, null,   zustand, name, zweitname,   wkb_geometry 
+  FROM ax_strassenverkehr
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 
 
 -- 11 ax_Weg
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class,    info,  zustand, name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 11,      funktion, null,  null,    name, bezeichnung, wkb_geometry 
-  FROM ax_weg;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class,    info,  zustand, name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 11,      funktion, null,  null,    name, bezeichnung, wkb_geometry 
+  FROM ax_weg
+  WHERE endet IS NULL;
 
 
 -- 12 ax_Platz
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class,    info, zustand, name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 12,      funktion, null, null,    name, zweitname,   wkb_geometry 
-  FROM ax_platz;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class,    info, zustand, name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 12,      funktion, null, null,    name, zweitname,   wkb_geometry 
+  FROM ax_platz
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 
 
 -- 13 ax_Bahnverkehr
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class,    info,          zustand, name,        bezeichnung, wkb_geometry)
-  SELECT             gml_id, 13,      funktion, bahnkategorie, zustand, bezeichnung, null,        wkb_geometry 
-  FROM ax_bahnverkehr;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class,    info,          zustand, name,        bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 13,      funktion, bahnkategorie, zustand, bezeichnung, null,        wkb_geometry 
+  FROM ax_bahnverkehr
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 -- bahnkategorie ist alternativ ein geeignetes class-Feld
 
@@ -132,14 +159,18 @@
 -- 14 ax_Flugverkehr
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class,    info,  zustand, name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 14,      art,      null,  zustand, name, bezeichnung, wkb_geometry 
-  FROM ax_flugverkehr;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class,    info,  zustand, name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 14,      art,      null,  zustand, name, bezeichnung, wkb_geometry 
+  FROM ax_flugverkehr
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 
 
 -- 15 ax_Schiffsverkehr
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class,    info, zustand, name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 15,      funktion, null, zustand, name, null,        wkb_geometry 
-  FROM ax_schiffsverkehr;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class,    info, zustand, name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 15,      funktion, null, zustand, name, null,        wkb_geometry 
+  FROM ax_schiffsverkehr
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 
 
@@ -148,49 +179,63 @@
 -- 16 ax_Landwirtschaft
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class,              info, zustand, name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 16,      vegetationsmerkmal, null, null,    name, null,        wkb_geometry 
-  FROM ax_landwirtschaft;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class,              info, zustand, name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 16,      vegetationsmerkmal, null, null,    name, null,        wkb_geometry 
+  FROM ax_landwirtschaft
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 
 
 -- 17 ax_Wald
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class,              info, zustand, name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 17,      vegetationsmerkmal, null, null,    name, bezeichnung, wkb_geometry 
-  FROM ax_wald;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class,              info, zustand, name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 17,      vegetationsmerkmal, null, null,    name, bezeichnung, wkb_geometry 
+  FROM ax_wald
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 
 
 -- 18 ax_Gehoelz
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class,    info,               zustand, name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 18,      funktion, vegetationsmerkmal, null,    null, null,        wkb_geometry 
-  FROM ax_gehoelz;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class,    info,               zustand, name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 18,      funktion, vegetationsmerkmal, null,    null, null,        wkb_geometry 
+  FROM ax_gehoelz
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 
 
 -- 19 ax_Heide
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class, info, zustand, name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 19,      null,  null, null,    name, null,        wkb_geometry 
-  FROM ax_heide;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class, info, zustand, name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 19,      null,  null, null,    name, null,        wkb_geometry 
+  FROM ax_heide
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 
 
 -- 20 ax_Moor
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class, info, zustand, name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 20,      null,  null, null,    name, null,        wkb_geometry 
-  FROM ax_moor;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class, info, zustand, name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 20,      null,  null, null,    name, null,        wkb_geometry 
+  FROM ax_moor
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 
 
 -- 21 ax_Sumpf
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class, info, zustand, name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 21,      null,  null, null,    name, null,        wkb_geometry 
-  FROM ax_sumpf;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class, info, zustand, name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 21,      null,  null, null,    name, null,        wkb_geometry 
+  FROM ax_sumpf
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 
 
 -- 22 ax_UnlandVegetationsloseFlaeche
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class,    info,                 zustand, name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 22,      funktion, oberflaechenmaterial, null,    name, null,        wkb_geometry 
-  FROM ax_unlandvegetationsloseflaeche;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class,    info,                 zustand, name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 22,      funktion, oberflaechenmaterial, null,    name, null,        wkb_geometry 
+  FROM ax_unlandvegetationsloseflaeche
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 
 -- (23 NummerierungslÃŒcke)
@@ -200,28 +245,36 @@
 -- 24 ax_Fliessgewaesser
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class,    info, zustand,  name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 24,      funktion, null, zustand,  name, null,        wkb_geometry 
-  FROM ax_fliessgewaesser;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class,    info, zustand,  name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 24,      funktion, null, zustand,  name, null,        wkb_geometry 
+  FROM ax_fliessgewaesser
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 
 
 -- 25 ax_Hafenbecken
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class,    info,    zustand,   name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 25,      funktion, nutzung, null,      name, null,        wkb_geometry 
-  FROM ax_hafenbecken;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class,    info,    zustand,   name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 25,      funktion, nutzung, null,      name, null,        wkb_geometry 
+  FROM ax_hafenbecken
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 
 
 -- 26 ax_StehendesGewaesser
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class,    info, zustand, name, bezeichnung,         wkb_geometry)
-  SELECT             gml_id, 26,      funktion, null, null,    name, gewaesserkennziffer, wkb_geometry 
-  FROM ax_stehendesgewaesser;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class,    info, zustand, name, bezeichnung,         wkb_geometry)
+  SELECT             gml_id, beginnt, 26,      funktion, null, null,    name, gewaesserkennziffer, wkb_geometry 
+  FROM ax_stehendesgewaesser
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 
 
 -- 27 ax_Meer
 -- -------------------------------------
-INSERT INTO nutzung (gml_id, nutz_id, class,    info, zustand, name, bezeichnung, wkb_geometry)
-  SELECT             gml_id, 27,      funktion, null, null,    name, bezeichnung, wkb_geometry 
-  FROM ax_meer;
+INSERT INTO nutzung (gml_id, beginnt, nutz_id, class,    info, zustand, name, bezeichnung, wkb_geometry)
+  SELECT             gml_id, beginnt, 27,      funktion, null, null,    name, bezeichnung, wkb_geometry 
+  FROM ax_meer
+  WHERE endet IS NULL
+    AND st_geometrytype(wkb_geometry) = 'ST_Polygon';
 
 
Index: trunk/data/konvert/postnas_0.7/pp_definition.sql
===================================================================
--- trunk/data/konvert/postnas_0.7/pp_definition.sql	(revision 176)
+++ trunk/data/konvert/postnas_0.7/pp_definition.sql	(revision 178)
@@ -10,4 +10,6 @@
 --  2012-02-28 gkz aus View nehmen
 --  2012-04-17 Flurstuecksnummern auf Standardposition
+--  2012-04-23 ax_flurstueck hat keinen Unique Index mahr auf gml_id,
+--             ForeignKey vorÃŒbergehend ausgeschaltet.
 
 
@@ -189,8 +191,13 @@
     fsgml	character(16),
     fsnum	character varying(10),  -- zzzzz/nnnn
-    CONSTRAINT pp_flurstueck_nr_pk  PRIMARY KEY (gid),
-    CONSTRAINT pp_flurstueck_nr_gml FOREIGN KEY (fsgml)
-      REFERENCES ax_flurstueck (gml_id) MATCH SIMPLE
-      ON UPDATE CASCADE ON DELETE CASCADE
+    CONSTRAINT pp_flurstueck_nr_pk  PRIMARY KEY (gid)  --,
+
+-- Durch Ãnderung Patch #5444 am 2012-04-23 hat 'ax_flurstueck' keinen Unique-Index mahr auf gml_id
+--    CONSTRAINT pp_flurstueck_nr_gml FOREIGN KEY (fsgml)
+--      REFERENCES ax_flurstueck (gml_id) MATCH SIMPLE
+--      ON UPDATE CASCADE ON DELETE CASCADE
+
+-- Ersatzweise einen ForeignKey ÃŒber 2 Felder?
+
   );
 
@@ -214,5 +221,5 @@
 
 -- Ein View, der ÃŒbergangsweise die ehemalige Tabelle mit diesem Namen ersetzt.
--- Wird in der Navigatioin verwendet, bis alle Datenbanken auf die Struktur 0.7 umgestellt 
+-- Wird in der Navigation verwendet, bis alle Datenbanken auf die Struktur 0.7 umgestellt 
 -- sind *UND* die Navigation an die neuen Tabellen angepasst ist.
 
Index: trunk/data/konvert/postnas_0.7/konv_batch.sh
===================================================================
--- trunk/data/konvert/postnas_0.7/konv_batch.sh	(revision 176)
+++ trunk/data/konvert/postnas_0.7/konv_batch.sh	(revision 178)
@@ -22,4 +22,7 @@
 ##   2012-02-17 Optimierung
 ##   2012-02-28 Neuer Parameter 4 um Post-Prozessing zu unterdrücken
+##   2012-04-25 Durch GDAL Patch #5444 werden die Löschungen als Trigger auf Tabelle 'delete' verarbeitet
+##
+## ToDo: Option "-skipfailures" nach Test entfernen ?
 ##
 ## Konverter:   /opt/gdal-1.9.1/bin/ = GDAL 1.9-DEV / PostNAS 0.7
@@ -71,87 +74,73 @@
 	fi
 fi
-layer=""
-# leer = alle Layer
-## Fehlerprotokoll:
-errprot='/data/konvert/postnas_0.7/log/postnas_err_'$DBNAME'.prot'
+# Fehlerprotokoll:
+  errprot='/data/konvert/postnas_0.7/log/postnas_err_'$DBNAME'.prot'
 #
 # DB-Connection
-con="-p 5432 -d ${DBNAME} "
-echo "Datenbank-Name . . = ${DBNAME}"
-echo "Ordner NAS-Daten . = ${ORDNER}"
-echo "Verarbeitungs-Modus= ${verarb}"
-echo " "
-cd ${ORDNER}
-rm ../temp/*.gfs
-echo "Dateien in " ${ORDNER} " (ls) :"
-ls
-# Alte delete-Eintraege (vorangegangener Abbruch?) loeschen, oder abarbeiten?
-echo 'TRUNCATE table "delete";' | psql $con 
-for zipfile in *.zip ; do 
+  con="-p 5432 -d ${DBNAME} "
+  echo "Datenbank-Name . . = ${DBNAME}"
+  echo "Ordner NAS-Daten . = ${ORDNER}"
+  echo "Verarbeitungs-Modus= ${verarb}"
   echo " "
-  echo "*********"
-  echo "* Archiv: " $zipfile
-  rm ../temp/*.xml
-  unzip ${zipfile}  -d ../temp
-  # Es sollte eigentlich immer geneu ein XML-File in jedem ZIP-File stecken,
-  # aber es geht auch anders.
-  for nasdatei in ../temp/*.xml ; do 
-    echo "* Datei:  " $nasdatei
-    # Zwischenueberschrift im Fehlerprotokoll
-    echo "* Datei: " $nasdatei >> $errprot
-    if [ $UPD == "e" ]
-    then
-      # E R S T L A D E N
-      /opt/gdal-1.9.1/bin/ogr2ogr -f "PostgreSQL" -append  ${update}  -skipfailures \
-         PG:"dbname=${DBNAME} host=localhost port=5432" \
-         -a_srs EPSG:25832  ${nasdatei}  ${layer}  2>> $errprot
-      # Abbruch bei Fehler?
+# Alte delete-Eintraege in DB?
+  echo 'TRUNCATE table "delete";' | psql $con 
+#
+# Ordner abarbeiten
+#
+  cd ${ORDNER}
+  rm ../temp/*.gfs
+  echo "Dateien in " ${ORDNER} " (ls) :"
+  ls
+  for zipfile in *.zip ; do 
+    echo " "
+    rm ../temp/*.xml
+    echo "*********"
+   #echo "* Archiv: " $zipfile
+    unzip ${zipfile}  -d ../temp
+    # Es sollte nur ein XML-File in jedem ZIP-File stecken, aber es geht auch anders.
+    for nasdatei in ../temp/*.xml ; do 
+      # echo "* Datei:  " $nasdatei
+      # Zwischenueberschrift im Fehlerprotokoll
+      echo "* Datei: " $nasdatei >> $errprot
+      #
+      # PostNAS Konverter-Aufruf
+      #
+      /opt/gdal-1.9.1/bin/ogr2ogr -f "PostgreSQL" -append  ${update} -skipfailures \
+         PG:"dbname=${DBNAME} host=localhost port=5432" -a_srs EPSG:25832 ${nasdatei} 2>> $errprot
       nasresult=$?
       echo "* Resultat: " $nasresult " fuer " ${nasdatei}
-    else
-      # A K T U A L I S I E R U N G
-      echo "- 1. Nur delete-Layer auswerten" 
-      /opt/gdal-1.9.1/bin/ogr2ogr -f "PostgreSQL" -append  ${update}  -skipfailures \
-         PG:"dbname=${DBNAME} host=localhost port=5432" \
-         -a_srs EPSG:25832  ${nasdatei}  delete  2>> $errprot
-      nasresult=$?
-      echo "* Resultat: " $nasresult " fuer delete aus " ${nasdatei}
-      #
-      # Durch die Funktion 'deleteFeature' in der Datenbank die delete-Objekte abarbeiten
-      echo "- 1a. delete-Layer abarbeiten:"
-      psql $con  < /data/konvert/postnas_0.7/delete.sql
-      #
-      echo "- 2. alle Layer auswerten"
-      /opt/gdal-1.9.1/bin/ogr2ogr -f "PostgreSQL" -append  ${update}  -skipfailures \
-        PG:"dbname=${DBNAME} host=localhost port=5432" \
-        -a_srs EPSG:25832  ${nasdatei}  ${layer}  2>> $errprot
-      nasresult=$?
-      echo "* Resultat: " $nasresult " fuer " ${nasdatei}
-      #
-      echo "- 2a. delete-Layer nochmals leoeschen:"
-      echo 'TRUNCATE table "delete";' | psql $con 
-    fi
-  done
-  # Ende Zipfile
-  echo "*********"
-done
-rm ../temp/*.xml
-echo " "
-echo "** Ende Konvertierung Ordner ${ORDNER}"
-##
-if [ $PP == "nopp" ]
-then
-  echo "** KEIN Post-Processing - Dies Spaeter nachholen."
-  # Dies kann sinnvoll sein, wenn mehrere kleine Aktualisierungen hintereinander auf einem großen Bestand laufen
-  # Der Aufwand für das Post-Processing ist dann nur bei der LETZTEN Aktualisierung notwendig.
-else
-  echo "** Post-Processing (Nacharbeiten zur Konvertierung)"
-  echo "** - Optimierte Nutzungsarten neu Laden:"
-  psql -p 5432 -d ${DBNAME} < /data/konvert/postnas_0.7/nutzungsart_laden.sql
-  ##
-  echo "** - Fluren / Gemarkungen / Gemeinden neu Laden:"
-  psql -p 5432 -d ${DBNAME} < /data/konvert/postnas_0.7/pp_laden.sql
-fi
+    done # Ende Zipfile
+  done # Ende Ordner
+  rm ../temp/*.xml
+  echo " "
+  echo "** Ende Konvertierung Ordner ${ORDNER}"
 #
-echo "Das Fehler-Protokoll wurde ausgegeben in die Datei '$errprot' "
-##
+# 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 großen Bestand laufen
+    # Der Aufwand für das Post-Processing ist dann nur bei der LETZTEN Aktualisierung notwendig.
+  else
+    echo "** Post-Processing (Nacharbeiten zur Konvertierung)"
+    echo "** - Optimierte Nutzungsarten neu Laden:"
+    psql -p 5432 -d ${DBNAME} < /data/konvert/postnas_0.7/nutzungsart_laden.sql
+    ##
+    echo "** - Fluren / Gemarkungen / Gemeinden neu Laden:"
+    psql -p 5432 -d ${DBNAME} < /data/konvert/postnas_0.7/pp_laden.sql
+  fi
+# Durch Einfuegen in Tabelle 'delete' werden Loeschungen anderer Tabellen getriggert
+  echo "** delete-Tabelle enthält:"
+  echo 'SELECT COUNT(featureid) AS delete_zeilen FROM "delete";' | psql $con
+  echo "   delete-Tabelle loeschen:"
+  echo 'TRUNCATE table "delete";' | psql $con
+#
+# Wenn die Datenbank MIT Historie angelegt wurde, man diese aber gar nicht braucht,
+# dann hinterher aufräumen der historischen Objekte 
+  echo "** geendete Objekte entfernen:"
+# Function :
+  echo 'SELECT alkis_delete_all_endet();' | psql $con
+#
+  echo "Das Fehler-Protokoll wurde ausgegeben in die Datei\n$errprot"
+#
