-- -- ***************************** -- 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) -- Systemvariable vorher setzen für das Koordinatensystem, z.B. -- EPSG=25832 -- Stand -- ----- -- 2012-04-23 FJ Diff zum GDAL-Patch #4555 angewendet: -- Siehe Mail J.E.Fischer in PostNAS-Liste vom 12.03.2012 -- - Alle Objekte bekommen "endet"-Feld. -- - "beginnt" wird in die Unique-Constraint einbezogen. -- - Feld 'identifier'. -- - "character varying" durch "varchar" ersetzt. -- - Keine direkten Änderungen an 'geometry_columns' (wegen PostGIS 2) -- - DELETE: Feld endet = aktuelle Zeit -- - REPLACE: Feld endet = beginnt des ersetzenden Objektes -- - "delete_feature()" ist nun ein Trigger -- 2012-04-24 FJ Datei alkis-funktions aus Diff zum GDAL-Patch #4555 hier integriert -- Umschaltung mit/ohne Historie über Verknüpfung Trigger -> Function -- Typ 'GEOMETRY' bei Tabellen: AX_WegPfadSteig, AX_UntergeordnetesGewaesser -- 2012-10-31 FJ Trigger fuer NAS-Replace-Saetze repariert: -- siehe: FUNCTION delete_feature_kill() -- ax_historischesflurstueck.buchungsart ist Text nicht integer. -- 2012-10-31 AE Tabellen löschen wurde auskommetiert, DB wird leer angelegt SELECT alkis_drop(); -- ** zwischenzeitliche Änderungen: siehe Kommentare im SVN -- 2013-01-15 FJ Kommentare zu den letztlich hinzugekommenen Tabellen. -- Darüber können Tabellen aus diesem Script unterschieden werden -- von Tabellen, die PostNAS selbst generiert hat. -- 2013-04-22 FJ Tabelle ax_wirtschaftlicheeinheit, Kommentare ergänzt, -- Felad "ax_historischesflurstueck.buchungsart" varchar statt integer -- 2013-07-10 FJ Erweiterung alkis_beziehungen nach Vorschlag Marvin Brandt (Kreis Unna) -- Füllen der Felder langfristig durch PostNAS (Erweiterung?) -- Vorläufig mit Trigger-Funktions "update_fields_beziehungen" -- 2014-01-24 FJ Feld "ax_datenerhebung_punktort" in "Punktort/TA/AG/AU" nach Vorschlag Marvin Brandt (Kreis Unna) -- 2014-01-29 FJ Spalte "zeitpunktderentstehung" an allen Vorkommen auf Format "varchar". -- Alte auskommentierte Varianten entrümpelt. -- Tabs durch Space ersetzt und Code wieder hübsch ausgerichtet. -- 2014-01-31 FJ Erweiterungen Marvin Brand (Unna) fuer sauberes Entfernen alter Beziehungen bei "replace". -- Lösung über import_id. -- VERSIONS-NUMMER: -- Dies Schema kann NICHT mehr mit der installierbaren gdal-Version 1.9 verwendet werden. -- Derzeit muss ogr2ogr (gdal) aus den Quellen compiliert werden, die o.g. Patch #4555 enthalten. -- Weiterführung dieses Zweiges als PostNAS 0.7 -- ALKIS-Dokumentation (NRW): -- http://www.bezreg-koeln.nrw.de/extra/33alkis/alkis_nrw.htm -- http://www.bezreg-koeln.nrw.de/extra/33alkis/geoinfodok.htm -- http://www.bezreg-koeln.nrw.de/extra/33alkis/dokumente/GeoInfoDok/ALKIS/ALKIS_OK_V6-0.html SET client_encoding = 'UTF8'; SET default_with_oids = false; -- Abbruch bei Fehlern \set ON_ERROR_STOP -- T u n i n g : -- Die Tabelle 'spatial_ref_sys' einer PostGIS-Datenbank auf -- die notwendigen Koordinatensysteme reduzieren. Das Loescht >3000 Eintraege. -- DELETE FROM spatial_ref_sys -- WHERE srid NOT -- IN (2397, 2398, 2399, 4326, 25830, 25831, 25832, 25833, 25834, 31466, 31467, 31468, 31469); -- -- Krassowski lat/lon UTM GK -- Stored Procedures laden \i alkis-functions.sql -- Alle Tabellen löschen --SELECT alkis_drop(); -- Importtabelle für Verarbeitungen CREATE TABLE import ( id serial NOT NULL, datum timestamp without time zone, verzeichnis text, importart text, CONSTRAINT import_pk PRIMARY KEY (id) ); CREATE UNIQUE INDEX import_id ON import USING btree (id); COMMENT ON TABLE import IS 'Verwaltung der Import-Programmläufe. Wird nicht vom Konverter gefüllt sondern aus der Start-Prozedur (z.B. konv_batch.sh).'; COMMENT ON COLUMN import.id IS 'Laufende Nummer der Konverter-Datei-Verarbeitung. Der Max-Wert von "id" wird als "alkis_beziehungen.import_id" verwendet, um ein vollständiges Löschen alter Beziehungen zu ermöglichen.'; COMMENT ON COLUMN import.datum IS 'Zeitpunkt des Beginns des Konverter-Laufes für einen Stapel von NAS-Dateien.'; COMMENT ON COLUMN import.verzeichnis IS 'Ort von dem die NAS-Dateien verarbeitet wurden.'; COMMENT ON COLUMN import.importart IS 'Modus des Konverter-Laufes: e="Erstladen" oder a="NBA-Aktualisierung"'; -- Tabelle delete für Lösch- und Fortführungsdatensätze CREATE TABLE "delete" ( ogc_fid serial NOT NULL, typename varchar, featureid character(32), context varchar, -- delete/replace safetoignore varchar, -- replace.safetoignore 'true'/'false' replacedBy varchar, -- gmlid ignored boolean DEFAULT false, -- Satz wurde nicht verarbeitet CONSTRAINT delete_pk PRIMARY KEY (ogc_fid) ); -- Dummy-Eintrag in Metatabelle SELECT AddGeometryColumn('delete','dummy',:alkis_epsg,'POINT',2); CREATE UNIQUE INDEX delete_fid ON "delete"(featureid); COMMENT ON TABLE "delete" IS 'Hilfstabelle für das Speichern von Löschinformationen.'; COMMENT ON COLUMN delete.typename IS 'Objektart, also Name der Tabelle, aus der das Objekt zu löschen ist.'; COMMENT ON COLUMN delete.featureid IS 'Zusammen gesetzt aus GML-ID (16) und Zeitstempel.'; COMMENT ON COLUMN delete.context IS 'Operation ''delete'' oder ''replace'''; COMMENT ON COLUMN delete.safetoignore IS 'Attribut safeToIgnore von wfsext:Replace'; COMMENT ON COLUMN delete.replacedBy IS 'gml_id des Objekts, das featureid ersetzt'; COMMENT ON COLUMN delete.ignored IS 'Löschsatz wurde ignoriert'; -- B e z i e h u n g e n -- ---------------------------------------------- -- Zentrale Tabelle fuer alle Relationen im Buchwerk. -- Statt Relationen und FOREIGN-KEY-CONSTRAINTS zwischen Tabellen direkt zu legen, gehen -- in der ALKIS-Datenstruktur alle Beziehungen zwischen zwei Tabellen über diese Verbindungstabelle. -- Die Fremdschlüssel 'beziehung_von' und 'beziehung_zu' verweisen auf die ID des Objekte (gml_id). -- Das Feld 'gml_id' sollte daher in allen Tabellen indiziert werden. -- Zusätzlich enthält 'beziehungsart' noch ein Verb für die Art der Beziehung. CREATE TABLE alkis_beziehungen ( ogc_fid serial NOT NULL, beziehung_von character(16), --> gml_id beziehungsart varchar, -- Liste siehe unten beziehung_zu character(16), import_id integer, -- 2014-01-31 CONSTRAINT alkis_beziehungen_pk PRIMARY KEY (ogc_fid) ); 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',:alkis_epsg,'POINT',2); COMMENT ON TABLE alkis_beziehungen IS 'zentrale Multi-Verbindungstabelle'; COMMENT ON COLUMN alkis_beziehungen.beziehung_von IS 'Join auf Feld gml_id verschiedener Tabellen'; COMMENT ON COLUMN alkis_beziehungen.beziehung_zu IS 'Join auf Feld gml_id verschiedener Tabellen'; COMMENT ON COLUMN alkis_beziehungen.beziehungsart IS 'Typ der Beziehung zwischen der von- und zu-Tabelle'; --MMENT ON COLUMN alkis_beziehungen.beginnt IS 'Mit Trigger kopiertes Beginnt-Datum des Datensatzes auf der Seite beziehung_von'; COMMENT ON COLUMN alkis_beziehungen.import_id IS 'laufende Nummer des Konverter-Laufes aus "import.id".'; -- Beziehungsarten: -- "an" "benennt" "bestehtAusRechtsverhaeltnissenZu" "beziehtSichAuchAuf" "dientZurDarstellungVon" -- "durch" "gehoertAnteiligZu" "gehoertZu" "hat" "hatAuch" "istBestandteilVon" -- "istGebucht" "istTeilVon" "weistAuf" "zeigtAuf" "zu" -- Hinweis: -- Diese Tabelle enthält für ein Kreisgebiet ca. 5 Mio. Zeilen und wird ständig benutzt. -- Optimierung z.B. über passende Indices ist wichtig. -- -- 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 -- =========================================================== -- S o n s t i g e s B a u w e r k -- ---------------------------------- CREATE TABLE ks_sonstigesbauwerk ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), endet character(20), sonstigesmodell varchar, anlass varchar, bauwerksfunktion integer, CONSTRAINT ks_sonstigesbauwerk_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ks_sonstigesbauwerk','wkb_geometry',:alkis_epsg,'GEOMETRY',2); CREATE INDEX ks_sonstigesbauwerk_geom_idx ON ks_sonstigesbauwerk USING gist (wkb_geometry); COMMENT ON TABLE ks_sonstigesbauwerk IS 'Sonstiges Bauwerk'; -- A n d e r e F e s t l e g u n g n a c h W a s s e r r e c h t -- -------------------------------------------------------------------- CREATE TABLE ax_anderefestlegungnachwasserrecht ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), endet character(20), advstandardmodell varchar, anlass varchar, artderfestlegung integer, land integer, stelle varchar, CONSTRAINT ax_anderefestlegungnachwasserrecht_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ax_anderefestlegungnachwasserrecht','wkb_geometry',:alkis_epsg,'GEOMETRY',2); CREATE INDEX ax_anderefestlegungnachwasserrecht_geom_idx ON ax_anderefestlegungnachwasserrecht USING gist (wkb_geometry); CREATE UNIQUE INDEX ax_anderefestlegungnachwasserrecht_gml ON ax_anderefestlegungnachwasserrecht USING btree (gml_id,beginnt); CREATE INDEX ax_anderefestlegungnachwasserrecht_afs ON ax_anderefestlegungnachwasserrecht(land,stelle); COMMENT ON TABLE ax_anderefestlegungnachwasserrecht IS 'Andere Festlegung nach W a s s e r r e c h t'; COMMENT ON COLUMN ax_anderefestlegungnachwasserrecht.gml_id IS 'Identifikator, global eindeutig'; -- B a u b l o c k -- ---------------------------------------------- Objektartengruppe: Administrative Gebietseinheiten CREATE TABLE ax_baublock ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), endet character(20), advstandardmodell character(9), anlass varchar, baublockbezeichnung integer, CONSTRAINT ax_baublock_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ax_baublock','wkb_geometry',:alkis_epsg,'GEOMETRY',2); CREATE INDEX ax_baublock_geom_idx ON ax_baublock USING gist (wkb_geometry); CREATE UNIQUE INDEX ax_baublock_gml ON ax_baublock USING btree (gml_id,beginnt); COMMENT ON TABLE ax_baublock IS 'B a u b l o c k'; COMMENT ON COLUMN ax_baublock.gml_id IS 'Identifikator, global eindeutig'; -- B e s o n d e r e r T o p o g r a f i s c h e r P u n k t -- ------------------------------------------------------------- CREATE TABLE ax_besonderertopographischerpunkt ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), endet character(20), advstandardmodell varchar, anlass varchar, land integer, stelle integer, punktkennung varchar, sonstigeeigenschaft varchar[], CONSTRAINT ax_besonderertopographischerpunkt_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ax_besonderertopographischerpunkt','dummy',:alkis_epsg,'POINT',2); CREATE UNIQUE INDEX ax_besonderertopographischerpunkt_gml ON ax_besonderertopographischerpunkt USING btree (gml_id,beginnt); COMMENT ON TABLE ax_besonderertopographischerpunkt IS 'B e s o n d e r e r T o p o g r a f i s c h e r P u n k t'; COMMENT ON COLUMN ax_besonderertopographischerpunkt.gml_id IS 'Identifikator, global eindeutig'; -- S o l l -- ------- CREATE TABLE ax_soll ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), endet character(20), advstandardmodell varchar, anlass varchar, name varchar, CONSTRAINT ax_soll_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ax_soll','wkb_geometry',:alkis_epsg,'POLYGON',2); CREATE INDEX ax_soll_geom_idx ON ax_soll USING gist (wkb_geometry); CREATE UNIQUE INDEX ax_soll_gml ON ax_soll USING btree (gml_id,beginnt); COMMENT ON TABLE ax_soll IS 'S o l l'; COMMENT ON COLUMN ax_soll.gml_id IS 'Identifikator, global eindeutig'; -- B e w e r t u n g -- ------------------ CREATE TABLE ax_bewertung ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), endet character(20), advstandardmodell varchar, anlass varchar, klassifizierung integer, CONSTRAINT ax_bewertung_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ax_bewertung','wkb_geometry',:alkis_epsg,'GEOMETRY',2); CREATE INDEX ax_bewertung_geom_idx ON ax_bewertung USING gist (wkb_geometry); CREATE UNIQUE INDEX ax_bewertung_gml ON ax_bewertung USING btree (gml_id,beginnt); COMMENT ON TABLE ax_bewertung IS '"B e w e r t u n g" ist die Klassifizierung einer Fläche nach dem Bewertungsgesetz (Bewertungsfläche).'; COMMENT ON COLUMN ax_bewertung.gml_id IS 'Identifikator, global eindeutig'; COMMENT ON COLUMN ax_bewertung.klassifizierung IS '"Klassifizierung" ist die gesetzliche Klassifizierung nach dem Bewertungsgesetz.'; -- T a g e s a b s c h n i t t -- --------------------------- CREATE TABLE ax_tagesabschnitt ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), endet character(20), advstandardmodell varchar, anlass varchar, tagesabschnittsnummer varchar, CONSTRAINT ax_tagesabschnitt_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ax_tagesabschnitt','wkb_geometry',:alkis_epsg,'POLYGON',2); CREATE INDEX ax_tagesabschnitt_geom_idx ON ax_tagesabschnitt USING gist (wkb_geometry); CREATE UNIQUE INDEX ax_tagesabschnitt_gml ON ax_tagesabschnitt USING btree (gml_id,beginnt); COMMENT ON TABLE ax_tagesabschnitt IS 'T a g e s a b s c h n i t t der Bodenschätzung.'; COMMENT ON COLUMN ax_tagesabschnitt.gml_id IS 'Identifikator, global eindeutig'; -- D e n k m a l s c h u t z r e c h t -- ----------------------------------- CREATE TABLE ax_denkmalschutzrecht ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), endet character(20), advstandardmodell varchar, anlass varchar, artderfestlegung integer, land integer, stelle varchar, art varchar, name varchar, CONSTRAINT ax_denkmalschutzrecht_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ax_denkmalschutzrecht','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON CREATE INDEX ax_denkmalschutzrecht_geom_idx ON ax_denkmalschutzrecht USING gist (wkb_geometry); CREATE UNIQUE INDEX ax_denkmalschutzrecht_gml ON ax_denkmalschutzrecht USING btree (gml_id,beginnt); CREATE INDEX ax_denkmalschutzrecht_afs ON ax_denkmalschutzrecht(land,stelle); COMMENT ON TABLE ax_denkmalschutzrecht IS 'D e n k m a l s c h u t z r e c h t'; COMMENT ON COLUMN ax_denkmalschutzrecht.gml_id IS 'Identifikator, global eindeutig'; -- F o r s t r e c h t -- ------------------- CREATE TABLE ax_forstrecht ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), endet character(20), advstandardmodell varchar, anlass varchar, artderfestlegung integer, besonderefunktion integer, land integer, stelle varchar, CONSTRAINT ax_forstrecht_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ax_forstrecht','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON CREATE INDEX ax_forstrecht_geom_idx ON ax_forstrecht USING gist (wkb_geometry); CREATE UNIQUE INDEX ax_forstrecht_gml ON ax_forstrecht USING btree (gml_id,beginnt); CREATE INDEX ax_forstrecht_afs ON ax_forstrecht(land,stelle); COMMENT ON TABLE ax_forstrecht IS 'F o r s t r e c h t'; COMMENT ON COLUMN ax_forstrecht.gml_id IS 'Identifikator, global eindeutig'; -- G e b ä u d e a u s g e s t a l t u n g -- ----------------------------------------- CREATE TABLE ax_gebaeudeausgestaltung ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), endet character(20), advstandardmodell character(4), anlass varchar, darstellung integer, --zeigtauf varchar, -- alkis_beziehungen ? CONSTRAINT ax_gebaeudeausgestaltung_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ax_gebaeudeausgestaltung','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- LINESTRING/MULTILINESTRING CREATE INDEX ax_gebaeudeausgestaltung_geom_idx ON ax_gebaeudeausgestaltung USING gist (wkb_geometry); CREATE UNIQUE INDEX ax_gebaeudeausgestaltung_gml ON ax_gebaeudeausgestaltung USING btree (gml_id,beginnt); COMMENT ON TABLE ax_gebaeudeausgestaltung IS 'G e b ä u d e a u s g e s t a l t u n g'; COMMENT ON COLUMN ax_gebaeudeausgestaltung.gml_id IS 'Identifikator, global eindeutig'; -- Georeferenzierte G e b ä u d e a d r e s s e -- ---------------------------------------------- CREATE TABLE ax_georeferenziertegebaeudeadresse ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), -- Inhalt z.B. "2008-06-10T15:19:17Z" endet character(20), -- Inhalt z.B. "2008-06-10T15:19:17Z" -- ISO: waere "2008-06-10 15:19:17-00", timestamp-Format wird nicht geladen, bleibt leer advstandardmodell varchar, anlass varchar, qualitaetsangaben integer, -- zb: "1000" (= Massstab) -- -- -- Gemeindeschluessel, bestehend aus: land integer, -- 05 = NRW regierungsbezirk integer, -- 7 kreis integer, -- 66 gemeinde integer, -- 020 ortsteil integer, -- 0 -- postleitzahl varchar, -- mit fuehrenden Nullen ortsnamepost varchar, -- zusatzortsname varchar, -- strassenname varchar, -- strassenschluessel integer, -- max. 5 Stellen hausnummer varchar, -- meist 3 Stellen adressierungszusatz varchar, -- Hausnummernzusatz-Buchstabe CONSTRAINT ax_georeferenziertegebaeudeadresse_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ax_georeferenziertegebaeudeadresse','wkb_geometry',:alkis_epsg,'POINT',2); CREATE INDEX ax_georeferenziertegebaeudeadresse_geom_idx ON ax_georeferenziertegebaeudeadresse USING gist (wkb_geometry); -- Index für alkis_beziehungen CREATE UNIQUE INDEX ax_georeferenziertegebaeudeadresse_gml ON ax_georeferenziertegebaeudeadresse USING btree (gml_id,beginnt); -- Suchindex Adresse CREATE INDEX ax_georeferenziertegebaeudeadresse_adr ON ax_georeferenziertegebaeudeadresse USING btree (strassenschluessel, hausnummer, adressierungszusatz); COMMENT ON TABLE ax_georeferenziertegebaeudeadresse IS 'Georeferenzierte G e b ä u d e a d r e s s e'; COMMENT ON COLUMN ax_georeferenziertegebaeudeadresse.gml_id IS 'Identifikator, global eindeutig'; -- G r a b l o c h d e r B o d e n s c h ä t z u n g -- ------------------------------------------------------- CREATE TABLE ax_grablochderbodenschaetzung ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), endet character(20), advstandardmodell varchar, anlass varchar, art varchar, name varchar, bedeutung integer[], land integer, nummerierungsbezirk varchar, gemarkungsnummer integer, nummerdesgrablochs varchar, CONSTRAINT ax_grablochderbodenschaetzung_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ax_grablochderbodenschaetzung','wkb_geometry',:alkis_epsg,'POINT',2); CREATE INDEX ax_grablochderbodenschaetzung_geom_idx ON ax_grablochderbodenschaetzung USING gist (wkb_geometry); CREATE UNIQUE INDEX ax_grablochderbodenschaetzung_gml ON ax_grablochderbodenschaetzung USING btree (gml_id,beginnt); COMMENT ON TABLE ax_grablochderbodenschaetzung IS 'G r a b l o c h d e r B o d e n s c h ä t z u n g'; COMMENT ON COLUMN ax_grablochderbodenschaetzung.gml_id IS 'Identifikator, global eindeutig'; -- H i s t o r i s c h e s F l u r s t ü c k A L B -- --------------------------------------------------- -- Variante A: "Standardhistorie" (statt ax_historischesflurstueckohneraumbezug) -- Die "alte" Historie, die schon aus dem Vorgängerverfahren ALB übernommen wurde. -- Vorgänger-Nachfolger-Beziehungen, ohne Geometrie CREATE TABLE ax_historischesflurstueckalb ( ogc_fid serial NOT NULL, gml_id character(16), -- GID: AX_Flurstueck_Kerndaten -- 'Flurstück_Kerndaten' enthält Eigenschaften des Flurstücks, die auch für andere Flurstücksobjektarten gelten (z.B. Historisches Flurstück). land integer, -- gemarkungsnummer integer, -- flurnummer integer, -- Teile des Flurstückskennzeichens zaehler integer, -- (redundant zu flurstueckskennzeichen) nenner integer, -- -- daraus abgeleitet: flurstueckskennzeichen character(20), -- Inhalt rechts mit __ auf 20 aufgefüllt amtlicheflaeche double precision, -- AFL abweichenderrechtszustand varchar default 'false', -- ARZ zweifelhafterFlurstuecksnachweis varchar default 'false', -- ZFM Boolean rechtsbehelfsverfahren varchar default 'false', -- RBV zeitpunktderentstehung varchar, -- ZDE Inhalt jjjj-mm-tt besser Format date ? gemeinde integer, -- GID: ENDE AX_Flurstueck_Kerndaten identifier character(44), beginnt character(20), endet character(20), advstandardmodell varchar, anlass varchar, name varchar[], blattart integer, buchungsart varchar[], buchungsblattkennzeichen varchar[], bezirk integer, buchungsblattnummermitbuchstabenerweiterung varchar[], laufendenummerderbuchungsstelle varchar[], zeitpunktderentstehungdesbezugsflurstuecks varchar, laufendenummerderfortfuehrung varchar, fortfuehrungsart varchar, vorgaengerflurstueckskennzeichen varchar[], nachfolgerflurstueckskennzeichen varchar[], CONSTRAINT ax_historischesflurstueckalb_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ax_historischesflurstueckalb','dummy',:alkis_epsg,'POINT',2); CREATE UNIQUE INDEX ax_historischesflurstueckalb_gml ON ax_historischesflurstueckalb USING btree (gml_id,beginnt); COMMENT ON TABLE ax_historischesflurstueckalb IS 'Historisches Flurstück ALB'; COMMENT ON COLUMN ax_historischesflurstueckalb.gml_id IS 'Identifikator, global eindeutig'; CREATE INDEX idx_histfsalb_vor ON ax_historischesflurstueckalb USING btree (vorgaengerflurstueckskennzeichen /* ASC */); COMMENT ON INDEX idx_histfsalb_vor IS 'Suchen nach Vorgänger-Flurstück'; CREATE INDEX idx_histfsalb_nach ON ax_historischesflurstueckalb USING btree (vorgaengerflurstueckskennzeichen /* ASC */); COMMENT ON INDEX idx_histfsalb_vor IS 'Suchen nach Nachfolger-Flurstück'; COMMENT ON TABLE ax_historischesflurstueckalb IS 'Historisches Flurstück ALB'; COMMENT ON COLUMN ax_historischesflurstueckalb.gml_id IS 'Identifikator, global eindeutig'; COMMENT ON COLUMN ax_historischesflurstueckalb.flurnummer IS 'FLN "Flurnummer" ist die von der Katasterbehörde zur eindeutigen Bezeichnung vergebene Nummer einer Flur, die eine Gruppe von zusammenhängenden Flurstücken innerhalb einer Gemarkung umfasst.'; COMMENT ON COLUMN ax_historischesflurstueckalb.zaehler IS 'ZAE Dieses Attribut enthält den Zähler der Flurstücknummer'; COMMENT ON COLUMN ax_historischesflurstueckalb.nenner IS 'NEN Dieses Attribut enthält den Nenner der Flurstücknummer'; COMMENT ON COLUMN ax_historischesflurstueckalb.flurstueckskennzeichen IS '"Flurstückskennzeichen" ist ein von der Katasterbehörde zur eindeutigen Bezeichnung des Flurstücks vergebenes Ordnungsmerkmal. Die Attributart setzt sich aus den nachfolgenden expliziten Attributarten in der angegebenen Reihenfolge zusammen: 1. Land (2 Stellen) 2. Gemarkungsnummer (4 Stellen) 3. Flurnummer (3 Stellen) 4. Flurstücksnummer 4.1 Zähler (5 Stellen) 4.2 Nenner (4 Stellen) 5. Flurstücksfolge (2 Stellen) Die Elemente sind rechtsbündig zu belegen, fehlende Stellen sind mit führenden Nullen zu belegen. Da die Flurnummer und die Flurstücksfolge optional sind, sind aufgrund der bundeseinheitlichen Definition im Flurstückskennzeichen die entsprechenden Stellen, sofern sie nicht belegt sind, durch Unterstrich "_" ersetzt. Gleiches gilt für Flurstücksnummern ohne Nenner, hier ist der fehlende Nenner im Flurstückskennzeichen durch Unterstriche zu ersetzen.'; COMMENT ON COLUMN ax_historischesflurstueckalb.amtlicheflaeche IS 'AFL "Amtliche Fläche" ist der im Liegenschaftskataster festgelegte Flächeninhalt des Flurstücks in [qm]. Flurstücksflächen kleiner 0,5 qm können mit bis zu zwei Nachkommastellen geführt werden, ansonsten ohne Nachkommastellen.'; COMMENT ON COLUMN ax_historischesflurstueckalb.abweichenderrechtszustand IS 'ARZ "Abweichender Rechtszustand" ist ein Hinweis darauf, dass außerhalb des Grundbuches in einem durch Gesetz geregelten Verfahren der Bodenordnung (siehe Objektart "Bau-, Raum- oder Bodenordnungsrecht", AA "Art der Festlegung", Werte 1750, 1770, 2100 bis 2340) ein neuer Rechtszustand eingetreten ist und das amtliche Verzeichnis der jeweiligen ausführenden Stelle maßgebend ist.'; COMMENT ON COLUMN ax_historischesflurstueckalb.zweifelhafterFlurstuecksnachweis IS 'ZFM "Zweifelhafter Flurstücksnachweis" ist eine Kennzeichnung eines Flurstücks, dessen Angaben nicht zweifelsfrei berichtigt werden können.'; COMMENT ON COLUMN ax_historischesflurstueckalb.rechtsbehelfsverfahren IS 'RBV "Rechtsbehelfsverfahren" ist der Hinweis darauf, dass bei dem Flurstück ein laufendes Rechtsbehelfsverfahren anhängig ist.'; COMMENT ON COLUMN ax_historischesflurstueckalb.zeitpunktderentstehung IS 'ZDE "Zeitpunkt der Entstehung" ist der Zeitpunkt, zu dem das Flurstück fachlich entstanden ist.'; COMMENT ON COLUMN ax_historischesflurstueckalb.gemeinde IS 'Gemeindekennzeichen zur Zuordnung der Flustücksdaten zu einer Gemeinde.'; -- Historisches Flurstück (ALKIS) -- ------------------------------ -- Die "neue" Historie, die durch Fortführungen innerhalb von ALKIS entstanden ist. CREATE TABLE ax_historischesflurstueck ( ogc_fid serial NOT NULL, gml_id character(16), -- GID: AX_Flurstueck_Kerndaten -- 'Flurstück_Kerndaten' enthält Eigenschaften des Flurstücks, die auch für andere Flurstücksobjektarten gelten (z.B. Historisches Flurstück). land integer, -- gemarkungsnummer integer, -- flurnummer integer, -- Teile des Flurstückskennzeichens zaehler integer, -- (redundant zu flurstueckskennzeichen) nenner integer, -- -- daraus abgeleitet: flurstueckskennzeichen character(20), -- Inhalt rechts mit __ auf 20 aufgefüllt amtlicheflaeche double precision, -- AFL abweichenderrechtszustand varchar default 'false', -- ARZ zweifelhafterFlurstuecksnachweis varchar default 'false', -- ZFM Boolean rechtsbehelfsverfahren varchar default 'false', -- RBV zeitpunktderentstehung varchar, -- ZDE Inhalt jjjj-mm-tt besser Format date ? gemeinde integer, -- GID: ENDE AX_Flurstueck_Kerndaten identifier character(44), beginnt character(20), endet character(20), advstandardmodell varchar, anlass varchar, art varchar[], name varchar[], regierungsbezirk integer, kreis integer, vorgaengerflurstueckskennzeichen varchar[], nachfolgerflurstueckskennzeichen varchar[], blattart integer, buchungsart varchar, buchungsblattkennzeichen varchar[], bezirk integer, buchungsblattnummermitbuchstabenerweiterung varchar[], laufendenummerderbuchungsstelle integer, CONSTRAINT ax_historischesflurstueck_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ax_historischesflurstueck','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON CREATE INDEX ax_historischesflurstueck_geom_idx ON ax_historischesflurstueck USING gist (wkb_geometry); CREATE UNIQUE INDEX ax_historischesflurstueck_gml ON ax_historischesflurstueck USING btree (gml_id,beginnt); -- Suche nach Vorgänger / Nachfolger -- ++ Welche Methode für ein Array? -- Wirkt das überhaupt bei der Suche nach einem einzelnen Wert aus dem Array? CREATE INDEX idx_histfs_vor ON ax_historischesflurstueck (vorgaengerflurstueckskennzeichen /* ASC */); CREATE INDEX idx_histfs_nach ON ax_historischesflurstueck (vorgaengerflurstueckskennzeichen /* ASC */); -- COMMENT ON INDEX idx_histfsalb_vor IS 'Suchen nach Vorgänger-Flurstück'; -- COMMENT ON INDEX idx_histfsalb_vor IS 'Suchen nach Nachfolger-Flurstück'; -- Die postgresql-Doku sagt dazu (http://www.postgresql.org/docs/9.1/static/arrays.html): -- "Arrays are not sets; -- searching for specific array elements can be a sign of database misdesign. -- Consider using a separate table with a row for each item that would be an array element. -- This will be easier to search, and is likely to scale better for a large number of elements." COMMENT ON TABLE ax_historischesflurstueck IS 'Historisches Flurstück, ALKIS, MIT Geometrie'; COMMENT ON COLUMN ax_historischesflurstueck.gml_id IS 'Identifikator, global eindeutig'; COMMENT ON COLUMN ax_historischesflurstueck.flurnummer IS 'FLN "Flurnummer" ist die von der Katasterbehörde zur eindeutigen Bezeichnung vergebene Nummer einer Flur, die eine Gruppe von zusammenhängenden Flurstücken innerhalb einer Gemarkung umfasst.'; COMMENT ON COLUMN ax_historischesflurstueck.zaehler IS 'ZAE Dieses Attribut enthält den Zähler der Flurstücknummer'; COMMENT ON COLUMN ax_historischesflurstueck.nenner IS 'NEN Dieses Attribut enthält den Nenner der Flurstücknummer'; COMMENT ON COLUMN ax_historischesflurstueck.flurstueckskennzeichen IS '"Flurstückskennzeichen" ist ein von der Katasterbehörde zur eindeutigen Bezeichnung des Flurstücks vergebenes Ordnungsmerkmal. Die Attributart setzt sich aus den nachfolgenden expliziten Attributarten in der angegebenen Reihenfolge zusammen: 1. Land (2 Stellen) 2. Gemarkungsnummer (4 Stellen) 3. Flurnummer (3 Stellen) 4. Flurstücksnummer 4.1 Zähler (5 Stellen) 4.2 Nenner (4 Stellen) 5. Flurstücksfolge (2 Stellen) Die Elemente sind rechtsbündig zu belegen, fehlende Stellen sind mit führenden Nullen zu belegen. Da die Flurnummer und die Flurstücksfolge optional sind, sind aufgrund der bundeseinheitlichen Definition im Flurstückskennzeichen die entsprechenden Stellen, sofern sie nicht belegt sind, durch Unterstrich "_" ersetzt. Gleiches gilt für Flurstücksnummern ohne Nenner, hier ist der fehlende Nenner im Flurstückskennzeichen durch Unterstriche zu ersetzen.'; COMMENT ON COLUMN ax_historischesflurstueck.amtlicheflaeche IS 'AFL "Amtliche Fläche" ist der im Liegenschaftskataster festgelegte Flächeninhalt des Flurstücks in [qm]. Flurstücksflächen kleiner 0,5 qm können mit bis zu zwei Nachkommastellen geführt werden, ansonsten ohne Nachkommastellen.'; COMMENT ON COLUMN ax_historischesflurstueck.abweichenderrechtszustand IS 'ARZ "Abweichender Rechtszustand" ist ein Hinweis darauf, dass außerhalb des Grundbuches in einem durch Gesetz geregelten Verfahren der Bodenordnung (siehe Objektart "Bau-, Raum- oder Bodenordnungsrecht", AA "Art der Festlegung", Werte 1750, 1770, 2100 bis 2340) ein neuer Rechtszustand eingetreten ist und das amtliche Verzeichnis der jeweiligen ausführenden Stelle maßgebend ist.'; COMMENT ON COLUMN ax_historischesflurstueck.zweifelhafterFlurstuecksnachweis IS 'ZFM "Zweifelhafter Flurstücksnachweis" ist eine Kennzeichnung eines Flurstücks, dessen Angaben nicht zweifelsfrei berichtigt werden können.'; COMMENT ON COLUMN ax_historischesflurstueck.rechtsbehelfsverfahren IS 'RBV "Rechtsbehelfsverfahren" ist der Hinweis darauf, dass bei dem Flurstück ein laufendes Rechtsbehelfsverfahren anhängig ist.'; COMMENT ON COLUMN ax_historischesflurstueck.zeitpunktderentstehung IS 'ZDE "Zeitpunkt der Entstehung" ist der Zeitpunkt, zu dem das Flurstück fachlich entstanden ist.'; COMMENT ON COLUMN ax_historischesflurstueck.gemeinde IS 'GDZ "Gemeindekennzeichen zur Zuordnung der Flustücksdaten zu einer Gemeinde.'; -- Kennzeichen indizieren, z.B. fuer Suche aus der Historie CREATE INDEX ax_historischesflurstueck_kennz ON ax_historischesflurstueck(flurstueckskennzeichen /* ASC NULLS LAST */); COMMENT ON INDEX ax_historischesflurstueck_kennz IS 'Suche nach Flurstückskennzeichen'; -- N a t u r -, U m w e l t - o d e r B o d e n s c h u t z r e c h t -- ------------------------------------------------------------------------ CREATE TABLE ax_naturumweltoderbodenschutzrecht ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), endet character(20), advstandardmodell varchar, anlass varchar, artderfestlegung integer, land integer, stelle varchar, name varchar, CONSTRAINT ax_naturumweltoderbodenschutzrecht_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ax_naturumweltoderbodenschutzrecht','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON CREATE INDEX ax_naturumweltoderbodenschutzrecht_geom_idx ON ax_naturumweltoderbodenschutzrecht USING gist (wkb_geometry); CREATE UNIQUE INDEX ax_naturumweltoderbodenschutzrecht_gml ON ax_naturumweltoderbodenschutzrecht USING btree (gml_id,beginnt); CREATE INDEX ax_naturumweltoderbodenschutzrecht_afs ON ax_naturumweltoderbodenschutzrecht(land,stelle); COMMENT ON TABLE ax_naturumweltoderbodenschutzrecht IS 'N a t u r -, U m w e l t - o d e r B o d e n s c h u t z r e c h t'; COMMENT ON COLUMN ax_naturumweltoderbodenschutzrecht.gml_id IS 'Identifikator, global eindeutig'; -- S c h u t z g e b i e t n a c h W a s s e r r e c h t -- ----------------------------------------------------------- CREATE TABLE ax_schutzgebietnachwasserrecht ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), endet character(20), advstandardmodell varchar, anlass varchar, artderfestlegung integer, land integer, stelle varchar, art varchar[], name varchar[], nummerdesschutzgebietes varchar, CONSTRAINT ax_schutzgebietnachwasserrecht_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ax_schutzgebietnachwasserrecht','dummy',:alkis_epsg,'POINT',2); CREATE UNIQUE INDEX ax_schutzgebietnachwasserrecht_gml ON ax_schutzgebietnachwasserrecht USING btree (gml_id,beginnt); CREATE INDEX ax_schutzgebietnachwasserrecht_afs ON ax_schutzgebietnachwasserrecht(land,stelle); COMMENT ON TABLE ax_schutzgebietnachwasserrecht IS 'S c h u t z g e b i e t n a c h W a s s s e r r e c h t'; COMMENT ON COLUMN ax_schutzgebietnachwasserrecht.gml_id IS 'Identifikator, global eindeutig'; -- S c h u t z g e b i e t n a c h N a t u r, U m w e l t o d e r B o d e n s c h u t z r e c h t -- ----------------------------------------------------------------------------------------------------- CREATE TABLE ax_schutzgebietnachnaturumweltoderbodenschutzrecht ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), endet character(20), advstandardmodell varchar, anlass varchar, artderfestlegung integer, land integer, stelle varchar, CONSTRAINT ax_schutzgebietnachnaturumweltoderbodenschutzrecht_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ax_schutzgebietnachnaturumweltoderbodenschutzrecht','dummy',:alkis_epsg,'POINT',2); CREATE UNIQUE INDEX ax_schutzgebietnachnaturumweltoderbodenschutzrecht_gml ON ax_schutzgebietnachnaturumweltoderbodenschutzrecht USING btree (gml_id,beginnt); CREATE INDEX ax_schutzgebietnachnaturumweltoderbodenschutzrecht_afs ON ax_schutzgebietnachnaturumweltoderbodenschutzrecht(land,stelle); COMMENT ON TABLE ax_schutzgebietnachnaturumweltoderbodenschutzrecht IS 'S c h u t z g e b i e t n a c h N a t u r, U m w e l t o d e r B o d e n s c h u t z r e c h t'; COMMENT ON COLUMN ax_schutzgebietnachnaturumweltoderbodenschutzrecht.gml_id IS 'Identifikator, global eindeutig'; -- S c h u t z z o n e -- ------------------- CREATE TABLE ax_schutzzone ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), endet character(20), advstandardmodell varchar, anlass varchar, "zone" integer, art varchar[], CONSTRAINT ax_schutzzone_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ax_schutzzone','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POLYGON/MULTIPOLYGON CREATE INDEX ax_schutzzone_geom_idx ON ax_schutzzone USING gist (wkb_geometry); CREATE UNIQUE INDEX ax_schutzzone_gml ON ax_schutzzone USING btree (gml_id,beginnt); COMMENT ON TABLE ax_schutzzone IS 'S c h u t z z o n e'; COMMENT ON COLUMN ax_schutzzone.gml_id IS 'Identifikator, global eindeutig'; -- T o p o g r a p h i s c h e L i n i e -- --------------------------------------- CREATE TABLE ax_topographischelinie ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), endet character(20), advstandardmodell varchar, anlass varchar, liniendarstellung integer, sonstigeeigenschaft varchar, CONSTRAINT ax_topographischelinie_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ax_topographischelinie','wkb_geometry',:alkis_epsg,'LINESTRING',2); CREATE INDEX ax_topographischelinie_geom_idx ON ax_topographischelinie USING gist(wkb_geometry); CREATE UNIQUE INDEX ax_topographischelinie_gml ON ax_topographischelinie USING btree (gml_id,beginnt); COMMENT ON TABLE ax_topographischelinie IS 'T o p o g r a p h i s c h e L i n i e'; COMMENT ON COLUMN ax_topographischelinie.gml_id IS 'Identifikator, global eindeutig'; --*** ############################################################ --*** Objektbereich: AAA Basisschema --*** ############################################################ --** Objektartengruppe: AAA_Praesentationsobjekte -- =================================================================== -- A P P P O -- ---------------------------------------------- CREATE TABLE ap_ppo ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), endet character(20), advstandardmodell varchar[], sonstigesmodell varchar, anlass varchar, signaturnummer varchar, darstellungsprioritaet integer, art varchar, drehwinkel double precision, CONSTRAINT ap_ppo_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ap_ppo','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- POINT/MULTIPOLYGON CREATE INDEX ap_ppo_geom_idx ON ap_ppo USING gist (wkb_geometry); CREATE UNIQUE INDEX ap_ppo_gml ON ap_ppo USING btree (gml_id,beginnt); CREATE INDEX ap_ppo_endet ON ap_ppo USING btree (endet); COMMENT ON TABLE ap_ppo IS 'PPO: Punktförmiges Präsentationsobjekt'; COMMENT ON COLUMN ap_ppo.gml_id IS 'Identifikator, global eindeutig'; -- A P L P O -- ---------------------------------------------- CREATE TABLE ap_lpo ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), endet character(20), advstandardmodell varchar[], anlass varchar, signaturnummer varchar, darstellungsprioritaet integer, art varchar, CONSTRAINT ap_lpo_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ap_lpo','wkb_geometry',:alkis_epsg,'GEOMETRY',2); -- LINESTRING/MULTILINESTRING CREATE INDEX ap_lpo_geom_idx ON ap_lpo USING gist (wkb_geometry); CREATE UNIQUE INDEX ap_lpo_gml ON ap_lpo USING btree (gml_id,beginnt); CREATE INDEX ap_lpo_endet ON ap_lpo USING btree (endet); COMMENT ON TABLE ap_lpo IS 'LPO: Linienförmiges Präsentationsobjekt'; COMMENT ON COLUMN ap_lpo.gml_id IS 'Identifikator, global eindeutig'; -- A P P T O -- ---------------------------------------------- CREATE TABLE ap_pto ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), endet character(20), advstandardmodell varchar[], anlass varchar, schriftinhalt varchar, fontsperrung double precision, skalierung double precision, horizontaleausrichtung varchar, vertikaleausrichtung varchar, signaturnummer varchar, darstellungsprioritaet integer, art varchar, -- Inhalte z.B. "ZAE_NEN" siehe unten drehwinkel double precision, -- falsche Masseinheit für Mapserver, im View umrechnen CONSTRAINT ap_pto_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ap_pto','wkb_geometry',:alkis_epsg,'POINT',2); CREATE INDEX ap_pto_geom_idx ON ap_pto USING gist (wkb_geometry); CREATE UNIQUE INDEX ap_pto_gml ON ap_pto USING btree (gml_id,beginnt); CREATE INDEX art_idx ON ap_pto USING btree (art); CREATE INDEX ap_pto_endet_idx ON ap_pto USING btree (endet); CREATE INDEX ap_pto_sn_idx ON ap_pto USING btree (signaturnummer); COMMENT ON TABLE ap_pto IS 'PTO: Textförmiges Präsentationsobjekt mit punktförmiger Textgeometrie '; COMMENT ON COLUMN ap_pto.gml_id IS 'Identifikator, global eindeutig'; COMMENT ON COLUMN ap_pto.schriftinhalt IS 'Label: anzuzeigender Text'; COMMENT ON INDEX art_idx IS 'Suchindex auf häufig benutztem Filterkriterium'; -- Die Abfrage "select distinct art from ap_pto" liefert folgende Werte: -- "ART""BezKlassifizierungStrasse""BSA""BWF""FKT""Fliessgewaesser""FreierText""Friedhof""Gewanne" -- "GFK""GKN""Halde_LGT""HNR""MDB""NAM""PKN""Platz""PNR""SPO""Strasse" -- "urn:adv:fachdatenverbindung:AA_Antrag""WE1_TEXT""Weg""ZAE_NEN""ZNM""" -- A P L T O -- ---------------------------------------------- CREATE TABLE ap_lto ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), endet character(20), advstandardmodell varchar, sonstigesmodell varchar, anlass varchar, art varchar, schriftinhalt varchar, fontsperrung double precision, skalierung double precision, horizontaleausrichtung varchar, vertikaleausrichtung varchar, signaturnummer varchar, darstellungsprioritaet integer, CONSTRAINT ap_lto_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ap_lto','wkb_geometry',:alkis_epsg,'LINESTRING',2); CREATE INDEX ap_lto_geom_idx ON ap_lto USING gist (wkb_geometry); CREATE UNIQUE INDEX ap_lto_gml ON ap_lto USING btree (gml_id,beginnt); CREATE INDEX ap_lto_endet_idx ON ap_lto USING btree (endet); COMMENT ON TABLE ap_lto IS 'LTO: Textförmiges Präsentationsobjekt mit linienförmiger Textgeometrie'; COMMENT ON COLUMN ap_lto.gml_id IS 'Identifikator, global eindeutig'; -- A P D a r s t e l l u n g -- ---------------------------------------------- CREATE TABLE ap_darstellung ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), -- Datumsformat endet character(20), -- Datumsformat advstandardmodell varchar[], anlass varchar, art varchar, darstellungsprioritaet integer, signaturnummer varchar, positionierungsregel integer, CONSTRAINT ap_darstellung_pk PRIMARY KEY (ogc_fid) ); -- Dummy-Eintrag in Metatabelle SELECT AddGeometryColumn('ap_darstellung','dummy',:alkis_epsg,'POINT',2); CREATE UNIQUE INDEX ap_darstellung_gml ON ap_darstellung USING btree (gml_id,beginnt); CREATE INDEX ap_darstellung_endet_idx ON ap_darstellung USING btree (endet); COMMENT ON TABLE ap_darstellung IS 'A P D a r s t e l l u n g'; COMMENT ON COLUMN ap_darstellung.gml_id IS 'Identifikator, global eindeutig'; --*** ############################################################ --*** Objektbereich: Flurstücke, Lage, Punkte --*** ############################################################ --** Objektartengruppe: Angaben zum Flurstück -- =================================================================== -- F l u r s t u e c k -- ---------------------------------------------- -- Kennung 11001 CREATE TABLE ax_flurstueck ( ogc_fid serial NOT NULL, gml_id character(16), -- Datenbank-Tabelle interner Schlüssel -- GID: AX_Flurstueck_Kerndaten -- 'Flurstück_Kerndaten' enthält Eigenschaften des Flurstücks, die auch für andere Flurstücksobjektarten gelten (z.B. Historisches Flurstück). land integer, -- gemarkungsnummer integer, -- flurnummer integer, -- Teile des Flurstückskennzeichens zaehler integer, -- (redundant zu flurstueckskennzeichen) nenner integer, -- -- daraus abgeleitet: flurstueckskennzeichen character(20), -- Inhalt rechts mit __ auf 20 aufgefüllt amtlicheflaeche double precision, -- AFL abweichenderrechtszustand varchar default 'false', -- ARZ zweifelhafterFlurstuecksnachweis varchar default 'false', -- ZFM Boolean rechtsbehelfsverfahren varchar default 'false', -- RBV zeitpunktderentstehung varchar, -- ZDE Inhalt jjjj-mm-tt besser Format date ? gemeinde integer, -- GID: ENDE AX_Flurstueck_Kerndaten identifier character(44), beginnt character(20), -- Timestamp der Entstehung endet character(20), -- Timestamp des Untergangs advstandardmodell varchar, -- steuert die Darstellung nach Kartentyp anlass varchar, name varchar[], regierungsbezirk integer, kreis integer, stelle varchar[], angabenzumabschnittflurstueck varchar[], kennungschluessel varchar[], flaechedesabschnitts double precision[], angabenzumabschnittnummeraktenzeichen integer[], angabenzumabschnittbemerkung varchar[], CONSTRAINT ax_flurstueck_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ax_flurstueck','wkb_geometry',:alkis_epsg,'GEOMETRY',2); CREATE INDEX ax_flurstueck_geom_idx ON ax_flurstueck USING gist (wkb_geometry); CREATE UNIQUE INDEX ax_flurstueck_gml ON ax_flurstueck USING btree (gml_id,beginnt); CREATE INDEX ax_flurstueck_lgfzn ON ax_flurstueck USING btree (land,gemarkungsnummer,flurnummer,zaehler,nenner); CREATE INDEX ax_flurstueck_arz ON ax_flurstueck USING btree (abweichenderrechtszustand); COMMENT ON TABLE ax_flurstueck IS '"F l u r s t u e c k" ist ein Teil der Erdoberfläche, der von einer im Liegenschaftskataster festgelegten Grenzlinie umschlossen und mit einer Nummer bezeichnet ist. Es ist die Buchungseinheit des Liegenschaftskatasters.'; COMMENT ON COLUMN ax_flurstueck.gml_id IS 'Identifikator, global eindeutig'; COMMENT ON COLUMN ax_flurstueck.flurnummer IS 'FLN "Flurnummer" ist die von der Katasterbehörde zur eindeutigen Bezeichnung vergebene Nummer einer Flur, die eine Gruppe von zusammenhängenden Flurstücken innerhalb einer Gemarkung umfasst.'; COMMENT ON COLUMN ax_flurstueck.zaehler IS 'ZAE Dieses Attribut enthält den Zähler der Flurstücknummer'; COMMENT ON COLUMN ax_flurstueck.nenner IS 'NEN Dieses Attribut enthält den Nenner der Flurstücknummer'; COMMENT ON COLUMN ax_flurstueck.flurstueckskennzeichen IS '"Flurstückskennzeichen" ist ein von der Katasterbehörde zur eindeutigen Bezeichnung des Flurstücks vergebenes Ordnungsmerkmal. Die Attributart setzt sich aus den nachfolgenden expliziten Attributarten in der angegebenen Reihenfolge zusammen: 1. Land (2 Stellen) 2. Gemarkungsnummer (4 Stellen) 3. Flurnummer (3 Stellen) 4. Flurstücksnummer 4.1 Zähler (5 Stellen) 4.2 Nenner (4 Stellen) 5. Flurstücksfolge (2 Stellen) Die Elemente sind rechtsbündig zu belegen, fehlende Stellen sind mit führenden Nullen zu belegen. Da die Flurnummer und die Flurstücksfolge optional sind, sind aufgrund der bundeseinheitlichen Definition im Flurstückskennzeichen die entsprechenden Stellen, sofern sie nicht belegt sind, durch Unterstrich "_" ersetzt. Gleiches gilt für Flurstücksnummern ohne Nenner, hier ist der fehlende Nenner im Flurstückskennzeichen durch Unterstriche zu ersetzen.'; COMMENT ON COLUMN ax_flurstueck.amtlicheflaeche IS 'AFL "Amtliche Fläche" ist der im Liegenschaftskataster festgelegte Flächeninhalt des Flurstücks in [qm]. Flurstücksflächen kleiner 0,5 qm können mit bis zu zwei Nachkommastellen geführt werden, ansonsten ohne Nachkommastellen.'; COMMENT ON COLUMN ax_flurstueck.abweichenderrechtszustand IS 'ARZ "Abweichender Rechtszustand" ist ein Hinweis darauf, dass außerhalb des Grundbuches in einem durch Gesetz geregelten Verfahren der Bodenordnung (siehe Objektart "Bau-, Raum- oder Bodenordnungsrecht", AA "Art der Festlegung", Werte 1750, 1770, 2100 bis 2340) ein neuer Rechtszustand eingetreten ist und das amtliche Verzeichnis der jeweiligen ausführenden Stelle maßgebend ist.'; COMMENT ON COLUMN ax_flurstueck.zweifelhafterFlurstuecksnachweis IS 'ZFM "Zweifelhafter Flurstücksnachweis" ist eine Kennzeichnung eines Flurstücks, dessen Angaben nicht zweifelsfrei berichtigt werden können.'; COMMENT ON COLUMN ax_flurstueck.rechtsbehelfsverfahren IS 'RBV "Rechtsbehelfsverfahren" ist der Hinweis darauf, dass bei dem Flurstück ein laufendes Rechtsbehelfsverfahren anhängig ist.'; COMMENT ON COLUMN ax_flurstueck.zeitpunktderentstehung IS 'ZDE "Zeitpunkt der Entstehung" ist der Zeitpunkt, zu dem das Flurstück fachlich entstanden ist.'; COMMENT ON COLUMN ax_flurstueck.gemeinde IS 'Gemeindekennzeichen zur Zuordnung der Flustücksdaten zu einer Gemeinde.'; COMMENT ON COLUMN ax_flurstueck.name IS 'Array mit Fortführungsjahr und -Nummer'; COMMENT ON COLUMN ax_flurstueck.regierungsbezirk IS 'Regierungsbezirk'; COMMENT ON COLUMN ax_flurstueck.kreis IS 'Kreis'; -- Kennzeichen indizieren, z.B. fuer Suche aus der Historie CREATE INDEX ax_flurstueck_kennz ON ax_flurstueck USING btree (flurstueckskennzeichen /* ASC NULLS LAST*/ ); COMMENT ON INDEX ax_flurstueck_kennz IS 'Suche nach Flurstückskennzeichen'; -- Relationen: -- istGebucht --> AX_Buchungsstelle -- zeigtAuf --> AX_LagebezeichnungOhneHausnummer -- weistAuf --> AX_LagebezeichnungMitHausnummer -- gehoertAnteiligZu --> AX_Flurstueck -- beziehtSichAufFlurstueck --> AX_Flurstueck -- B e s o n d e r e F l u r s t u e c k s g r e n z e -- ----------------------------------------------------- CREATE TABLE ax_besondereflurstuecksgrenze ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), endet character(20), advstandardmodell varchar, anlass varchar, artderflurstuecksgrenze integer[], CONSTRAINT ax_besondereflurstuecksgrenze_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ax_besondereflurstuecksgrenze','wkb_geometry',:alkis_epsg,'LINESTRING',2); CREATE INDEX ax_besondereflurstuecksgrenze_geom_idx ON ax_besondereflurstuecksgrenze USING gist (wkb_geometry); CREATE UNIQUE INDEX ax_besondereflurstuecksgrenze_gml ON ax_besondereflurstuecksgrenze USING btree (gml_id,beginnt); COMMENT ON TABLE ax_besondereflurstuecksgrenze IS 'B e s o n d e r e F l u r s t u e c k s g r e n z e'; COMMENT ON COLUMN ax_besondereflurstuecksgrenze.gml_id IS 'Identifikator, global eindeutig'; -- G r e n z p u n k t -- ---------------------------------------------- CREATE TABLE ax_grenzpunkt ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), endet character(20), advstandardmodell varchar, anlass varchar, punktkennung varchar, land integer, stelle integer, abmarkung_marke integer, festgestelltergrenzpunkt varchar, besonderepunktnummer varchar, bemerkungzurabmarkung integer, sonstigeeigenschaft varchar[], art varchar, name varchar[], zeitpunktderentstehung varchar, relativehoehe double precision, CONSTRAINT ax_grenzpunkt_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ax_grenzpunkt','dummy',:alkis_epsg,'POINT',2); CREATE UNIQUE INDEX ax_grenzpunkt_gml ON ax_grenzpunkt USING btree (gml_id,beginnt); CREATE INDEX ax_grenzpunkt_abmm ON ax_grenzpunkt USING btree (abmarkung_marke); COMMENT ON TABLE ax_grenzpunkt IS 'G r e n z p u n k t'; COMMENT ON COLUMN ax_grenzpunkt.gml_id IS 'Identifikator, global eindeutig'; --** Objektartengruppe: Angaben zur Lage -- =================================================================== -- L a g e b e z e i c h n u n g o h n e H a u s n u m m e r -- ------------------------------------------------------------- CREATE TABLE ax_lagebezeichnungohnehausnummer ( ogc_fid serial NOT NULL, gml_id character(16), identifier character(44), beginnt character(20), endet character(20), advstandardmodell varchar, anlass varchar, unverschluesselt varchar, -- Gewanne land integer, -- Strassenschluessel regierungsbezirk integer, kreis integer, gemeinde integer, lage varchar, CONSTRAINT ax_lagebezeichnungohnehausnummer_pk PRIMARY KEY (ogc_fid) ); SELECT AddGeometryColumn('ax_lagebezeichnungohnehausnummer','dummy',:alkis_epsg,'POINT',2); -- Verbindungstabellen indizieren CREATE UNIQUE INDEX ax_lagebezeichnungohnehausnummer_gml ON ax_lagebezeichnungohnehausnummer USING btree (gml_id,beginnt); -- Such-Index (z.B. fuer Navigations-Programm) CREATE INDEX ax_lagebezeichnungohnehausnummer_key ON ax_lagebezeichnungohnehausnummer USING btree (land, regierungsbezirk, kreis, gemeinde,lage); COMMENT ON TABLE ax_lagebezeichnungohnehausnummer IS 'L a g e b e z e i c h n u n g o h n e H a u s n u m m e r'; COMMENT ON COLUMN ax_lagebezeichnungohnehausnummer.gml_id IS 'Identifikator, global eindeutig'; -- L a g e b e z e i c h n u n g m i t H a u s n u m m e r -- ----------------------------------------------------------- -- ax_flurstueck >weistAuf> AX_LagebezeichnungMitHausnummer --