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 | |
---|
27 | SET 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 | -- ------------------------------------------------------------ |
---|
38 | CREATE 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 | |
---|
48 | COMMENT ON TABLE nutzung_meta IS 'Gruppierung und Indizierung der zusammen gefassten Nutzungsarten in der Tabelle "nutzung".'; |
---|
49 | COMMENT ON COLUMN nutzung_meta.nutz_id IS 'Index fuer die Quell-Tabelle bei der Zusammenfassung in der Tabelle "nutzung".'; |
---|
50 | COMMENT ON COLUMN nutzung_meta.source_table IS 'Name der importierten Tabelle aus PostNAS.'; |
---|
51 | COMMENT ON COLUMN nutzung_meta.gruppe IS 'Objektartengruppe, Gruppierung der Nutzungsart.'; |
---|
52 | COMMENT ON COLUMN nutzung_meta.title IS 'Vorzeigbare Bezeichnung der Nutzungsartentabelle.'; |
---|
53 | COMMENT ON COLUMN nutzung_meta.fldclass IS 'Name des Feldes aus "source_table", das in Feld "nutzung.class" kopiert wird.'; |
---|
54 | COMMENT 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 | |
---|
61 | CREATE 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 | ) |
---|
76 | WITH (OIDS=FALSE); |
---|
77 | |
---|
78 | |
---|
79 | SELECT 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 |
---|
86 | CREATE INDEX idx_nutz_cls ON nutzung USING btree (nutz_id, class); |
---|
87 | |
---|
88 | -- Geometrischer Index fÌr die rÀumliche Suche |
---|
89 | CREATE INDEX nutzung_geom_idx ON nutzung USING gist (wkb_geometry); |
---|
90 | |
---|
91 | COMMENT ON TABLE nutzung IS 'Zusammenfassung von 26 Tabellen des Objektbereiches "TatsÀchliche Nutzung".'; |
---|
92 | COMMENT ON COLUMN nutzung.gml_id IS 'Identifikator, global eindeutig'; |
---|
93 | COMMENT ON COLUMN nutzung.nutz_id IS 'Index fuer die Quell-Tabelle bei der Zusammenfassung in der Tabelle "nutzung".'; |
---|
94 | COMMENT ON COLUMN nutzung.class IS 'Klassifizierung innerhalb der Nutzung. Aus verschiedenen Feldern importiert. Siehe "nutzung_meta.fldclass".'; |
---|
95 | COMMENT ON COLUMN nutzung.info IS 'Weitere verschlÃŒsselte Information zur Nutzung. Aus verschiedenen Feldern importiert. Siehe "nutzung_meta.fldinfo".'; |
---|
96 | COMMENT ON COLUMN nutzung.name IS 'NAM Eigenname'; |
---|
97 | COMMENT ON COLUMN nutzung.bezeichnung IS 'weitere unverschlÃŒsselte Information wie Zweitname, Bezeichnung, fachliche Nummerierung usw.'; |
---|
98 | COMMENT 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" |
---|
103 | CREATE 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. |
---|
124 | CREATE 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 -- |
---|