Index: trunk/data/konvert/postnas_0.7/alkis-trigger-kill.sql
===================================================================
--- trunk/data/konvert/postnas_0.7/alkis-trigger-kill.sql	(revision 190)
+++ trunk/data/konvert/postnas_0.7/alkis-trigger-kill.sql	(revision 190)
@@ -0,0 +1,4 @@
+CREATE TRIGGER delete_feature_trigger
+	BEFORE INSERT ON delete
+	FOR EACH ROW
+	EXECUTE PROCEDURE delete_feature_kill();
Index: trunk/data/konvert/postnas_0.7/ordner_konvertieren.sh
===================================================================
--- trunk/data/konvert/postnas_0.7/ordner_konvertieren.sh	(revision 184)
+++ trunk/data/konvert/postnas_0.7/ordner_konvertieren.sh	(revision 190)
@@ -10,4 +10,7 @@
 ##  2012-02-28  Parameter 4 = 'pp' (mit Post-Processing)
 ## 
+
+POSTNAS_HOME=$(dirname $0)
+
 function get_db_config(){
 	#
@@ -73,8 +76,8 @@
 fi
 # Protokolldatei ueberschreiben
-echo "** Konvertierung ALKIS **" > /data/konvert/postnas_0.7/log/postnas_err.prot
+echo "** Konvertierung ALKIS **" > $POSTNAS_HOME/log/postnas_err.prot
 echo "** Beginn Batch **"
 ##                                       1        2        3     4
-/data/konvert/postnas_0.7/konv_batch.sh  $ORDNER  $DBNAME  $UPD  pp
+$POSTNAS_HOME/konv_batch.sh  $ORDNER  $DBNAME  $UPD  pp
 result=$?
 if [ $result = 0 ]
@@ -86,5 +89,5 @@
 echo " "
 echo " Kommando fuer Wiederholung:"
-echo " /data/konvert/postnas_0.7/konv_batch.sh  $ORDNER  $DBNAME  $UPD  pp"
+echo " $POSTNAS_HOME/konv_batch.sh  $ORDNER  $DBNAME  $UPD  pp"
 echo " "
 ###
Index: trunk/data/konvert/postnas_0.7/alkis-functions.sql
===================================================================
--- trunk/data/konvert/postnas_0.7/alkis-functions.sql	(revision 190)
+++ trunk/data/konvert/postnas_0.7/alkis-functions.sql	(revision 190)
@@ -0,0 +1,487 @@
+-- Table/View/Sequence lÃ¶schen, wenn vorhanden
+CREATE OR REPLACE FUNCTION alkis_dropobject(t TEXT) RETURNS varchar AS $$
+DECLARE
+	c RECORD;
+	s varchar;
+	r varchar;
+	d varchar;
+	i integer;
+	tn varchar;
+BEGIN
+	r := '';
+	d := '';
+
+	-- drop objects
+	FOR c IN SELECT relkind,relname
+		FROM pg_class
+		JOIN pg_namespace ON pg_class.relnamespace=pg_namespace.oid
+		WHERE pg_namespace.nspname='public' AND pg_class.relname=t
+		ORDER BY relkind
+	LOOP
+		IF c.relkind = 'v' THEN
+			r := r || d || 'Sicht ' || c.relname || ' gelÃ¶scht.';
+			EXECUTE 'DROP VIEW ' || c.relname || ' CASCADE';
+		ELSIF c.relkind = 'r' THEN
+			r := r || d || 'Tabelle ' || c.relname || ' gelÃ¶scht.';
+			EXECUTE 'DROP TABLE ' || c.relname || ' CASCADE';
+		ELSIF c.relkind = 'S' THEN
+			r := r || d || 'Sequenz ' || c.relname || ' gelÃ¶scht.';
+			EXECUTE 'DROP SEQUENCE ' || c.relname;
+		ELSIF c.relkind <> 'i' THEN
+			r := r || d || 'Typ ' || c.table_type || '.' || c.table_name || ' unerwartet.';
+		END IF;
+		d := E'\n';
+	END LOOP;
+
+	FOR c IN SELECT indexname FROM pg_indexes WHERE schemaname='public' AND indexname=t
+	LOOP
+		r := r || d || 'Index ' || c.indexname || ' gelÃ¶scht.';
+		EXECUTE 'DROP INDEX ' || c.indexname;
+		d := E'\n';
+	END LOOP;
+
+	FOR c IN SELECT proname,proargtypes
+		FROM pg_proc
+		JOIN pg_namespace ON pg_proc.pronamespace=pg_namespace.oid
+		WHERE pg_namespace.nspname='public' AND pg_proc.proname=t
+	LOOP
+		r := r || d || 'Funktion ' || c.proname || ' gelÃ¶scht.';
+
+		s := 'DROP FUNCTION ' || c.proname || '(';
+		d := '';
+
+		FOR i IN array_lower(c.proargtypes,1)..array_upper(c.proargtypes,1) LOOP
+			SELECT typname INTO tn FROM pg_type WHERE oid=c.proargtypes[i];
+			s := s || d || tn;
+			d := ',';
+		END LOOP;
+
+		s := s || ')';
+
+		EXECUTE s;
+
+		d := E'\n';
+	END LOOP;
+
+	FOR c IN SELECT relname,conname
+		FROM pg_constraint
+		JOIN pg_class ON pg_constraint.conrelid=pg_constraint.oid
+		JOIN pg_namespace ON pg_constraint.connamespace=pg_namespace.oid
+		WHERE pg_namespace.nspname='public' AND pg_constraint.conname=t
+	LOOP
+		r := r || d || 'Constraint ' || c.conname || ' von ' || c.relname || ' gelÃ¶scht.';
+		EXECUTE 'ALTER TABLE ' || c.relname || ' DROP CONSTRAINT ' || c.conname;
+		d := E'\n';
+	END LOOP;
+
+	RETURN r;
+END;
+$$ LANGUAGE plpgsql;
+
+-- Alle ALKIS-Tabellen lÃ¶schen
+SELECT alkis_dropobject('alkis_drop');
+CREATE FUNCTION alkis_drop() RETURNS varchar AS $$
+DECLARE
+	c RECORD;
+	r VARCHAR;
+	d VARCHAR;
+BEGIN
+	r := '';
+	d := '';
+	-- drop tables & 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
+			r := r || d || 'Sicht ' || c.table_name || ' gelÃ¶scht.';
+			EXECUTE 'DROP VIEW ' || c.table_name || ' CASCADE';
+		ELSIF c.table_type = 'BASE TABLE' THEN
+			r := r || d || 'Tabelle ' || c.table_name || ' gelÃ¶scht.';
+			EXECUTE 'DROP TABLE ' || c.table_name || ' CASCADE';
+		ELSE
+			r := r || d || 'Typ ' || c.table_type || '.' || c.table_name || ' unerwartet.';
+		END IF;
+		d := E'\n';
+	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;
+
+-- Table/View/Sequence lÃ¶schen, wenn vorhanden
+CREATE OR REPLACE FUNCTION alkis_dropobject(t TEXT) RETURNS void AS $$
+DECLARE
+	c RECORD;
+BEGIN
+	-- drop objects
+	FOR c IN SELECT relkind,relname
+		FROM pg_class
+		JOIN pg_namespace ON pg_class.relnamespace=pg_namespace.oid
+		WHERE pg_namespace.nspname='public' AND pg_class.relname=t
+		ORDER BY relkind
+	LOOP
+		IF c.relkind = 'v' THEN
+			RAISE NOTICE 'Dropping view %', c.relname;
+			EXECUTE 'DROP VIEW ' || c.relname || ' CASCADE';
+		ELSIF c.relkind = 'r' THEN
+			RAISE NOTICE 'Dropping table %', c.relname;
+			EXECUTE 'DROP TABLE ' || c.relname || ' CASCADE';
+		ELSIF c.relkind = 'S' THEN
+			RAISE NOTICE 'Dropping sequence %', c.relname;
+			EXECUTE 'DROP SEQUENCE ' || c.relname;
+		ELSIF c.relkind <> 'i' THEN
+			RAISE NOTICE 'Unexpected type %,%', c.relkind, c.relname;
+		END IF;
+	END LOOP;
+END;
+$$ LANGUAGE plpgsql;
+
+-- Alle ALKIS-Tabellen leeren
+SELECT alkis_dropobject('alkis_delete');
+CREATE FUNCTION alkis_delete() RETURNS varchar AS $$
+DECLARE
+	c RECORD;
+	r varchar;
+	d varchar;
+BEGIN
+	r := '';
+	d := '';
+
+	-- drop views
+	FOR c IN
+		SELECT table_name
+		FROM information_schema.tables
+		WHERE table_schema='public' AND table_type='BASE TABLE'
+		  AND ( substr(table_name,1,3) IN ('ax_','ap_','ks_')
+			OR table_name IN ('alkis_beziehungen','delete') )
+	LOOP
+		r := r || d || c.table_name || ' wurde geleert.';
+		EXECUTE 'DELETE FROM '||c.table_name;
+		d := E'\n';
+	END LOOP;
+
+	RETURN r;
+END;
+$$ LANGUAGE plpgsql;
+
+-- Ãbersicht erzeugen, die alle alkis_beziehungen mit den Typen der beteiligen ALKIS-Objekte versieht
+SELECT alkis_dropobject('alkis_mviews');
+CREATE FUNCTION alkis_mviews() RETURNS varchar AS $$
+DECLARE
+	sql TEXT;
+	delim TEXT;
+	c RECORD;
+BEGIN
+	SELECT alkis_dropobject('vbeziehungen') INTO sql;
+	SELECT alkis_dropobject('vobjekte') INTO sql;
+
+	delim := '';
+	sql := 'CREATE VIEW vobjekte AS ';
+
+	FOR c IN SELECT table_name FROM information_schema.columns WHERE column_name='gml_id' AND substr(table_name,1,3) IN ('ax_','ap_','ks_') LOOP
+		sql := sql || delim || 'SELECT gml_id,beginnt,''' || 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);
+
+	CREATE VIEW 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);
+
+	RETURN 'ALKIS-Views erzeugt.';
+END;
+$$ LANGUAGE plpgsql;
+
+-- Indizes erzeugen
+SELECT alkis_dropobject('alkis_update_schema');
+CREATE FUNCTION alkis_update_schema() RETURNS varchar 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
+		SELECT alkis_dropobject(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;
+
+	RETURN 'Schema aktualisiert.';
+END;
+$$ LANGUAGE plpgsql;
+
+
+-- LÃ¶schsatz verarbeiten (MIT Historie)
+-- context='delete'        => "endet" auf aktuelle Zeit setzen
+-- context='replace'       => "endet" 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 Objekt nicht gefunden
+
+		EXECUTE sql INTO endete;
+
+		IF endete IS NULL AND length(NEW.replacedBy)>16 THEN
+			RAISE NOTICE '%: Nachfolger % nicht gefunden - versuche ''%''', NEW.featureid, NEW.replacedBy, substr(NEW.replacedBy, 1, 16);
+			sql := 'SELECT beginnt FROM ' || NEW.typename
+			    || ' WHERE gml_id=''' || substr(NEW.replacedBy, 1, 16) || ''''
+			    || ' AND endet IS NULL'
+			    || ' AND identifier<>''urn:adv:oid:'|| NEW.featureid || ''''
+			    || ' ORDER BY beginnt DESC'
+			    || ' LIMIT 1';
+			EXECUTE sql INTO endete;
+			gml_id := gml_id || ''' AND beginnt<>''' || 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 % Objekten statt nur einem auf % gesetzt - ignoriert', NEW.featureid, n, endete;
+			NEW.ignored := true;
+			RETURN NEW;
+		ELSE
+			RAISE EXCEPTION '%: Untergangsdatum von % Objekten 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
+-- geaendert krz FJ 2012-10-31
+CREATE OR REPLACE FUNCTION delete_feature_kill() RETURNS TRIGGER AS $$
+DECLARE
+	query TEXT;
+	begsql TEXT;
+	aktbeg 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
+		-- ersatzloses Loeschen eines Objektes
+
+		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;
+		RAISE NOTICE 'LÃ¶sche gml_id % in % und Beziehungen', gml_id, NEW.typename;
+
+	ELSE
+		-- Ersetzen eines Objektes
+		-- In der objekt-Tabelle sind bereits 2 Objekte vorhanden (alt und neu).
+		-- Die 2 DatensÃ€tze unterscheiden sich nur in ogc_fid und beginnt
+
+		-- beginnt-Wert des aktuellen Objektes ermitteln 
+		-- RAISE NOTICE 'Suche beginnt von neuem gml_id % ', substr(NEW.replacedBy, 1, 16);
+		begsql := 'SELECT max(beginnt) FROM ' || NEW.typename || ' WHERE gml_id = ''' || substr(NEW.replacedBy, 1, 16) || ''' AND endet IS NULL';
+		EXECUTE begsql INTO aktbeg;
+
+		-- Nur alte Objekte entfernen
+		query := 'DELETE FROM ' || NEW.typename 
+			|| ' WHERE gml_id = ''' || gml_id || ''' AND beginnt < ''' || aktbeg || '''';
+		EXECUTE query;
+
+		-- Tabelle alkis_beziehungen
+		IF gml_id = substr(NEW.replacedBy, 1, 16) THEN -- gml_id gleich
+			-- Beziehungen des Objektes wurden redundant noch einmal eingetragen
+			-- ToDo:         HIER sofort die Redundanzen zum aktuellen Objekt beseitigen.
+			-- Workaround: Nach der Konvertierung werden im Post-Processing 
+			--             ALLE Redundanzen mit einem SQL-Statemant beseitigt.
+		--	RAISE NOTICE 'Ersetze gleiche gml_id % in %', gml_id, NEW.typename;
+
+		-- ENTWURF ungetestet:
+		--query := 'DELETE FROM alkis_beziehungen AS bezalt 
+		--	WHERE (bezalt.beziehung_von = ' || gml_id || ' OR bezalt.beziehung_zu = ' || gml_id ||')
+		--	AND EXISTS (SELECT ogc_fid FROM alkis_beziehungen AS bezneu 
+		--		WHERE bezalt.beziehung_von = bezneu.beziehung_von 
+		--		AND bezalt.beziehung_zu = bezneu.beziehung_zu
+		--		AND bezalt.beziehungsart = bezneu.beziehungsart
+		--		AND bezalt.ogc_fid < bezneu.ogc_fid);'
+		--EXECUTE query;
+
+		ELSE
+			-- replace mit ungleicher gml_id
+			-- Falls dies vorkommt, die Function erweitern
+			RAISE EXCEPTION '%: neue gml_id % bei Replace in %. alkis_beziehungen muss aktualisiert werden!', gml_id, NEW.replacedBy, NEW.typename;
+		END IF;
+	END IF;
+
+	NEW.ignored := false;
+	RETURN NEW;
+END;
+$$ LANGUAGE plpgsql;
+
+-- Im Trigger 'delete_feature_trigger' muss eine dieser beiden Funktionen
+-- (delete_feature_hist oder delete_feature_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, 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 ''endet'' in: %', c.table_name;
+	END LOOP;
+END;
+$$ LANGUAGE plpgsql;
Index: trunk/data/konvert/postnas_0.7/alkis-trigger-hist.sql
===================================================================
--- trunk/data/konvert/postnas_0.7/alkis-trigger-hist.sql	(revision 190)
+++ trunk/data/konvert/postnas_0.7/alkis-trigger-hist.sql	(revision 190)
@@ -0,0 +1,4 @@
+CREATE TRIGGER delete_feature_trigger 
+	BEFORE INSERT ON delete 
+	FOR EACH ROW 
+	EXECUTE PROCEDURE delete_feature_hist();
Index: trunk/data/konvert/postnas_0.7/konvertierung_kommandos_beispiele.txt
===================================================================
--- trunk/data/konvert/postnas_0.7/konvertierung_kommandos_beispiele.txt	(revision 184)
+++ trunk/data/konvert/postnas_0.7/konvertierung_kommandos_beispiele.txt	(revision 190)
@@ -18,8 +18,8 @@
 
 Packen:
- /data/konvert/postnas_0.7/zip_ordner.sh /data/nas_daten/290/0003
+ /pfad/zu/postnas/zip_ordner.sh /data/nas_daten/290/0003
 
 Neu-Laden:
- /data/konvert/postnas_0.7/konv_batch.sh /data/nas_daten/290/0000 alkis07290_neu e  pp
+ /pfad/zu/postnas/konv_batch.sh /data/nas_daten/290/0000 alkis07290_neu e  pp
 
 
@@ -29,7 +29,7 @@
 
 Aktualisieren:
- /data/konvert/postnas_0.7/konv_batch.sh /data/nas_daten/290/0002 alkis07290 a  nopp
- /data/konvert/postnas_0.7/konv_batch.sh /data/nas_daten/290/0003 alkis07290 a  pp
+ /pfad/zu/postnas/konv_batch.sh /data/nas_daten/290/0002 alkis07290 a  nopp
+ /pfad/zu/postnas/konv_batch.sh /data/nas_daten/290/0003 alkis07290 a  pp
 
 Kontrolle:
- less /data/konvert/postnas_0.7/log/postnas_err.prot
+ less /pfad/zu/postnas/log/postnas_err.prot
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 184)
+++ trunk/data/konvert/postnas_0.7/alkis_PostNAS_0.7_schema.sql	(revision 190)
@@ -1,9 +1,14 @@
 --
 -- *****************************
---       A  L   K   I   S       
+--       A  L   K   I   S
 -- *****************************
 --
 -- Datenbankstruktur PostNAS 0.7  (GDAL aus aktuellem Trunk)
 --
+
+-- Damit die Includes (\i) funktionieren muÃ psql im Verzeichnis ausgefÃŒhrt
+-- werden in dem das Skript liegt. Z.B. per
+-- (cd /pfad/zu/postnas; psql -f alkis_PostNAS_0.7_schema.sql)
+
 -- Stand
 -- -----
@@ -12,5 +17,5 @@
 
 -- 2011-11-02 FJ: Neue Tabellen
--- 2011-11-04 FJ: Anpassungen fuer Buchauskunft "Historie" 
+-- 2011-11-04 FJ: Anpassungen fuer Buchauskunft "Historie"
 -- 2011-11-21 FJ: siehe Version 0.6
 -- 2011-12-16 FJ: Neue Tabelle "ax_sicherungspunkt"
@@ -20,4 +25,5 @@
 
 -- 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.
@@ -35,9 +41,9 @@
 
 -- 2012-04-24 FJ  Datei alkis-funktions aus Diff zum GDAL-Patch #4555 hier integriert
---                Umschaltung mit/ohne Historie ÃŒber VernÃŒpfung Trigger -> Function
+--                Umschaltung mit/ohne Historie ÃŒber VerknÃŒpfung Trigger -> Function
 --                Typ 'GEOMETRY' bei Tabellen: AX_WegPfadSteig, AX_UntergeordnetesGewaesser
 
--- 2012-10-31 FJ  Trigger fuer NAS-Replace-Saetze repariert: 
---                siehe: FUNCTION delete_feature_kill() 
+-- 2012-10-31 FJ  Trigger fuer NAS-Replace-Saetze repariert:
+--                siehe: FUNCTION delete_feature_kill()
 --                ax_historischesflurstueck.buchungsart ist Text nicht integer.
 
@@ -49,5 +55,5 @@
 
 
--- Zur Datenstruktur siehe Dokument: 
+-- Zur Datenstruktur siehe Dokument:
 -- http://www.bezreg-koeln.nrw.de/extra/33alkis/dokumente/Profile_NRW/5-1-1_ALKIS-OK-NRW_GDB.html
 
@@ -55,380 +61,21 @@
   SET default_with_oids = false;
 
--- \set ON_ERROR_STOP
+-- Abbruch bei Fehlern
+\set ON_ERROR_STOP
 
 -- T u n i n g :
---   Die Tabelle 'spatial_ref_sys' einer PostGIS-Datenbank auf 
+--   Die Tabelle 'spatial_ref_sys' einer PostGIS-Datenbank auf
 --   die notwendigen Koordinatensysteme reduzieren. Das Loescht >3000 Eintraege.
 
 --  DELETE FROM spatial_ref_sys
---  WHERE srid NOT 
+--  WHERE srid NOT
 --  IN (2397, 2398, 2399, 4326,    25830, 25831, 25832, 25833, 25834,  31466, 31467, 31468, 31469);
 --  --  Krassowski        lat/lon  UTM                                 GK
 
-
-
--- =======================
 -- Stored Procedures laden
--- =======================
--- \i alkis-functions.sql
-
--- Alle 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;
-
-		-- Das beginn-Datum des neuen Objektes ermitteln, der Satz ist kurz zuvor eingefuegt worden
-
-		-- Variante 1 funktioniert, wenn gml_id auch einen Timestamp enthaelt
-		sql := 'SELECT beginnt FROM ' || NEW.typename || ' WHERE identifier=''urn:adv:oid:' || NEW.replacedBy || '''';
-		-- RAISE NOTICE 'SQL: %', sql; 
-		EXECUTE sql INTO endete;
-
-		IF endete IS NULL AND length(NEW.replacedBy)>16 THEN
-			RAISE NOTICE '%: Nachfolger % nicht gefunden - versuche ''%''', NEW.featureid, NEW.replacedBy, 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;
-
-	-- mit dem zuvor ermittelten Beginn-Datum des replace-Objektes das alte Objekt historisieren
-	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
--- geaendert krz FJ 2012-10-31
-CREATE OR REPLACE FUNCTION delete_feature_kill() RETURNS TRIGGER AS $$
-DECLARE
-	query TEXT;
-	begsql TEXT;
-	aktbeg 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
-		-- ersatzloses Loeschen eines Objektes
-
-		-- Tabelle der Objekt-Art
-		query := 'DELETE FROM ' || NEW.typename 
-			|| ' WHERE gml_id = ''' || gml_id || '''';
-		EXECUTE query;
-
-		-- Tabelle alkis_beziehungen
-		query := 'DELETE FROM alkis_beziehungen WHERE beziehung_von = ''' || gml_id 
-			|| ''' OR beziehung_zu = ''' || gml_id || '''';
-		EXECUTE query;
-		RAISE NOTICE 'LÃ¶sche gml_id % in % und Beziehungen', gml_id, NEW.typename;
-
-	ELSE
-		-- Ersetzen eines Objektes
-		-- In der objekt-Tabelle sind bereits 2 Objekte vorhanden (alt und neu).
-		-- Die 2 DatensÃ€tze unterscheiden sich nur in ogc_fid und beginnt
-
-		-- beginnt-Wert des aktuellen Objektes ermitteln 
-		-- RAISE NOTICE 'Suche beginnt von neuem gml_id % ', substr(NEW.replacedBy, 1, 16);
-		begsql := 'SELECT max(beginnt) FROM ' || NEW.typename || ' WHERE gml_id = ''' || substr(NEW.replacedBy, 1, 16) || ''' AND endet IS NULL';
-		EXECUTE begsql INTO aktbeg;
-
-		-- Nur alte Objekte entfernen
-		query := 'DELETE FROM ' || NEW.typename 
-			|| ' WHERE gml_id = ''' || gml_id || ''' AND beginnt < ''' || aktbeg || '''';
-		EXECUTE query;
-
-		-- Tabelle alkis_beziehungen
-		IF gml_id = substr(NEW.replacedBy, 1, 16) THEN -- gml_id gleich
-			-- Beziehungen des Objektes wurden redundant noch einmal eingetragen
-			-- ToDo:         HIER sofort die Redundanzen zum aktuellen Objekt beseitigen.
-			-- Work-Arround: Nach der Konvertierung werden im Post-Processing 
-			--               ALLE Redundanzen mit einem SQL-Statemant beseitigt.
-		--	RAISE NOTICE 'Ersetze gleiche gml_id % in %', gml_id, NEW.typename;
-
-		-- ENTWURF ungetestet:
-		--query := 'DELETE FROM alkis_beziehungen AS bezalt 
-		--	WHERE (bezalt.beziehung_von = ' || gml_id || ' OR bezalt.beziehung_zu = ' || gml_id ||')
-		--	AND EXISTS (SELECT ogc_fid FROM alkis_beziehungen AS bezneu 
-		--		WHERE bezalt.beziehung_von = bezneu.beziehung_von 
-		--		AND bezalt.beziehung_zu = bezneu.beziehung_zu
-		--		AND bezalt.beziehungsart = bezneu.beziehungsart
-		--		AND bezalt.ogc_fid < bezneu.ogc_fid);'
-		--EXECUTE query;
-
-		ELSE
-			-- replace mit ungleicher gml_id
-			-- Falls dies vorkommt, die Function erweitern
-			RAISE EXCEPTION '%: neue gml_id % bei Replace in %. alkis_beziehungen muss aktualisiert werden!', gml_id, NEW.replacedBy, NEW.typename;
-		END IF;
-	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();
-
+\i alkis-functions.sql
+
+-- Alle Tabellen lÃ¶schen
+SELECT alkis_drop();
 
 -- Tabelle delete fÃŒr LÃ¶sch- und FortfÃŒhrungsdatensÃ€tze
@@ -447,5 +94,5 @@
 
 -- Dummy-Eintrag in Metatabelle
-SELECT AddGeometryColumn('delete','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('delete','dummy',:alkis_epsg,'POINT',2);
 
 CREATE UNIQUE INDEX delete_fid ON "delete"(featureid);
@@ -460,35 +107,28 @@
 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();
-
+--
+-- LÃ¶schtrigger setzen
+--
+-- Option (A) ohne Historie:
+--  - Symlink von alkis-trigger-kill.sql auf alkis-trigger.sql setzen (Default; macht datenbank_anlegen.sh
+--    ggf. automatisch)
+--  - LÃ¶sch- und ÃnderungssÃ€tze werden ausgefÃŒhrt und die alten Objekte werden sofort entfernt
+--
+-- Option (B) mit Historie:
+--  - Symlink von alkis-trigger-hist.sql auf alkis-trigger.sql setzen
+--  - Bei LÃ¶sch- und ÃnderungssÃ€tzen werden die Objekte nicht gelÃ¶scht, sondern
+--    im Feld 'endet' als ungegangen markiert (die den aktuellen gilt: WHERE endet
+--    IS NULL)
+--
+\i alkis-trigger.sql
 
 -- COMMENT ON DATABASE *** IS 'ALKIS - PostNAS 0.7';
 
 -- ===========================================================
---  		A L K I S  -  L a y e r 
+--  		A L K I S  -  L a y e r
 -- ===========================================================
 
 
--- S o n s t i g e s   B a u w e r k 
+-- S o n s t i g e s   B a u w e r k
 -- ----------------------------------
 CREATE TABLE ks_sonstigesbauwerk (
@@ -499,10 +139,10 @@
 	endet			character(20),
 	sonstigesmodell 	varchar,
-	anlass			integer,
+	anlass			varchar,
 	bauwerksfunktion	integer,
 	CONSTRAINT ks_sonstigesbauwerk_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ks_sonstigesbauwerk','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ks_sonstigesbauwerk','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ks_sonstigesbauwerk_geom_idx ON ks_sonstigesbauwerk USING gist (wkb_geometry);
@@ -510,9 +150,9 @@
 
 
--- B e z i e h u n g e n 
+-- B e z i e h u n g e n
 -- ----------------------------------------------
 -- Zentrale Tabelle fuer alle Relationen im Buchwerk.
 
--- Statt Relationen und FOREIGN-KEY-CONSTRAINTS zwischen Tabellen direkt zu legen, gehen 
+-- Statt Relationen und FOREIGN-KEY-CONSTRAINTS zwischen Tabellen direkt zu legen, gehen
 -- in der ALKIS-Datenstruktur alle Beziehungen zwischen zwei Tabellen ÃŒber diese Verbindungstabelle.
 
@@ -529,9 +169,11 @@
 	CONSTRAINT alkis_beziehungen_pk PRIMARY KEY (ogc_fid)
 );
-CREATE INDEX id_alkis_beziehungen_von ON alkis_beziehungen USING btree (beziehung_von);
-CREATE INDEX id_alkis_beziehungen_zu  ON alkis_beziehungen USING btree (beziehung_zu);
+
+CREATE INDEX alkis_beziehungen_von_idx ON alkis_beziehungen USING btree (beziehung_von);
+CREATE INDEX alkis_beziehungen_zu_idx  ON alkis_beziehungen USING btree (beziehung_zu);
+CREATE INDEX alkis_beziehungen_art_idx ON alkis_beziehungen USING btree (beziehungsart);
 
 -- Dummy-Eintrag in Metatabelle
-SELECT AddGeometryColumn('alkis_beziehungen','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('alkis_beziehungen','dummy',:alkis_epsg,'POINT',2);
 
 COMMENT ON TABLE  alkis_beziehungen               IS 'zentrale Multi-Verbindungstabelle';
@@ -554,19 +196,22 @@
 -- --------------------------------------------------------------------
 CREATE TABLE ax_anderefestlegungnachwasserrecht (
-	ogc_fid				serial NOT NULL,
-	gml_id				character(16),
-	identifier			character(44),
-	beginnt				character(20),
-	endet 				character(20),
-	advstandardmodell		varchar,
-	anlass				integer,
-	artderfestlegung		integer,
+	ogc_fid			serial NOT NULL,
+	gml_id			character(16),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	anlass			varchar,
+	artderfestlegung	integer,
+	land			integer,
+	stelle			varchar,
 	CONSTRAINT ax_anderefestlegungnachwasserrecht_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_anderefestlegungnachwasserrecht','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_anderefestlegungnachwasserrecht','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_anderefestlegungnachwasserrecht_geom_idx ON ax_anderefestlegungnachwasserrecht USING gist (wkb_geometry);
 CREATE UNIQUE INDEX ax_anderefestlegungnachwasserrecht_gml ON ax_anderefestlegungnachwasserrecht USING btree (gml_id,beginnt);
+CREATE INDEX ax_anderefestlegungnachwasserrecht_afs ON ax_anderefestlegungnachwasserrecht(land,stelle);
 
 COMMENT ON TABLE  ax_anderefestlegungnachwasserrecht        IS 'Andere Festlegung nach  W a s s e r r e c h t';
@@ -583,9 +228,9 @@
 	endet			character(20),
 	advstandardmodell	character(9),
-	anlass			integer,
+	anlass			varchar,
 	baublockbezeichnung	integer,
 	CONSTRAINT ax_baublock_pk PRIMARY KEY (ogc_fid)
 );
-SELECT AddGeometryColumn('ax_baublock','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_baublock','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_baublock_geom_idx ON ax_baublock USING gist (wkb_geometry);
@@ -605,13 +250,13 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	land			integer,
 	stelle			integer,
 	punktkennung		varchar, -- integer
-	--sonstigeeigenschaft character(26),
+	sonstigeeigenschaft	varchar[],
 	CONSTRAINT ax_besonderertopographischerpunkt_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_besonderertopographischerpunkt','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_besonderertopographischerpunkt','dummy',:alkis_epsg,'POINT',2);
 
 CREATE UNIQUE INDEX ax_besonderertopographischerpunkt_gml ON ax_besonderertopographischerpunkt USING btree (gml_id,beginnt);
@@ -630,10 +275,10 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	klassifizierung		integer,
 	CONSTRAINT ax_bewertung_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_bewertung','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_bewertung','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_bewertung_geom_idx   ON ax_bewertung USING gist  (wkb_geometry);
@@ -653,15 +298,18 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	artderfestlegung	integer,
+	land			integer,
+	stelle			varchar,
 	art			varchar, -- (15)
-	"name"			varchar, -- (15)
+	name			varchar, -- (15)
 	CONSTRAINT ax_denkmalschutzrecht_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_denkmalschutzrecht','wkb_geometry',25832,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
+SELECT AddGeometryColumn('ax_denkmalschutzrecht','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
 
 CREATE INDEX ax_denkmalschutzrecht_geom_idx   ON ax_denkmalschutzrecht USING gist  (wkb_geometry);
 CREATE UNIQUE INDEX ax_denkmalschutzrecht_gml ON ax_denkmalschutzrecht USING btree (gml_id,beginnt);
+CREATE INDEX ax_denkmalschutzrecht_afs ON ax_denkmalschutzrecht(land,stelle);
 
 COMMENT ON TABLE  ax_denkmalschutzrecht        IS 'D e n k m a l s c h u t z r e c h t';
@@ -678,5 +326,5 @@
 	endet			character(20),
 	advstandardmodell	character(4),
-	anlass			integer,
+	anlass			varchar,
 	darstellung		integer,
 	zeigtauf		varchar,
@@ -684,5 +332,5 @@
 );
 
-SELECT AddGeometryColumn('ax_gebaeudeausgestaltung','wkb_geometry',25832,'LINESTRING',2);
+SELECT AddGeometryColumn('ax_gebaeudeausgestaltung','wkb_geometry',:alkis_epsg,'GEOMETRY',2);	-- LINESTRING/MULTILINESTRING
 
 CREATE INDEX ax_gebaeudeausgestaltung_geom_idx ON ax_gebaeudeausgestaltung USING gist (wkb_geometry);
@@ -704,5 +352,5 @@
 --	beginnt			timestamp,		-- timestamp-Format wird nicht geladen, bleibt leer
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	qualitaetsangaben	integer,		-- zb: "1000" (= Massstab)
 	--			--			-- Gemeindeschluessel, bestehend aus:
@@ -714,14 +362,14 @@
 	--			--			-- --
 	postleitzahl		varchar,	-- mit fuehrenden Nullen
-	ortsnamepost		varchar,	-- 
-	zusatzortsname		varchar,	-- 
-	strassenname		varchar,	-- 
-	strassenschluessel	integer,		-- max.  5 Stellen
-	hausnummer		integer,		-- meist 3 Stellen
+	ortsnamepost		varchar,	--
+	zusatzortsname		varchar,	--
+	strassenname		varchar,	--
+	strassenschluessel	integer,	-- max.  5 Stellen
+	hausnummer		varchar,	-- meist 3 Stellen
 	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',:alkis_epsg,'POINT',2);
 
 CREATE INDEX ax_georeferenziertegebaeudeadresse_geom_idx ON ax_georeferenziertegebaeudeadresse USING gist (wkb_geometry);
@@ -746,16 +394,16 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	art			varchar,
-	"name"			varchar,
-	bedeutung		integer,
+	name			varchar,
+	bedeutung		integer[],
 	land			integer,
 	nummerierungsbezirk	varchar,
 	gemarkungsnummer 	integer,
-	nummerdesgrablochs	integer,
+	nummerdesgrablochs	varchar,
 	CONSTRAINT ax_grablochderbodenschaetzung_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_grablochderbodenschaetzung','wkb_geometry',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_grablochderbodenschaetzung','wkb_geometry',:alkis_epsg,'POINT',2);
 
 CREATE INDEX ax_grablochderbodenschaetzung_geom_idx   ON ax_grablochderbodenschaetzung USING gist  (wkb_geometry);
@@ -774,46 +422,48 @@
 
 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 ?
---	gemeindezugehoerigkeit	integer,
-	gemeinde		integer,
+	flurstueckskennzeichen				character(20),         -- Inhalt rechts mit __ auf 20 aufgefÃŒllt
+
+	amtlicheflaeche					double precision,      -- AFL
+	abweichenderrechtszustand			varchar default 'false',	-- ARZ
+	zweifelhafterFlurstuecksnachweis 		varchar default 'false',	-- ZFM Boolean
+	rechtsbehelfsverfahren				varchar default 'false',	-- RBV
+	zeitpunktderentstehung				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),
-	endet 			character(20),
-	advstandardmodell	varchar,
-	anlass			integer,
-	"name"			varchar[],
-	blattart		integer,
-	buchungsart		varchar,
-	buchungsblattkennzeichen	integer,
-	bezirk					integer,
-	buchungsblattnummermitbuchstabenerweiterung	varchar, --integer,
-	laufendenummerderbuchungsstelle			integer,
+	identifier					character(44),
+	beginnt						character(20),
+	endet 						character(20),
+	advstandardmodell				varchar,
+	anlass						varchar,
+	name						varchar[],
+	blattart					integer,
+	buchungsart					varchar[],
+	buchungsblattkennzeichen			varchar[],
+	bezirk						integer,
+	buchungsblattnummermitbuchstabenerweiterung	varchar[],
+	laufendenummerderbuchungsstelle			varchar[],
 	zeitpunktderentstehungdesbezugsflurstuecks	varchar,
-
-	vorgaengerflurstueckskennzeichen	varchar[],
-	nachfolgerflurstueckskennzeichen	varchar[],
+	laufendenummerderfortfuehrung			varchar,
+	fortfuehrungsart				varchar,
+
+	vorgaengerflurstueckskennzeichen		varchar[],
+	nachfolgerflurstueckskennzeichen		varchar[],
 	CONSTRAINT ax_historischesflurstueckalb_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_historischesflurstueckalb','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_historischesflurstueckalb','dummy',:alkis_epsg,'POINT',2);
 
 CREATE UNIQUE INDEX ax_historischesflurstueckalb_gml ON ax_historischesflurstueckalb USING btree (gml_id,beginnt);
@@ -822,9 +472,9 @@
 COMMENT ON COLUMN ax_historischesflurstueckalb.gml_id IS 'Identifikator, global eindeutig';
 CREATE INDEX idx_histfsalb_vor
-   ON ax_historischesflurstueckalb (vorgaengerflurstueckskennzeichen ASC);
+   ON ax_historischesflurstueckalb USING btree (vorgaengerflurstueckskennzeichen /* ASC */);
   COMMENT ON INDEX idx_histfsalb_vor IS 'Suchen nach VorgÃ€nger-FlurstÃŒck';
 
 CREATE INDEX idx_histfsalb_nach
-   ON ax_historischesflurstueckalb (vorgaengerflurstueckskennzeichen ASC);
+   ON ax_historischesflurstueckalb USING btree (vorgaengerflurstueckskennzeichen /* ASC */);
   COMMENT ON INDEX idx_histfsalb_vor IS 'Suchen nach Nachfolger-FlurstÃŒck';
   COMMENT ON TABLE  ax_historischesflurstueckalb        IS 'Historisches FlurstÃŒck ALB';
@@ -864,13 +514,13 @@
 	land 				integer,         --
 	gemarkungsnummer 		integer,            --
-	flurnummer			integer,               -- Teile des FlurstÃŒckskennzeichens 
+	flurnummer			integer,               -- Teile des FlurstÃŒckskennzeichens
 	zaehler 			integer,            --    (redundant zu flurstueckskennzeichen)
 	nenner				integer,         --
 	-- daraus abgeleitet:
 	flurstueckskennzeichen	character(20),			-- Inhalt rechts mit __ auf 20 aufgefÃŒllt
-	amtlicheflaeche			double precision,	-- AFL
-	abweichenderrechtszustand	varchar,		-- ARZ
-	zweifelhafterFlurstuecksnachweis varchar,		-- ZFM Boolean
-	rechtsbehelfsverfahren		integer,		-- RBV
+	amtlicheflaeche			double precision,		-- AFL
+	abweichenderrechtszustand	varchar default 'false',	-- ARZ
+	zweifelhafterFlurstuecksnachweis varchar default 'false',	-- ZFM Boolean
+	rechtsbehelfsverfahren		varchar default 'false',	-- RBV
 	zeitpunktderentstehung		character(10),		-- ZDE  Inhalt jjjj-mm-tt  besser Format date ?
 --	gemeindezugehoerigkeit		integer,
@@ -881,7 +531,7 @@
 	endet 				character(20),
 	advstandardmodell		varchar,
-	anlass				integer,
+	anlass				varchar,
 	art				varchar[],
-	"name"				varchar[],
+	name				varchar[],
 	regierungsbezirk		integer,
 	kreis				integer,
@@ -889,14 +539,13 @@
 	nachfolgerflurstueckskennzeichen	varchar[],
 	blattart			integer,
-	--buchungsart			integer,  -- Aenderung krz FJ 2012-10-31: Meldung aus Konverter
-	buchungsart			varchar,
-	buchungsblattkennzeichen	double precision,
+	buchungsart			integer,
+	buchungsblattkennzeichen	varchar[],
 	bezirk				integer,
-	buchungsblattnummermitbuchstabenerweiterung	character(20), -- hier lÃ€nger als (7)!
+	buchungsblattnummermitbuchstabenerweiterung	varchar[], -- hier lÃ€nger als (7)!
 	laufendenummerderbuchungsstelle	integer,
 	CONSTRAINT ax_historischesflurstueck_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_historischesflurstueck','wkb_geometry',25832,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
+SELECT AddGeometryColumn('ax_historischesflurstueck','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
 
 CREATE INDEX ax_historischesflurstueck_geom_idx   ON ax_historischesflurstueck USING gist (wkb_geometry);
@@ -904,8 +553,8 @@
 
 -- Suche nach VorgÃ€nger / Nachfolger
--- ++ Welche Methode fÃŒr ein Array? 
+-- ++ Welche Methode fÃŒr ein Array?
 -- Wirkt das ÃŒberhaupt bei der Suche nach einem einzelnen Wert aus dem Array?
-CREATE INDEX idx_histfs_vor ON ax_historischesflurstueck (vorgaengerflurstueckskennzeichen ASC);
-CREATE INDEX idx_histfs_nach ON ax_historischesflurstueck (vorgaengerflurstueckskennzeichen ASC);
+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';
@@ -913,5 +562,5 @@
 
 -- Die postgresql-Doku sagt dazu (http://www.postgresql.org/docs/9.1/static/arrays.html):
---  "Arrays are not sets; 
+--  "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.
@@ -947,5 +596,5 @@
 -- Kennzeichen indizieren, z.B. fuer Suche aus der Historie
 CREATE INDEX ax_historischesflurstueck_kennz
-   ON ax_historischesflurstueck USING btree (flurstueckskennzeichen ASC NULLS LAST);
+   ON ax_historischesflurstueck(flurstueckskennzeichen /* ASC NULLS LAST */);
 COMMENT ON INDEX ax_historischesflurstueck_kennz IS 'Suche nach FlurstÃŒckskennzeichen';
 
@@ -961,13 +610,17 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	artderfestlegung	integer,
+	land			integer,
+	stelle			varchar,
+	name			varchar,
 	CONSTRAINT ax_naturumweltoderbodenschutzrecht_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_naturumweltoderbodenschutzrecht','wkb_geometry',25832,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
+SELECT AddGeometryColumn('ax_naturumweltoderbodenschutzrecht','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
 
 CREATE INDEX ax_naturumweltoderbodenschutzrecht_geom_idx   ON ax_naturumweltoderbodenschutzrecht USING gist (wkb_geometry);
 CREATE UNIQUE INDEX ax_naturumweltoderbodenschutzrecht_gml ON ax_naturumweltoderbodenschutzrecht USING btree (gml_id,beginnt);
+CREATE INDEX ax_naturumweltoderbodenschutzrecht_afs ON ax_naturumweltoderbodenschutzrecht(land,stelle);
 
 COMMENT ON TABLE  ax_naturumweltoderbodenschutzrecht        IS 'N  a t u r -,  U m w e l t -   o d e r   B o d e n s c h u t z r e c h t';
@@ -984,15 +637,18 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	artderfestlegung	integer,
+	land			integer,
+	stelle			varchar,
 	art			varchar[], --(15)
-	"name"			varchar[],
+	name			varchar[],
 	nummerdesschutzgebietes	varchar,
 	CONSTRAINT ax_schutzgebietnachwasserrecht_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_schutzgebietnachwasserrecht','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_schutzgebietnachwasserrecht','dummy',:alkis_epsg,'POINT',2);
 
 CREATE UNIQUE INDEX ax_schutzgebietnachwasserrecht_gml ON ax_schutzgebietnachwasserrecht USING btree (gml_id,beginnt);
+CREATE INDEX ax_schutzgebietnachwasserrecht_afs ON ax_schutzgebietnachwasserrecht(land,stelle);
 
 COMMENT ON TABLE  ax_schutzgebietnachwasserrecht        IS 'S c h u t z g e b i e t   n a c h   W a s s s e r r e c h t';
@@ -1008,12 +664,15 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	artderfestlegung	integer,
+	land			integer,
+	stelle			varchar,
 	CONSTRAINT ax_schutzgebietnachnaturumweltoderbodenschutzrecht_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_schutzgebietnachnaturumweltoderbodenschutzrecht','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_schutzgebietnachnaturumweltoderbodenschutzrecht','dummy',:alkis_epsg,'POINT',2);
 
 CREATE UNIQUE INDEX ax_schutzgebietnachnaturumweltoderbodenschutzrecht_gml ON ax_schutzgebietnachnaturumweltoderbodenschutzrecht USING btree (gml_id,beginnt);
+CREATE INDEX ax_schutzgebietnachnaturumweltoderbodenschutzrecht_afs ON ax_schutzgebietnachnaturumweltoderbodenschutzrecht(land,stelle);
 
 COMMENT ON TABLE  ax_schutzgebietnachnaturumweltoderbodenschutzrecht IS 'S c h u t z g e b i e t   n a c h   N a t u r,  U m w e l t  o d e r  B o d e n s c h u t z r e c h t';
@@ -1030,5 +689,5 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	"zone"			integer,
 	art			varchar[], --(15)
@@ -1036,5 +695,5 @@
 );
 
-SELECT AddGeometryColumn('ax_schutzzone','wkb_geometry',25832,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
+SELECT AddGeometryColumn('ax_schutzzone','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
 
 CREATE INDEX ax_schutzzone_geom_idx   ON ax_schutzzone USING gist (wkb_geometry);
@@ -1045,5 +704,5 @@
 
 
--- T o p o g r a p h i s c h e   L i n i e 
+-- T o p o g r a p h i s c h e   L i n i e
 -- ---------------------------------------------------
 CREATE TABLE ax_topographischelinie (
@@ -1054,5 +713,5 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	liniendarstellung	integer,
 	sonstigeeigenschaft	varchar,
@@ -1060,5 +719,5 @@
 );
 
-SELECT AddGeometryColumn('ax_topographischelinie','wkb_geometry',25832,'LINESTRING',2);
+SELECT AddGeometryColumn('ax_topographischelinie','wkb_geometry',:alkis_epsg,'LINESTRING',2);
 
 CREATE INDEX ax_topographischelinie_geom_idx   ON ax_topographischelinie USING gist(wkb_geometry);
@@ -1087,6 +746,7 @@
 	advstandardmodell	varchar[],
 	sonstigesmodell		varchar,
-	anlass			integer,
-	signaturnummer		integer,
+	anlass			varchar,
+	signaturnummer		varchar,
+	darstellungsprioritaet  integer,
 	art			varchar,
 	drehwinkel		double precision,
@@ -1094,8 +754,9 @@
 );
 
-SELECT AddGeometryColumn('ap_ppo','wkb_geometry',25832,'GEOMETRY',2); -- POINT/MULTIPOLYGON
+SELECT AddGeometryColumn('ap_ppo','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POINT/MULTIPOLYGON
 
 CREATE INDEX ap_ppo_geom_idx   ON ap_ppo USING gist (wkb_geometry);
 CREATE UNIQUE INDEX ap_ppo_gml ON ap_ppo USING btree (gml_id,beginnt);
+CREATE INDEX ap_ppo_endet      ON ap_ppo USING btree (endet);
 
 COMMENT ON TABLE  ap_ppo        IS 'PPO: PunktfÃ¶rmiges PrÃ€sentationsobjekt';
@@ -1112,13 +773,15 @@
 	endet 			character(20),
 	advstandardmodell	varchar[],		-- Array!
-	anlass			integer,
-	signaturnummer		integer,
+	anlass			varchar,
+	signaturnummer		varchar,
+	darstellungsprioritaet  integer,
 	art			varchar,
 	CONSTRAINT ap_lpo_pk PRIMARY KEY (ogc_fid)
 );
-SELECT AddGeometryColumn('ap_lpo','wkb_geometry',25832,'LINESTRING',2);
+SELECT AddGeometryColumn('ap_lpo','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- LINESTRING/MULTILINESTRING
 
 CREATE INDEX ap_lpo_geom_idx   ON ap_lpo USING gist (wkb_geometry);
 CREATE UNIQUE INDEX ap_lpo_gml ON ap_lpo USING btree (gml_id,beginnt);
+CREATE INDEX ap_lpo_endet      ON ap_lpo USING btree (endet);
 
 COMMENT ON TABLE  ap_lpo        IS 'LPO: LinienfÃ¶rmiges PrÃ€sentationsobjekt';
@@ -1135,5 +798,5 @@
 	endet 			character(20),
 	advstandardmodell	varchar[],
-	anlass			integer,
+	anlass			varchar,
 	schriftinhalt		varchar,  -- (47)
 	fontsperrung		double precision,
@@ -1141,5 +804,6 @@
 	horizontaleausrichtung	varchar,
 	vertikaleausrichtung	varchar,
-	signaturnummer		integer,
+	signaturnummer		varchar,
+	darstellungsprioritaet  integer,
 	art			varchar,  -- Inhalte z.B. "ZAE_NEN" siehe unten
 	drehwinkel		double precision,       -- falsche Masseinheit fÃŒr Mapserver, im View umrechnen
@@ -1147,9 +811,11 @@
 );
 
-SELECT AddGeometryColumn('ap_pto','wkb_geometry',25832,'POINT',2);
+SELECT AddGeometryColumn('ap_pto','wkb_geometry',:alkis_epsg,'POINT',2);
 
 CREATE INDEX ap_pto_geom_idx   ON ap_pto USING gist (wkb_geometry);
 CREATE UNIQUE INDEX ap_pto_gml ON ap_pto USING btree (gml_id,beginnt);
 CREATE INDEX art_idx           ON ap_pto USING btree (art);
+CREATE INDEX ap_pto_endet_idx  ON ap_pto USING btree (endet);
+CREATE INDEX ap_pto_sn_idx     ON ap_pto USING btree (signaturnummer);
 
 COMMENT ON TABLE  ap_pto               IS 'PTO: TextfÃ¶rmiges PrÃ€sentationsobjekt mit punktfÃ¶rmiger Textgeometrie ';
@@ -1176,18 +842,21 @@
 	advstandardmodell	varchar,
 	sonstigesmodell		varchar,
-	anlass			integer,
+	anlass			varchar,
 	art			varchar,
 	schriftinhalt		varchar,
-	fontsperrung		integer,
-	skalierung		integer,
+	fontsperrung		double precision,
+	skalierung		double precision,
 	horizontaleausrichtung	varchar,
 	vertikaleausrichtung	varchar,
+	signaturnummer		varchar,
+	darstellungsprioritaet  integer,
 	CONSTRAINT ap_lto_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ap_lto','wkb_geometry',25832,'LINESTRING',2);
+SELECT AddGeometryColumn('ap_lto','wkb_geometry',:alkis_epsg,'LINESTRING',2);
 
 CREATE INDEX ap_lto_geom_idx   ON ap_lto USING gist (wkb_geometry);
 CREATE UNIQUE INDEX ap_lto_gml ON ap_lto USING btree (gml_id,beginnt);
+CREATE INDEX ap_lto_endet_idx  ON ap_lto USING btree (endet);
 
 COMMENT ON TABLE  ap_lto        IS 'LTO: TextfÃ¶rmiges PrÃ€sentationsobjekt mit linienfÃ¶rmiger Textgeometrie';
@@ -1198,20 +867,23 @@
 -- ----------------------------------------------
 CREATE TABLE ap_darstellung (
-	ogc_fid			serial NOT NULL, 
-	gml_id			character(16), 
+	ogc_fid			serial NOT NULL,
+	gml_id			character(16),
 	identifier		character(44),
 	beginnt			character(20),			-- Datumsformat
 	endet 			character(20),			-- Datumsformat
-	advstandardmodell	varchar,
-	anlass			integer, 
+	advstandardmodell	varchar[],
+	anlass			varchar,
 	art			varchar,		-- (37)
-	signaturnummer		integer,
+	darstellungsprioritaet  integer,
+	signaturnummer		varchar,
+	positionierungsregel    integer,
 	CONSTRAINT ap_darstellung_pk PRIMARY KEY (ogc_fid)
 );
 
 -- Dummy-Eintrag in Metatabelle
-SELECT AddGeometryColumn('ap_darstellung','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ap_darstellung','dummy',:alkis_epsg,'POINT',2);
 
 CREATE UNIQUE INDEX ap_darstellung_gml ON ap_darstellung USING btree (gml_id,beginnt);
+CREATE INDEX ap_darstellung_endet_idx  ON ap_darstellung USING btree (endet);
 
 COMMENT ON TABLE  ap_darstellung        IS 'A P  D a r s t e l l u n g';
@@ -1239,5 +911,5 @@
 	land 				integer,         --
 	gemarkungsnummer 		integer,            --
-	flurnummer			integer,               -- Teile des FlurstÃŒckskennzeichens 
+	flurnummer			integer,               -- Teile des FlurstÃŒckskennzeichens
 	zaehler 			integer,            --    (redundant zu flurstueckskennzeichen)
 	nenner				integer,         --
@@ -1246,7 +918,7 @@
 
 	amtlicheflaeche			double precision,      -- AFL
-	abweichenderrechtszustand	varchar,               -- ARZ
-	zweifelhafterFlurstuecksnachweis varchar,              -- ZFM Boolean
-	rechtsbehelfsverfahren		integer,               -- RBV
+	abweichenderrechtszustand	varchar default 'false', -- ARZ
+	zweifelhafterFlurstuecksnachweis varchar default 'false',-- ZFM Boolean
+	rechtsbehelfsverfahren		varchar default 'false', -- RBV
 	zeitpunktderentstehung		character(10),         -- ZDE  Inhalt jjjj-mm-tt  besser Format date ?
 
@@ -1258,9 +930,10 @@
 	endet 				character(20),         -- Timestamp des Untergangs
 	advstandardmodell 		varchar,               -- steuert die Darstellung nach Kartentyp
-	anlass				integer,
+	anlass				varchar,
 --	art				varchar[],   -- Wozu braucht man das? Weglassen?
-	"name"				varchar[],   -- 03.11.2011: array, Buchauskunft anpassen!
+	name				varchar[],   -- 03.11.2011: array, Buchauskunft anpassen!
 	regierungsbezirk		integer,
 	kreis				integer,
+	stelle				varchar,
 
 -- neu aus SVN-Version 28.02.2012 hinzugefuegt
@@ -1274,16 +947,13 @@
 	angabenzumabschnittbemerkung	varchar[],
 
-	-- siehe alkis_relationen
---	istgebucht			character varying,
---	zeigtauf			character varying,
---	weistauf			character varying,
--- neu-Ende 
 	CONSTRAINT ax_flurstueck_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_flurstueck','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_flurstueck','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_flurstueck_geom_idx   ON ax_flurstueck USING gist (wkb_geometry);
 CREATE UNIQUE INDEX ax_flurstueck_gml ON ax_flurstueck USING btree (gml_id,beginnt);
+CREATE INDEX ax_flurstueck_lgfzn ON ax_flurstueck USING btree (land,gemarkungsnummer,flurnummer,zaehler,nenner);
+CREATE INDEX ax_flurstueck_arz ON ax_flurstueck USING btree (abweichenderrechtszustand);
 
   COMMENT ON TABLE  ax_flurstueck                           IS '"F l u r s t u e c k" ist ein Teil der ErdoberflÃ€che, der von einer im Liegenschaftskataster festgelegten Grenzlinie umschlossen und mit einer Nummer bezeichnet ist. Es ist die Buchungseinheit des Liegenschaftskatasters.';
@@ -1319,5 +989,5 @@
 -- Kennzeichen indizieren, z.B. fuer Suche aus der Historie
 CREATE INDEX ax_flurstueck_kennz
-   ON ax_flurstueck USING btree (flurstueckskennzeichen ASC NULLS LAST);
+   ON ax_flurstueck USING btree (flurstueckskennzeichen /* ASC NULLS LAST*/ );
 COMMENT ON INDEX ax_flurstueck_kennz IS 'Suche nach FlurstÃŒckskennzeichen';
 
@@ -1330,19 +1000,4 @@
 
 
--- BEGIN - Nur fuer Test-Zwecke
- CREATE OR REPLACE FUNCTION info_flurstueck() RETURNS TRIGGER AS $$
- BEGIN
- 	RAISE NOTICE 'Insert Flurstueck %', NEW.gml_id;
- 	RETURN NEW;
- END;
- $$ LANGUAGE plpgsql;
-
--- CREATE TRIGGER neues_fs_trigger
---        BEFORE INSERT ON ax_flurstueck 
---        FOR EACH ROW 
---           EXECUTE PROCEDURE info_flurstueck();
-
--- ENDE - Nur fuer Test-Zwecke
-
 
 -- 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
@@ -1355,10 +1010,10 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	artderflurstuecksgrenze	integer[],  -- geaendert. 18.09.2011
 	CONSTRAINT ax_besondereflurstuecksgrenze_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_besondereflurstuecksgrenze','wkb_geometry',25832,'LINESTRING',2);
+SELECT AddGeometryColumn('ax_besondereflurstuecksgrenze','wkb_geometry',:alkis_epsg,'LINESTRING',2);
 
 CREATE INDEX ax_besondereflurstuecksgrenze_geom_idx   ON ax_besondereflurstuecksgrenze USING gist (wkb_geometry);
@@ -1378,5 +1033,5 @@
 	endet 				character(20),
 	advstandardmodell		varchar,
-	anlass				integer,
+	anlass				varchar,
 	punktkennung			varchar, -- integer,
 	land				integer,
@@ -1384,15 +1039,18 @@
 	abmarkung_marke			integer,
 	festgestelltergrenzpunkt	varchar,
+	besonderepunktnummer		varchar,
 	bemerkungzurabmarkung		integer,
 	sonstigeeigenschaft		varchar[],
 	art				varchar, --(37)
-	"name"				varchar[],
+	name				varchar[],
 	zeitpunktderentstehung		integer,
+	relativehoehe			double precision,
 	CONSTRAINT ax_grenzpunkt_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_grenzpunkt','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_grenzpunkt','dummy',:alkis_epsg,'POINT',2);
 
 CREATE UNIQUE INDEX ax_grenzpunkt_gml ON ax_grenzpunkt USING btree (gml_id,beginnt);
+CREATE INDEX ax_grenzpunkt_abmm ON ax_grenzpunkt USING btree (abmarkung_marke);
 
 COMMENT ON TABLE  ax_grenzpunkt        IS 'G r e n z p u n k t';
@@ -1412,5 +1070,5 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	unverschluesselt	varchar, -- StraÃenname
 	land			integer,
@@ -1422,5 +1080,5 @@
 );
 
-SELECT AddGeometryColumn('ax_lagebezeichnungohnehausnummer','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_lagebezeichnungohnehausnummer','dummy',:alkis_epsg,'POINT',2);
 
 -- Verbindungstabellen indizieren
@@ -1445,5 +1103,5 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	land			integer,
 	regierungsbezirk	integer,
@@ -1455,5 +1113,5 @@
 );
 
-SELECT AddGeometryColumn('ax_lagebezeichnungmithausnummer','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_lagebezeichnungmithausnummer','dummy',:alkis_epsg,'POINT',2);
 
 CREATE UNIQUE INDEX ax_lagebezeichnungmithausnummer_gml ON ax_lagebezeichnungmithausnummer USING btree (gml_id,beginnt); -- Verbindungstabellen indizieren
@@ -1474,5 +1132,5 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	land			integer,
 	regierungsbezirk	integer,
@@ -1485,5 +1143,5 @@
 );
 
-SELECT AddGeometryColumn('ax_lagebezeichnungmitpseudonummer','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_lagebezeichnungmitpseudonummer','dummy',:alkis_epsg,'POINT',2);
 
 -- Verbindungstabellen indizieren
@@ -1508,5 +1166,5 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	punktkennung		varchar,   --integer ist zu klein,
 	land			integer,
@@ -1514,8 +1172,9 @@
 	sonstigeeigenschaft	varchar[],
 	vermarkung_marke	integer,
+	relativehoehe		double precision,
 	CONSTRAINT ax_aufnahmepunkt_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_aufnahmepunkt','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_aufnahmepunkt','dummy',:alkis_epsg,'POINT',2);
 
 CREATE UNIQUE INDEX ax_aufnahmepunkt_gml ON ax_aufnahmepunkt USING btree (gml_id,beginnt);
@@ -1531,17 +1190,20 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			varchar,
-	beginnt			varchar,
-	advstandardmodell	varchar,
-	anlass			integer,
-	"name"			varchar,
+	identifier              character(44),
+	beginnt			character(20),
+	endet			character(20),
+	advstandardmodell	varchar,
+	anlass			varchar,
+	name			varchar,
 	punktkennung		varchar,
 	land			integer,
 	stelle			integer,
-	sonstigeeigenschaft	varchar,
+	sonstigeeigenschaft	varchar[],
 	vermarkung_marke	integer,
+	relativehoehe		double precision,
  	CONSTRAINT ax_sicherungspunkt_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_sicherungspunkt','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_sicherungspunkt','dummy',:alkis_epsg,'POINT',2);
 
 
@@ -1555,14 +1217,16 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	vermarkung_marke	integer,
 	punktkennung		varchar, -- integer,
+	art			varchar,
 	land			integer,
 	stelle			integer,
 	sonstigeeigenschaft	varchar[],
+	relativehoehe		double precision,
 	CONSTRAINT ax_sonstigervermessungspunkt_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_sonstigervermessungspunkt','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_sonstigervermessungspunkt','dummy',:alkis_epsg,'POINT',2);
 
 CREATE UNIQUE INDEX ax_sonstigervermessungspunkt_gml ON ax_sonstigervermessungspunkt USING btree (gml_id,beginnt);
@@ -1592,16 +1256,16 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	art			varchar[],
-	"name"			varchar[],
-	--kartendarstellung	varchar, -- true/false
-	kartendarstellung	integer,
+	name			varchar[],
+	kartendarstellung	varchar,	-- boolean
 --	"qualitaetsangaben|ax_dqpunktort|herkunft|li_lineage|processstep" integer, -- varchar[],
 	genauigkeitsstufe	integer,
 	vertrauenswuerdigkeit	integer,
+	koordinatenstatus	integer,
 	CONSTRAINT ax_punktortag_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_punktortag','wkb_geometry',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_punktortag','wkb_geometry',:alkis_epsg,'POINT',2);
 
 CREATE INDEX ax_punktortag_geom_idx ON ax_punktortag USING gist (wkb_geometry);
@@ -1621,9 +1285,8 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
---	kartendarstellung	varchar, -- true / false: boolean
-	kartendarstellung	integer, 
+	anlass			varchar,
+	kartendarstellung	varchar,	-- boolean
 --	art			varchar, -- entbehrlich
-	"name"			varchar[],
+	name			varchar[],
 --	"qualitaetsangaben|ax_dqpunktort|herkunft|li_lineage|processstep" integer,  --varchar[],
 --	datetime		character(24)[],
@@ -1631,8 +1294,9 @@
 	vertrauenswuerdigkeit	integer,
 	genauigkeitsstufe	integer,
+	koordinatenstatus	integer,
 	CONSTRAINT ax_punktortau_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_punktortau','wkb_geometry',25832,'POINT',3); -- 0,0,HÃ¶he
+SELECT AddGeometryColumn('ax_punktortau','wkb_geometry',:alkis_epsg,'POINT',3); -- 0,0,HÃ¶he
 
 CREATE INDEX ax_punktortau_geom_idx ON ax_punktortau USING gist (wkb_geometry);
@@ -1652,18 +1316,20 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
-	kartendarstellung	integer,      -- boolean
+	anlass			varchar,
+	kartendarstellung	varchar, -- boolean
 	description		integer,
 	art			varchar[],
-	"name"			varchar[],
+	name			varchar[],
 	genauigkeitsstufe	integer,
 	vertrauenswuerdigkeit	integer,
+	koordinatenstatus	integer,
 	CONSTRAINT ax_punktortta_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_punktortta','wkb_geometry',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_punktortta','wkb_geometry',:alkis_epsg,'POINT',2);
 
 CREATE INDEX ax_punktortta_geom_idx ON ax_punktortta USING gist (wkb_geometry);
 CREATE UNIQUE INDEX ax_punktortta_gml ON ax_punktortta USING btree (gml_id,beginnt);
+CREATE INDEX ax_punktortta_endet_idx ON ax_punktortta USING btree (endet);
 
 COMMENT ON TABLE  ax_punktortta        IS 'P u n k t o r t   T A';
@@ -1683,5 +1349,5 @@
 	endet				character(20),
 	advstandardmodell		varchar,
-	anlass				integer,
+	anlass				varchar,
 --	art				varchar,		-- entbehrlich
 	uri				varchar,
@@ -1695,9 +1361,9 @@
 	fortfuehrungsentscheidungvon	varchar,		-- Bearbeiter-Name und -Titel
 	bemerkung			varchar,
-	beziehtsichauf			character varying,
+	beziehtsichauf			varchar,
 	CONSTRAINT ax_fortfuehrungsnachweisdeckblatt_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_fortfuehrungsnachweisdeckblatt','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_fortfuehrungsnachweisdeckblatt','dummy',:alkis_epsg,'POINT',2);
 
 COMMENT ON TABLE  ax_fortfuehrungsnachweisdeckblatt
@@ -1714,5 +1380,5 @@
 	endet					character(20),
 	advstandardmodell			varchar,
-	anlass					integer,
+	anlass					varchar,
 --	art					varchar,  -- entbehrlich
 	uri					varchar,
@@ -1727,5 +1393,5 @@
 );
 
-SELECT AddGeometryColumn('ax_fortfuehrungsfall','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_fortfuehrungsfall','dummy',:alkis_epsg,'POINT',2);
 
 COMMENT ON TABLE  ax_fortfuehrungsfall IS 'F o r t f u e h r u n g s f a l l';
@@ -1740,5 +1406,7 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			varchar,
+	identifier		character(44),
+	beginnt			character(20),
+	endet			character(20),
 	advstandardmodell	varchar,
 	art			integer,
@@ -1752,5 +1420,5 @@
 );
 
-SELECT AddGeometryColumn('ax_reservierung','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_reservierung','dummy',:alkis_epsg,'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
@@ -1759,8 +1427,10 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
-	beginnt			varchar,
+	identifier		character(44),
+	beginnt			character(20),
+	endet			character(20),
 	advstandardmodell	varchar,
 	sonstigesmodell		varchar,
-	anlass			integer,
+	anlass			varchar,
 	punktkennung		varchar,
 	art			integer,
@@ -1768,5 +1438,5 @@
 );
 
-SELECT AddGeometryColumn('ax_punktkennunguntergegangen','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_punktkennunguntergegangen','dummy',:alkis_epsg,'POINT',2);
 
 
@@ -1783,5 +1453,5 @@
 	land 				integer,         --
 	gemarkungsnummer 		integer,            --
-	flurnummer			integer,               -- Teile des FlurstÃŒckskennzeichens 
+	flurnummer			integer,               -- Teile des FlurstÃŒckskennzeichens
 	zaehler 			integer,            --    (redundant zu flurstueckskennzeichen)
 	nenner				integer,         --
@@ -1800,7 +1470,7 @@
 	endet 				character(20),
 	advstandardmodell		character(4),
-	anlass				integer,
+	anlass				varchar,
 --	art				varchar[], -- Array {a,b,c}
-	"name"				varchar[], -- Array {a,b,c}
+	name				varchar[], -- Array {a,b,c}
 	nachfolgerflurstueckskennzeichen	varchar[], -- Array {a,b,c}
 	vorgaengerflurstueckskennzeichen	varchar[], -- Array {a,b,c}
@@ -1834,8 +1504,8 @@
   COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.anlass                    IS '?';
   COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.name                      IS 'Array mit FortfÃŒhrungsjahr und -Nummer';
-  COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.nachfolgerflurstueckskennzeichen 
+  COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.nachfolgerflurstueckskennzeichen
   IS '"Nachfolger-FlurstÃŒckskennzeichen" ist die Bezeichnung der FlurstÃŒcke, die dem Objekt "Historisches FlurstÃŒck ohne Raumbezug" direkt nachfolgen.
 Array mit Kennzeichen im Format der Spalte "flurstueckskennzeichen"';
-  COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.vorgaengerflurstueckskennzeichen 
+  COMMENT ON COLUMN ax_historischesflurstueckohneraumbezug.vorgaengerflurstueckskennzeichen
   IS '"VorgÃ€nger-FlurstÃŒckskennzeichen" ist die Bezeichnung der FlurstÃŒcke, die dem Objekt "Historisches FlurstÃŒck ohne Raumbezugs" direkt vorangehen.
 Array mit Kennzeichen im Format der Spalte "flurstueckskennzeichen"';
@@ -1843,15 +1513,15 @@
 
 -- keine Geometrie, daher ersatzweise: Dummy-Eintrag in Metatabelle
-SELECT AddGeometryColumn('ax_historischesflurstueckohneraumbezug','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_historischesflurstueckohneraumbezug','dummy',:alkis_epsg,'POINT',2);
 -- Kennzeichen indizieren, z.B. fuer Suche aus der Historie
-CREATE INDEX ax_hist_fs_ohne_kennz ON ax_historischesflurstueckohneraumbezug USING btree (flurstueckskennzeichen ASC NULLS LAST);
+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);
+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);
+CREATE INDEX idx_histfsor_nach ON ax_historischesflurstueckohneraumbezug (vorgaengerflurstueckskennzeichen /* ASC */);
 -- COMMENT ON INDEX idx_histfsalb_vor IS 'Suchen nach Nachfolger-FlurstÃŒck';
 
@@ -1878,5 +1548,5 @@
 	advstandardmodell		varchar,
 	--sonstigesmodell		varchar,
-	anlass				integer,
+	anlass				varchar,
 	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.
@@ -1892,9 +1562,8 @@
 	--art				varchar,  -- (37)  Wozu?
 	--uri				varchar,  -- Wozu ?
-	-- hat				varchar,      -- bliebt leer, Beziehung?
 	CONSTRAINT ax_person_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_person','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_person','dummy',:alkis_epsg,'POINT',2);
 
 -- Verbindungstabellen indizieren
@@ -1927,17 +1596,21 @@
 	advstandardmodell		varchar,
 	--sonstigesmodell		varchar,
-	anlass				integer,
+	anlass				varchar,
 	--art				varchar[],
 	--uri				varchar[],
 	ort_post			varchar,
-	postleitzahlpostzustellung	integer,
+	postleitzahlpostzustellung	varchar,
 	strasse				varchar,
 	hausnummer			varchar, -- integer
 	bestimmungsland			varchar,
+	postleitzahlpostfach		varchar,
+	postfach			varchar,
+	ortsteil			varchar,
+	weitereAdressen			varchar,
 	CONSTRAINT ax_anschrift_pk PRIMARY KEY (ogc_fid)
 );
 
 -- Dummy-Eintrag in Metatabelle
-SELECT AddGeometryColumn('ax_anschrift','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_anschrift','dummy',:alkis_epsg,'POINT',2);
 
 -- Index fÃŒr alkis_beziehungen
@@ -1958,8 +1631,8 @@
 	endet 				character(20),
 	advstandardmodell		varchar,
-	anlass				integer,
+	anlass				varchar,
 	laufendenummernachdin1421	character(16),      -- 0000.00.00.00.00
 	zaehler				double precision,   -- Anteil ..
-	nenner				double precision,   --    .. als Bruch 
+	nenner				double precision,   --    .. als Bruch
 	eigentuemerart			integer,
 	nummer				varchar, -- immer leer ?
@@ -1971,5 +1644,5 @@
 -- Filter   istbestandteilvon <> '' or benennt <> '' or bestehtausrechtsverhaeltnissenzu <> ''
 
-SELECT AddGeometryColumn('ax_namensnummer','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_namensnummer','dummy',:alkis_epsg,'POINT',2);
 
 -- Verbindungstabellen indizieren
@@ -1989,5 +1662,5 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	buchungsblattkennzeichen	varchar, -- integer
 	land			integer,
@@ -1996,12 +1669,13 @@
 	blattart		integer,
 	art			varchar,
-	-- "name" character(13),  -- immer leer?
+	-- name character(13),  -- immer leer?
 	CONSTRAINT ax_buchungsblatt_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_buchungsblatt','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_buchungsblatt','dummy',:alkis_epsg,'POINT',2);
 
 -- Index fÃŒr alkis_beziehungen
 CREATE UNIQUE INDEX ax_buchungsblatt_gml ON ax_buchungsblatt USING btree (gml_id,beginnt);
+CREATE INDEX ax_buchungsblatt_lbb ON ax_buchungsblatt USING btree (land,bezirk,buchungsblattnummermitbuchstabenerweiterung);
 
 COMMENT ON TABLE  ax_buchungsblatt        IS 'NREO "Buchungsblatt" enthÃ€lt die Buchungen (Buchungsstellen und Namensnummern) des Grundbuchs und des Liegenschhaftskatasters (bei buchungsfreien GrundstÃŒcken).';
@@ -2018,12 +1692,12 @@
 	endet 				character(20),
 	advstandardmodell		varchar,
-	anlass				integer,
+	anlass				varchar,
 	buchungsart			integer,
-	laufendenummer			integer,
+	laufendenummer			varchar,
 	beschreibungdesumfangsderbuchung	character(1),
 	--art				character(37),
 	--uri				character(12),
 	zaehler				double precision,
-	nenner				integer,
+	nenner				double precision,
 	nummerimaufteilungsplan		varchar,   -- (32)
 	beschreibungdessondereigentums	varchar,  -- (291)
@@ -2031,5 +1705,5 @@
 );
 
-SELECT AddGeometryColumn('ax_buchungsstelle','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_buchungsstelle','dummy',:alkis_epsg,'POINT',2);
 
 --Index fÃŒr alkis_beziehungen
@@ -2052,5 +1726,5 @@
 -- ---------------
 -- Kennung 31001
--- Abgleich 2011-11-15 mit 
+-- Abgleich 2011-11-15 mit
 --  http://www.bezreg-koeln.nrw.de/extra/33alkis/dokumente/Profile_NRW/ALKIS-OK-NRW_MAX_20090722.html
 CREATE TABLE ax_gebaeude (
@@ -2061,12 +1735,12 @@
 	endet 			character(20),
 	advstandardmodell	varchar[],	-- verÃ€ndert [] 2012-02-03
-	anlass			integer,
+	anlass			varchar,
 	gebaeudefunktion	integer,	-- Werte siehe SchlÃŒsseltabelle
-	weiteregebaeudefunktion	integer,
-	"name"			varchar,
+	weiteregebaeudefunktion	integer[],
+	name			varchar[],
 --	nutzung			varchar,	-- ???
 	bauweise		integer,
 	anzahlderoberirdischengeschosse	integer,
-	anzahlderunterirdischengeschosse	integer, 
+	anzahlderunterirdischengeschosse	integer,
 	hochhaus		varchar,	-- Neu 2011-11-15  Boolean "true"/"false", meist aber leer
 	objekthoehe		integer,
@@ -2089,14 +1763,14 @@
 );
 
-SELECT AddGeometryColumn('ax_gebaeude','wkb_geometry',25832,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
+SELECT AddGeometryColumn('ax_gebaeude','wkb_geometry',:alkis_epsg,'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);
+CREATE UNIQUE INDEX ax_gebaeude_gml ON ax_gebaeude USING btree (gml_id,beginnt);
 
   COMMENT ON TABLE  ax_gebaeude                    IS '"G e b Ã€ u d e" ist ein dauerhaft errichtetes Bauwerk, dessen Nachweis wegen seiner Bedeutung als Liegenschaft erforderlich ist sowie dem Zweck der Basisinformation des Liegenschaftskatasters dient.';
   COMMENT ON COLUMN ax_gebaeude.gml_id             IS 'Identifikator, global eindeutig';
   COMMENT ON COLUMN ax_gebaeude.gebaeudefunktion   IS 'GFK "GebÃ€udefunktion" ist die zum Zeitpunkt der Erhebung vorherrschend funktionale Bedeutung des GebÃ€udes (Dominanzprinzip). Werte siehe ax_gebaeude_funktion';
-  COMMENT ON COLUMN ax_gebaeude.weiteregebaeudefunktion IS 'WGF "Weitere GebÃ€udefunktion" ist die Funktion, die ein GebÃ€ude neben der dominierenden GebÃ€udefunktion hat.';
-  COMMENT ON COLUMN ax_gebaeude."name"             IS 'NAM "Name" ist der Eigenname oder die Bezeichnung des GebÃ€udes.';
+  COMMENT ON COLUMN ax_gebaeude.weiteregebaeudefunktion IS 'WGF "Weitere GebÃ€udefunktion" sind weitere Funktionen, die ein GebÃ€ude neben der dominierenden GebÃ€udefunktion hat.';
+  COMMENT ON COLUMN ax_gebaeude.name             IS 'NAM "Name" ist der Eigenname oder die Bezeichnung des GebÃ€udes.';
 --COMMENT ON COLUMN ax_gebaeude.nutzung            IS 'NTZ "Nutzung" ist die GebÃ€udenutzung und enthÃ€lt den jeweiligen prozentualen Nutzungsanteil an der Gesamtnutzung.';
   COMMENT ON COLUMN ax_gebaeude.bauweise           IS 'BAW "Bauweise" ist die Beschreibung der Art der Bauweise. Werte siehe ax_gebaeude_bauweise';
@@ -2128,5 +1802,5 @@
 -- Welche sind das?
 --  CREATE VIEW gebauede_geometrie_multipolygone AS
---    SELECT ogc_fid, 
+--    SELECT ogc_fid,
 --           astext(wkb_geometry) AS geometrie
 --      FROM ax_gebaeude
@@ -2145,13 +1819,16 @@
 	beginnt			character(20),
 	endet 			character(20),
-	advstandardmodell	varchar,
+	advstandardmodell	varchar[],
 	sonstigesmodell		varchar[],
-	anlass			integer,
+	anlass			varchar,
 	bauart			integer,
+	dachform		integer,
+	anzahlderoberirdischengeschosse	integer,
+	anzahlderunterirdischengeschosse	integer,
 	lagezurerdoberflaeche	integer,
 	CONSTRAINT ax_bauteil_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_bauteil','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_bauteil','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_bauteil_geom_idx ON ax_bauteil USING gist (wkb_geometry);
@@ -2172,10 +1849,10 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	beschaffenheit		integer,
-	anlass			integer,
+	beschaffenheit		integer[],
+	anlass			varchar,
 	CONSTRAINT ax_besonderegebaeudelinie_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_besonderegebaeudelinie','wkb_geometry',25832,'LINESTRING',2);
+SELECT AddGeometryColumn('ax_besonderegebaeudelinie','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- LINESTRING/MULTILINESTRING
 
 CREATE INDEX ax_besonderegebaeudelinie_geom_idx ON ax_besonderegebaeudelinie USING gist (wkb_geometry);
@@ -2196,5 +1873,5 @@
 	advstandardmodell	varchar,
 	sonstigesmodell		varchar,
-	anlass			integer,
+	anlass			varchar,
 	art			varchar,
 	uri			varchar,
@@ -2202,5 +1879,5 @@
 );
 
-SELECT AddGeometryColumn('ax_firstlinie','wkb_geometry',25832,'LINESTRING',2);
+SELECT AddGeometryColumn('ax_firstlinie','wkb_geometry',:alkis_epsg,'LINESTRING',2);
 
 CREATE INDEX ax_firstlinie_geom_idx ON ax_firstlinie USING gist (wkb_geometry);
@@ -2220,14 +1897,15 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	land			integer,
 	stelle			integer,
 	punktkennung		varchar, -- integer,
 	art			varchar, --(37)
-	"name"			varchar[],
+	name			varchar[],
+	sonstigeeigenschaft 	varchar[],
 	CONSTRAINT ax_besonderergebaeudepunkt_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_besonderergebaeudepunkt','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_besonderergebaeudepunkt','dummy',:alkis_epsg,'POINT',2);
 
 CREATE UNIQUE INDEX ax_besonderergebaeudepunkt_gml ON ax_besonderergebaeudepunkt USING btree (gml_id,beginnt);
@@ -2255,5 +1933,5 @@
 -- W o h n b a u f l a e c h e
 -- ----------------------------------------------
--- 'WohnbauflÃ€che' ist eine baulich geprÃ€gte FlÃ€che einschlieÃlich der mit ihr im Zusammenhang 
+-- 'WohnbauflÃ€che' ist eine baulich geprÃ€gte FlÃ€che einschlieÃlich der mit ihr im Zusammenhang
 -- stehenden FreiflÃ€chen (z.B. VorgÃ€rten, ZiergÃ€rten, Zufahrten, StellplÃ€tze und HofraumflÃ€chen),
 -- die ausschlieÃlich oder vorwiegend dem Wohnen dient.
@@ -2265,5 +1943,5 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	artderbebauung		integer,
 	zustand			integer,
@@ -2272,5 +1950,5 @@
 );
 
-SELECT AddGeometryColumn('ax_wohnbauflaeche','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_wohnbauflaeche','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_wohnbauflaeche_geom_idx ON ax_wohnbauflaeche USING gist (wkb_geometry);
@@ -2295,5 +1973,5 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	funktion		integer,
 	name			varchar,
@@ -2305,5 +1983,5 @@
 );
 
-SELECT AddGeometryColumn('ax_industrieundgewerbeflaeche','wkb_geometry',25832,'GEOMETRY',2); -- POLYGON/POINT
+SELECT AddGeometryColumn('ax_industrieundgewerbeflaeche','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/POINT
 
 CREATE INDEX ax_industrieundgewerbeflaeche_geom_idx ON ax_industrieundgewerbeflaeche USING gist (wkb_geometry);
@@ -2330,12 +2008,12 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	lagergut		integer,
-	"name"			varchar,
+	name			varchar,
 	zustand			integer,
 	CONSTRAINT ax_halde_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_halde','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_halde','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_halde_geom_idx ON ax_halde USING gist (wkb_geometry);
@@ -2353,14 +2031,14 @@
 -- -------------------------
 -- 'Bergbaubetrieb' ist eine FlÃ€che, die fÃŒr die FÃ¶rderung des Abbaugutes unter Tage genutzt wird.
-CREATE TABLE ax_bergbaubetrieb ( 
-	ogc_fid			serial NOT NULL,
-	gml_id			character(16),
-	identifier		character(44),
-	beginnt			character(20),
-	endet 			character(20),
-	advstandardmodell	varchar,
-	anlass			integer,
+CREATE TABLE ax_bergbaubetrieb (
+	ogc_fid			serial NOT NULL,
+	gml_id			character(16),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	anlass			varchar,
 	abbaugut		integer,
-	"name"			varchar,
+	name			varchar,
 	bezeichnung		varchar,
 	zustand			integer,
@@ -2368,5 +2046,5 @@
 );
 
-SELECT AddGeometryColumn('ax_bergbaubetrieb','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_bergbaubetrieb','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_bergbaubetrieb_geom_idx   ON ax_bergbaubetrieb USING gist  (wkb_geometry);
@@ -2390,12 +2068,12 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	abbaugut		integer,
-	"name"			varchar,
+	name			varchar,
 	zustand			integer,
 	CONSTRAINT ax_tagebaugrubesteinbruch_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_tagebaugrubesteinbruch','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_tagebaugrubesteinbruch','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_tagebaugrubesteinbruch_geom_idx ON ax_tagebaugrubesteinbruch USING gist (wkb_geometry);
@@ -2419,13 +2097,13 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	artderbebauung		integer,
 	funktion		integer,
-	"name"			varchar,
+	name			varchar,
 	zustand			integer,
 	CONSTRAINT ax_flaechegemischternutzung_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_flaechegemischternutzung','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_flaechegemischternutzung','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_flaechegemischternutzung_geom_idx ON ax_flaechegemischternutzung USING gist (wkb_geometry);
@@ -2450,13 +2128,13 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	funktion		integer,
 	artderbebauung		integer,
-	"name"			varchar,
+	name			varchar,
 	zustand			integer,
 	CONSTRAINT ax_flaechebesondererfunktionalerpraegung_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_flaechebesondererfunktionalerpraegung','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_flaechebesondererfunktionalerpraegung','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_flaechebesondererfunktionalerpraegung_geom_idx ON ax_flaechebesondererfunktionalerpraegung USING gist (wkb_geometry);
@@ -2480,12 +2158,12 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	funktion		integer,
 	zustand			integer,
-	"name"			varchar,
+	name			varchar,
 	CONSTRAINT ax_sportfreizeitunderholungsflaeche_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_sportfreizeitunderholungsflaeche','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_sportfreizeitunderholungsflaeche','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_sportfreizeitunderholungsflaeche_geom_idx ON ax_sportfreizeitunderholungsflaeche USING gist (wkb_geometry);
@@ -2509,12 +2187,12 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	funktion		integer,
-	"name"			varchar,
+	name			varchar,
 	zustand			integer,
 	CONSTRAINT ax_friedhof_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_friedhof','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_friedhof','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_friedhof_geom_idx ON ax_friedhof USING gist (wkb_geometry);
@@ -2541,7 +2219,7 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	funktion		integer,
-	"name"			varchar,
+	name			varchar,
 	zweitname		varchar,
 	zustand			integer,
@@ -2554,5 +2232,5 @@
 );
 
-SELECT AddGeometryColumn('ax_strassenverkehr','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_strassenverkehr','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_strassenverkehr_geom_idx ON ax_strassenverkehr USING gist (wkb_geometry);
@@ -2567,7 +2245,7 @@
 
 
--- W e g 
--- ----------------------------------------------
--- 'Weg' umfasst alle FlÃ€chen, die zum Befahren und/oder Begehen vorgesehen sind. 
+-- W e g
+-- ----------------------------------------------
+-- 'Weg' umfasst alle FlÃ€chen, die zum Befahren und/oder Begehen vorgesehen sind.
 -- Zum 'Weg' gehÃ¶ren auch Seitenstreifen und GrÃ€ben zur WegentwÃ€sserung.
 CREATE TABLE ax_weg (
@@ -2578,5 +2256,5 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	funktion		integer,
 	name			varchar,
@@ -2590,5 +2268,5 @@
 );
 
-SELECT AddGeometryColumn('ax_weg','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_weg','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_weg_geom_idx ON ax_weg USING gist (wkb_geometry);
@@ -2612,7 +2290,7 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	funktion		integer,
-	"name"			varchar,
+	name			varchar,
 	zweitname		varchar,
 	land			integer,	-- neu 2012-02-28
@@ -2624,5 +2302,5 @@
 );
 
-SELECT AddGeometryColumn('ax_platz','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_platz','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_platz_geom_idx ON ax_platz USING gist (wkb_geometry);
@@ -2636,5 +2314,5 @@
 
 
--- B a h n v e r k e h r 
+-- B a h n v e r k e h r
 -- ----------------------------------------------
 CREATE TABLE ax_bahnverkehr (
@@ -2645,5 +2323,5 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	funktion		integer,
 	bahnkategorie		integer,
@@ -2655,5 +2333,5 @@
 );
 
-SELECT AddGeometryColumn('ax_bahnverkehr','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_bahnverkehr','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_bahnverkehr_geom_idx ON ax_bahnverkehr USING gist (wkb_geometry);
@@ -2662,5 +2340,5 @@
 COMMENT ON TABLE  ax_bahnverkehr        IS '"B a h n v e r k e h r"  umfasst alle fÃŒr den Schienenverkehr erforderlichen FlÃ€chen.';
 -- FlÃ€chen von Bahnverkehr sind
---  * der BahnkÃ¶rper (Unterbau fÃŒr Gleise; bestehend aus DÃ€mmen oder Einschnitten und deren kleineren BÃ¶schungen, 
+--  * der BahnkÃ¶rper (Unterbau fÃŒr Gleise; bestehend aus DÃ€mmen oder Einschnitten und deren kleineren BÃ¶schungen,
 --    DurchlÃ€ssen, schmalen GrÃ€ben zur EntwÃ€sserung, StÃŒtzmauern, Unter- und ÃberfÃŒhrung, Seiten und Schutzstreifen) mit seinen Bahnstrecken
 --  * an den BahnkÃ¶rper angrenzende bebaute und unbebaute FlÃ€chen (z.B. grÃ¶Ãere BÃ¶schungsflÃ€chen).
@@ -2684,8 +2362,8 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	funktion 		integer,
 	art			integer,
-	"name"			varchar,
+	name			varchar,
 	bezeichnung		varchar,
 	nutzung			integer,
@@ -2694,5 +2372,5 @@
 );
 
-SELECT AddGeometryColumn('ax_flugverkehr','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_flugverkehr','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_flugverkehr_geom_idx   ON ax_flugverkehr USING gist  (wkb_geometry);
@@ -2718,12 +2396,12 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	funktion		integer,
-	"name"			varchar,
+	name			varchar,
 	zustand			integer,
 	CONSTRAINT ax_schiffsverkehr_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_schiffsverkehr','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_schiffsverkehr','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_schiffsverkehr_geom_idx ON ax_schiffsverkehr USING gist (wkb_geometry);
@@ -2750,5 +2428,5 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	vegetationsmerkmal	integer,
 	name			varchar,
@@ -2756,5 +2434,5 @@
 );
 
-SELECT AddGeometryColumn('ax_landwirtschaft','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_landwirtschaft','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_landwirtschaft_geom_idx ON ax_landwirtschaft USING gist (wkb_geometry);
@@ -2767,5 +2445,5 @@
 
 
--- W a l d 
+-- W a l d
 -- ----------------------------------------------
 CREATE TABLE ax_wald (
@@ -2776,5 +2454,5 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	vegetationsmerkmal	integer,
 	name			varchar,
@@ -2783,5 +2461,5 @@
 );
 
-SELECT AddGeometryColumn('ax_wald','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_wald','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_wald_geom_idx ON ax_wald USING gist (wkb_geometry);
@@ -2804,12 +2482,12 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass 			integer,
+	anlass 			varchar,
 	vegetationsmerkmal	integer,
-	"name"			varchar,
+	name			varchar,
 	funktion		integer,
 	CONSTRAINT ax_gehoelz_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_gehoelz','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_gehoelz','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_gehoelz_geom_idx ON ax_gehoelz USING gist (wkb_geometry);
@@ -2833,10 +2511,10 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
-	"name"			varchar,
+	anlass			varchar,
+	name			varchar,
 	CONSTRAINT ax_heide_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_heide','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_heide','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_heide_geom_idx ON ax_heide USING gist (wkb_geometry);
@@ -2857,10 +2535,10 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
-	"name"			varchar,
+	anlass			varchar,
+	name			varchar,
 	CONSTRAINT ax_moor_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_moor','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_moor','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_moor_geom_idx   ON ax_moor USING gist (wkb_geometry);
@@ -2882,10 +2560,10 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
-	"name"			varchar,
+	anlass			varchar,
+	name			varchar,
 	CONSTRAINT ax_sumpf_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_sumpf','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_sumpf','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_sumpf_geom_idx ON ax_sumpf USING gist (wkb_geometry);
@@ -2906,12 +2584,12 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	oberflaechenmaterial	integer,
-	"name"			varchar,
+	name			varchar,
 	funktion		integer,
 	CONSTRAINT ax_unlandvegetationsloseflaeche_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_unlandvegetationsloseflaeche','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_unlandvegetationsloseflaeche','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_unlandvegetationsloseflaeche_geom_idx ON ax_unlandvegetationsloseflaeche USING gist (wkb_geometry);
@@ -2932,12 +2610,12 @@
 -- F l i e s s g e w a e s s e r
 -- ----------------------------------------------
--- 'FlieÃgewÃ€sser' ist ein geometrisch begrenztes, oberirdisches, auf dem Festland flieÃendes GewÃ€sser, 
--- das die Wassermengen sammelt, die als NiederschlÃ€ge auf die ErdoberflÃ€che fallen oder in Quellen austreten, 
+-- 'FlieÃgewÃ€sser' ist ein geometrisch begrenztes, oberirdisches, auf dem Festland flieÃendes GewÃ€sser,
+-- das die Wassermengen sammelt, die als NiederschlÃ€ge auf die ErdoberflÃ€che fallen oder in Quellen austreten,
 -- und in ein anderes GewÃ€sser, ein Meer oder in einen See transportiert
 --   oder
--- in einem System von natÃŒrlichen oder kÃŒnstlichen Bodenvertiefungen verlaufendes Wasser, 
+-- in einem System von natÃŒrlichen oder kÃŒnstlichen Bodenvertiefungen verlaufendes Wasser,
 -- das zur Be- und EntwÃ€sserung an- oder abgeleitet wird
 --   oder
--- ein geometrisch begrenzter, fÃŒr die Schifffahrt angelegter kÃŒnstlicher Wasserlauf, 
+-- ein geometrisch begrenzter, fÃŒr die Schifffahrt angelegter kÃŒnstlicher Wasserlauf,
 -- der in einem oder in mehreren Abschnitten die jeweils gleiche HÃ¶he des Wasserspiegels besitzt.
 CREATE TABLE ax_fliessgewaesser (
@@ -2948,12 +2626,12 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	funktion		integer,
-	"name"			varchar,
+	name			varchar,
 	zustand			integer,
 	CONSTRAINT ax_fliessgewaesser_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_fliessgewaesser','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_fliessgewaesser','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_fliessgewaesser_geom_idx ON ax_fliessgewaesser USING gist (wkb_geometry);
@@ -2976,12 +2654,12 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	funktion		integer,
-	"name"			varchar,
+	name			varchar,
 	nutzung			integer,
 	CONSTRAINT ax_hafenbecken_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_hafenbecken','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_hafenbecken','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_hafenbecken_geom_idx   ON ax_hafenbecken USING gist  (wkb_geometry);
@@ -2998,5 +2676,5 @@
 -- s t e h e n d e s   G e w a e s s e r
 -- ----------------------------------------------
--- 'Stehendes GewÃ€sser' ist eine natÃŒrliche oder kÃŒnstliche mit Wasser gefÃŒllte, 
+-- 'Stehendes GewÃ€sser' ist eine natÃŒrliche oder kÃŒnstliche mit Wasser gefÃŒllte,
 -- allseitig umschlossene Hohlform der LandoberflÃ€che ohne unmittelbaren Zusammenhang mit 'Meer'.
 CREATE TABLE ax_stehendesgewaesser (
@@ -3007,5 +2685,5 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	funktion		integer,
 	name			varchar,
@@ -3015,5 +2693,5 @@
 );
 
-SELECT AddGeometryColumn('ax_stehendesgewaesser','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_stehendesgewaesser','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_stehendesgewaesser_geom_idx ON ax_stehendesgewaesser USING gist (wkb_geometry);
@@ -3037,7 +2715,7 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	funktion		integer,
-	"name"			varchar,
+	name			varchar,
 	bezeichnung		varchar,
 	tidemerkmal		integer,
@@ -3045,5 +2723,5 @@
 );
 
-SELECT AddGeometryColumn('ax_meer','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_meer','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_meer_geom_idx ON ax_meer USING gist (wkb_geometry);
@@ -3092,10 +2770,12 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	bauwerksfunktion	integer,
+	zustand			integer,
+	name			varchar,
 	CONSTRAINT ax_turm_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_turm','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_turm','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_turm_geom_idx ON ax_turm USING gist (wkb_geometry);
@@ -3115,10 +2795,13 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	bauwerksfunktion	integer,
+	name			varchar,
+	zustand			integer,
+	objekthoehe		double precision,
 	CONSTRAINT ax_bauwerkoderanlagefuerindustrieundgewerbe_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_bauwerkoderanlagefuerindustrieundgewerbe','wkb_geometry',25832,'GEOMETRY',2); -- POLYGON/POINT
+SELECT AddGeometryColumn('ax_bauwerkoderanlagefuerindustrieundgewerbe','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/POINT
 
 CREATE INDEX ax_bauwerkoderanlagefuerindustrieundgewerbe_geom_idx ON ax_bauwerkoderanlagefuerindustrieundgewerbe USING gist (wkb_geometry);
@@ -3138,11 +2821,13 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	speicherinhalt		integer,
 	bauwerksfunktion	integer,
+	lagezurerdoberflaeche   integer,
+	name			varchar,
 	CONSTRAINT ax_vorratsbehaelterspeicherbauwerk_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_vorratsbehaelterspeicherbauwerk','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_vorratsbehaelterspeicherbauwerk','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_vorratsbehaelterspeicherbauwerk_geom_idx ON ax_vorratsbehaelterspeicherbauwerk USING gist (wkb_geometry);
@@ -3162,13 +2847,14 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	bauwerksfunktion	integer,
 	lagezurerdoberflaeche	integer,
 	art			varchar,  --(15)
-	"name"			varchar,  -- (3) "NPL", "RMR"
+	name			varchar,  -- (3) "NPL", "RMR"
+	produkt                 integer,
 	CONSTRAINT ax_transportanlage_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_transportanlage','wkb_geometry',25832,'LINESTRING',2);
+SELECT AddGeometryColumn('ax_transportanlage','wkb_geometry',:alkis_epsg,'LINESTRING',2);
 
 CREATE INDEX ax_transportanlage_geom_idx ON ax_transportanlage USING gist (wkb_geometry);
@@ -3188,5 +2874,5 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	bauwerksfunktion	integer,
 	spannungsebene		integer,
@@ -3194,5 +2880,5 @@
 );
 
-SELECT AddGeometryColumn('ax_leitung','wkb_geometry',25832,'LINESTRING',2);
+SELECT AddGeometryColumn('ax_leitung','wkb_geometry',:alkis_epsg,'LINESTRING',2);
 
 CREATE INDEX ax_leitung_geom_idx ON ax_leitung USING gist (wkb_geometry);
@@ -3212,11 +2898,12 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	bauwerksfunktion	integer,
-	-- "name"		varchar,
+	sportart		integer,
+	name			varchar,
 	CONSTRAINT ax_bauwerkoderanlagefuersportfreizeitunderholung_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_bauwerkoderanlagefuersportfreizeitunderholung','wkb_geometry',25832,'GEOMETRY',2); -- POLYGON/POINT
+SELECT AddGeometryColumn('ax_bauwerkoderanlagefuersportfreizeitunderholung','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/POINT
 
 CREATE INDEX ax_bauwerkoderanlagefuersportfreizeitunderholung_geom_idx ON ax_bauwerkoderanlagefuersportfreizeitunderholung USING gist (wkb_geometry);
@@ -3237,10 +2924,11 @@
 	advstandardmodell	varchar,
 	sonstigesmodell		varchar[],
-	anlass			integer,
+	anlass			varchar,
 	archaeologischertyp	integer,
+	name			varchar,
 	CONSTRAINT ax_historischesbauwerkoderhistorischeeinrichtung_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_historischesbauwerkoderhistorischeeinrichtung','wkb_geometry',25832,'GEOMETRY',2); -- POLYGON/POINT
+SELECT AddGeometryColumn('ax_historischesbauwerkoderhistorischeeinrichtung','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/POINT
 
 CREATE INDEX ax_historischesbauwerkoderhistorischeeinrichtung_geom_idx ON ax_historischesbauwerkoderhistorischeeinrichtung USING gist (wkb_geometry);
@@ -3261,11 +2949,11 @@
 	advstandardmodell	varchar,
 	sonstigesmodell		varchar,
-	anlass			integer,
+	anlass			varchar,
 	art			integer,
-	"name"			varchar,
+	name			varchar,
 	CONSTRAINT ax_heilquellegasquelle_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_heilquellegasquelle','wkb_geometry',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_heilquellegasquelle','wkb_geometry',:alkis_epsg,'POINT',2);
 
 CREATE INDEX ax_heilquellegasquelle_geom_idx ON ax_heilquellegasquelle USING gist (wkb_geometry);
@@ -3285,13 +2973,13 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 --	art			varchar,	-- Inhalt = "urn:adv:fachdatenverbindung:AA_Antrag" oder leer, wozu?
 	description		integer,		-- neu 03.02.2012
-	"name"			varchar,	-- 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,'GEOMETRY',2); -- POLYGON/LINESTRING
+SELECT AddGeometryColumn('ax_sonstigesbauwerkodersonstigeeinrichtung','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/LINESTRING
 
 CREATE INDEX ax_sonstigesbauwerkodersonstigeeinrichtung_geom_idx ON ax_sonstigesbauwerkodersonstigeeinrichtung USING gist (wkb_geometry);
@@ -3302,5 +2990,5 @@
 
 
--- 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 
+-- 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
 -- ------------------------------------------------------------------------
 CREATE TABLE ax_einrichtunginoeffentlichenbereichen (
@@ -3311,10 +2999,11 @@
 	endet			character(20),
 	sonstigesmodell		varchar,
-	anlass			integer,
+	anlass			varchar,
 	art			integer,
+	kilometerangabe         varchar,
 	CONSTRAINT ax_einrichtunginoeffentlichenbereichen_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_einrichtunginoeffentlichenbereichen','wkb_geometry',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_einrichtunginoeffentlichenbereichen','wkb_geometry',:alkis_epsg,'POINT',2);
 
 CREATE INDEX ax_einrichtunginoeffentlichenbereichen_geom_idx ON ax_einrichtunginoeffentlichenbereichen USING gist (wkb_geometry);
@@ -3334,13 +3023,13 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	punktkennung		varchar, -- integer,
 	land			integer,
 	stelle			integer,
-	--sonstigeeigenschaft	character(26),
+	sonstigeeigenschaft	varchar[],
 	CONSTRAINT ax_besondererbauwerkspunkt_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_besondererbauwerkspunkt','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_besondererbauwerkspunkt','dummy',:alkis_epsg,'POINT',2);
 
 CREATE UNIQUE INDEX ax_besondererbauwerkspunkt_gml ON ax_besondererbauwerkspunkt USING btree (gml_id,beginnt);
@@ -3365,10 +3054,12 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	bauwerksfunktion	integer,
+	name                    varchar,
+	zustand			integer,
 	CONSTRAINT ax_bauwerkimverkehrsbereich_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_bauwerkimverkehrsbereich','wkb_geometry',25832,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
+SELECT AddGeometryColumn('ax_bauwerkimverkehrsbereich','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
 
 CREATE INDEX ax_bauwerkimverkehrsbereich_geom_idx ON ax_bauwerkimverkehrsbereich USING gist (wkb_geometry);
@@ -3388,9 +3079,12 @@
 	advstandardmodell	varchar,
 	sonstigesmodell		varchar[],
-	anlass			integer,
-	art			integer 
-);
-
-SELECT AddGeometryColumn('ax_strassenverkehrsanlage','wkb_geometry',25832,'GEOMETRY',2); -- LINESTRING/MULTIPOLYGON
+	anlass			varchar,
+	art			integer,
+	bezeichnung             varchar,
+	name			varchar,
+	CONSTRAINT ax_strassenverkehrsanlage_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_strassenverkehrsanlage','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- LINESTRING/MULTIPOLYGON
 
 CREATE INDEX ax_strassenverkehrsanlage_geom_idx ON ax_strassenverkehrsanlage USING gist (wkb_geometry);
@@ -3411,10 +3105,11 @@
 	advstandardmodell	varchar,
 	sonstigesmodell		varchar[],
-	anlass			integer,
+	anlass			varchar,
 	art			integer,
+	name			varchar,
 	CONSTRAINT ax_wegpfadsteig_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_wegpfadsteig','wkb_geometry',25832,'GEOMETRY',2); -- LINESTRING/POLYGON
+SELECT AddGeometryColumn('ax_wegpfadsteig','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- LINESTRING/POLYGON
 
 CREATE INDEX ax_wegpfadsteig_geom_idx ON ax_wegpfadsteig USING gist (wkb_geometry);
@@ -3434,11 +3129,12 @@
 	advstandardmodell	varchar,
 	sonstigesmodell		varchar[],
-	anlass			integer,
+	anlass			varchar,
 	bahnhofskategorie	integer,
 	bahnkategorie		integer,
+	name			varchar,
 	CONSTRAINT ax_bahnverkehrsanlage_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_bahnverkehrsanlage','wkb_geometry',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_bahnverkehrsanlage','wkb_geometry',:alkis_epsg,'POINT',2);
 
 CREATE INDEX ax_bahnverkehrsanlage_geom_idx ON ax_bahnverkehrsanlage USING gist (wkb_geometry);
@@ -3463,10 +3159,13 @@
 	advstandardmodell	varchar,
 	sonstigesmodell		varchar[],
-	anlass			integer,
+	anlass			varchar,
 	bahnkategorie		integer,
+	art			integer,
+	lagezuroberflaeche      integer,
+	name			varchar,
 	CONSTRAINT ax_gleis_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_gleis','wkb_geometry',25832,'GEOMETRY',2); -- LINESTRING/POLYGON
+SELECT AddGeometryColumn('ax_gleis','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- LINESTRING/POLYGON
 
 CREATE INDEX ax_gleis_geom_idx ON ax_gleis USING gist (wkb_geometry);
@@ -3487,12 +3186,12 @@
 	advstandardmodell	varchar,
 	sonstigesmodell		varchar,
-	anlass			integer,
+	anlass			varchar,
 	art			integer,
 	oberflaechenmaterial	integer,
-	"name"			varchar,
+	name			varchar,
 	CONSTRAINT ax_flugverkehrsanlage_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_flugverkehrsanlage','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_flugverkehrsanlage','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_flugverkehrsanlage_geom_idx ON ax_flugverkehrsanlage USING gist (wkb_geometry);
@@ -3516,10 +3215,12 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	bauwerksfunktion	integer,
+	name			varchar,
+	zustand			integer,
 	CONSTRAINT ax_bauwerkimgewaesserbereich_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_bauwerkimgewaesserbereich','wkb_geometry',25832,'GEOMETRY',2); -- LINESTRING/POINT
+SELECT AddGeometryColumn('ax_bauwerkimgewaesserbereich','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- LINESTRING/POINT
 
 CREATE INDEX ax_bauwerkimgewaesserbereich_geom_idx ON ax_bauwerkimgewaesserbereich USING gist (wkb_geometry);
@@ -3542,10 +3243,12 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	bewuchs			integer,
+	zustand			integer,
+	name			varchar,
 	CONSTRAINT ax_vegetationsmerkmal_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_vegetationsmerkmal','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_vegetationsmerkmal','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_vegetationsmerkmal_geom_idx ON ax_vegetationsmerkmal USING gist (wkb_geometry);
@@ -3568,10 +3271,11 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	art			integer,
+	name			varchar,
 	CONSTRAINT ax_gewaessermerkmal_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_gewaessermerkmal','wkb_geometry',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_gewaessermerkmal','wkb_geometry',:alkis_epsg,'POINT',2);
 
 CREATE INDEX ax_gewaessermerkmal_geom_idx ON ax_gewaessermerkmal USING gist (wkb_geometry);
@@ -3591,10 +3295,13 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	funktion		integer,
+	lagezurerdoberflaeche	integer,
+	hydrologischesmerkmal	integer,
+	name			varchar,
 	CONSTRAINT ax_untergeordnetesgewaesser_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_untergeordnetesgewaesser','wkb_geometry',25832,'GEOMETRY',2); -- LINESTRING/POLYGON
+SELECT AddGeometryColumn('ax_untergeordnetesgewaesser','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- LINESTRING/POLYGON
 
 CREATE INDEX ax_untergeordnetesgewaesser_geom_idx ON ax_untergeordnetesgewaesser USING gist (wkb_geometry);
@@ -3630,12 +3337,13 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
+	identifier		character(44),
 	beginnt			character(20),
 	endet 			character(20),
 	advstandardmodell	varchar,
 	sonstigesmodell		varchar[],
-	anlass			integer
-);
-
-SELECT AddGeometryColumn('ax_boeschungkliff','dummy',25832,'POINT',2);
+	anlass			varchar
+);
+
+SELECT AddGeometryColumn('ax_boeschungkliff','dummy',:alkis_epsg,'POINT',2);
 
 CREATE UNIQUE INDEX ax_boeschungkliff_gml ON ax_boeschungkliff USING btree (gml_id,beginnt);
@@ -3651,13 +3359,14 @@
 	ogc_fid			serial NOT NULL,
 	gml_id			character(16),
+	identifier		character(44),
 	beginnt			character(20),
 	endet 			character(20),
 	advstandardmodell	varchar,
 	sonstigesmodell		varchar[],
-	anlass			integer,
+	anlass			varchar,
 	CONSTRAINT ax_boeschungsflaeche_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_boeschungsflaeche','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_boeschungsflaeche','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_boeschungsflaeche_geom_idx ON ax_boeschungsflaeche USING gist (wkb_geometry);
@@ -3677,10 +3386,11 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	art			integer,
+	name			varchar,
 	CONSTRAINT ax_dammwalldeich_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_dammwalldeich','wkb_geometry',25832,'GEOMETRY',2); -- LINESTRING/POLYGON
+SELECT AddGeometryColumn('ax_dammwalldeich','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- LINESTRING/POLYGON
 
 CREATE INDEX ax_dammwalldeich_geom_idx ON ax_dammwalldeich USING gist (wkb_geometry);
@@ -3705,10 +3415,10 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	name			varchar,
 	CONSTRAINT ax_felsenfelsblockfelsnadel_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_felsenfelsblockfelsnadel','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_felsenfelsblockfelsnadel','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_felsenfelsblockfelsnadel_geom_idx ON ax_felsenfelsblockfelsnadel USING gist (wkb_geometry);
@@ -3748,13 +3458,14 @@
 	advstandardmodell	varchar,
 	sonstigesmodell		varchar,
-	anlass			integer,
-	istteilvon		character varying, -- Beziehung?
+	anlass			varchar,
+	istteilvon		varchar, -- Beziehung?
 	artdergelaendekante	integer,
 	ax_dqerfassungsmethode	integer,
 	identifikation		integer,
+	art			integer,
 	CONSTRAINT ax_gelaendekante_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_gelaendekante','wkb_geometry',25832,'LINESTRING',2);
+SELECT AddGeometryColumn('ax_gelaendekante','wkb_geometry',:alkis_epsg,'LINESTRING',2);
 
 CREATE INDEX ax_gelaendekante_geom_idx ON ax_gelaendekante USING gist (wkb_geometry);
@@ -3779,10 +3490,10 @@
 	advstandardmodell	varchar,
 	sonstigesmodell		varchar,
-	anlass			integer,
+	anlass			varchar,
 	besonderebedeutung	integer,
 	CONSTRAINT ax_besondererhoehenpunkt_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_besondererhoehenpunkt','wkb_geometry',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_besondererhoehenpunkt','wkb_geometry',:alkis_epsg,'POINT',2);
 
 CREATE INDEX ax_besondererhoehenpunkt_geom_idx ON ax_besondererhoehenpunkt USING gist (wkb_geometry);
@@ -3814,91 +3525,97 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
-	artderfestlegung	integer,
-	bezeichnung		varchar,
-	CONSTRAINT ax_klassifizierungnachstrassenrecht_pk PRIMARY KEY (ogc_fid)
-);
-
-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';
-COMMENT ON COLUMN ax_klassifizierungnachstrassenrecht.gml_id IS 'Identifikator, global eindeutig';
-
-
--- K l a s s i f i z i e r u n g   n a c h   W a s s e r r e c h t
--- ---------------------------------------------------------------
-CREATE TABLE ax_klassifizierungnachwasserrecht (
-	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_klassifizierungnachwasserrecht_pk PRIMARY KEY (ogc_fid)
-);
-
-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';
-COMMENT ON COLUMN ax_klassifizierungnachwasserrecht.gml_id IS 'Identifikator, global eindeutig';
-
-
--- B a u - ,   R a u m -   o d e r   B o d e n o r d n u n g s r e c h t
--- ---------------------------------------------------------------------
--- 'Bau-, Raum- oder Bodenordnungsrecht' ist ein fachlich ÃŒbergeordnetes Gebiet von FlÃ€chen 
--- mit bodenbezogenen BeschrÃ€nkungen, Belastungen oder anderen Eigenschaften nach Ã¶ffentlichen Vorschriften.
-CREATE TABLE ax_bauraumoderbodenordnungsrecht (
-	ogc_fid			serial NOT NULL,
-	gml_id			character(16),
-	identifier		character(44),
-	beginnt			character(20),
-	endet 			character(20),
-	advstandardmodell	varchar,
-	anlass			integer,
-	art			varchar, -- (15)
-	"name"			varchar,
-	artderfestlegung	integer,
-	land			integer,
-	stelle			varchar,
-	bezeichnung		varchar, 
-	CONSTRAINT ax_bauraumoderbodenordnungsrecht_pk PRIMARY KEY (ogc_fid)
-);
-
-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';
-COMMENT ON COLUMN ax_bauraumoderbodenordnungsrecht.gml_id      IS 'Identifikator, global eindeutig';
-COMMENT ON COLUMN ax_bauraumoderbodenordnungsrecht.artderfestlegung IS 'ADF';
-COMMENT ON COLUMN ax_bauraumoderbodenordnungsrecht."name"      IS 'NAM, Eigenname von "Bau-, Raum- oder Bodenordnungsrecht"';
-COMMENT ON COLUMN ax_bauraumoderbodenordnungsrecht.bezeichnung IS 'BEZ, Amtlich festgelegte VerschlÃŒsselung von "Bau-, Raum- oder Bodenordnungsrecht"';
-
-
--- S o n s t i g e s   R e c h t
--- -----------------------------
-CREATE TABLE ax_sonstigesrecht (
-	ogc_fid			serial NOT NULL,
-	gml_id			character(16),
-	identifier		character(44),
-	beginnt			character(20),
-	endet 			character(20),
-	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	artderfestlegung	integer,
 	land			integer,
 	stelle			varchar,
 	bezeichnung		varchar,
-	characterstring		integer,
+	CONSTRAINT ax_klassifizierungnachstrassenrecht_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_klassifizierungnachstrassenrecht','wkb_geometry',:alkis_epsg,'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);
+CREATE INDEX ax_klassifizierungnachstrassenrecht_afs ON ax_klassifizierungnachstrassenrecht(land,stelle);
+
+COMMENT ON TABLE  ax_klassifizierungnachstrassenrecht        IS 'K l a s s i f i z i e r u n g   n a c h   S t r a s s e n r e c h t';
+COMMENT ON COLUMN ax_klassifizierungnachstrassenrecht.gml_id IS 'Identifikator, global eindeutig';
+
+
+-- K l a s s i f i z i e r u n g   n a c h   W a s s e r r e c h t
+-- ---------------------------------------------------------------
+CREATE TABLE ax_klassifizierungnachwasserrecht (
+	ogc_fid			serial NOT NULL,
+	gml_id			character(16),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	anlass			varchar,
+	artderfestlegung	integer,
+	land			integer,
+	stelle			varchar,
+	CONSTRAINT ax_klassifizierungnachwasserrecht_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_klassifizierungnachwasserrecht','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
+
+CREATE INDEX ax_klassifizierungnachwasserrecht_geom_idx ON ax_klassifizierungnachwasserrecht USING gist (wkb_geometry);
+CREATE INDEX ax_klassifizierungnachwasserrecht_afs ON ax_klassifizierungnachwasserrecht(land,stelle);
+
+COMMENT ON TABLE  ax_klassifizierungnachwasserrecht        IS 'K l a s s i f i z i e r u n g   n a c h   W a s s e r r e c h t';
+COMMENT ON COLUMN ax_klassifizierungnachwasserrecht.gml_id IS 'Identifikator, global eindeutig';
+
+
+-- B a u - ,   R a u m -   o d e r   B o d e n o r d n u n g s r e c h t
+-- ---------------------------------------------------------------------
+-- 'Bau-, Raum- oder Bodenordnungsrecht' ist ein fachlich ÃŒbergeordnetes Gebiet von FlÃ€chen
+-- mit bodenbezogenen BeschrÃ€nkungen, Belastungen oder anderen Eigenschaften nach Ã¶ffentlichen Vorschriften.
+CREATE TABLE ax_bauraumoderbodenordnungsrecht (
+	ogc_fid			serial NOT NULL,
+	gml_id			character(16),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	anlass			varchar,
+	art			varchar, -- (15)
+	name			varchar,
+	artderfestlegung	integer,
+	land			integer,
+	stelle			varchar,
+	bezeichnung		varchar,
+	CONSTRAINT ax_bauraumoderbodenordnungsrecht_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_bauraumoderbodenordnungsrecht','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
+
+CREATE INDEX ax_bauraumoderbodenordnungsrecht_geom_idx ON ax_bauraumoderbodenordnungsrecht USING gist (wkb_geometry);
+CREATE UNIQUE INDEX ax_bauraumoderbodenordnungsrecht_gml ON ax_bauraumoderbodenordnungsrecht USING btree (gml_id,beginnt);
+
+COMMENT ON TABLE  ax_bauraumoderbodenordnungsrecht             IS 'REO: Bau-, Raum- oder Bodenordnungsrecht';
+COMMENT ON COLUMN ax_bauraumoderbodenordnungsrecht.gml_id      IS 'Identifikator, global eindeutig';
+COMMENT ON COLUMN ax_bauraumoderbodenordnungsrecht.artderfestlegung IS 'ADF';
+COMMENT ON COLUMN ax_bauraumoderbodenordnungsrecht.name      IS 'NAM, Eigenname von "Bau-, Raum- oder Bodenordnungsrecht"';
+COMMENT ON COLUMN ax_bauraumoderbodenordnungsrecht.bezeichnung IS 'BEZ, Amtlich festgelegte VerschlÃŒsselung von "Bau-, Raum- oder Bodenordnungsrecht"';
+
+
+-- S o n s t i g e s   R e c h t
+-- -----------------------------
+CREATE TABLE ax_sonstigesrecht (
+	ogc_fid			serial NOT NULL,
+	gml_id			character(16),
+	identifier		character(44),
+	beginnt			character(20),
+	endet 			character(20),
+	advstandardmodell	varchar,
+	anlass			varchar,
+	artderfestlegung	integer,
+	land			integer,
+	stelle			varchar,
+	bezeichnung		varchar,
+	characterstring		varchar,
 	art			varchar,  --(15)
-	"name"			varchar,
+	name			varchar,
 --	"qualitaetsangaben|ax_dqmitdatenerhebung|herkunft|li_lineage|pro" varchar,
 --	datetime		varchar,
@@ -3906,5 +3623,5 @@
 );
 
-SELECT AddGeometryColumn('ax_sonstigesrecht','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_sonstigesrecht','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_sonstigesrecht_geom_idx ON ax_sonstigesrecht USING gist (wkb_geometry);
@@ -3928,7 +3645,7 @@
 	endet 				character(20),
 	advstandardmodell		varchar,
-	anlass				integer,
+	anlass				varchar,
 	art				varchar, -- (15)
-	"name"				varchar,
+	name				varchar,
 	kulturart			integer,
 	bodenart			integer,
@@ -3937,10 +3654,10 @@
 	bodenzahlodergruenlandgrundzahl	integer,
 	ackerzahlodergruenlandzahl	integer,
-	sonstigeangaben			integer,
+	sonstigeangaben			integer[],
 	jahreszahl			integer,
 	CONSTRAINT ax_bodenschaetzung_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_bodenschaetzung','wkb_geometry',25832,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
+SELECT AddGeometryColumn('ax_bodenschaetzung','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON
 
 CREATE INDEX ax_bodenschaetzung_geom_idx ON ax_bodenschaetzung USING gist (wkb_geometry);
@@ -3957,8 +3674,8 @@
 	gml_id				character(16),
 	identifier			character(44),
-	beginnt				character(20), 
-	endet 				character(20), 
+	beginnt				character(20),
+	endet 				character(20),
 	advstandardmodell		varchar,
-	anlass				integer,
+	anlass				varchar,
 	merkmal				integer,
 	nummer				integer,
@@ -3970,10 +3687,10 @@
 	ackerzahlodergruenlandzahl	integer,
 	art				varchar,  -- (15)
-	"name"				varchar,
+	name				varchar,
 	CONSTRAINT ax_musterlandesmusterundvergleichsstueck_pk PRIMARY KEY (ogc_fid)
 );
 
 
-SELECT AddGeometryColumn('ax_musterlandesmusterundvergleichsstueck','wkb_geometry',25832,'GEOMETRY',2); -- POLYGON/POINT
+SELECT AddGeometryColumn('ax_musterlandesmusterundvergleichsstueck','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/POINT
 
 CREATE INDEX ax_musterlandesmusterundvergleichsstueck_geom_idx ON ax_musterlandesmusterundvergleichsstueck USING gist (wkb_geometry);
@@ -3997,12 +3714,13 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	schluesselgesamt	integer,
 	bezeichnung		varchar, --(22)
 	land			integer,
+	stelle			varchar,
 	CONSTRAINT ax_bundesland_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_bundesland','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_bundesland','dummy',:alkis_epsg,'POINT',2);
 
 CREATE UNIQUE INDEX ax_bundesland_gml ON ax_bundesland USING btree (gml_id,beginnt);
@@ -4021,5 +3739,5 @@
 	endet 				character(20),
 	advstandardmodell		varchar,
-	anlass				integer,
+	anlass				varchar,
 	schluesselgesamt		integer,
 	bezeichnung			varchar,
@@ -4029,5 +3747,5 @@
 );
 
-SELECT AddGeometryColumn('ax_regierungsbezirk','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_regierungsbezirk','dummy',:alkis_epsg,'POINT',2);
 
 -- Verbindungstabellen indizieren
@@ -4049,5 +3767,5 @@
 	endet 				character(20),
 	advstandardmodell		varchar,
-	anlass				integer,
+	anlass				varchar,
 	schluesselgesamt		integer,
 	bezeichnung			varchar,
@@ -4058,5 +3776,5 @@
 );
 
-SELECT AddGeometryColumn('ax_kreisregion','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_kreisregion','dummy',:alkis_epsg,'POINT',2);
 
 CREATE UNIQUE INDEX ax_kreisregion_gml ON ax_kreisregion USING btree (gml_id,beginnt);
@@ -4075,5 +3793,5 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	schluesselgesamt	integer,
 	bezeichnung		varchar,
@@ -4085,5 +3803,5 @@
 );
 
-SELECT AddGeometryColumn('ax_gemeinde','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_gemeinde','dummy',:alkis_epsg,'POINT',2);
 
 -- Index fÃŒr alkis_beziehungen
@@ -4103,5 +3821,5 @@
 	endet			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	schluesselgesamt	double precision,
 	bezeichnung		varchar,
@@ -4115,5 +3833,5 @@
 );
 
-SELECT AddGeometryColumn('ax_gemeindeteil','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_gemeindeteil','dummy',:alkis_epsg,'POINT',2);
 
 -- Index fÃŒr alkis_beziehungen
@@ -4133,6 +3851,6 @@
 	beginnt			character(20),
 	endet 			character(20),
-	advstandardmodell	varchar,
-	anlass			integer,
+	advstandardmodell	varchar[],
+	anlass			varchar,
 	schluesselgesamt	integer,
 	bezeichnung		varchar,
@@ -4144,5 +3862,5 @@
 );
 
-SELECT AddGeometryColumn('ax_gemarkung','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_gemarkung','dummy',:alkis_epsg,'POINT',2);
 
 CREATE UNIQUE INDEX ax_gemarkung_gml ON ax_gemarkung USING btree (gml_id,beginnt);         -- Index fÃŒr alkis_beziehungen
@@ -4163,5 +3881,5 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	schluesselgesamt	integer,
 	bezeichnung		varchar, -- integer,
@@ -4172,5 +3890,5 @@
 );
 
-SELECT AddGeometryColumn('ax_gemarkungsteilflur','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_gemarkungsteilflur','dummy',:alkis_epsg,'POINT',2);
 
 -- Index fÃŒr alkis_beziehungen
@@ -4190,5 +3908,5 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	schluesselgesamt	integer,
 	bezeichnung		varchar,
@@ -4200,9 +3918,9 @@
 );
 
-SELECT AddGeometryColumn('ax_buchungsblattbezirk','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_buchungsblattbezirk','dummy',:alkis_epsg,'POINT',2);
 
 CREATE UNIQUE INDEX ax_buchungsblattbezirk_gml ON ax_buchungsblattbezirk USING btree (gml_id,beginnt);
 
--- Such-Index auf Land + Bezirk 
+-- 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);
@@ -4223,5 +3941,5 @@
 	advstandardmodell	varchar,
 	sonstigesmodell		varchar,
-	anlass			integer,
+	anlass			varchar,
 	schluesselgesamt	varchar,
 	bezeichnung		varchar, -- 102
@@ -4233,5 +3951,5 @@
 );
 
-SELECT AddGeometryColumn('ax_dienststelle','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_dienststelle','dummy',:alkis_epsg,'POINT',2);
 
 -- Index fÃŒr alkis_beziehungen
@@ -4251,5 +3969,5 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
+	anlass			varchar,
 	schluesselgesamt	varchar,
 	bezeichnung		varchar,
@@ -4262,5 +3980,5 @@
 );
 
-SELECT AddGeometryColumn('ax_lagebezeichnungkatalogeintrag','dummy',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_lagebezeichnungkatalogeintrag','dummy',:alkis_epsg,'POINT',2);
 
 CREATE UNIQUE INDEX ax_lagebezeichnungkatalogeintrag_gml ON ax_lagebezeichnungkatalogeintrag USING btree (gml_id,beginnt);
@@ -4292,10 +4010,10 @@
 	advstandardmodell	varchar,
 	sonstigesmodell		varchar[],
-	anlass			integer,
+	anlass			varchar,
 	landschaftstyp		integer,
 	name			varchar
 );
 
-SELECT AddGeometryColumn('ax_kleinraeumigerlandschaftsteil','wkb_geometry',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_kleinraeumigerlandschaftsteil','wkb_geometry',:alkis_epsg,'POINT',2);
 
 CREATE INDEX ax_kleinraeumigerlandschaftsteil_geom_idx   ON ax_kleinraeumigerlandschaftsteil USING gist (wkb_geometry);
@@ -4315,10 +4033,10 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
-	"name"			varchar,
+	anlass			varchar,
+	name			varchar,
 	CONSTRAINT ax_wohnplatz_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_wohnplatz','wkb_geometry',25832,'POINT',2);
+SELECT AddGeometryColumn('ax_wohnplatz','wkb_geometry',:alkis_epsg,'POINT',2);
 
 CREATE INDEX ax_wohnplatz_geom_idx   ON ax_wohnplatz USING gist (wkb_geometry);
@@ -4342,14 +4060,15 @@
 	endet 			character(20),
 	advstandardmodell	varchar,
-	anlass			integer,
-	schluesselgesamt	integer,
+	anlass			varchar,
+	schluesselgesamt	varchar,
 	land			integer,
 	regierungsbezirk	integer,
 	kreis			integer,
 	gemeinde		integer,
+	gemeindeflaeche		double precision,
 	CONSTRAINT ax_kommunalesgebiet_pk PRIMARY KEY (ogc_fid)
 );
 
-SELECT AddGeometryColumn('ax_kommunalesgebiet','wkb_geometry',25832,'GEOMETRY',2);
+SELECT AddGeometryColumn('ax_kommunalesgebiet','wkb_geometry',:alkis_epsg,'GEOMETRY',2);
 
 CREATE INDEX ax_kommunalesgebiet_geom_idx   ON ax_kommunalesgebiet USING gist (wkb_geometry);
@@ -4363,4 +4082,51 @@
 -- ** Tabelle bisher noch nicht generiert
 
+CREATE TABLE ax_vertretung (
+	ogc_fid serial NOT NULL,
+	gml_id varchar(16),
+	identifier varchar(28),
+	beginnt varchar(20),
+	endet character(20),
+	advstandardmodell varchar(4),
+	anlass varchar,
+	haengtan varchar,
+	CONSTRAINT ax_vertretung_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_vertretung','dummy',:alkis_epsg,'POINT',2);
+
+CREATE TABLE ax_verwaltungsgemeinschaft (
+	ogc_fid serial NOT NULL,
+	gml_id varchar(16),
+	identifier varchar(28),
+	beginnt varchar(20),
+	endet character(20),
+	advstandardmodell varchar(4),
+	anlass varchar,
+	schluesselgesamt integer,
+	bezeichnung varchar,
+	bezeichnungart integer,
+	land integer,
+	regierungsbezirk integer,
+	kreis integer,
+	verwaltungsgemeinschaft integer,
+	CONSTRAINT ax_verwaltungsgemeinschaft_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_verwaltungsgemeinschaft','dummy',:alkis_epsg,'POINT',2);
+
+CREATE TABLE ax_verwaltung (
+	ogc_fid serial NOT NULL,
+	gml_id varchar(16),
+	identifier varchar(28),
+	beginnt varchar(20),
+	endet character(20),
+	advstandardmodell varchar(4),
+	anlass varchar,
+	haengtan varchar,
+	CONSTRAINT ax_verwaltung_pk PRIMARY KEY (ogc_fid)
+);
+
+SELECT AddGeometryColumn('ax_verwaltung','dummy',:alkis_epsg,'POINT',2);
 
 --*** ############################################################
@@ -4409,10 +4175,8 @@
 -- 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 
+-- In allen Tabellen die Objekte LÃ¶schen, die ein Ende-Datum haben
 -- SELECT alkis_delete_all_endet();
 
Index: trunk/data/konvert/postnas_0.7/pp_laden.sql
===================================================================
--- trunk/data/konvert/postnas_0.7/pp_laden.sql	(revision 184)
+++ trunk/data/konvert/postnas_0.7/pp_laden.sql	(revision 190)
@@ -35,5 +35,5 @@
 -- Redundanzen aus alkis_beziehungen beseitigen, die nach NAS replace auftreten
 -- ============================================================================
--- Work arround: alle Redundazen nach einem Lauf entfernen.
+-- Workaround: alle Redundazen nach einem Lauf entfernen.
 -- Besser wäre: sofort im Trigger bei replace entfernen.
 -- Siehe Schema in FUNCTION delete_feature_kill
Index: trunk/data/konvert/postnas_0.7/zip_ordner.sh
===================================================================
--- trunk/data/konvert/postnas_0.7/zip_ordner.sh	(revision 184)
+++ trunk/data/konvert/postnas_0.7/zip_ordner.sh	(revision 190)
Index: trunk/data/konvert/postnas_0.7/konv_batch.sh
===================================================================
--- trunk/data/konvert/postnas_0.7/konv_batch.sh	(revision 184)
+++ trunk/data/konvert/postnas_0.7/konv_batch.sh	(revision 190)
@@ -1,5 +1,5 @@
-﻿#!/bin/bash
+#!/bin/bash
 ## -------------------------------------------------
-## Konvertierung von ALKIS NAS-Format nach PosGIS  -
+## Konvertierung von ALKIS NAS-Format nach PostGIS -
 ## NAS-Daten in einem Ordner konvertieren          -
 ## Batch-Teil, Aufruf mit geprueften Parametern    -
@@ -13,22 +13,32 @@
 ##           /temp/
 ##   Auf der gleichen Ebene wie die Datenordner muss ein Ordner /temp/ existieren.
-##   Dort werden die NAS-Daten temporär ausgepackt.
+##   Dort werden die NAS-Daten temporaer ausgepackt.
 ##   Relativ zum mitgegebenen Parameter ist das: '../temp/'
 ##   Parallel laufende Konvertierungen zum gleichen Mandanten 
-##   würden hier durcheinander geraten. Vermeiden!
+##   wuerden hier durcheinander geraten. Vermeiden!
 ##
 ## Stand: 
 ##   2012-02-10 Umbennung nach 0.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
+##   2012-02-28 Neuer Parameter 4 um Post-Prozessing zu unterdruecken
+##   2012-04-25 Durch GDAL Patch #5444 werden die Loeschungen als Trigger auf Tabelle 'delete' verarbeitet
 ##   2012-05-18 Umzug neue GDI, GDAL-Trunk unter Pfad 
-##   2012-10-30 Umgebungsvariable setzen, delete-Tabelle am Ende für Analyse gefüllt lassen.
+##   2012-06-04 SQL-Skripte in deren Verzeichnis ausfuehren (Voraussetzung fuer \i Includes)
+##   2012-10-30 Umgebungsvariable setzen, delete-Tabelle am Ende fuer Analyse gefuellt lassen.
 ##              Test als 0.7a mit gepatchter gdal-Version (noch 2.0dev)
 ##
-## Konverter:   /opt/gdal-2.0/bin/ = GDAL 2.0-DEV / PostNAS 0.7
+## ToDo: Option "-skipfailures" nach Test entfernen ?
+##
 ## Koordinaten: EPSG:25832  UTM, Zone 32
 ##              -a_srs EPSG:25832   - bleibt im UTM-System (korrigierte Werte)
 ##
+
+POSTNAS_HOME=$(dirname $0)
+
+# Konverterpfad
+PATH=/opt/gdal-2.0/bin:$PATH
+EPSG=25832
+
+
 echo "**************************************************"
 echo "**   K o n v e r t i e r u n g     PostNAS 0.7a **"
@@ -76,5 +86,5 @@
 fi
 # Fehlerprotokoll:
-  errprot='/data/konvert/postnas_0.7a/log/postnas_err_'$DBNAME'.prot'
+  errprot='$POSTNAS_HOME/log/postnas_err_'$DBNAME'.prot'
 #
 # DB-Connection
@@ -109,5 +119,5 @@
         export GML_FIELDTYPES=ALWAYS_STRINGS    # PostNAS behandelt Zahlen wie Strings, PostgreSQL-Treiber macht daraus Zahlen
         export OGR_SETFIELD_NUMERIC_WARNING=YES # Meldung abgeschnittene Zahlen?
-       #export CPL_DEBUG=ON                     # Meldung, wenn Attribute überschrieben werden
+       #export CPL_DEBUG=ON                     # Meldung, wenn Attribute ueberschrieben werden
       #
       # PostNAS Konverter-Aufruf
@@ -115,9 +125,8 @@
       # -skipfailures    #
       # -overwrite       #
-      /opt/gdal-2.0/bin/ogr2ogr -f "PostgreSQL" -append  ${update} -skipfailures  \
-         PG:"dbname=${DBNAME} host=localhost port=5432" -a_srs EPSG:25832 ${nasdatei} 2>> $errprot
+      ogr2ogr -f "PostgreSQL" -append  ${update} -skipfailures \
+         PG:"dbname=${DBNAME} host=localhost port=5432" -a_srs EPSG:$EPSG ${nasdatei} 2>> $errprot
       nasresult=$?
-      echo "* Resultat: " $nasresult " fuer " ${nasdatei}
-	  echo "* Resultat: " $nasresult " fuer " ${nasdatei}  >> $errprot
+      echo "* Resultat: " $nasresult " fuer " ${nasdatei} | tee -a $errprot
     done # Ende Zipfile
   done # Ende Ordner
@@ -130,32 +139,34 @@
   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.
+    echo "** KEIN Post-Processing - Dies spaeter nachholen."
+    # Dies kann sinnvoll sein, wenn mehrere kleine Aktualisierungen hintereinander auf einem grossen Bestand laufen
+    # Der Aufwand fuer das Post-Processing ist dann nur bei der LETZTEN Aktualisierung notwendig.
   else
     echo "** Post-Processing (Nacharbeiten zur Konvertierung)"
     echo "** - Optimierte Nutzungsarten neu Laden:"
-    psql -p 5432 -d ${DBNAME} < /data/konvert/postnas_0.7a/nutzungsart_laden.sql
+    (cd $POSTNAS_HOME; psql -p 5432 -d ${DBNAME} -f nutzungsart_laden.sql)
     ##
     echo "** - Fluren / Gemarkungen / Gemeinden neu Laden:"
-    psql -p 5432 -d ${DBNAME} < /data/konvert/postnas_0.7a/pp_laden.sql
+    (cd $POSTNAS_HOME; psql -p 5432 -d ${DBNAME} -f pp_laden.sql)
   fi
+
+  if [ "$(readlink $POSTNAS_HOME/alkis-trigger.sql)" = "alkis-trigger-kill.sql" ]; then
 # 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
+    echo "** delete-Tabelle enthaelt:"
+    echo 'SELECT COUNT(featureid) AS delete_zeilen FROM "delete";' | psql $con
+    #echo "   delete-Tabelle loeschen:"
+    #echo 'TRUNCATE table "delete";' | psql $con
  # Fuer Analyse-Zwecke sollten die Delete-Eintraege erhalten bleiben bis zum naechsten Lauf.
  # TRUNCATE erfolgt VOR der Konnvertierung.
 #
 # 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 "  ... geendete Objekte entfernen wurde fuer Test dektiviert."
- #echo "  Bitte manuell ausfuehren:  SELECT alkis_delete_all_endet(); "
+# dann hinterher aufraeumen der historischen Objekte 
+    #echo "** geendete Objekte entfernen:"
+# Function:
+    #echo 'SELECT alkis_delete_all_endet();' | psql $con
+    #echo "  ... geendete Objekte entfernen wurde fuer Test dektiviert."
+    #echo "  Bitte manuell ausfuehren:  SELECT alkis_delete_all_endet(); "
 #
-  echo "Das Fehler-Protokoll wurde ausgegeben in die Datei $errprot"
- #echo "HINWEIS: -skipfailures  fuer Produktion wieder einschalten."
-#
+    echo "Das Fehler-Protokoll wurde ausgegeben in die Datei $errprot"
+    #echo "HINWEIS: -skipfailures  fuer Produktion wieder einschalten."
+  fi
Index: trunk/data/konvert/postnas_0.7/datenbank_anlegen.sh
===================================================================
--- trunk/data/konvert/postnas_0.7/datenbank_anlegen.sh	(revision 184)
+++ trunk/data/konvert/postnas_0.7/datenbank_anlegen.sh	(revision 190)
@@ -1,11 +1,16 @@
 #!/bin/bash
-##
-## Konvertierung von ALKIS NAS-Format nach PosGIS -
-## Teil 1: Eine neue PostGIS-Datenbank anlegen    -
-## ------------------------------------------------
+## -------------------------------------------------
+## Konvertierung von ALKIS NAS-Format nach PostGIS -
+## Teil 1: Eine neue PostGIS-Datenbank anlegen     -
+## -------------------------------------------------
 ##
 ## Stand:
 ##  2012-02-10 PostNAS 07, Umbenennung
 ##
+
+POSTNAS_HOME=$(dirname $0)
+MANDANT_HOME=$PWD
+EPSG=25832
+
 ## Dialog mit Anwender
 function get_db_config(){
@@ -43,4 +48,17 @@
 	exit 1
 fi
+
+cd $POSTNAS_HOME
+
+if ! [ -e alkis-trigger.sql ]; then
+	if ln -s alkis-trigger-kill.sql alkis-trigger.sql; then
+		echo "** Symlink zu alkis-trigger-kill.sql (KEINE HISTORIE) angelegt"
+	else
+		echo "** alkis-trigger.sql FEHLT!"
+		exit 1
+	fi
+fi
+	
+
 ## Datenbank-Connection:
 # -h localhost
@@ -56,29 +74,29 @@
 echo " "
 echo "** Anlegen (leere) PostGIS-Datenbank"
-createdb --port=5432 --username=${DBUSER} -E utf8  -T ${DBTEMPLATE}  ${DBNAME}
+createdb --port=5432 --username=${DBUSER} -E utf8  -T ${DBTEMPLATE} ${DBNAME}
 echo " "
 echo "** Anlegen der Datenbank-Struktur fuer PostNAS (alkis_PostNAS_0.7_schema.sql)"
-psql $con -U ${DBUSER}  < /data/konvert/postnas_0.7/alkis_PostNAS_0.7_schema.sql
+psql $con -v alkis_epsg=$EPSG -U ${DBUSER} -f alkis_PostNAS_0.7_schema.sql
 echo " "
 echo "** Anlegen der Datenbank-Struktur - zusaetzliche Schluesseltabellen"
 ## Nur die benoetigten Tabellen fuer die Buchauskunft
-psql $con -U ${DBUSER}  < /data/konvert/postnas_0.7/alkis_PostNAS_0.7_keytables.sql
+psql $con -U ${DBUSER} -f alkis_PostNAS_0.7_keytables.sql
 echo " "
 echo "** Anlegen Optimierung Nutzungsarten (nutzungsart_definition.sql)"
-psql $con -U ${DBUSER}  < /data/konvert/postnas_0.7/nutzungsart_definition.sql
+psql $con -U ${DBUSER} -f nutzungsart_definition.sql
 echo " "
 echo "** Laden NUA-Metadaten (nutzungsart_metadaten.sql) Protokoll siehe log"
-psql $con -U ${DBUSER}  < /data/konvert/postnas_0.7/nutzungsart_metadaten.sql 1> log/meta.log
+psql $con -U ${DBUSER} -f nutzungsart_metadaten.sql >$MANDANT_HOME/log/meta.log
 echo " "
 echo "** Anlegen Post Processing (pp_definition.sql)"
-psql $con -U ${DBUSER}  < /data/konvert/postnas_0.7/pp_definition.sql
+psql $con -U ${DBUSER} -f pp_definition.sql
 echo " "
 echo "** Definition von Views (sichten.sql)"
-psql $con -U ${DBUSER}  < /data/konvert/postnas_0.7/sichten.sql
+psql $con -U ${DBUSER} -f sichten.sql
 echo " "
 echo  "COMMENT ON DATABASE ${DBNAME} IS 'ALKIS - Konverter PostNAS 0.7';" | psql -p 5432 -d ${DBNAME} -U ${DBUSER} 
 echo " "
 echo "** Berechtigung (grant.sql) Protokoll siehe log"
-psql $con -U ${DBUSER}  < /data/konvert/postnas_0.7/grant.sql 1> log/grant.log
+psql $con -U ${DBUSER} -f grant.sql >$MANDANT_HOME/log/grant.log
 echo " "
 echo "***************************"
