source: trunk/import/nutzungsart_definition.sql @ 259

Revision 215, 6.4 KB checked in by astrid.emde, 11 years ago (diff)

Dateien in das neue Verzeichnis /import für die Importskripte verschoben, vorher unter /data/postnas_0.7

Line 
1
2-- ALKIS PostNAS 0.7
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
15-- Stand
16
17--  2012-02-10 PostNAS 07, Umbenennung
18
19SET client_encoding = 'UTF-8';
20
21-- Alles auf Anfang!
22
23-- DROP TABLE nutzung;
24-- DROP TABLE nutzung_class;
25-- DROP TABLE nutzung_meta;
26
27
28-- Meta-Informationen ueber die Zusammenfassung und Gruppierung
29-- ------------------------------------------------------------
30
31CREATE TABLE nutzung_meta (
32        nutz_id           integer NOT NULL,
33        gruppe            character varying(30),
34        source_table      character varying(50),
35        title             character varying(50),
36        fldclass          character varying(30),
37        fldinfo           character varying(30),
38        CONSTRAINT nutzung_meta_pk PRIMARY KEY (nutz_id)
39);
40
41COMMENT ON TABLE  nutzung_meta                IS 'Gruppierung und Indizierung der zusammen gefassten Nutzungsarten in der Tabelle "nutzung".';
42COMMENT ON COLUMN nutzung_meta.nutz_id        IS 'Index fuer die Quell-Tabelle bei der Zusammenfassung in der Tabelle "nutzung".';
43COMMENT ON COLUMN nutzung_meta.source_table   IS 'Name der importierten Tabelle aus PostNAS.';
44COMMENT ON COLUMN nutzung_meta.gruppe         IS 'Objektartengruppe, Gruppierung der Nutzungsart.';
45COMMENT ON COLUMN nutzung_meta.title          IS 'Vorzeigbare Bezeichnung der Nutzungsartentabelle.';
46COMMENT ON COLUMN nutzung_meta.fldclass       IS 'Name des Feldes aus "source_table", das in Feld "nutzung.class" kopiert wird.';
47COMMENT ON COLUMN nutzung_meta.fldinfo        IS 'Name des Feldes aus "source_table", das in Feld "nutzung.info" kopiert wird.';
48
49
50-- Alle Abschnitte der "tatsÀchlichen Nutzung" vereinigt in einer Tabelle
51-- Sie sind dann mit einem gemeinsamen Geometrie-Index mit einer SQL-Abfrage auffindbar.
52-- Dies ist die Voraussetzung fÃŒr eine performante Auskunft.
53
54--DROP TABLE nutzung;
55CREATE TABLE nutzung (
56        gml_id          character(16),
57        beginnt         character(20),  -- mehrfache gml_id eindeutig machen, Datenfehler?
58        nutz_id         integer,
59        class           integer,
60        info            integer,
61        zustand         integer,
62        "name"          varchar,
63        bezeichnung     varchar,
64--      CONSTRAINT      nutzung_pk      PRIMARY KEY (gml_id),           -- sollte so sein
65        CONSTRAINT      nutzung_pk      PRIMARY KEY (gml_id, beginnt),  -- wÃŒrg arround (gml_id mehrfach!)
66        CONSTRAINT      nutzung_meta_id FOREIGN KEY (nutz_id)
67                REFERENCES nutzung_meta (nutz_id) MATCH SIMPLE
68                ON UPDATE NO ACTION ON DELETE CASCADE
69)
70WITH (OIDS=FALSE);
71
72-- ALTER TABLE nutzung ADD COLUMN beginnt character(20);
73-- ALTER TABLE nutzung DROP CONSTRAINT nutzung_pk;
74-- ALTER TABLE nutzung ADD  CONSTRAINT nutzung_pk PRIMARY KEY(gml_id, beginnt);
75
76
77SELECT AddGeometryColumn('nutzung','wkb_geometry','25832','POLYGON',2);
78-- Vereinzelt vorkommende MULTIPOLYGON, zulÀssig?
79
80-- 'class' ist nur innerhalb einer Gruppe ein sinvoller Index
81CREATE INDEX idx_nutz_cls  ON nutzung USING btree (nutz_id, class);
82
83-- Geometrischer Index fÌr die rÀumliche Suche
84CREATE INDEX nutzung_geom_idx ON nutzung USING gist (wkb_geometry);
85
86-- Kommentare
87COMMENT ON TABLE  nutzung             IS 'Zusammenfassung von 26 Tabellen des Objektbereiches "TatsÀchliche Nutzung".';
88COMMENT ON COLUMN nutzung.gml_id      IS 'Identifikator, global eindeutig';
89COMMENT ON COLUMN nutzung.nutz_id     IS 'Index fuer die Quell-Tabelle bei der Zusammenfassung in der Tabelle "nutzung".';
90COMMENT ON COLUMN nutzung.class       IS 'Klassifizierung innerhalb der Nutzung. Aus verschiedenen Feldern importiert. Siehe "nutzung_meta.fldclass".';
91COMMENT ON COLUMN nutzung.info        IS 'Weitere verschlÃŒsselte Information zur Nutzung. Aus verschiedenen Feldern importiert. Siehe "nutzung_meta.fldinfo".';
92COMMENT ON COLUMN nutzung.name        IS 'NAM Eigenname';
93COMMENT ON COLUMN nutzung.bezeichnung IS 'weitere unverschlÃŒsselte Information wie Zweitname, Bezeichnung, fachliche Nummerierung usw.';
94COMMENT ON COLUMN nutzung.zustand     IS 'ZUS "Zustand" beschreibt, ob der Abschnitt ungenutzt ist.';
95
96
97-- Schluesseltabelle: classes innerhalb einer Nutzungsart.
98-- Wird nicht aus NAS geladen sondern durch das manuell zu pflegende Script.
99--  "alkis_nutzungsart_metadaten.sql"
100
101CREATE TABLE nutzung_class (
102        nutz_id       integer NOT NULL,
103        class         integer NOT NULL,
104        label         character varying(100),
105        blabla        character varying(1000),
106        CONSTRAINT nutzung_class_pk PRIMARY KEY (nutz_id, class),
107        CONSTRAINT nutzung_class_id FOREIGN KEY (nutz_id)
108                REFERENCES nutzung_meta (nutz_id) MATCH SIMPLE
109                ON UPDATE NO ACTION ON DELETE CASCADE
110);
111
112COMMENT ON TABLE  nutzung_class            IS 'SchlÃŒsseltabelle. Feinere Klassifizierung der zusammen gefassten Nutzungsarten.';
113COMMENT ON COLUMN nutzung_class.nutz_id    IS 'Index fuer die Quell-Tabelle bei der Zusammenfassung in der Tabelle nutzung.';
114COMMENT ON COLUMN nutzung_class.class      IS 'Key, SchlÃŒsselwert.';
115COMMENT ON COLUMN nutzung_class.label      IS 'EntschlÃŒsselung. Art der Nutzung, Dies Feld soll in der Auskunft angezeigt werden.';
116COMMENT ON COLUMN nutzung_class.blabla     IS 'Weitere ErlÀuterungen und Definitionen dazu.';
117
118
119-- Fehlersuche nach GDAL Patch #5444:
120-- Da nun gml_id nicht mehr PRIMARY KEY der Ausgangstabellen ist , kommt es auch zu Doppelbelegungen der Zusammenfassung.
121-- Diese FÀlle suchen.
122
123-- SELECT a.gml_id, a.artderbebauung, a.ogc_fid, a.beginnt, b.ogc_fid , b.beginnt
124-- FROM ax_wohnbauflaeche a JOIN ax_wohnbauflaeche b ON a.gml_id = b.gml_id
125-- WHERE a.ogc_fid < b.ogc_fid LIMIT 100;
126
127CREATE OR REPLACE VIEW nutzung_mehrfache_gml AS
128        SELECT  a.gml_id,
129                a.nutz_id,
130                a.beginnt as beginnt1,
131                b.beginnt as beginnt2
132        FROM nutzung a
133        JOIN nutzung b
134          ON a.gml_id = b.gml_id
135        WHERE a.beginnt < b.beginnt
136        --LIMIT 100
137        ;
138
139-- Vorkommende Geometry-Typen
140
141--  SELECT a.gml_id, st_geometrytype(a.wkb_geometry) as geomtype ,a.artderbebauung, a.zustand, a.name, a.beginnt
142--  FROM ax_wohnbauflaeche a WHERE geometrytype(wkb_geometry) <> 'POLYGON';
143
144--  SELECT a.gml_id, st_geometrytype(a.wkb_geometry) as geomtype ,a.artderbebauung, a.zustand, a.name, a.beginnt
145--  FROM ax_wohnbauflaeche a WHERE geometrytype(wkb_geometry) <> 'POLYGON';
146
147-- Ergebnis:    Ein MULTIPOLYGON
148-- Konsequenz:  nur Polygone kopieren.
149
150-- END --
Note: See TracBrowser for help on using the repository browser.