source: trunk/import/nutzungsart_definition.sql @ 358

Revision 353, 6.7 KB checked in by frank.jaeger, 6 years ago (diff)

kleine Verbesserungen am Post-Processing

Line 
1
2-- ALKIS PostNAS 0.8
3
4-- ======================================================
5-- Zusammenfassung der Tabellen der tatsÀchlichen Nutzung
6-- ======================================================
7
8-- Um bei einer Feature.Info (Welche Nutzung an dieser Stelle?)
9-- oder einer Verschneidung (Welche Nutzungen auf dem FlurstÃŒck?)
10-- nicht 26 verschiedene Tabellen abfragen zu mÃŒssen, werden die wichtigsten
11-- Felder dieser Tabellen zusammen gefasst.
12
13-- Teil 1: Anlegen der Tabellen
14-- Variable fÃŒr das Koordinatensystem ÃŒbergeben mit "psql .. -v alkis_epsg="25832"
15
16-- Stand
17
18--  2012-02-10 PostNAS 0.7, Umbenennung
19--  2013-11-15 In nutzung_class.class können NULL-Werte auftreten.
20--  2013-11-26 NULL wird durch Zahl "0" ersetzt, "NOT NULL" wieder aktivieren
21--  2014-08-26 erweiterte gml_id (wie in den primÀren Tabellen)
22--  2014-11-25 Version geaendert auf 0.8, EPSG Übergabe in Tabelle Nutzung
23--  2015-03-10 Massenhaft "ST_CurvePolygon" in "nutzung".
24--             Quick 'n dirty: EinschrÀnkung des geometry-Typ löschen.
25
26
27SET client_encoding = 'UTF-8';
28
29-- Alles auf Anfang!
30/*
31  DROP TABLE nutzung;
32  DROP TABLE nutzung_class;
33  DROP TABLE nutzung_meta;
34*/
35
36-- Meta-Informationen ueber die Zusammenfassung und Gruppierung
37-- ------------------------------------------------------------
38CREATE TABLE nutzung_meta (
39        nutz_id           integer NOT NULL,
40        gruppe            character varying(30),
41        source_table      character varying(50),
42        title             character varying(50),
43        fldclass          character varying(30),
44        fldinfo           character varying(30),
45        CONSTRAINT nutzung_meta_pk PRIMARY KEY (nutz_id)
46);
47
48COMMENT ON TABLE  nutzung_meta                IS 'Gruppierung und Indizierung der zusammen gefassten Nutzungsarten in der Tabelle "nutzung".';
49COMMENT ON COLUMN nutzung_meta.nutz_id        IS 'Index fuer die Quell-Tabelle bei der Zusammenfassung in der Tabelle "nutzung".';
50COMMENT ON COLUMN nutzung_meta.source_table   IS 'Name der importierten Tabelle aus PostNAS.';
51COMMENT ON COLUMN nutzung_meta.gruppe         IS 'Objektartengruppe, Gruppierung der Nutzungsart.';
52COMMENT ON COLUMN nutzung_meta.title          IS 'Vorzeigbare Bezeichnung der Nutzungsartentabelle.';
53COMMENT ON COLUMN nutzung_meta.fldclass       IS 'Name des Feldes aus "source_table", das in Feld "nutzung.class" kopiert wird.';
54COMMENT ON COLUMN nutzung_meta.fldinfo        IS 'Name des Feldes aus "source_table", das in Feld "nutzung.info" kopiert wird.';
55
56
57-- Alle Abschnitte der "tatsÀchlichen Nutzung" vereinigt in einer Tabelle
58-- Sie sind dann mit einem gemeinsamen Geometrie-Index mit einer SQL-Abfrage auffindbar.
59-- Dies ist die förderlich fÌr eine performante Auskunft.
60
61CREATE TABLE nutzung (
62        gml_id               character varying NOT NULL,
63        beginnt              character(20),          -- mehrfache gml_id eindeutig machen
64--   endet               character(20),      -- nur "ended IS NULL" kopieren
65        nutz_id              integer,
66        class                integer NOT NULL,   -- NULL-Werte der Quelltabelle durch den num. Wert 0 ersetzen
67        info                      integer,
68        zustand              integer,
69        "name"               character varying,
70        bezeichnung          character varying,
71        CONSTRAINT nutzung_pk      PRIMARY KEY (gml_id, beginnt),
72        CONSTRAINT nutzung_meta_id FOREIGN KEY (nutz_id)
73                REFERENCES nutzung_meta (nutz_id) MATCH SIMPLE
74                ON UPDATE NO ACTION ON DELETE CASCADE
75)
76WITH (OIDS=FALSE);
77
78
79SELECT AddGeometryColumn('nutzung','wkb_geometry',:alkis_epsg,'POLYGON',2);
80-- Vereinzelt auch vorkommende MULTIPOLYGON
81-- 2015-03-10: Massenhaft "ST_CurvePolygon"
82--ALTER TABLE nutzung DROP CONSTRAINT enforce_geotype_wkb_geometry;
83-- 2015-03-16 diese wieder rÌckgÀngig, statt dessen Parameter beim Konverter-Aufruf.
84
85-- 'class' ist nur innerhalb einer Gruppe ein sinvoller Index
86CREATE INDEX idx_nutz_cls  ON nutzung USING btree (nutz_id, class);
87
88-- Geometrischer Index fÌr die rÀumliche Suche
89CREATE INDEX nutzung_geom_idx ON nutzung USING gist (wkb_geometry);
90
91COMMENT ON TABLE  nutzung             IS 'Zusammenfassung von 26 Tabellen des Objektbereiches "TatsÀchliche Nutzung".';
92COMMENT ON COLUMN nutzung.gml_id      IS 'Identifikator, global eindeutig';
93COMMENT ON COLUMN nutzung.nutz_id     IS 'Index fuer die Quell-Tabelle bei der Zusammenfassung in der Tabelle "nutzung".';
94COMMENT ON COLUMN nutzung.class       IS 'Klassifizierung innerhalb der Nutzung. Aus verschiedenen Feldern importiert. Siehe "nutzung_meta.fldclass".';
95COMMENT ON COLUMN nutzung.info        IS 'Weitere verschlÃŒsselte Information zur Nutzung. Aus verschiedenen Feldern importiert. Siehe "nutzung_meta.fldinfo".';
96COMMENT ON COLUMN nutzung.name        IS 'NAM Eigenname';
97COMMENT ON COLUMN nutzung.bezeichnung IS 'weitere unverschlÃŒsselte Information wie Zweitname, Bezeichnung, fachliche Nummerierung usw.';
98COMMENT ON COLUMN nutzung.zustand     IS 'ZUS "Zustand" beschreibt, ob der Abschnitt ungenutzt ist.';
99
100
101-- Schluesseltabelle: classes innerhalb einer Nutzungsart.
102-- Wird nicht aus NAS geladen sondern durch das manuell zu pflegende Script "nutzungsart_metadaten.sql"
103CREATE TABLE nutzung_class (
104        nutz_id       integer NOT NULL,
105        class         integer, --  NOT NULL,
106        label         character varying(100),
107        blabla        character varying(1000),
108    CONSTRAINT nutzung_class_pk PRIMARY KEY (nutz_id, class),
109        CONSTRAINT nutzung_class_id FOREIGN KEY (nutz_id)
110                REFERENCES nutzung_meta (nutz_id) MATCH SIMPLE
111                ON UPDATE NO ACTION ON DELETE CASCADE
112);
113
114  COMMENT ON TABLE  nutzung_class            IS 'SchlÃŒsseltabelle. Feinere Klassifizierung der zusammen gefassten Nutzungsarten.';
115  COMMENT ON COLUMN nutzung_class.nutz_id    IS 'Index fuer die Quell-Tabelle bei der Zusammenfassung in der Tabelle nutzung.';
116  COMMENT ON COLUMN nutzung_class.class      IS 'Key, SchlÃŒsselwert oder NULL';
117  COMMENT ON COLUMN nutzung_class.label      IS 'EntschlÃŒsselung. Art der Nutzung, Dies Feld soll in der Auskunft angezeigt werden.';
118  COMMENT ON COLUMN nutzung_class.blabla     IS 'Weitere ErlÀuterungen und Definitionen dazu.';
119
120
121-- Fehlersuche nach GDAL Patch #5444:
122-- Da nun gml_id nicht mehr PRIMARY KEY der Ausgangstabellen ist , kommt es auch zu Doppelbelegungen der Zusammenfassung.
123-- Diese FÀlle suchen.
124CREATE OR REPLACE VIEW nutzung_mehrfache_gml AS
125        SELECT a.gml_id, a.nutz_id, a.beginnt as beginnt1, b.beginnt as beginnt2
126        FROM nutzung a
127        JOIN nutzung b ON a.gml_id = b.gml_id
128        WHERE a.beginnt < b.beginnt
129        --LIMIT 100
130        ;
131
132-- Vorkommende Geometry-Typen
133
134--  SELECT a.gml_id, st_geometrytype(a.wkb_geometry) as geomtype ,a.artderbebauung, a.zustand, a.name, a.beginnt
135--  FROM ax_wohnbauflaeche a WHERE geometrytype(wkb_geometry) <> 'POLYGON';
136
137--  SELECT a.gml_id, st_geometrytype(a.wkb_geometry) as geomtype ,a.artderbebauung, a.zustand, a.name, a.beginnt
138--  FROM ax_wohnbauflaeche a WHERE geometrytype(wkb_geometry) <> 'POLYGON';
139
140-- Ergebnis:    Ein MULTIPOLYGON
141-- Konsequenz:  nur Polygone kopieren.
142
143-- END --
Note: See TracBrowser for help on using the repository browser.