From 626610537c792bc4ea479e45b057d43124e69457 Mon Sep 17 00:00:00 2001 From: "Juergen E. Fischer" Date: Fri, 15 Sep 2017 17:39:49 +0200 Subject: [PATCH] Paralleler Import und Abarbeitung der Ableitungsregeln --- alkis-ableitungsregeln.sql | 8633 ----------------- alkis-compat.sql | 6 +- alkis-functions.sql | 155 +- alkis-import.sh | 363 +- alkis-init.sql | 3 +- alkis-po-tables.sql | 6 +- alkis-schema.sql | 9 + alkis-trigger.sql | 3 +- alkisImport.py | 29 +- postcreate.d/nas2alb.sql | 43 +- postinherit.d/nas2alb.sql | 4 + postprocessing.d/0_ableitungsregeln.sql | 381 + postprocessing.d/1_ableitungsregeln/11001.sql | 170 + postprocessing.d/1_ableitungsregeln/11002.sql | 228 + postprocessing.d/1_ableitungsregeln/11003.sql | 97 + postprocessing.d/1_ableitungsregeln/12001.sql | 226 + postprocessing.d/1_ableitungsregeln/12002.sql | 113 + postprocessing.d/1_ableitungsregeln/12003.sql | 50 + postprocessing.d/1_ableitungsregeln/31001.sql | 395 + postprocessing.d/1_ableitungsregeln/31002.sql | 150 + postprocessing.d/1_ableitungsregeln/41001.sql | 48 + postprocessing.d/1_ableitungsregeln/41002.sql | 152 + postprocessing.d/1_ableitungsregeln/41003.sql | 74 + postprocessing.d/1_ableitungsregeln/41004.sql | 96 + postprocessing.d/1_ableitungsregeln/41005.sql | 90 + postprocessing.d/1_ableitungsregeln/41006.sql | 44 + postprocessing.d/1_ableitungsregeln/41007.sql | 70 + postprocessing.d/1_ableitungsregeln/41008.sql | 130 + postprocessing.d/1_ableitungsregeln/41009.sql | 71 + postprocessing.d/1_ableitungsregeln/42006.sql | 54 + postprocessing.d/1_ableitungsregeln/42009.sql | 106 + postprocessing.d/1_ableitungsregeln/42010.sql | 52 + postprocessing.d/1_ableitungsregeln/42015.sql | 80 + postprocessing.d/1_ableitungsregeln/42016.sql | 79 + postprocessing.d/1_ableitungsregeln/43001.sql | 100 + postprocessing.d/1_ableitungsregeln/43002.sql | 80 + postprocessing.d/1_ableitungsregeln/43003.sql | 79 + postprocessing.d/1_ableitungsregeln/43004.sql | 61 + postprocessing.d/1_ableitungsregeln/43005.sql | 62 + postprocessing.d/1_ableitungsregeln/43006.sql | 61 + postprocessing.d/1_ableitungsregeln/43007.sql | 104 + postprocessing.d/1_ableitungsregeln/44001.sql | 55 + postprocessing.d/1_ableitungsregeln/44005.sql | 64 + postprocessing.d/1_ableitungsregeln/44006.sql | 41 + postprocessing.d/1_ableitungsregeln/44007.sql | 67 + postprocessing.d/1_ableitungsregeln/51002.sql | 167 + postprocessing.d/1_ableitungsregeln/51003.sql | 87 + postprocessing.d/1_ableitungsregeln/51004.sql | 90 + postprocessing.d/1_ableitungsregeln/51005.sql | 55 + postprocessing.d/1_ableitungsregeln/51006.sql | 171 + postprocessing.d/1_ableitungsregeln/51007.sql | 155 + postprocessing.d/1_ableitungsregeln/51008.sql | 71 + postprocessing.d/1_ableitungsregeln/51009.sql | 195 + postprocessing.d/1_ableitungsregeln/51010.sql | 168 + postprocessing.d/1_ableitungsregeln/53001.sql | 170 + postprocessing.d/1_ableitungsregeln/53002.sql | 131 + postprocessing.d/1_ableitungsregeln/53003.sql | 140 + postprocessing.d/1_ableitungsregeln/53004.sql | 133 + postprocessing.d/1_ableitungsregeln/53005.sql | 74 + postprocessing.d/1_ableitungsregeln/53007.sql | 79 + postprocessing.d/1_ableitungsregeln/53008.sql | 79 + postprocessing.d/1_ableitungsregeln/53009.sql | 219 + postprocessing.d/1_ableitungsregeln/54001.sql | 238 + postprocessing.d/1_ableitungsregeln/55001.sql | 86 + postprocessing.d/1_ableitungsregeln/55002.sql | 199 + postprocessing.d/1_ableitungsregeln/55006.sql | 113 + postprocessing.d/1_ableitungsregeln/57001.sql | 41 + postprocessing.d/1_ableitungsregeln/57002.sql | 85 + postprocessing.d/1_ableitungsregeln/59102.sql | 75 + postprocessing.d/1_ableitungsregeln/59103.sql | 51 + postprocessing.d/1_ableitungsregeln/59109.sql | 77 + postprocessing.d/1_ableitungsregeln/59201.sql | 51 + postprocessing.d/1_ableitungsregeln/59202.sql | 56 + postprocessing.d/1_ableitungsregeln/59206.sql | 36 + postprocessing.d/1_ableitungsregeln/59207.sql | 36 + postprocessing.d/1_ableitungsregeln/59301.sql | 37 + postprocessing.d/1_ableitungsregeln/59401.sql | 31 + postprocessing.d/1_ableitungsregeln/59402.sql | 31 + postprocessing.d/1_ableitungsregeln/61001.sql | 198 + postprocessing.d/1_ableitungsregeln/61003.sql | 166 + postprocessing.d/1_ableitungsregeln/61005.sql | 44 + postprocessing.d/1_ableitungsregeln/61006.sql | 115 + postprocessing.d/1_ableitungsregeln/61007.sql | 62 + postprocessing.d/1_ableitungsregeln/61008.sql | 43 + postprocessing.d/1_ableitungsregeln/61009.sql | 38 + postprocessing.d/1_ableitungsregeln/62040.sql | 26 + postprocessing.d/1_ableitungsregeln/71001.sql | 46 + postprocessing.d/1_ableitungsregeln/71003.sql | 35 + postprocessing.d/1_ableitungsregeln/71006.sql | 98 + postprocessing.d/1_ableitungsregeln/71007.sql | 70 + postprocessing.d/1_ableitungsregeln/71008.sql | 92 + postprocessing.d/1_ableitungsregeln/71009.sql | 44 + postprocessing.d/1_ableitungsregeln/71011.sql | 78 + postprocessing.d/1_ableitungsregeln/72004.sql | 33 + postprocessing.d/1_ableitungsregeln/74005.sql | 31 + postprocessing.d/1_ableitungsregeln/91001.sql | 30 + postprocessing.d/2_ableitungsregeln.sql | 236 + .../{nas2alb.sql => 3_nas2alb.sql} | 57 +- ...-keytables.sql => 4_postnas-keytables.sql} | 2 +- postupdate.d/nas2alb.sql | 54 +- preinherit.d/nas2alb.sql | 26 - .../0_alkis-signaturen.sql | 2 + re | 2 +- 103 files changed, 9124 insertions(+), 8915 deletions(-) delete mode 100644 alkis-ableitungsregeln.sql create mode 100644 postinherit.d/nas2alb.sql create mode 100644 postprocessing.d/0_ableitungsregeln.sql create mode 100644 postprocessing.d/1_ableitungsregeln/11001.sql create mode 100644 postprocessing.d/1_ableitungsregeln/11002.sql create mode 100644 postprocessing.d/1_ableitungsregeln/11003.sql create mode 100644 postprocessing.d/1_ableitungsregeln/12001.sql create mode 100644 postprocessing.d/1_ableitungsregeln/12002.sql create mode 100644 postprocessing.d/1_ableitungsregeln/12003.sql create mode 100644 postprocessing.d/1_ableitungsregeln/31001.sql create mode 100644 postprocessing.d/1_ableitungsregeln/31002.sql create mode 100644 postprocessing.d/1_ableitungsregeln/41001.sql create mode 100644 postprocessing.d/1_ableitungsregeln/41002.sql create mode 100644 postprocessing.d/1_ableitungsregeln/41003.sql create mode 100644 postprocessing.d/1_ableitungsregeln/41004.sql create mode 100644 postprocessing.d/1_ableitungsregeln/41005.sql create mode 100644 postprocessing.d/1_ableitungsregeln/41006.sql create mode 100644 postprocessing.d/1_ableitungsregeln/41007.sql create mode 100644 postprocessing.d/1_ableitungsregeln/41008.sql create mode 100644 postprocessing.d/1_ableitungsregeln/41009.sql create mode 100644 postprocessing.d/1_ableitungsregeln/42006.sql create mode 100644 postprocessing.d/1_ableitungsregeln/42009.sql create mode 100644 postprocessing.d/1_ableitungsregeln/42010.sql create mode 100644 postprocessing.d/1_ableitungsregeln/42015.sql create mode 100644 postprocessing.d/1_ableitungsregeln/42016.sql create mode 100644 postprocessing.d/1_ableitungsregeln/43001.sql create mode 100644 postprocessing.d/1_ableitungsregeln/43002.sql create mode 100644 postprocessing.d/1_ableitungsregeln/43003.sql create mode 100644 postprocessing.d/1_ableitungsregeln/43004.sql create mode 100644 postprocessing.d/1_ableitungsregeln/43005.sql create mode 100644 postprocessing.d/1_ableitungsregeln/43006.sql create mode 100644 postprocessing.d/1_ableitungsregeln/43007.sql create mode 100644 postprocessing.d/1_ableitungsregeln/44001.sql create mode 100644 postprocessing.d/1_ableitungsregeln/44005.sql create mode 100644 postprocessing.d/1_ableitungsregeln/44006.sql create mode 100644 postprocessing.d/1_ableitungsregeln/44007.sql create mode 100644 postprocessing.d/1_ableitungsregeln/51002.sql create mode 100644 postprocessing.d/1_ableitungsregeln/51003.sql create mode 100644 postprocessing.d/1_ableitungsregeln/51004.sql create mode 100644 postprocessing.d/1_ableitungsregeln/51005.sql create mode 100644 postprocessing.d/1_ableitungsregeln/51006.sql create mode 100644 postprocessing.d/1_ableitungsregeln/51007.sql create mode 100644 postprocessing.d/1_ableitungsregeln/51008.sql create mode 100644 postprocessing.d/1_ableitungsregeln/51009.sql create mode 100644 postprocessing.d/1_ableitungsregeln/51010.sql create mode 100644 postprocessing.d/1_ableitungsregeln/53001.sql create mode 100644 postprocessing.d/1_ableitungsregeln/53002.sql create mode 100644 postprocessing.d/1_ableitungsregeln/53003.sql create mode 100644 postprocessing.d/1_ableitungsregeln/53004.sql create mode 100644 postprocessing.d/1_ableitungsregeln/53005.sql create mode 100644 postprocessing.d/1_ableitungsregeln/53007.sql create mode 100644 postprocessing.d/1_ableitungsregeln/53008.sql create mode 100644 postprocessing.d/1_ableitungsregeln/53009.sql create mode 100644 postprocessing.d/1_ableitungsregeln/54001.sql create mode 100644 postprocessing.d/1_ableitungsregeln/55001.sql create mode 100644 postprocessing.d/1_ableitungsregeln/55002.sql create mode 100644 postprocessing.d/1_ableitungsregeln/55006.sql create mode 100644 postprocessing.d/1_ableitungsregeln/57001.sql create mode 100644 postprocessing.d/1_ableitungsregeln/57002.sql create mode 100644 postprocessing.d/1_ableitungsregeln/59102.sql create mode 100644 postprocessing.d/1_ableitungsregeln/59103.sql create mode 100644 postprocessing.d/1_ableitungsregeln/59109.sql create mode 100644 postprocessing.d/1_ableitungsregeln/59201.sql create mode 100644 postprocessing.d/1_ableitungsregeln/59202.sql create mode 100644 postprocessing.d/1_ableitungsregeln/59206.sql create mode 100644 postprocessing.d/1_ableitungsregeln/59207.sql create mode 100644 postprocessing.d/1_ableitungsregeln/59301.sql create mode 100644 postprocessing.d/1_ableitungsregeln/59401.sql create mode 100644 postprocessing.d/1_ableitungsregeln/59402.sql create mode 100644 postprocessing.d/1_ableitungsregeln/61001.sql create mode 100644 postprocessing.d/1_ableitungsregeln/61003.sql create mode 100644 postprocessing.d/1_ableitungsregeln/61005.sql create mode 100644 postprocessing.d/1_ableitungsregeln/61006.sql create mode 100644 postprocessing.d/1_ableitungsregeln/61007.sql create mode 100644 postprocessing.d/1_ableitungsregeln/61008.sql create mode 100644 postprocessing.d/1_ableitungsregeln/61009.sql create mode 100644 postprocessing.d/1_ableitungsregeln/62040.sql create mode 100644 postprocessing.d/1_ableitungsregeln/71001.sql create mode 100644 postprocessing.d/1_ableitungsregeln/71003.sql create mode 100644 postprocessing.d/1_ableitungsregeln/71006.sql create mode 100644 postprocessing.d/1_ableitungsregeln/71007.sql create mode 100644 postprocessing.d/1_ableitungsregeln/71008.sql create mode 100644 postprocessing.d/1_ableitungsregeln/71009.sql create mode 100644 postprocessing.d/1_ableitungsregeln/71011.sql create mode 100644 postprocessing.d/1_ableitungsregeln/72004.sql create mode 100644 postprocessing.d/1_ableitungsregeln/74005.sql create mode 100644 postprocessing.d/1_ableitungsregeln/91001.sql create mode 100644 postprocessing.d/2_ableitungsregeln.sql rename postprocessing.d/{nas2alb.sql => 3_nas2alb.sql} (94%) rename postprocessing.d/{postnas-keytables.sql => 4_postnas-keytables.sql} (99%) delete mode 100644 preinherit.d/nas2alb.sql rename alkis-signaturen.sql => preprocessing.d/0_alkis-signaturen.sql (99%) diff --git a/alkis-ableitungsregeln.sql b/alkis-ableitungsregeln.sql deleted file mode 100644 index a124180..0000000 --- a/alkis-ableitungsregeln.sql +++ /dev/null @@ -1,8633 +0,0 @@ -/*************************************************************************** - * * - * Project: norGIS ALKIS Import * - * Purpose: Regeln zur Ableitung von Darstellungstabellen aus den * - * GDAL/OGR NAS Tabellen * - * Author: Jürgen E. Fischer jef@norbit.de * - * * - *************************************************************************** - * Copyright (c) 2013-2017 Juergen E. Fischer (jef@norbit.de) * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - --- %s/ARRAY\[\([^]]*\)\] <@ \([^ ;]*\)/\1 = ANY(\2)/ --- \timing --- \set ECHO queries - --- --- Variablen: --- alkis_epsg Koordinatensystem --- alkis_fnbruch Bruchstrichdarstellung für Flurstücksnummern voreinstellen --- alkis_pgverdraengen Niederwertige zu höherwertige politischen Grenzen NICHT erzeugen --- alkis_modelle Zu verwendende Modelle --- - -/* - 1XXX = Fläche - 2XXX = Linie - 3XXX = Symbol - 4XXX = Schrift - -Linien-Signaturen mit Konturen: - 2504 - 51004 ax_transportanlage - Förderband, unterirdisch (BWF 1102, OFL 1200/1700) - - 2510 - 51007 ax_historischesbauwerkoderhistorischeeinrichtung - Historische Mauer (ATP 1500/1520) - Stadtmauer (ATP 1510) - - 51009 ax_sonstigesbauwerkodersonstigeeinrichtung - Mauerkante, rechts (BWF 1710/1721) - Mauerkante, links (BWF 1702/1722) - Mauermitte (BWF 1703/1723) - - 53009 ax_bauwerkimgewaesserbereich - Ufermauer (BWF 2136) - - 2521 - 51004 ax_transportanlage - Förderband (BWF 1102, OFL -/1400) - - 51010 ax_einrichtunginoeffentlichenbereichen - Tor (ART 1510) - - 2526 - 53009 ax_bauwerkimgewaesserbereich - Sicherheitstor (BWF 2060) - -Links/Rechts: - 51009 ax_sonstigesbauwerkodersonstigeeinrichtung Mauerkante, -mitte - 54001 ax_vegetationsmerkmal Heckenkante, -mitte - 55002 ax_untergeordnetesgewaesser Grabenkante, -nmitte - 61003 ax_dammwalldeich Wall-, Knick kante - -Länder: -BB Brandenburg -BE Berlin -BW Baden-Württemberg -BY Bayern -HB Bremen -HE Hessen -HH Hamburg -MV Mecklenburg-Vorpommern -NI Niedersachsen -NW Nordrhein-Westfalen -RP Rheinland-Pfalz -SH Schleswig-Holstein -SL Saarland -SN Sachsen -ST Sachsen-Anhalt -TH Thüringen -*/ - -SET client_encoding TO 'UTF8'; -SET search_path = :"alkis_schema", :"postgis_schema", public; - -\unset ON_ERROR_STOP -SET application_name='ALKIS-Import - Ableitungsregeln'; -SET client_min_messages TO notice; -\set ON_ERROR_STOP - -SELECT 'Koordinatensystem: ' || :alkis_epsg; -SELECT 'Bruchstrichvoreinstellung: ' || CASE WHEN :alkis_fnbruch THEN 'Bruchstrich' ELSE 'Schrägstrich' END; -SELECT 'Niederwertige politische Grenzen verdrängen: ' || CASE WHEN :alkis_pgverdraengen THEN 'Ja' ELSE 'Nein' END; --- SELECT 'Aktive Modelle: ' || array_to_string(:alkis_modelle,', '); - -SELECT alkis_dropobject('alkis_positionierungsregeln'); -CREATE TABLE alkis_positionierungsregeln( - id INTEGER PRIMARY KEY, - abstand DOUBLE PRECISION, - zeilenabstand DOUBLE PRECISION, - versatz DOUBLE PRECISION, - dichte INTEGER); - -INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1100,7,3.5,3.5,100); -INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1101,7,3.5,3.5,20); -INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1102,18,10,9,100); -INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1103,18,10,9,20); -INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1104,24,22,12,100); -INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1105,24,22,12,20); -INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1106,10,3,5,100); -INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1107,10,3,5,20); -INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1108,8,7,4,100); -INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1109,8,7,4,20); -INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1110,7,6,3.5,100); -INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1111,7,6,3.5,20); -INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1112,3,1.5,1.5,100); - -SELECT alkis_dropobject('alkis_flaechenfuellung'); -CREATE OR REPLACE FUNCTION pg_temp.alkis_flaechenfuellung(g0 GEOMETRY, regelid varchar) RETURNS GEOMETRY AS $$ -DECLARE - xmin DOUBLE PRECISION; - ymin DOUBLE PRECISION; - xmax DOUBLE PRECISION; - ymax DOUBLE PRECISION; - x0 DOUBLE PRECISION; - x DOUBLE PRECISION; - y DOUBLE PRECISION; - r GEOMETRY[]; - p GEOMETRY; - srid INTEGER; - g GEOMETRY; - regel RECORD; -BEGIN - IF regelid IS NULL OR geometrytype(g)<>'POLYGON' THEN - RETURN NULL; - END IF; - - SELECT * INTO regel FROM alkis_positionierungsregeln WHERE id=regelid::int; - - g := st_buffer(g0, -0.5); - xmin := floor(st_xmin(g)/regel.abstand)*regel.abstand; - ymin := floor(st_ymin(g)/regel.zeilenabstand)*regel.zeilenabstand; - xmax := ceil(st_xmax(g)/regel.abstand)*regel.abstand; - ymax := ceil(st_ymax(g)/regel.zeilenabstand)*regel.zeilenabstand; - - SELECT st_srid(g) INTO srid; - - x0 := xmin; - y := ymin; - --- RAISE NOTICE 'w:% h:% cols:% rows:% n:%', --- xmax-xmin, ymax-ymin, --- (xmax-xmin)/abstand, --- (ymax-ymin)/zeilenabstand, --- ((xmax-xmin)/abstand) * ((ymax-ymin)/zeilenabstand); - - FOR i IN 0..1 LOOP - WHILE y0 - LOOP - SELECT ogc_fid,gml_id,line,modell INTO r0 FROM po_joinlines WHERE NOT visited LIMIT 1; --- RAISE NOTICE 'START %: von:% nach:%)', --- r0.ogc_fid, --- st_astext(st_startpoint(r0.line)), --- st_astext(st_endpoint(r0.line)); - UPDATE po_joinlines SET visited=true WHERE po_joinlines.ogc_fid=r0.ogc_fid; - n := n - 1; - - l := r0.line; - m := r0.modell; - - joined := true; - <> WHILE n>0 AND joined - LOOP - joined := false; - - FOR i in 0..1 - LOOP - np := st_numpoints(l); - p0 := st_startpoint(l); - p1 := st_endpoint(l); - - IF st_equals(p0,p1) THEN - EXIT joined; - END IF; - - IF i=0 THEN - OPEN c FOR SELECT ogc_fid, line AS line FROM po_joinlines WHERE p0 && line AND p0=st_endpoint(line) AND st_equals(p0,st_endpoint(line)) AND NOT visited - UNION SELECT ogc_fid,st_reverse(line) AS line FROM po_joinlines WHERE p0 && line AND p0=st_startpoint(line) AND st_equals(p0,st_startpoint(line)) AND NOT visited - LIMIT 2; - ELSE - OPEN c FOR SELECT ogc_fid, line AS line FROM po_joinlines WHERE p1 && line AND p1=st_startpoint(line) AND st_equals(p1,st_startpoint(line)) AND NOT visited - UNION SELECT ogc_fid,st_reverse(line) AS line FROM po_joinlines WHERE p1 && line AND p1=st_endpoint(line) AND st_equals(p1,st_endpoint(line)) AND NOT visited - LIMIT 2; - END IF; - - FETCH c INTO r1; - IF FOUND THEN - FETCH c INTO r2; - IF NOT FOUND THEN - l := st_setsrid(st_linemerge(st_collect(l,r1.line)),st_srid(l)); - - IF geometrytype(l)='MULTILINESTRING' THEN - RAISE EXCEPTION 'MULTILINESTRING after merge: %', st_astext(l); - ELSIF st_numpoints(l)=np THEN - RAISE EXCEPTION 'merge failed: % with %', - st_astext(l), - st_astext(r1.line); - END IF; - - UPDATE po_joinlines SET visited=true WHERE po_joinlines.ogc_fid=r1.ogc_fid; - n := n - 1; - joined := true; - END IF; - END IF; - - CLOSE c; - END LOOP; - END LOOP; - - -- RAISE NOTICE 'insert line (n:%)', n; - - INSERT - INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) - VALUES (r0.gml_id,'Politische Grenzen','ax_besondereflurstuecksgrenze',st_multi(l),adf.sn,m); - END LOOP; - - SELECT COUNT(*) INTO n FROM po_joinlines WHERE NOT visited; - IF n>0 THEN - RAISE NOTICE 'adf:% sn:%: % verbliebene Linien', adf.adfs, adf.sn, n; - END IF; - DELETE FROM po_joinlines; - END LOOP; - - RETURN 'Politische Grenze verschmolzen'; -END; -$$ LANGUAGE plpgsql; - -SELECT alkis_dropobject('alkis_safe_offsetcurve'); -CREATE OR REPLACE FUNCTION alkis_safe_offsetcurve(g0 geometry,offs float8,params text) RETURNS geometry AS $$ -DECLARE - res GEOMETRY; -BEGIN - IF g0 IS NULL OR offs=0 THEN - RETURN g0; - END IF; - - BEGIN - SELECT st_offsetcurve(g0,offs,params) INTO res; - IF geometrytype(res)='LINESTRING' THEN - RETURN res; - END IF; - EXCEPTION WHEN OTHERS THEN - -- - END; - - BEGIN - SELECT alkis_offsetcurve(g0,offs,params) INTO res; - IF geometrytype(res)='LINESTRING' THEN - RETURN res; - END IF; - EXCEPTION WHEN OTHERS THEN - -- - END; - - RAISE NOTICE 'alkis_safe_offsetcurve % by % with % failed', st_astext(g0), offs, params; - - RETURN g0; -END; -$$ LANGUAGE plpgsql IMMUTABLE; - -SELECT alkis_dropobject('alkis_pnr3002'); -CREATE OR REPLACE FUNCTION alkis_pnr3002( - p_gmlid varchar, - p_p GEOMETRY, - p_a double precision, - p_land varchar, - p_regierungsbezirk varchar, - p_kreis varchar, - p_gemeinde varchar, - p_lage varchar, - p_g GEOMETRY, - OUT p GEOMETRY, - OUT a DOUBLE PRECISION -) AS $$ -DECLARE - f GEOMETRY; - g GEOMETRY; - b double precision; -BEGIN - IF p_p IS NOT NULL THEN - p := p_p; - a := p_a; - RETURN; - END IF; - - g := st_multi(st_buffer(p_g,-1.9)); - IF geometrytype(g)<>'MULTIPOLYGON' OR st_numgeometries(g)=0 THEN - -- RAISE NOTICE '%: buffered %', p_gmlid, st_astext(g); - RETURN; - END IF; - - SELECT st_multi(st_union(st_exteriorring(geom))) FROM st_dump(g) INTO g; - IF geometrytype(g)<>'MULTILINESTRING' THEN - RAISE NOTICE '%: exterior %', p_gmlid, st_astext(g); - RETURN; - END IF; - - -- Nächstes Flurstückspolygon bestimmen - SELECT - fs.geom - INTO f - FROM ( - SELECT - (st_dump(st_multi(ax_flurstueck.wkb_geometry))).geom - FROM ax_flurstueck - JOIN ax_lagebezeichnungohnehausnummer loh ON ARRAY[loh.gml_id] <@ ax_flurstueck.zeigtAuf - WHERE loh.land=p_land AND loh.regierungsbezirk=p_regierungsbezirk AND loh.kreis=p_kreis AND loh.gemeinde=p_gemeinde AND loh.lage=p_lage - AND loh.unverschluesselt IS NULL - ) AS fs - ORDER BY st_distance(fs.geom,g) ASC - LIMIT 1; - - IF f IS NULL THEN - -- RAISE NOTICE '%: empty fs geom', p_gmlid; - RETURN; - END IF; - - -- Nächste Kante des Eingabepolygons bestimmen - SELECT - geom - INTO - g - FROM ( - SELECT - st_makeline(st_pointn(geom,i), st_pointn(geom,i+1)) AS geom - FROM ( - SELECT - generate_series(1,st_npoints(geom)-1) AS i, - geom - FROM st_dump(g) - ) AS indexes - ) AS segments - WHERE st_length(geom)>1.5 - ORDER BY st_distance(f,st_lineinterpolatepoint(geom,0.5)) ASC,st_length(geom) DESC - LIMIT 1; - - IF g IS NULL THEN - -- RAISE NOTICE '%: empty edge', p_gmlid; - RETURN; - END IF; - - -- Mitte/Winkel an der nächsten Kante - p := st_lineinterpolatepoint(g, 0.5); - b := 0.5*pi()-st_azimuth(st_startpoint(g), st_endpoint(g)); - WHILE b < 0 LOOP - b := b + 2*pi(); - END LOOP; - WHILE b > 2*pi() LOOP - b := b - 2*pi(); - END LOOP; - - IF b BETWEEN 0.5*pi() AND pi() THEN - b := b + pi(); - ELSIF b BETWEEN pi() AND 1.5*pi() THEN - b := b - pi(); - END IF; - - IF b IS NULL THEN - RAISE EXCEPTION E'%: p:% a:%\n\ng:%\nf:%', p_gmlid, st_astext(p), b, st_astext(g), st_astext(f); - END IF; - - a := b; -END; -$$ LANGUAGE plpgsql; - - --- Präsentationsobjekte? - -BEGIN; - -SELECT 'Präsentationstabellen werden geleert.'; -DELETE FROM po_points; -DELETE FROM po_lines; -DELETE FROM po_polygons; -DELETE FROM po_labels; - --- Nichtdarzustellende Signaturnummer ergänzen --- (um sie am Ende inkl. der betreffenden Signaturen wieder zu entfernen) -DELETE FROM alkis_linie WHERE signaturnummer IN ('6000','RP6000'); -DELETE FROM alkis_linien WHERE signaturnummer IN ('6000','RP6000'); -DELETE FROM alkis_flaechen WHERE signaturnummer IN ('6000','RP6000'); -DELETE FROM alkis_schriften WHERE signaturnummer IN ('6000','RP6000'); - -INSERT INTO alkis_linien(katalog,signaturnummer) VALUES (1,'6000'); -INSERT INTO alkis_flaechen(katalog,signaturnummer) VALUES (1,'6000'); -INSERT INTO alkis_schriften(katalog,signaturnummer) VALUES (1,'6000'); -INSERT INTO alkis_linien(katalog,signaturnummer) VALUES (1,'RP6000'); -INSERT INTO alkis_flaechen(katalog,signaturnummer) VALUES (1,'RP6000'); -INSERT INTO alkis_schriften(katalog,signaturnummer) VALUES (1,'RP6000'); - -INSERT INTO alkis_linien(katalog,signaturnummer) VALUES (2,'6000'); -INSERT INTO alkis_flaechen(katalog,signaturnummer) VALUES (2,'6000'); -INSERT INTO alkis_schriften(katalog,signaturnummer) VALUES (2,'6000'); -INSERT INTO alkis_linien(katalog,signaturnummer) VALUES (2,'RP6000'); -INSERT INTO alkis_flaechen(katalog,signaturnummer) VALUES (2,'RP6000'); -INSERT INTO alkis_schriften(katalog,signaturnummer) VALUES (2,'RP6000'); - --- Leere Signaturnummern ersetzen -UPDATE ap_ppo SET signaturnummer=NULL WHERE signaturnummer=''; -UPDATE ap_lpo SET signaturnummer=NULL WHERE signaturnummer=''; -UPDATE ap_pto SET signaturnummer=NULL WHERE signaturnummer=''; -UPDATE ap_lto SET signaturnummer=NULL WHERE signaturnummer=''; -UPDATE ap_pto SET art='Strasse' WHERE art='Straße'; -- Straße wird z.B. in TH verwendet - --- Leere Geschosszahlen korrigieren (sonst to_char(0,'RN') => '###############') -UPDATE ax_gebaeude SET anzahlderoberirdischengeschosse=NULL WHERE anzahlderoberirdischengeschosse=0; -UPDATE ax_gebaeude SET anzahlderunterirdischengeschosse=NULL WHERE anzahlderunterirdischengeschosse=0; - - --- --- Flurstücke (11001) --- - -SELECT 'Flurstücke werden verarbeitet.'; - --- Flurstücke -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Flurstücke' AS thema, - 'ax_flurstueck' AS layer, - st_multi(wkb_geometry) AS polygon, - 2028 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_flurstueck -WHERE endet IS NULL; - -UPDATE ax_flurstueck SET abweichenderrechtszustand='false' WHERE abweichenderrechtszustand IS NULL; - -SELECT count(*) || ' Flurstücke mit abweichendem Rechtszustand.' FROM ax_flurstueck WHERE abweichenderrechtszustand='true'; - --- Flurstücksgrenzen mit abweichendem Rechtszustand -SELECT 'Bestimme Grenzen mit abweichendem Rechtszustand'; -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - a.gml_id, - 'Flurstücke' AS thema, - 'ax_flurstueck' AS layer, - st_multi( (SELECT st_collect(geom) FROM st_dump( st_intersection(a.wkb_geometry,b.wkb_geometry) ) WHERE geometrytype(geom)='LINESTRING') ) AS line, - 2029 AS signaturnummer, - a.advstandardmodell||a.sonstigesmodell||b.advstandardmodell||b.sonstigesmodell AS modell -FROM ax_flurstueck a, ax_flurstueck b -WHERE a.ogc_fid'0'); - --- Nenner --- Bruchdarstellung -SELECT 'Erzeuge Flurstücksnenner...'; -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Flurstücke' AS thema, - 'ax_flurstueck_nummer' AS layer, - point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - st_translate(coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)), 0, -0.40) AS point, - coalesce(split_part(replace(t.schriftinhalt,'-','/'),'/',2)::text,o.nenner::text) AS text, - coalesce(d.signaturnummer,t.signaturnummer,CASE WHEN o.abweichenderrechtszustand='true' THEN '4123' ELSE '4115' END) AS signaturnummer, - t.drehwinkel, 'zentrisch'::text AS horizontaleausrichtung, 'oben'::text AS vertikaleausrichtung, t.skalierung, t.fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_flurstueck o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.endet IS NULL - WHERE o.endet IS NULL AND (coalesce(t.signaturnummer,'4111') IN (CASE WHEN :alkis_fnbruch THEN '4111' ELSE NULL END,'4115','4123') AND coalesce(o.nenner,'0')<>'0') -) AS foo -WHERE NOT text IS NULL; - --- Bruchstrich -SELECT 'Erzeuge Flurstücksbruchstriche...'; -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - gml_id, - 'Flurstücke' AS thema, - 'ax_flurstueck_nummer' AS layer, - st_multi(st_rotate(st_makeline(st_translate(point, -len, 0.0), st_translate(point, len, 0.0)),drehwinkel,st_x(point),st_y(point))) AS line, - signaturnummer, - modell -FROM ( - SELECT - gml_id, - point, - CASE WHEN lenn>lenz THEN lenn ELSE lenz END AS len, - signaturnummer, - modell, - drehwinkel - FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - length(coalesce(split_part(replace(t.schriftinhalt,'-','/'),'/',1),o.zaehler::text)) AS lenn, - length(coalesce(split_part(replace(t.schriftinhalt,'-','/'),'/',2),o.nenner::text)) AS lenz, - coalesce(d.signaturnummer,t.signaturnummer,'2001') AS signaturnummer, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell, - coalesce(t.drehwinkel,0) AS drehwinkel - FROM ax_flurstueck o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.endet IS NULL - WHERE o.endet IS NULL AND coalesce(t.signaturnummer,'4111') IN (CASE WHEN :alkis_fnbruch THEN '4111' ELSE NULL END,'4115','4123') AND coalesce(o.nenner,'0')<>'0' - ) AS bruchstrich0 WHERE lenz>0 AND lenn>0 -) AS bruchstrich1; - --- Zuordnungspfeile -SELECT 'Erzeuge Zuordnungspfeile...'; -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - o.gml_id, - 'Flurstücke' AS thema, - 'ax_flurstueck_zuordnung' AS layer, - st_multi(l.wkb_geometry) AS line, - CASE WHEN o.abweichenderrechtszustand='true' THEN 2005 ELSE 2004 END AS signaturnummer, - coalesce(l.advstandardmodell||l.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_flurstueck o -JOIN ap_lpo l ON ARRAY[o.gml_id] <@ l.dientzurdarstellungvon AND l.endet IS NULL - -- AND l.art='Pfeil' -- art in RP nicht immer gesetzt -WHERE o.endet IS NULL; - --- Überhaken -SELECT 'Erzeuge Überhaken...'; -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Flurstücke' AS thema, - 'ax_flurstueck' AS layer, - st_multi(p.wkb_geometry) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - CASE WHEN o.abweichenderrechtszustand='true' THEN 3011 ELSE 3010 END AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_flurstueck o -JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='Haken' AND p.endet IS NULL -WHERE o.endet IS NULL; - --- --- Besondere Flurstücksgrenzen (11002) --- - -SELECT 'Besondere Flurstücksgrenzen werden verarbeitet.'; - --- Strittige Grenze -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - o.gml_id AS gml_id, - 'Flurstücke' AS thema, - 'ax_besondereflurstuecksgrenze' AS layer, - st_multi(o.wkb_geometry) AS line, - CASE - WHEN a.abweichenderrechtszustand='true' AND b.abweichenderrechtszustand='true' THEN 2007 - ELSE 2006 END AS signaturnummer, - coalesce( - o.advstandardmodell||o.sonstigesmodell, - a.advstandardmodell||a.sonstigesmodell||b.advstandardmodell||b.sonstigesmodell - ) AS modell -FROM ax_besondereflurstuecksgrenze o -JOIN ax_flurstueck a ON o.wkb_geometry && a.wkb_geometry AND st_intersects(o.wkb_geometry,a.wkb_geometry) AND a.endet IS NULL -JOIN ax_flurstueck b ON o.wkb_geometry && b.wkb_geometry AND st_intersects(o.wkb_geometry,b.wkb_geometry) AND b.endet IS NULL -WHERE ARRAY[1000] <@ artderflurstuecksgrenze AND a.ogc_fid9500 AND p.endet IS NULL; - -/* -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - p.gml_id, - 'Flurstücke' AS thema, - 'ax_grenzpunkt' AS layer, - st_multi(st_force2d(o.wkb_geometry)) AS point, - 0 AS drehwinkel, - CASE abmarkung_marke - WHEN 9600 THEN 3022 - WHEN 9998 THEN 3024 - ELSE 3020 - END AS signaturnummer, - o.advstandardmodell||o.sonstigesmodell|| - p.advstandardmodell||p.sonstigesmodell AS modell -FROM ax_grenzpunkt p -JOIN ax_punktortau o ON ARRAY[p.gml_id] <@ o.istteilvon AND o.endet IS NULL -WHERE abmarkung_marke<>9500 AND p.endet IS NULL; -*/ - -UPDATE po_points - SET signaturnummer=CASE signaturnummer - WHEN '3022' THEN '3023' - WHEN '3024' THEN '3025' - ELSE '3021' - END - FROM ax_flurstueck f - WHERE layer='ax_grenzpunkt' - AND f.endet IS NULL - AND f.abweichenderrechtszustand='true' - AND po_points.point && f.wkb_geometry - AND st_intersects(po_points.point,f.wkb_geometry); - --- Grenzpunktnummern -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - p.gml_id, - 'Flurstücke' AS thema, - 'ax_grenzpunkt' AS layer, - coalesce(t.wkb_geometry,st_translate(o.wkb_geometry,1.06,1.06)) AS point, - besonderePunktnummer AS text, - coalesce( - d.signaturnummer, - t.signaturnummer, - CASE - WHEN NOT EXISTS (SELECT * FROM po_points f WHERE f.point=o.wkb_geometry AND layer='ax_grenzpunkt' AND signaturnummer IN ('3021','3023','3025')) - THEN '4071' - ELSE '4072' - END - ) AS signaturnummer, - t.drehwinkel, - coalesce(t.horizontaleausrichtung,'linksbündig'::text), - coalesce(t.vertikaleausrichtung, 'Basis'::text), - t.skalierung, t.fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,p.advstandardmodell||p.sonstigesmodell||o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_grenzpunkt p -JOIN ax_punktortta o ON ARRAY[p.gml_id] <@ o.istteilvon AND o.endet IS NULL -LEFT OUTER JOIN ap_pto t ON ARRAY[p.gml_id] <@ t.dientzurdarstellungvon AND t.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[p.gml_id] <@ d.dientzurdarstellungvon AND d.endet IS NULL -WHERE coalesce(besonderePunktnummer,'')<>'' AND p.endet IS NULL; - --- --- Lagebezeichnung ohne Hausnummer (12001) --- - -SELECT 'Lagebezeichnungen werden verarbeitet.'; - --- Flurnummer -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Lagebezeichnungen' AS thema, - 'ax_gemarkungsteilflur' AS layer, - t.wkb_geometry AS point, - coalesce(schriftinhalt,CASE WHEN bezeichnung LIKE 'Flur %' THEN bezeichnung ELSE 'Flur '||bezeichnung END) AS text, - coalesce(t.signaturnummer,'4200') AS signaturnummer, - t.drehwinkel, t.horizontaleausrichtung, t.vertikaleausrichtung, t.skalierung, t.fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_gemarkungsteilflur o -JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BEZ' AND t.endet IS NULL -WHERE coalesce(t.schriftinhalt,'')<>'Flur 0' AND o.endet IS NULL; - --- Gemarkungsnamen (RP) -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Lagebezeichnungen' AS thema, - 'ax_gemarkung' AS layer, - t.wkb_geometry AS point, - coalesce(t.schriftinhalt,o.bezeichnung) AS text, - coalesce(t.signaturnummer,'4200') AS signaturnummer, - t.drehwinkel, t.horizontaleausrichtung, t.vertikaleausrichtung, t.skalierung, t.fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_gemarkung o -JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BEZ' AND t.endet IS NULL AND schriftinhalt IS NOT NULL -WHERE o.endet IS NULL AND o.gml_id LIKE 'DERP%'; - --- Gemarkungsnamen (RP) -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Lagebezeichnungen' AS thema, - 'ax_gemeinde' AS layer, - t.wkb_geometry AS point, - coalesce(t.schriftinhalt,o.bezeichnung) AS text, - coalesce(t.signaturnummer,'4200') AS signaturnummer, - t.drehwinkel, t.horizontaleausrichtung, t.vertikaleausrichtung, t.skalierung, t.fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_gemeinde o -JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BEZ' AND t.endet IS NULL AND schriftinhalt IS NOT NULL -WHERE o.endet IS NULL AND o.gml_id LIKE 'DERP%'; - -SELECT 'Lagebezeichnungen ohne Hausnummer werden verarbeitet.'; - --- Lagebezeichnung Ortsteil -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Lagebezeichnungen' AS thema, - 'ax_lagebezeichnungohnehausnummer' AS layer, - t.wkb_geometry AS point, - schriftinhalt AS text, - coalesce(t.signaturnummer,'4160') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_lagebezeichnungohnehausnummer o -JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='Ort' AND t.endet IS NULL -WHERE coalesce(schriftinhalt,'')<>'' AND o.endet IS NULL; - --- Lagebezeichnungen --- ohne Hausnummer bei Punkt --- Gewanne -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Lagebezeichnungen' AS thema, - 'ax_lagebezeichnungohnehausnummer' AS layer, - t.wkb_geometry AS point, - coalesce( - schriftinhalt, - unverschluesselt, - (SELECT bezeichnung FROM ax_lagebezeichnungkatalogeintrag WHERE schluesselgesamt=to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage ORDER BY beginnt DESC LIMIT 1), - '(Lagebezeichnung zu '''||to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage||''' fehlt)' - ) AS text, - coalesce(t.signaturnummer,'4206') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_lagebezeichnungohnehausnummer o -JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='Gewanne' AND t.endet IS NULL -WHERE o.endet IS NULL; - --- Straße/Weg -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Lagebezeichnungen' AS thema, - 'ax_lagebezeichnungohnehausnummer' AS layer, - t.wkb_geometry AS point, - coalesce( - schriftinhalt, - unverschluesselt, - (SELECT bezeichnung FROM ax_lagebezeichnungkatalogeintrag WHERE schluesselgesamt=to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage ORDER BY beginnt DESC LIMIT 1), - '(Lagebezeichnung zu '''||to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage||''' fehlt)' - ) AS text, - coalesce(t.signaturnummer,'4107') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_lagebezeichnungohnehausnummer o -JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art IN ('Strasse','Weg') AND t.endet IS NULL -WHERE o.endet IS NULL; - --- Platz/Bahnverkehr -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Lagebezeichnungen' AS thema, - 'ax_lagebezeichnungohnehausnummer' AS layer, - t.wkb_geometry AS point, - coalesce( - schriftinhalt, - unverschluesselt, - (SELECT bezeichnung FROM ax_lagebezeichnungkatalogeintrag WHERE schluesselgesamt=to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage ORDER BY beginnt DESC LIMIT 1), - '(Lagebezeichnung zu '''||to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage||''' fehlt)' - ) AS text, - coalesce(t.signaturnummer,'4141') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_lagebezeichnungohnehausnummer o -JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art IN ('Platz','Bahnverkehr') AND t.endet IS NULL -WHERE o.endet IS NULL; - --- Fließgewässer/Stehendes Gewässer -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Gewässer' AS thema, - 'ax_lagebezeichnungohnehausnummer' AS layer, - t.wkb_geometry AS point, - coalesce( - schriftinhalt, - unverschluesselt, - (SELECT bezeichnung FROM ax_lagebezeichnungkatalogeintrag WHERE schluesselgesamt=to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage ORDER BY beginnt DESC LIMIT 1), - '(Lagebezeichnung zu '''||to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage||''' fehlt)' - ) AS text, - coalesce(signaturnummer,'4117') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_lagebezeichnungohnehausnummer o -JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art IN ('Fliessgewaesser','StehendesGewaesser') AND t.endet IS NULL -WHERE o.endet IS NULL; - --- ohne Hausnummer auf Linie --- Straße/Weg, Text auf Linie -INSERT INTO po_labels(gml_id,thema,layer,line,text,signaturnummer,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Lagebezeichnungen' AS thema, - 'ax_lagebezeichnungohnehausnummer' AS layer, - t.wkb_geometry AS line, - coalesce( - schriftinhalt, - unverschluesselt, - (SELECT bezeichnung FROM ax_lagebezeichnungkatalogeintrag WHERE schluesselgesamt=to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage ORDER BY beginnt DESC LIMIT 1), - '(Lagebezeichnung zu '''||to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage||''' fehlt)' - ) AS text, - 4107 AS signaturnummer, - horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_lagebezeichnungohnehausnummer o -JOIN ap_lto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art IN ('Strasse','Weg') AND t.endet IS NULL AND coalesce(t.signaturnummer,'')<>'6000' -WHERE o.endet IS NULL; - --- Platz/Bahnverkehr, Text auf Linien -INSERT INTO po_labels(gml_id,thema,layer,line,text,signaturnummer,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Lagebezeichnungen' AS thema, - 'ax_lagebezeichnungohnehausnummer' AS layer, - t.wkb_geometry AS line, - coalesce( - schriftinhalt, - unverschluesselt, - (SELECT bezeichnung FROM ax_lagebezeichnungkatalogeintrag WHERE schluesselgesamt=to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage ORDER BY beginnt DESC LIMIT 1), - '(Lagebezeichnung zu '''||to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage||''' fehlt)' - ) AS text, - 4141 AS signaturnummer, - horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_lagebezeichnungohnehausnummer o -JOIN ap_lto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art IN ('Platz','Bahnverkehr') AND t.endet IS NULL AND coalesce(t.signaturnummer,'')<>'6000' -WHERE o.endet IS NULL; - --- Fließgewässer/Stehendes Gewässer, Text auf Linien -INSERT INTO po_labels(gml_id,thema,layer,line,text,signaturnummer,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Gewässer' AS thema, - 'ax_lagebezeichnungohnehausnummer' AS layer, - t.wkb_geometry AS line, - coalesce( - schriftinhalt, - unverschluesselt, - (SELECT bezeichnung FROM ax_lagebezeichnungkatalogeintrag WHERE schluesselgesamt=to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage ORDER BY beginnt DESC LIMIT 1), - '(Lagebezeichnung zu '''||to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage||''' fehlt)' - ) AS text, - coalesce(t.signaturnummer,'4117') AS signaturnummer, - horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_lagebezeichnungohnehausnummer o -JOIN ap_lto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art IN ('Fliessgewaesser','StehendesGewaesser') AND t.endet IS NULL -WHERE o.endet IS NULL; - --- Sonstige Beschriftungen ohne art (kommen z.B. in DEHE vor) -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Lagebezeichnungen' AS thema, - 'ax_lagebezeichnungohnehausnummer' AS layer, - t.wkb_geometry AS point, - schriftinhalt AS text, - t.signaturnummer AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_lagebezeichnungohnehausnummer o -JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.endet IS NULL AND t.art IS NULL AND schriftinhalt IS NOT NULL AND t.signaturnummer IS NOT NULL -WHERE o.endet IS NULL; - - --- --- Lagebezeichnung mit Hausnummer (12002) --- - -SELECT 'Lagebezeichnungen mit Hausnummer werden verarbeitet.'; - --- mit Hausnummer, Ortsteil -SELECT 'Lagebezeichnungen mit Hausnummer, Ortsteil verarbeitet.'; -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Gebäude' AS thema, - 'ax_lagebezeichnungmithausnummer' AS layer, - t.wkb_geometry AS point, - schriftinhalt AS text, - coalesce(t.signaturnummer,'4160') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_lagebezeichnungmithausnummer o -JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.endet IS NULL AND t.art='Ort' -WHERE coalesce(schriftinhalt,'')<>'' AND o.endet IS NULL; - --- mit Hausnummer (bezieht sich auf Gebäude, Turm oder Flurstück) -SELECT 'Gebäudehausnummern...'; - -CREATE TEMPORARY TABLE po_zeigtauf_hausnummer( - zeigtauf character(16) PRIMARY KEY, - wkb_geometry GEOMETRY, - prefix varchar -); - -INSERT INTO po_zeigtauf_hausnummer - SELECT - zeigtauf, wkb_geometry, prefix - FROM ( - SELECT DISTINCT - unnest(zeigtauf) AS zeigtauf, wkb_geometry, '' AS prefix - FROM ax_turm z - JOIN ax_lagebezeichnungmithausnummer lmh ON ARRAY[lmh.gml_id] <@ z.zeigtAuf AND lmh.endet IS NULL - WHERE z.endet IS NULL - ) AS z; - -ANALYZE po_zeigtauf_hausnummer; - -INSERT INTO po_zeigtauf_hausnummer - SELECT - zeigtauf, wkb_geometry, prefix - FROM ( - SELECT DISTINCT - unnest(zeigtauf) AS zeigtauf, wkb_geometry, '' AS prefix - FROM ax_gebaeude z - JOIN ax_lagebezeichnungmithausnummer lmh ON ARRAY[lmh.gml_id] <@ z.zeigtAuf AND lmh.endet IS NULL - WHERE z.endet IS NULL - ) AS z - WHERE NOT EXISTS (SELECT h.zeigtauf FROM po_zeigtauf_hausnummer h WHERE h.zeigtauf=z.zeigtauf); - -ANALYZE po_zeigtauf_hausnummer; - -INSERT INTO po_zeigtauf_hausnummer - SELECT - zeigtauf, wkb_geometry, prefix - FROM ( - SELECT - unnest(zeigtauf) AS zeigtauf, wkb_geometry, 'HsNr. ' AS prefix - FROM ax_flurstueck z - JOIN ax_lagebezeichnungmithausnummer lmh ON ARRAY[lmh.gml_id] <@ z.zeigtAuf AND lmh.endet IS NULL - WHERE z.endet IS NULL - ) AS z - WHERE NOT EXISTS (SELECT h.zeigtauf FROM po_zeigtauf_hausnummer h WHERE h.zeigtauf=z.zeigtauf); - -ANALYZE po_zeigtauf_hausnummer; - -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Gebäude' AS thema, - 'ax_lagebezeichnungmithausnummer' AS layer, - (po).p AS point, - text, signaturnummer, - (po).a AS drehwinkel, - horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell -FROM ( - SELECT - o.gml_id, - alkis_pnr3002(o.gml_id, tx.wkb_geometry, drehwinkel, o.land, o.regierungsbezirk, o.kreis, o.gemeinde, o.lage, gt.wkb_geometry) AS po, - coalesce(tx.schriftinhalt,gt.prefix||o.hausnummer) AS text, - coalesce(d.signaturnummer,tx.signaturnummer,'4070') AS signaturnummer, - horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(tx.advstandardmodell||tx.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_lagebezeichnungmithausnummer o - JOIN po_zeigtauf_hausnummer gt ON o.gml_id=gt.zeigtauf - LEFT OUTER JOIN ap_pto tx ON ARRAY[o.gml_id] <@ tx.dientzurdarstellungvon AND tx.endet IS NULL AND tx.art='HNR' - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.endet IS NULL AND d.art='HNR' - WHERE o.endet IS NULL -) AS foo; - --- Sonstige Hausnummern ohne art (kommen z.B. in DEHE vor) -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Gebäude' AS thema, - 'ax_lagebezeichnungmithausnummer' AS layer, - tx.wkb_geometry AS point, - coalesce(tx.schriftinhalt,o.hausnummer) AS text, - coalesce(tx.signaturnummer,'4070') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(tx.advstandardmodell||tx.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_lagebezeichnungmithausnummer o -JOIN ap_pto tx ON ARRAY[o.gml_id] <@ tx.dientzurdarstellungvon AND tx.endet IS NULL AND tx.art IS NULL -WHERE o.endet IS NULL; - --- --- Lagebezeichnung mit Pseudonummer (12003) --- - -SELECT 'Lagebezeichnungen mit Pseudonummer werden verarbeitet.'; - -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - thema, - 'ax_lagebezeichnungmitpseudonummer' AS layer, - (po).p AS point, - text, - signaturnummer, - (po).a AS drehwinkel, - horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell -FROM ( - SELECT - o.gml_id, - CASE WHEN laufendenummer IS NULL THEN 'Lagebezeichnungen' ELSE 'Gebäude' END AS thema, - alkis_pnr3002(o.gml_id, t.wkb_geometry, drehwinkel, o.land, o.regierungsbezirk, o.kreis, o.gemeinde, o.lage, g.wkb_geometry) AS po, - coalesce('('||laufendenummer||')','P'||pseudonummer) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, - horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_lagebezeichnungmitpseudonummer o - JOIN ax_gebaeude g ON g.gehoertzu=o.gml_id AND g.endet IS NULL - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.endet IS NULL AND t.art='PNR' - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.endet IS NULL AND d.art='PNR' - WHERE o.endet IS NULL -) AS foo; - --- Lagebezeichnung mit Pseudonummer, Ortsteil -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Lagebezeichnungen' AS thema, - 'ax_lagebezeichnungmitpseudonummer' AS layer, - t.wkb_geometry AS point, - schriftinhalt AS text, - coalesce(t.signaturnummer,'4160') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_lagebezeichnungmitpseudonummer o -JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.endet IS NULL AND t.art='Ort' AND schriftinhalt IS NOT NULL -WHERE o.endet IS NULL; - - --- --- Gebäude (31001) --- - -SELECT 'Gebäude werden verarbeitet.'; - --- Gebäudeflächen (Signaturnummer = 2XXX oder 2XXX1XXX) -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Gebäude' AS thema, - 'ax_gebaeude' AS layer, - polygon, - signaturnummer, - modell -FROM ( - SELECT - gml_id, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN gfk='1XXX' THEN - CASE - WHEN NOT hoh AND NOT verfallen AND ofl=0 THEN 25051301 - WHEN hoh AND NOT verfallen AND ofl=0 THEN 26231301 - WHEN hoh AND verfallen AND ofl IN (0,1400) THEN 2030 - WHEN hoh AND NOT verfallen AND ofl=1400 THEN 20301301 - WHEN NOT hoh AND verfallen AND ofl IN (0,1400) THEN 2031 - WHEN NOT hoh AND NOT verfallen AND ofl=1400 THEN 20311301 - WHEN NOT hoh AND ofl=1200 THEN 2032 - END - WHEN gfk='2XXX' THEN - CASE - WHEN NOT hoh AND NOT verfallen AND ofl=0 THEN - CASE - WHEN baw=0 THEN 25051304 - WHEN baw<>4000 THEN 25051304 - WHEN baw=4000 THEN 20311304 - END - WHEN hoh AND NOT verfallen AND ofl=0 THEN 26231304 - WHEN hoh AND verfallen AND ofl IN (0,1400) THEN 2030 - WHEN hoh AND NOT verfallen AND ofl=1400 THEN 20301304 - WHEN hoh AND verfallen AND ofl IN (0,1400) THEN 2031 - WHEN NOT hoh AND NOT verfallen AND ofl=1400 THEN 20311304 - WHEN NOT hoh AND ofl=1200 THEN 2032 - END - WHEN gfk='3XXX' THEN - CASE - WHEN NOT hoh AND NOT verfallen AND ofl=0 THEN - CASE - WHEN baw=0 THEN 25051309 - WHEN baw<>4000 THEN 25051309 - WHEN baw=4000 THEN 20311309 - END - WHEN hoh AND NOT verfallen AND ofl=0 THEN 26231309 - WHEN hoh AND verfallen AND ofl IN (0,1400) THEN 2030 - WHEN hoh AND NOT verfallen AND ofl=1400 THEN 20301309 - WHEN NOT hoh AND verfallen AND ofl IN (0,1400) THEN 2031 - WHEN NOT hoh AND NOT verfallen AND ofl=1400 THEN 20311309 - WHEN NOT hoh AND ofl=1200 THEN 2032 - END - WHEN gfk='9998' THEN - CASE - WHEN NOT hoh AND NOT verfallen AND ofl=0 THEN 25051304 - WHEN hoh AND NOT verfallen AND ofl=0 THEN 26231304 - WHEN hoh AND verfallen AND ofl IN (0,1400) THEN 2030 - WHEN hoh AND NOT verfallen AND ofl=1400 THEN 20301304 - WHEN NOT hoh AND verfallen AND ofl IN (0,1400) THEN 2031 - WHEN NOT hoh AND NOT verfallen AND ofl=1400 THEN 20311304 - WHEN NOT hoh AND ofl=1200 THEN 2032 - END - END AS signaturnummer, - modell - FROM ( - SELECT - o.gml_id, - CASE - WHEN gebaeudefunktion BETWEEN 1000 AND 1999 THEN '1XXX' - WHEN gebaeudefunktion BETWEEN 2000 AND 2999 THEN '2XXX' - WHEN gebaeudefunktion BETWEEN 3000 AND 3999 THEN '3XXX' - ELSE gebaeudefunktion::text - END AS gfk, - coalesce(hochhaus,'false')='true' AS hoh, - coalesce(zustand,0) IN (2200,2300,3000,4000) AS verfallen, - coalesce(lagezurerdoberflaeche,0) AS ofl, - coalesce(bauweise,0) AS baw, - wkb_geometry, - o.advstandardmodell||o.sonstigesmodell AS modell - FROM ax_gebaeude o - WHERE o.endet IS NULL AND geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') - ) AS o -) AS o -WHERE NOT signaturnummer IS NULL; - --- Punktsymbole für Gebäude -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Gebäude' AS thema, - 'ax_gebaeude_funktion' AS layer, - st_multi(coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry))) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce(d.signaturnummer,p.signaturnummer,o.signaturnummer) AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell,o.modell) AS modell -FROM ( - SELECT - gml_id, - wkb_geometry, - CASE gebaeudefunktion - WHEN 2030 THEN '3300' - WHEN 2056 THEN '3338' - WHEN 2071 THEN '3302' - WHEN 2072 THEN '3303' - WHEN 2081 THEN '3305' - WHEN 2092 THEN '3306' - WHEN 2094 THEN '3308' - WHEN 2461 THEN '3309' WHEN 2462 THEN '3309' - WHEN 2465 THEN '3336' - WHEN 2523 THEN CASE WHEN gml_id LIKE 'DERP%' THEN 'RP3521' ELSE '3521' END - WHEN 2612 THEN '3311' - WHEN 3013 THEN '3312' - WHEN 3032 THEN '3314' - WHEN 3037 THEN '3315' - WHEN 3041 THEN '3316' -- TODO: PNR 1113? - WHEN 3042 THEN '3317' - WHEN 3043 THEN '3318' -- TODO: PNR 1113? - WHEN 3046 THEN '3319' - WHEN 3047 THEN '3320' - WHEN 3051 THEN '3321' WHEN 3052 THEN '3321' - WHEN 3065 THEN '3323' - WHEN 3071 THEN '3324' - WHEN 3072 THEN '3326' - WHEN 3094 THEN '3328' - WHEN 3095 THEN '3330' - WHEN 3097 THEN '3332' - WHEN 3221 THEN '3334' - WHEN 3290 THEN '3340' - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_gebaeude - WHERE endet IS NULL -) AS o -LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='GFK' AND p.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='GFK' AND d.endet IS NULL -WHERE NOT o.signaturnummer IS NULL; - --- Gebäudebeschriftungen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Gebäude' AS thema, - 'ax_gebaeude_funktion' AS layer, - point, - text, - signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell -FROM ( - SELECT - o.gml_id, - coalesce(n.wkb_geometry,t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce( - n.schriftinhalt, - t.schriftinhalt, - o.name, - CASE - WHEN gebaeudefunktion=3012 THEN 'Rathaus' -- TODO: 31001 GFK [3012]? - WHEN gebaeudefunktion=3014 THEN 'Zoll' - WHEN gebaeudefunktion=3015 AND name IS NULL AND n.schriftinhalt IS NULL THEN 'Gericht' -- TODO: 31001 GFK [3015]? - WHEN gebaeudefunktion=3021 AND name IS NULL AND n.schriftinhalt IS NULL THEN 'Schule' - WHEN gebaeudefunktion=3034 AND name IS NULL AND n.schriftinhalt IS NULL THEN 'Museum' -- TODO: 31001 GFK [3034]? - WHEN gebaeudefunktion=3091 AND name IS NULL AND n.schriftinhalt IS NULL THEN 'Bahnhof' - WHEN gebaeudefunktion=9998 THEN 'oF' - WHEN o.gml_id LIKE 'DERP%' THEN - CASE - WHEN gebaeudefunktion=2513 THEN 'Wbh' - WHEN gebaeudefunktion IN (3011,3016,3017,3019,3024,3031,3033,3035,3036,3061,3062,3073,3074,3075,3080,3081,3092,3242) THEN - (SELECT beschreibung FROM ax_gebaeudefunktion WHERE wert=gebaeudefunktion) - WHEN gebaeudefunktion=3022 THEN 'Schule' - WHEN gebaeudefunktion=3023 THEN 'Hochschule' - WHEN gebaeudefunktion=3038 THEN 'Burg' - WHEN gebaeudefunktion=3211 THEN 'Sporthalle' - END - END - ) AS text, - coalesce(d.signaturnummer,CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.signaturnummer ELSE n.signaturnummer END,'4070') AS signaturnummer, - CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.drehwinkel ELSE n.drehwinkel END AS drehwinkel, - CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.horizontaleausrichtung ELSE n.horizontaleausrichtung END AS horizontaleausrichtung, - CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.vertikaleausrichtung ELSE n.vertikaleausrichtung END AS vertikaleausrichtung, - CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.skalierung ELSE n.skalierung END AS skalierung, - CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.fontsperrung ELSE n.fontsperrung END AS fontsperrung, - coalesce( - t.advstandardmodell||t.sonstigesmodell||n.advstandardmodell||n.sonstigesmodell, - o.modell - ) AS modell - FROM ( - SELECT gml_id, wkb_geometry, gebaeudefunktion, unnest(coalesce(name,ARRAY[NULL])) AS name,advstandardmodell||sonstigesmodell AS modell - FROM ax_gebaeude - WHERE endet IS NULL - ) AS o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='GFK' AND t.endet IS NULL - LEFT OUTER JOIN ap_pto n ON ARRAY[o.gml_id] <@ n.dientzurdarstellungvon AND n.art='NAM' AND n.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art IN ('GFK','NAM') AND d.endet IS NULL -) AS o WHERE NOT text IS NULL; - --- Weitere Gebäudefunktion -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Gebäude' AS thema, - 'ax_gebaeude_funktion' AS layer, - st_multi(coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry))) AS point, - p.drehwinkel, - coalesce(d.signaturnummer,p.signaturnummer,o.signaturnummer) AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.modell) AS modell -FROM ( - SELECT - o.gml_id, - wkb_geometry, - CASE gebaeudefunktion - WHEN 1000 THEN '3300' - WHEN 1010 THEN '3302' - WHEN 1020 THEN '3303' - WHEN 1030 THEN '3305' - WHEN 1040 THEN '3306' - WHEN 1050 THEN '3308' - WHEN 1060 THEN '3336' - WHEN 1070 THEN '3309' - WHEN 1080 THEN '3311' - WHEN 1090 THEN '3112' - WHEN 1110 THEN '3314' - WHEN 1130 THEN '3315' - WHEN 1140 THEN '3318' -- TODO: Kapelle PNR 1113? - WHEN 1150 THEN '3319' - WHEN 1160 THEN '3320' - WHEN 1170 THEN '3338' - WHEN 1180 THEN '3324' - WHEN 1190 THEN '3321' - WHEN 1200 THEN '3340' - WHEN 1210 THEN '3323' - WHEN 1220 THEN '3324' - END AS signaturnummer, - modell - FROM ( - SELECT - gml_id, - wkb_geometry, - unnest(weiteregebaeudefunktion) AS gebaeudefunktion, - advstandardmodell||sonstigesmodell AS modell - FROM ax_gebaeude - WHERE NOT weiteregebaeudefunktion IS NULL AND endet IS NULL - ) AS o -) AS o -LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='GFK' AND p.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='GFK' AND d.endet IS NULL -WHERE NOT o.signaturnummer IS NULL; - --- Weitere Gebäudefunktionsbeschriftungen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Gebäude' AS thema, - 'ax_gebaeude_funktion' AS layer, - point, - text, - signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - CASE - WHEN gebaeudefunktion=1100 AND coalesce(name,n.schriftinhalt) IS NULL THEN 'Zoll' - WHEN gebaeudefunktion=1129 AND coalesce(name,n.schriftinhalt) IS NULL THEN 'Museum' -- TODO: 31001 GFK [3034]? - END AS text, - CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.drehwinkel ELSE n.drehwinkel END AS drehwinkel, - coalesce(d.signaturnummer,CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.signaturnummer ELSE n.signaturnummer END,'4070') AS signaturnummer, - CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.horizontaleausrichtung ELSE n.horizontaleausrichtung END AS horizontaleausrichtung, - CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.vertikaleausrichtung ELSE n.vertikaleausrichtung END AS vertikaleausrichtung, - CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.skalierung ELSE n.skalierung END AS skalierung, - CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.fontsperrung ELSE n.fontsperrung END AS fontsperrung, - coalesce( - t.advstandardmodell||t.sonstigesmodell||n.advstandardmodell||n.sonstigesmodell, - o.modell - ) AS modell - FROM ( - SELECT - gml_id, - wkb_geometry, - unnest(coalesce(name,ARRAY[NULL])) AS name, - unnest(weiteregebaeudefunktion) AS gebaeudefunktion, - advstandardmodell||sonstigesmodell AS modell - FROM ax_gebaeude o - WHERE endet IS NULL - ) AS o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='GFK' AND t.endet IS NULL - LEFT OUTER JOIN ap_pto n ON ARRAY[o.gml_id] <@ n.dientzurdarstellungvon AND n.art='NAM' AND n.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art IN ('NAM','GFK') AND d.endet IS NULL - WHERE NOT gebaeudefunktion IS NULL -) AS o -WHERE NOT text IS NULL; - -/* --- TODO: Gebäudenamen für weitere Funktionen (Mehrere Namen? Und Funktionen? Gleich viele oder wie ist das zu kombinieren?) -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Gebäude' AS thema, - 'ax_gebaeude' AS layer, - unnest(coalesce(name,ARRAY[NULL])), - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.zaehler||'/'||o.nenner,o.zaehler::text) AS text, - coalesce(t.signaturnummer,CASE WHEN o.abweichenderrechtszustand='true' THEN 4112 ELSE 4111 END) AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_gebaeude o -LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ZAE_NEN' AND (t.signaturnummer IS NULL OR t.signaturnummer IN ('4122','4123')) AND t.endet IS NULL -WHERE NOT name IS NULL AND o.endet IS NULL; -*/ - --- Geschosszahl -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Gebäude' AS thema, - 'ax_gebaeude_geschosse' AS layer, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce( - trim(to_char(o.anzahlderoberirdischengeschosse,'RN'))||' / -'||trim(to_char(o.anzahlderunterirdischengeschosse,'RN')), - trim(to_char(o.anzahlderoberirdischengeschosse,'RN')), - '-'||trim(to_char(o.anzahlderunterirdischengeschosse,'RN')) - ) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_gebaeude o -LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='AOG_AUG' AND t.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='AOG_AUG' AND d.endet IS NULL -WHERE (NOT anzahlderoberirdischengeschosse IS NULL OR NOT anzahlderunterirdischengeschosse IS NULL) AND o.endet IS NULL; - --- Dachform -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Gebäude' AS thema, - 'ax_gebaeude_dachform' AS layer, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - CASE dachform - WHEN 1000 THEN 'F' - WHEN 2100 THEN 'P' - WHEN 2200 THEN 'VP' - WHEN 3100 THEN 'S' - WHEN 3200 THEN 'W' - WHEN 3300 THEN 'KW' - WHEN 3400 THEN 'M' - WHEN 3500 THEN 'Z' - WHEN 3600 THEN 'KE' - WHEN 3700 THEN 'KU' - WHEN 3800 THEN 'SH' - WHEN 3900 THEN 'B' - WHEN 4000 THEN 'T' - WHEN 5000 THEN 'MD' - WHEN 9999 THEN 'SD' - END AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_gebaeude o -LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='DAF' AND t.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='DAF' AND d.endet IS NULL -WHERE NOT dachform IS NULL AND o.endet IS NULL; - --- Gebäudezustände -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Gebäude' AS thema, - 'ax_gebaeude_zustand' AS layer, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce( - t.schriftinhalt, - CASE zustand - WHEN 2200 THEN '(zerstört)' - WHEN 2300 THEN '(teilweise zerstört)' - WHEN 3000 THEN '(geplant)' - WHEN 4000 THEN '(im Bau)' - END) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(o.advstandardmodell||o.sonstigesmodell,t.advstandardmodell||t.sonstigesmodell) AS modell -FROM ax_gebaeude o -LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ZUS' AND t.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ZUS' AND d.endet IS NULL -WHERE zustand IN (2200,2300,3000,4000) AND o.endet IS NULL; - - --- --- Gebäudeteil (31002) --- - -SELECT 'Gebäudeteile werden verarbeitet.'; - --- Gebäudeteile (Bauteil) -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Gebäude' AS thema, - 'ax_bauteil' AS layer, - polygon, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN bat=1100 AND ofl=0 THEN 2507 - WHEN bat=1100 AND ofl=1400 THEN 2508 - WHEN bat=1200 AND ofl=0 THEN 2507 - WHEN bat=1200 AND ofl=1400 THEN 2508 - WHEN bat=1300 AND ofl=0 THEN 2509 - WHEN bat=1300 AND ofl=1400 THEN 2511 - WHEN bat=1400 AND ofl=0 THEN 2507 - WHEN bat=1400 AND ofl=1400 THEN 2508 - WHEN bat=2000 AND ofl=0 THEN 2507 - WHEN bat=2000 AND ofl=1200 THEN 2512 - WHEN bat=2100 AND ofl=0 THEN 2507 - WHEN bat=2100 AND ofl=1200 THEN 2512 - WHEN bat IN (2300,2350,2400,2500,2510,2520,2610,2620) THEN 2507 - WHEN bat=2710 THEN 2513 - WHEN bat=2720 THEN 2514 - WHEN bat=9999 AND ofl=0 THEN 2507 - WHEN bat=9999 AND ofl=1400 THEN 2508 - END AS signaturnummer, - modell - FROM ( - SELECT - gml_id, - bauart AS bat, - coalesce(lagezurerdoberflaeche,0) AS ofl, - wkb_geometry, - advstandardmodell||sonstigesmodell AS modell - FROM ax_bauteil - WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL - ) AS o -) AS o WHERE NOT signaturnummer IS NULL; - --- Gebäudeteilsymbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Gebäude' AS thema, - 'ax_bauteil_funktion' AS layer, - st_multi(coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry))) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce(d.signaturnummer,p.signaturnummer,'3336') AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_bauteil o -LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='BAT' AND p.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BAT' AND d.endet IS NULL -WHERE bauart=2100 AND o.endet IS NULL; - --- Gebäudeteildachform -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Gebäude' AS thema, - 'ax_bauteil_dachform' AS layer, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - CASE dachform - WHEN 1000 THEN 'F' - WHEN 2100 THEN 'P' - WHEN 2200 THEN 'VP' - WHEN 3100 THEN 'S' - WHEN 3200 THEN 'W' - WHEN 3300 THEN 'KW' - WHEN 3400 THEN 'M' - WHEN 3500 THEN 'Z' - WHEN 3600 THEN 'KE' - WHEN 3700 THEN 'KU' - WHEN 3800 THEN 'SH' - WHEN 3900 THEN 'B' - WHEN 4000 THEN 'T' - WHEN 5000 THEN 'MD' - WHEN 9999 THEN 'SD' - END AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_bauteil o -LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='DAF' AND t.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='DAF' AND d.endet IS NULL -WHERE NOT dachform IS NULL AND o.endet IS NULL; - --- Gebäudeteil, oberirdische Geschosse -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Gebäude' AS thema, - 'ax_bauteil_geschosse' AS layer, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - trim(to_char(o.anzahlderoberirdischengeschosse,'RN')) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_bauteil o -LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='AOG' AND t.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='AOG' AND d.endet IS NULL -WHERE NOT anzahlderoberirdischengeschosse IS NULL AND o.endet IS NULL; - --- Besondere Gebäudelinien -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - gml_id, - 'Gebäude' AS thema, - 'ax_besonderegebaeudelinie' AS layer, - st_multi(wkb_geometry) AS line, - 2305 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_besonderegebaeudelinie -WHERE ARRAY[1000] <@ beschaffenheit AND endet IS NULL; - -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - gml_id, - 'Gebäude' AS thema, - 'ax_besonderegebaeudelinie' AS layer, - st_multi(wkb_geometry) AS line, - 2302 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_besonderegebaeudelinie -WHERE ARRAY[4000] <@ beschaffenheit AND endet IS NULL; - -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - gml_id, - 'Gebäude' AS thema, - 'ax_firstlinie' AS layer, - st_multi(wkb_geometry) AS line, - 2303 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_firstlinie -WHERE endet IS NULL; - - --- --- Tatsächliche Nutzung (41008) --- - -SELECT 'Tatsächliche Nutzungen werden verarbeitet.'; - --- --- Wohnbauflächen --- - --- Wohnbauflächen, Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Wohnbauflächen' AS thema, - 'ax_wohnbauflaeche' AS layer, - st_multi(wkb_geometry) AS polygon, - 25151401 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_wohnbauflaeche -WHERE endet IS NULL; - -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Wohnbauflächen' AS thema, - 'ax_wohnbauflaeche' AS layer, - point, - text, - signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_wohnbauflaeche o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS n WHERE NOT text IS NULL; - - --- --- Industrie- und Gewerbefläche (41002) --- - --- Industrie- und Gewerbefläche, Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_industrieundgewerbeflaeche' AS layer, - st_multi(wkb_geometry) AS polygon, - 25151403 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_industrieundgewerbeflaeche -WHERE endet IS NULL; - --- Industrie- und Gewerbefläche, Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_industrieundgewerbeflaeche' AS layer, - point, - text, - signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_industrieundgewerbeflaeche o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS i WHERE NOT text IS NULL; - --- Industrie- und Gewerbefläche, Funktionen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_industrieundgewerbeflaeche' AS layer, - point, - text, - signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_translate(st_centroid(o.wkb_geometry),0,-7)) AS point, - CASE - WHEN funktion=1740 THEN - CASE - WHEN coalesce(lagergut,0) IN (0,9999) THEN - coalesce( - schriftinhalt, - (select beschreibung from ax_funktion_industrieundgewerbeflaeche where wert=funktion) - ) - ELSE - coalesce( - schriftinhalt, - (select beschreibung from ax_funktion_industrieundgewerbeflaeche where wert=funktion) - || E'\n(' - || (select beschreibung from ax_lagergut_industrieundgewerbeflaeche where wert=lagergut) - || ')', - (select beschreibung from ax_funktion_industrieundgewerbeflaeche where wert=funktion) - ) - END - WHEN o.gml_id LIKE 'DERP%' AND funktion=2502 THEN 'Versorgungsanlage' - WHEN o.gml_id LIKE 'DERP%' AND funktion=2602 THEN 'Entsorgungsanlage' - WHEN o.gml_id LIKE 'DERP%' AND funktion=2623 THEN 'Schlamm' - WHEN funktion IN (2520,2522, 2550,2552, 2560,2562, 2580.2582, 2610,2612, 2620,2622, 2630, 2640 ) THEN - coalesce( - schriftinhalt, - (SELECT beschreibung FROM ax_funktion_industrieundgewerbeflaeche WHERE wert=funktion) - ) - WHEN funktion IN (2530,2532) THEN - coalesce( - schriftinhalt, - '(' || (SELECT beschreibung FROM ax_primaerenergie_industrieundgewerbeflaeche WHERE wert=primaerenergie) || ')' - ) - WHEN funktion IN (2570,2572) THEN - CASE - WHEN primaerenergie IS NULL THEN - coalesce( - schriftinhalt, - (SELECT beschreibung FROM ax_funktion_industrieundgewerbeflaeche WHERE wert=funktion) - ) - ELSE - coalesce( - schriftinhalt, - (SELECT beschreibung FROM ax_funktion_industrieundgewerbeflaeche WHERE wert=funktion) - || E'\n(' - || (SELECT beschreibung FROM ax_primaerenergie_industrieundgewerbeflaeche WHERE wert=primaerenergie) - || ')', - (SELECT beschreibung FROM ax_funktion_industrieundgewerbeflaeche WHERE wert=funktion) - ) - END - END AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4140') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_industrieundgewerbeflaeche o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='FKT' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS i WHERE NOT text IS NULL; - --- Industrie- und Gewerbefläche, Funktionssymbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_industrieundgewerbeflaeche' AS layer, - st_multi(point), - drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce( - d.signaturnummer, - p.signaturnummer, - CASE - WHEN funktion=1730 THEN '3401' - WHEN funktion=2510 THEN '3402' - WHEN funktion IN (2530,2432) THEN '3403' - WHEN funktion=2540 THEN '3404' - END - ) AS signaturnummer, - coalesce( - p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell - FROM ax_industrieundgewerbeflaeche o - LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='FKT' AND p.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o -WHERE NOT signaturnummer IS NULL; - --- --- Halde (41003) --- - --- Halde, Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_halde' AS layer, - st_multi(wkb_geometry) AS polygon, - 25151403 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_halde -WHERE endet IS NULL; - --- Halde, Texte -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_halde' AS layer, - point, - text, - signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce( - schriftinhalt, - E'Halde\n(' || (SELECT beschreibung FROM ax_lagergut_halde WHERE wert=lagergut) ||')', - 'Halde' - ) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4140') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_halde o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='Halde_LGT' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='Halde_LGT' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o -WHERE NOT text IS NULL; - --- Halde, Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_halde' AS layer, - point, - text, - signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_halde o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o WHERE NOT text IS NULL; - --- --- Bergbaubetrieb (41004) --- - --- Bergbaubetrieb, Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_bergbaubetrieb' AS layer, - st_multi(wkb_geometry) AS polygon, - 25151403 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_bergbaubetrieb -WHERE endet IS NULL; - --- Bergbaubetrieb, Zustandssymbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_bergbaubetrieb' AS layer, - st_multi(point), - drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce(d.signaturnummer,p.signaturnummer,CASE WHEN zustand=2100 THEN '3406' ELSE '3505' END) AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_bergbaubetrieb o - LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='ZUS' AND p.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ZUS' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS b; - --- Bergbaubetrieb, Anschrieb Abbaugut -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_bergbaubetrieb' AS layer, - point, - text, - signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce( - schriftinhalt, - E'(' || (SELECT beschreibung FROM ax_abbaugut_bergbaubetrieb WHERE wert=abbaugut) ||')' - ) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_bergbaubetrieb o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='AGT' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='AGT' AND d.endet IS NULL - WHERE NOT abbaugut IS NULL AND o.endet IS NULL -) AS b -WHERE NOT text IS NULL; - --- Bergbaubetrieb, Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_bergbaubetrieb' AS layer, - point, - text, - signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_bergbaubetrieb o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS h WHERE NOT text IS NULL; - - --- --- Tagebau (41005) --- - --- Tagebau, Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_tagebaugrubesteinbruch' AS layer, - st_multi(wkb_geometry) AS polygon, - CASE WHEN abbaugut=4010 THEN 25151404 ELSE 25151403 END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_tagebaugrubesteinbruch -WHERE endet IS NULL; - - --- Tagebau, Anschrieb Abbaugut -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_tagebaugrubesteinbruch' AS layer, - point, - text, - signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_translate(st_centroid(o.wkb_geometry),0,-7)) AS point, - coalesce( - schriftinhalt, - E'(' || (SELECT beschreibung FROM ax_abbaugut_tagebaugrubesteinbruch WHERE wert=abbaugut) ||')', - CASE WHEN abbaugut=4100 THEN '(Torfstich)' ELSE NULL END - ) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_tagebaugrubesteinbruch o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='AGT' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='AGT' AND d.endet IS NULL - WHERE NOT abbaugut IS NULL AND o.endet IS NULL -) AS b -WHERE NOT text IS NULL; - --- Tagebau, Symbol -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_tagebaugrubesteinbruch' AS layer, - st_multi(coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry))) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce(d.signaturnummer,p.signaturnummer,'3407') AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_tagebaugrubesteinbruch o -LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='FKT' AND p.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL -WHERE o.endet IS NULL; - --- Tagebau, Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_tagebaugrubesteinbruch' AS layer, - point, - text, - signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_tagebaugrubesteinbruch o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o WHERE NOT text IS NULL; - - --- --- Fläche gemischter Nutzung (41006) --- - --- Fläche gemischter Nutzung -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_flaechegemischternutzung' AS layer, - st_multi(wkb_geometry) AS polygon, - 25151401 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_flaechegemischternutzung; - --- Name, Fläche gemischter Nutzung -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_flaechegemischternutzung' AS layer, - point, - text, - signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_flaechegemischternutzung o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS n WHERE NOT text IS NULL; - - --- --- Fläche besonderer funktionaler Prägung (41007) --- - --- Fläche besonderer funktionaler Prägung -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_flaechebesondererfunktionalerpraegung' AS layer, - st_multi(wkb_geometry) AS polygon, - 25151401 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_flaechebesondererfunktionalerpraegung -WHERE endet IS NULL; - --- Name, Fläche besonderer funktionaler Prägung -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_flaechebesondererfunktionalerpraegung' AS layer, - point, - text, - signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_flaechebesondererfunktionalerpraegung o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o WHERE NOT text IS NULL; - --- Historische Anlagen (RP) -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_flaechebesondererfunktionalerpraegung' AS layer, - point, - text, - signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce( - t.schriftinhalt, - (SELECT beschreibung FROM ax_funktion_flaechebesondererfunktionalerpraegung WHERE wert=funktion) - ) AS text, - coalesce(t.signaturnummer,'4070') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_industrieundgewerbeflaeche o - JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='FKT' AND t.endet IS NULL - WHERE o.endet IS NULL AND funktion=1300 AND o.gml_id LIKE 'DERP%' -) AS i WHERE NOT text IS NULL; - --- --- Sport-, Freizeit- und Erholungsfläche (41008) --- - --- Sport-, Freizeit- und Erholungsfläche -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Sport und Freizeit' AS thema, - 'ax_sportfreizeitunderholungsflaeche' AS layer, - st_multi(wkb_geometry) AS polygon, - 25151405 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_sportfreizeitunderholungsflaeche -WHERE endet IS NULL; - - --- Anschrieb, Sport-, Freizeit- und Erholungsfläche -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Sport und Freizeit' AS thema, - 'ax_sportfreizeitunderholungsflaeche' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce( - t.schriftinhalt, - CASE - WHEN funktion IN (4100,4101) THEN 'Sportanlage' - WHEN funktion IN (4300,4301) THEN 'Erholungsfläche' - WHEN funktion IN (4320,4321) THEN 'Bad' - WHEN funktion IN (4110,4200,4230,4240,4250,4260,4270,4280,4290,4310,4450) THEN - (SELECT beschreibung FROM ax_funktion_sportfreizeitunderholungsflaeche WHERE wert=funktion) - WHEN o.gml_id LIKE 'DERP%' THEN - CASE - WHEN funktion IN (4120,4130,4140,4150,4160,4170,4230) THEN - (SELECT beschreibung FROM ax_funktion_sportfreizeitunderholungsflaeche WHERE wert=funktion) - WHEN funktion IS NULL THEN 'Sportfläche' - END - END - ) AS text, - coalesce(d.signaturnummer,t.signaturnummer,n.signaturnummer,'4140') AS signaturnummer, - t.drehwinkel,t.horizontaleausrichtung,t.vertikaleausrichtung,t.skalierung,t.fontsperrung, - coalesce( - t.advstandardmodell||t.sonstigesmodell||n.advstandardmodell||n.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell - FROM ax_sportfreizeitunderholungsflaeche o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='FKT' AND t.endet IS NULL - LEFT OUTER JOIN ap_pto n ON ARRAY[o.gml_id] <@ n.dientzurdarstellungvon AND n.art='NAM' AND n.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art IN ('NAM','FKT') AND d.endet IS NULL - WHERE name IS NULL AND n.schriftinhalt IS NULL AND o.endet IS NULL -) AS o -WHERE NOT text IS NULL; - --- Symbol, Sport-, Freizeit- und Erholungsfläche --- TODO: 3413/5, 3421 + PNR 1100 v 1101 -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Sport und Freizeit' AS thema, - 'ax_sportfreizeitunderholungsflaeche' AS layer, - st_multi(point), - drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - coalesce(p.wkb_geometry,pg_temp.alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry)) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce( - d.signaturnummer, - p.signaturnummer, - CASE - WHEN funktion IN (4210,4211) THEN '3410' - WHEN funktion=4220 THEN '3411' - WHEN funktion IN (4330,4331) THEN '3412' - WHEN funktion IN (4400,4410) THEN '3413' - WHEN funktion=4420 THEN '3415' - WHEN funktion IN (4430,4431) THEN '3417' - WHEN funktion=4440 THEN '3419' - WHEN funktion=4460 THEN '3421' - WHEN funktion=4470 THEN '3423' - END - ) AS signaturnummer, - coalesce( - p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell - FROM ax_sportfreizeitunderholungsflaeche o - LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='FKT' AND p.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Name, Sport-, Freizeit- und Erholungsfläche -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Sport und Freizeit' AS thema, - 'ax_sportfreizeitunderholungsflaeche' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_sportfreizeitunderholungsflaeche o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS n WHERE NOT text IS NULL; - --- --- Friedhof (41009) --- - --- Fläche, Friedhof -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Friedhöfe' AS thema, - 'ax_friedhof' AS layer, - st_multi(wkb_geometry) AS polygon, - 25151405 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_friedhof; - --- Text, Friedhof -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Friedhöfe' AS thema, - 'ax_friedhof' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,n.signaturnummer,'4140') AS signaturnummer, - t.drehwinkel,t.horizontaleausrichtung,t.vertikaleausrichtung,t.skalierung,t.fontsperrung, - coalesce( - t.advstandardmodell||t.sonstigesmodell||n.advstandardmodell||n.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell - FROM ax_friedhof o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='Friedhof' AND t.endet IS NULL - LEFT OUTER JOIN ap_pto n ON ARRAY[o.gml_id] <@ n.dientzurdarstellungvon AND n.art='NAM' AND n.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art IN ('NAM','Friedhof') AND d.endet IS NULL - WHERE name IS NULL AND n.schriftinhalt IS NULL AND o.endet IS NULL -) AS n WHERE NOT text IS NULL; - --- Name, Friedhof -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Friedhöfe' AS thema, - 'ax_friedhof' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_friedhof o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE NOT name IS NULL OR NOT t.schriftinhalt IS NULL AND o.endet IS NULL -) AS n; - - --- --- Straßenverkehr (41001) --- - --- Straßenverkehr, Fläche -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_strassenverkehr' AS layer, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN coalesce(zustand,0)<>4000 THEN 25150000 - ELSE 25160000 - END - + - CASE - WHEN funktion IN (2312,2313) AND coalesce(zustand,0)<>4000 THEN 1406 - WHEN funktion=5130 AND coalesce(zustand,0)<>4000 THEN 1414 - ELSE 0 - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_strassenverkehr; - --- Straßenverkehr, Funktion -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_strassenverkehr' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce( - t.schriftinhalt, - (SELECT beschreibung FROM ax_funktion_strasse WHERE wert=funktion) - ) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4100') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_strassenverkehr o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='FKT' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL - WHERE funktion=4130 AND o.endet IS NULL -) AS n WHERE NOT text IS NULL; - --- Straßenverkehr, Zweitname -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_strassenverkehr' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.zweitname) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_strassenverkehr o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ZNM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ZNM' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS n WHERE NOT text IS NULL; - - --- --- Weg (42006) --- - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_weg' AS layer, - st_multi(wkb_geometry) AS polygon, - 2515 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_weg; - --- Symbol -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_weg' AS layer, - st_multi(point), - drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce( - d.signaturnummer, - p.signaturnummer, - CASE - WHEN funktion IN (5220,5230) THEN '3424' - WHEN funktion=5240 THEN '3426' - WHEN funktion=5250 THEN '3428' - WHEN funktion=5260 THEN '3430' - END - ) AS signaturnummer, - coalesce( - p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell - FROM ax_weg o - LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='FKT' AND p.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - - --- --- Platz (42009) --- - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_platz' AS layer, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN funktion=5130 THEN 25151414 - ELSE 2515 - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_platz; - --- Symbol -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_platz' AS layer, - st_multi(point), - drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce( - d.signaturnummer, - p.signaturnummer, - CASE - WHEN funktion=5310 THEN '3432' - WHEN funktion=5320 THEN '3434' - WHEN funktion=5330 THEN '3436' - END - ) AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_platz o - LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='FKT' AND p.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o -WHERE NOT signaturnummer IS NULL; - --- Platz, Funktion -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_platz' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce( - t.schriftinhalt, - (SELECT beschreibung FROM ax_funktion_platz WHERE wert=funktion) - ) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4140') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_platz o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.endet IS NULL AND (t.art='FKT' OR o.gml_id LIKE 'DERP') - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.endet IS NULL AND (d.art='FKT' OR o.gml_id LIKE 'DERP') - WHERE o.endet IS NULL AND (funktion IN (5340,5350) OR o.gml_id LIKE 'DERP%') -) AS n WHERE NOT text IS NULL; - --- Platz, Zweitname -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_platz' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.zweitname) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_platz o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ZNM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ZNM' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS n WHERE NOT text IS NULL; - - --- --- Bahnverkehr (42010) --- - --- Bahnverkehr, Fläche -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_bahnverkehr' AS layer, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN coalesce(zustand,0)<>4000 THEN 25150000 - ELSE 25160000 - END - + - CASE - WHEN funktion=2322 AND coalesce(zustand,0)<>4000 THEN 1406 - ELSE 0 - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_bahnverkehr -WHERE endet IS NULL; - --- Bahnverkehr, Zweitname -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_bahnverkehr' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.zweitname) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_bahnverkehr o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ZNM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ZNM' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS n WHERE NOT text IS NULL; - - --- --- Flugverkehr (42015) --- - --- Flugverkehr, Fläche -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_flugverkehr' AS layer, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN zustand=4000 THEN 2516 ELSE 25151406 END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_flugverkehr; - --- Flugverkehr, Symbol -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_flugverkehr' AS layer, - st_multi(point), - drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce( - d.signaturnummer, - p.signaturnummer, - CASE - WHEN funktion=5530 THEN '3438' - WHEN funktion=5550 THEN '3439' - END - ) AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_flugverkehr o - LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='ART' AND p.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ART' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o -WHERE NOT signaturnummer IS NULL; - --- Flugverkehr, Name -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_flugverkehr' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce( - t.schriftinhalt, - o.unverschluesselt, - (SELECT bezeichnung FROM ax_lagebezeichnungkatalogeintrag WHERE schluesselgesamt=to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage ORDER BY beginnt DESC LIMIT 1) - ) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4200') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_flugverkehr o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS n -WHERE text IS NOT NULL; - - --- --- Schiffsverkehr (42016) --- - --- Schiffsverkehr, Fläche -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_schiffsverkehr' AS layer, - st_multi(wkb_geometry) AS polygon, - CASE WHEN zustand=4000 THEN 2516 ELSE 2515 END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_schiffsverkehr -WHERE endet IS NULL; - --- Schiffsverkehr, Name -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_schiffsverkehr' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce( - t.schriftinhalt, - o.unverschluesselt, - (SELECT bezeichnung FROM ax_lagebezeichnungkatalogeintrag WHERE schluesselgesamt=to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage ORDER BY beginnt DESC LIMIT 1) - ) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_schiffsverkehr o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS n -WHERE text IS NOT NULL; - --- Hafenanlage (RP) -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_schiffsverkehr' AS layer, - point, - text, - signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce( - t.schriftinhalt, - CASE - WHEN funktion=5610 THEN 'Hafenanlage' - WHEN funktion IN (5630,5640) THEN - (SELECT beschreibung FROM ax_funktion_schiffsverkehr WHERE wert=funktion) - END - ) AS text, - coalesce(t.signaturnummer,'4140') AS signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_schiffsverkehr o - JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='FKT' AND t.endet IS NULL - WHERE o.endet IS NULL AND o.gml_id LIKE 'DERP%' -) AS i WHERE NOT text IS NULL; - - --- --- Landwirtschaft (43001) --- - --- Landwirtschaft, Fläche -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Vegetation' AS thema, - 'ax_landwirtschaft' AS layer, - polygon, - signaturnummer, - modell -FROM ( - SELECT - gml_id, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN coalesce(vegetationsmerkmal,0) IN (0,1010,1011,1012,1013) THEN 25151409 - WHEN vegetationsmerkmal IN (1020,1021,1030,1031,1040,1050,1051,1052) THEN 25151406 - WHEN vegetationsmerkmal=1200 THEN 25151404 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_landwirtschaft - WHERE endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Landwirtschaft, Symbole --- TODO: --- 3440/2 + PNR 1104 v 1105 --- 3442/3444 + PNR 1102 v 1103 -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Vegetation' AS thema, - 'ax_landwirtschaft' AS layer, - st_multi(point), - drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - coalesce(p.wkb_geometry,pg_temp.alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry)) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce( - d.signaturnummer, - p.signaturnummer, - CASE - WHEN vegetationsmerkmal=1011 THEN '3440' - WHEN vegetationsmerkmal=1012 THEN '3442' - WHEN vegetationsmerkmal=1013 THEN '3444' - WHEN vegetationsmerkmal=1020 THEN '3413' - WHEN vegetationsmerkmal=1021 THEN '3441' - WHEN vegetationsmerkmal=1030 THEN '3421' - WHEN vegetationsmerkmal=1031 THEN '3446' - WHEN vegetationsmerkmal=1040 THEN '3448' - WHEN vegetationsmerkmal=1050 THEN '3450' - WHEN vegetationsmerkmal=1051 THEN '3452' - WHEN vegetationsmerkmal=1052 THEN '3454' - END - ) AS signaturnummer, - coalesce( - p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell - FROM ax_landwirtschaft o - LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='VEG' AND p.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='VEG' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Landwirtschaft, Name -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Vegetation' AS thema, - 'ax_landwirtschaft' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4208') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_landwirtschaft o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND NOT name IS NULL -) AS n; - - --- --- Wald (43002) --- - --- Wald, Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Vegetation' AS thema, - 'ax_wald' AS layer, - st_multi(wkb_geometry) AS polygon, - 25171414 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_wald; - --- Wald, Symbole --- TODO: PNR? -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Vegetation' AS thema, - 'ax_wald' AS layer, - st_multi(point), - drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - coalesce(p.wkb_geometry,pg_temp.alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry)) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce( - d.signaturnummer, - p.signaturnummer, - CASE - WHEN vegetationsmerkmal IS NULL THEN '3456' - WHEN vegetationsmerkmal=1100 THEN '3458' - WHEN vegetationsmerkmal=1200 THEN '3460' - WHEN vegetationsmerkmal IN (1300,1310,1320) THEN '3462' - END - ) AS signaturnummer, - coalesce( - p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell - FROM ax_wald o - LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='VEG' AND p.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='VEG' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o -WHERE NOT signaturnummer IS NULL; - --- Wald, Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Vegetation' AS thema, - 'ax_wald' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4209') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_wald o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND NOT name IS NULL -) AS n; - --- --- Gehölz (43003) --- - --- Gehölz, Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Vegetation' AS thema, - 'ax_gehoelz' AS layer, - st_multi(wkb_geometry) AS polygon, - 25171414 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_gehoelz -WHERE endet IS NULL; - --- Gehölz, Symbole --- TODO: PNR? -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Vegetation' AS thema, - 'ax_gehoelz' AS layer, - st_multi(point), - drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - coalesce(p.wkb_geometry,pg_temp.alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry)) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce( - d.signaturnummer, - p.signaturnummer, - CASE - WHEN vegetationsmerkmal IS NULL THEN '3470' - WHEN vegetationsmerkmal=1400 THEN '3472' - END - ) AS signaturnummer, - coalesce( - p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell - FROM ax_gehoelz o - LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='VEG' AND p.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='VEG' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o -WHERE NOT signaturnummer IS NULL; - --- Gehölz, Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Vegetation' AS thema, - 'ax_gehoelz' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4209') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_gehoelz o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND NOT name IS NULL -) AS n; - - --- --- Heide (43004) --- - --- Heide, Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Vegetation' AS thema, - 'ax_heide' AS layer, - st_multi(wkb_geometry) AS polygon, - 25171404 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_heide; - --- Heide, Symbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Vegetation' AS thema, - 'ax_heide' AS layer, - st_multi(coalesce(p.wkb_geometry,pg_temp.alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry))) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce(d.signaturnummer,'3474') AS signaturnummer, - coalesce( - p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell -FROM ax_heide o -LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='Heide' AND p.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='Heide' AND d.endet IS NULL -WHERE o.endet IS NULL; - --- Heide, Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Vegetation' AS thema, - 'ax_heide' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4209') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_heide o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND NOT name IS NULL -) AS n; - - --- --- Moor (43005) --- - --- Moor, Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Vegetation' AS thema, - 'ax_moor' AS layer, - st_multi(wkb_geometry) AS polygon, - 25171404 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_moor -WHERE endet IS NULL; - --- Moor, Symbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Vegetation' AS thema, - 'ax_moor' AS layer, - st_multi(coalesce(p.wkb_geometry,pg_temp.alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry))) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce(d.signaturnummer,p.signaturnummer,'3476') AS signaturnummer, - coalesce( - p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell -FROM ax_moor o -LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='Moor' AND p.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='Moor' AND d.endet IS NULL -WHERE o.endet IS NULL; - --- Moor, Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Vegetation' AS thema, - 'ax_moor' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4209') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_moor o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND NOT name IS NULL -) AS n; - - --- --- Sumpf (43006) --- - --- Sumpf, Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Vegetation' AS thema, - 'ax_sumpf' AS layer, - st_multi(wkb_geometry) AS polygon, - 25171404 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_sumpf; - --- Sumpf, Symbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Vegetation' AS thema, - 'ax_sumpf' AS layer, - st_multi(coalesce(p.wkb_geometry,pg_temp.alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry))) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce(d.signaturnummer,p.signaturnummer,'3478') AS signaturnummer, - coalesce( - p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell -FROM ax_sumpf o -LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='Sumpf' AND p.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='Sumpf' AND d.endet IS NULL -WHERE o.endet IS NULL; - --- Sumpf, Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Vegetation' AS thema, - 'ax_sumpf' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4209') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_sumpf o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND NOT name IS NULL -) AS n; - - --- --- Unland/vegetationslose Fläche (43007) --- - --- Unland, Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Vegetation' AS thema, - 'ax_unlandvegetationsloseflaeche' AS layer, - polygon, - signaturnummer, - modell -FROM ( - SELECT - gml_id, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN coalesce(funktion,1000)=1000 THEN - CASE - WHEN coalesce(oberflaechenmaterial,0) IN (0,1010,1020,1030,1040) THEN 2515 - WHEN oberflaechenmaterial IN (1110,1120) THEN 2518 - END - ELSE 25151406 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_unlandvegetationsloseflaeche o - WHERE coalesce(funktion,1000) IN (1000,1100,1110,1120,1200) AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Unland, Symbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Vegetation' AS thema, - 'ax_unlandvegetationsloseflaeche' AS layer, - st_multi(point), - drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - coalesce(p.wkb_geometry,pg_temp.alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry)) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce( - d.signaturnummer, - p.signaturnummer, - CASE - WHEN coalesce(funktion,1000)=1000 THEN - CASE - WHEN oberflaechenmaterial IS NULL THEN '3480' - WHEN oberflaechenmaterial=1010 THEN '3481' - WHEN oberflaechenmaterial=1020 THEN '3482' - WHEN oberflaechenmaterial=1030 THEN '3483' - WHEN oberflaechenmaterial=1040 THEN '3484' - WHEN oberflaechenmaterial IN (1110,1120) THEN '3486' - END - END - ) AS signaturnummer, - coalesce( - p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell - FROM ax_unlandvegetationsloseflaeche o - LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='OFM' AND p.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='OFM' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Unland, Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Vegetation' AS thema, - 'ax_unlandvegetationsloseflaeche' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce( - d.signaturnummer, - t.signaturnummer, - CASE WHEN oberflaechenmaterial IN (1110,1120) THEN '4151' ELSE '4150' END - ) AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce( - t.advstandardmodell||t.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell - FROM ax_unlandvegetationsloseflaeche o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL -) AS n WHERE NOT text IS NULL; - - --- --- Fließgewässer (44001) --- - --- Fließgewässer, Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_fliessgewaesser' AS layer, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN zustand=4000 THEN 2519 - ELSE 25181410 - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_fliessgewaesser -WHERE endet IS NULL; - --- Fließgewäesser, Pfeil -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Gewässer' AS thema, - 'ax_fliessgewaesser' AS layer, - st_multi(coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry))) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce(p.signaturnummer,'3488') AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_fliessgewaesser o -JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='Fließpfeil' AND p.endet IS NULL -WHERE o.endet IS NULL AND coalesce(zustand,0)<>4000; - --- Fließgewäesser, Symbol -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Gewässer' AS thema, - 'ax_fliessgewaesser' AS layer, - st_multi(coalesce(p.wkb_geometry,pg_temp.alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry))) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce(d.signaturnummer,p.signaturnummer,'3490') AS signaturnummer, - coalesce( - p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell -FROM ax_fliessgewaesser o -LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='FKT' AND p.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL -WHERE o.endet IS NULL AND funktion=8300 AND zustand=4000; - - --- --- Hafenbecken (44005) --- - --- Hafenbecken, Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_hafenbecken' AS layer, - st_multi(wkb_geometry) AS polygon, - 25181410 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_hafenbecken -WHERE endet IS NULL; - --- Hafenbecken, Symbol -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Gewässer' AS thema, - 'ax_hafenbecken' AS layer, - st_multi(coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry))) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce(d.signaturnummer,p.signaturnummer,'3490') AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_hafenbecken o -LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='FKT' AND p.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL -WHERE o.endet IS NULL; - --- Hafenbecken, Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_hafenbecken' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce( - t.schriftinhalt, - o.unverschluesselt, - (SELECT bezeichnung FROM ax_lagebezeichnungkatalogeintrag WHERE schluesselgesamt=to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage ORDER BY beginnt DESC LIMIT 1) - ) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4211') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_hafenbecken o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS n -WHERE text IS NOT NULL; - - --- --- Stehendes Gewässer (44006) --- - --- Stehendes Gewässer, Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_stehendesgewaesser' AS layer, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN hydrologischesmerkmal IS NULL THEN 25181410 - WHEN hydrologischesmerkmal=2000 THEN 25201410 - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_stehendesgewaesser -WHERE endet IS NULL; - --- Stehendes Gewässer, Symbol -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Gewässer' AS thema, - 'ax_stehendesgewaesser' AS layer, - st_multi(coalesce(p.wkb_geometry,pg_temp.alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry))) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce(d.signaturnummer,p.signaturnummer,'3490') AS signaturnummer, - coalesce( - p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell -FROM ax_stehendesgewaesser o -LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='FKT' AND p.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL -WHERE o.endet IS NULL; - - --- --- Meer (44007) --- - --- Meer, Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_meer' AS layer, - st_multi(wkb_geometry) AS polygon, - 25181410 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_meer -WHERE endet IS NULL; - --- Meer, Symbol -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Gewässer' AS thema, - 'ax_meer' AS layer, - st_multi(coalesce(p.wkb_geometry,pg_temp.alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry))) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce(d.signaturnummer,p.signaturnummer,'3490') AS signaturnummer, - coalesce( - p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell -FROM ax_meer o -LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='FKT' AND p.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL -WHERE o.endet IS NULL; - --- Meer, Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_meer' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce( - t.schriftinhalt, - o.unverschluesselt, - (SELECT bezeichnung FROM ax_lagebezeichnungkatalogeintrag WHERE schluesselgesamt=to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage ORDER BY beginnt DESC LIMIT 1) - ) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4286') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_meer o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS n -WHERE text IS NOT NULL; - - --- --- Turm (55001) --- - --- Turm, Flächen --- TODO: Punkte? -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Gebäude' AS thema, - 'ax_turm' AS layer, - st_multi(wkb_geometry) AS polygon, - CASE WHEN zustand=2200 THEN 1502 ELSE 1501 END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_turm -WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') - AND endet IS NULL; - --- Turm, Texte -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Gebäude' AS thema, - 'ax_turm_funktion' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce( - t.schriftinhalt, - CASE - WHEN bauwerksfunktion && ARRAY[1000,1010,1011] THEN - (SELECT beschreibung FROM ax_bauwerksfunktion_turm WHERE ARRAY[wert] <@ bauwerksfunktion LIMIT 1) || - CASE - WHEN zustand=2100 THEN E'\n(außer Betrieb)' - WHEN zustand=2200 THEN E'\n(zerstört)' - ELSE '' - END - WHEN bauwerksfunktion && ARRAY[1000,1009,1012,9998] THEN - CASE - WHEN zustand=2100 THEN '(außer Betrieb)' - WHEN zustand=2200 THEN '(zerstört)' - END - END - ) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_turm o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BWF_ZUS' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWF_ZUS' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS n WHERE NOT text IS NULL; - --- Turm, Name -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Gebäude' AS thema, - 'ax_turm_funktion' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4074') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_turm o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND NOT name IS NULL -) AS n; - - --- --- Bauwerk- oder Anlage für Industrie und Gewerbe (51002) --- - --- Bauwerk- oder Anlage für Industrie und Gewerbe, Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_bauwerkoderanlagefuerindustrieundgewerbe' AS layer, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN bauwerksfunktion=1210 THEN 1510 - WHEN bauwerksfunktion IN (1215,1220,1230,1240,1260,1270,1280,1320,1330,1331,1332,1333,1340,1350,1390,9999) THEN 1305 - WHEN bauwerksfunktion=1250 THEN 1306 - WHEN bauwerksfunktion=1290 THEN 1501 - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_bauwerkoderanlagefuerindustrieundgewerbe -WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') - AND endet IS NULL - AND bauwerksfunktion IN (1210,1215,1220,1230,1240,1250,1260,1270,1280,1290,1320,1330,1331,1332,1333,1340,1350,1390,9999); - --- Bauwerk- oder Anlage für Industrie und Gewerbe, Symbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_bauwerkoderanlagefuerindustrieundgewerbe' AS layer, - st_multi(point), - drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - coalesce( - p.wkb_geometry, - CASE - WHEN geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN o.wkb_geometry - WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN st_centroid(o.wkb_geometry) - END - ) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce( - d.signaturnummer, - p.signaturnummer, - CASE - WHEN bauwerksfunktion=1220 THEN '3501' - WHEN bauwerksfunktion=1230 THEN '3502' - WHEN bauwerksfunktion=1240 THEN '3503' - WHEN bauwerksfunktion=1250 THEN '3504' - WHEN bauwerksfunktion IN (1260,1270) THEN '3506' - WHEN bauwerksfunktion=1280 THEN '3507' - WHEN bauwerksfunktion=1290 THEN '3508' - WHEN bauwerksfunktion=1310 THEN '3509' - WHEN bauwerksfunktion=1320 THEN '3510' - WHEN bauwerksfunktion=1330 THEN '3511' - WHEN bauwerksfunktion=1331 THEN '3512' - WHEN bauwerksfunktion=1332 THEN '3513' - WHEN bauwerksfunktion=1333 THEN '3514' - WHEN bauwerksfunktion=1350 THEN '3515' - WHEN bauwerksfunktion=1360 THEN '3516' - WHEN bauwerksfunktion IN (1370,1371) THEN '3517' - WHEN bauwerksfunktion=1372 THEN '3518' - WHEN bauwerksfunktion=1380 THEN '3519' - WHEN bauwerksfunktion=1390 THEN '3520' - WHEN bauwerksfunktion=1400 THEN '3521' - END - ) AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_bauwerkoderanlagefuerindustrieundgewerbe o - LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='FKT' AND p.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL AND NOT point IS NULL; - --- Bauwerk- oder Anlage für Industrie und Gewerbe, Texte -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_bauwerkoderanlagefuerindustrieundgewerbe' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce( - t.schriftinhalt, - (SELECT beschreibung FROM ax_bauwerksfunktion_bauwerkoderanlagefuerindustrieundgewer WHERE wert=bauwerksfunktion) - ) AS text, - coalesce( - d.signaturnummer, - t.signaturnummer, - CASE - WHEN bauwerksfunktion IN (1210,1215) THEN '4100' - WHEN bauwerksfunktion=1340 THEN '4140' - END - ) AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_bauwerkoderanlagefuerindustrieundgewerbe o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BWF' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWF' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS n WHERE NOT signaturnummer IS NULL AND text IS NULL; - --- Bauwerk- oder Anlage für Industrie und Gewerbe, Name -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_bauwerkoderanlagefuerindustrieundgewerbe' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_bauwerkoderanlagefuerindustrieundgewerbe o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND NOT name IS NULL -) AS n; - --- Bauwerk- oder Anlage für Industrie und Gewerbe, Zustandstext -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_bauwerkoderanlagefuerindustrieundgewerbe' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - CASE zustand - WHEN 2100 THEN '(außer Betrieb)' - WHEN 2200 THEN '(zerstört)' - WHEN 4200 THEN '(verschlossen)' - END AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_bauwerkoderanlagefuerindustrieundgewerbe o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ZUS' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ZUS' AND d.endet IS NULL - WHERE o.endet IS NULL AND zustand IN (2100,2200,4200) -) AS n; - - --- --- Vorratsbehälter, Speicherbauwerk (51003) --- - --- Vorratsbehälter, Speicherbauwerk, Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_vorratsbehaelterspeicherbauwerk' AS layer, - polygon, - signaturnummer, - modell -FROM ( - SELECT - gml_id, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN lagezurerdoberflaeche IS NULL THEN 1305 - WHEN lagezurerdoberflaeche=1200 THEN 1321 - WHEN lagezurerdoberflaeche=1400 THEN 20311304 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_vorratsbehaelterspeicherbauwerk - WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') -) AS o; - --- Vorratsbehälter, Speicherbauwerk, Symbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_vorratsbehaelterspeicherbauwerk' AS layer, - point, - drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - st_multi(coalesce( - p.wkb_geometry, - CASE - WHEN geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN o.wkb_geometry - WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN st_centroid(o.wkb_geometry) - END - )) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce(d.signaturnummer,p.signaturnummer,'3522') AS signaturnummer, - coalesce( - p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell - FROM ax_vorratsbehaelterspeicherbauwerk o - LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='Vorratsbehaelter' AND p.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='Vorratsbehaelter' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o; - --- Vorratsbehälter, Speicherbauwerk, Name -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_vorratsbehaelterspeicherbauwerk' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4107') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_vorratsbehaelterspeicherbauwerk o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND NOT name IS NULL -) AS n; - - --- --- Transportanlage (51004) --- - --- Transportanlage, Linie -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_transportanlage' AS layer, - polygon, - signaturnummer, - modell -FROM ( - SELECT - gml_id, - st_multi(alkis_bufferline(wkb_geometry,0.5)) AS polygon, - CASE - WHEN coalesce(lagezurerdoberflaeche,1400)=1400 THEN 2521 - WHEN lagezurerdoberflaeche IN (1200,1700) THEN 2504 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_transportanlage - WHERE bauwerksfunktion=1102 AND endet IS NULL -) AS t WHERE signaturnummer IS NOT NULL; - -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_transportanlage' AS layer, - line, - signaturnummer, - modell -FROM ( - SELECT - gml_id, - st_multi(wkb_geometry) AS line, - CASE - WHEN coalesce(lagezurerdoberflaeche,1400)=1400 THEN 2002 - WHEN lagezurerdoberflaeche IN (1200,1700) THEN 2523 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_transportanlage - WHERE bauwerksfunktion=1101 AND endet IS NULL -) AS t WHERE signaturnummer IS NOT NULL; - --- Transportanlage, Symbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_transportanlage' AS layer, - st_multi(wkb_geometry) AS point, - 0 AS drehwinkel, - 3523 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_transportanlage -WHERE bauwerksfunktion=1103 AND geometrytype(wkb_geometry) IN ('POINT','MULTIPOINT') AND lagezurerdoberflaeche IS NULL AND endet IS NULL; - --- Transportanlage, Anschrieb Produkt --- TODO: welche Text sind NULL? -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_transportanlage' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - (SELECT beschreibung FROM ax_produkt_transportanlage WHERE wert=produkt) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_transportanlage o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='PRO' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='PRO' AND d.endet IS NULL - WHERE o.endet IS NULL AND NOT produkt IS NULL -) AS n -WHERE NOT text IS NULL; - - --- --- Leitung (51005) --- - --- Leitungsverlauf -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_leitung' AS layer, - st_multi(wkb_geometry) AS line, - CASE - WHEN bauwerksfunktion=1110 THEN 2524 - WHEN bauwerksfunktion=1111 THEN 2523 - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_leitung -WHERE bauwerksfunktion IN (1110,1111) AND endet IS NULL; - --- Anschrieb Erdkabel -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_leitung' AS layer, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - 'Erdkabel' AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_leitung o -LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BWF' AND t.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWF' AND d.endet IS NULL -WHERE bauwerksfunktion=1111 AND o.endet IS NULL; - --- Anschrieb Spannungsebene -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Industrie und Gewerbe' AS thema, - 'ax_leitung' AS layer, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - spannungsebene || CASE WHEN o.gml_id LIKE 'DERP%' THEN ' kV' ELSE ' KV' END AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_leitung o -LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='SPG' AND t.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='SPG' AND d.endet IS NULL -WHERE o.endet IS NULL AND NOT spannungsebene IS NULL; - - --- --- Bauwerk oder Anlage für Sport, Freizeit und Erholung (51006) --- - --- Bauwerk oder Anlage für Sport, Freizeit und Erholung, Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Sport und Freizeit' AS thema, - 'ax_bauwerkoderanlagefuersportfreizeitunderholung' AS layer, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN bauwerksfunktion IN (1410,1411,1412) THEN 1520 - WHEN bauwerksfunktion=1420 THEN 1521 - WHEN bauwerksfunktion IN (1430,1432,1460,1470,1480,1490,1510,9999) THEN 1524 - WHEN bauwerksfunktion=1431 THEN 1519 - WHEN bauwerksfunktion=1440 THEN 1522 - WHEN bauwerksfunktion=1450 THEN 1526 - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_bauwerkoderanlagefuersportfreizeitunderholung -WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL; - --- Bauwerk oder Anlage für Sport, Freizeit und Erholung, Texte -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Sport und Freizeit' AS thema, - 'ax_bauwerkoderanlagefuersportfreizeitunderholung' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - CASE - WHEN bauwerksfunktion IN (1430,1431,1432) THEN 'Tribüne' - WHEN bauwerksfunktion=1460 THEN 'Liegewiese' - WHEN bauwerksfunktion=1470 THEN 'Sprungschanze' - WHEN bauwerksfunktion=1510 THEN 'Wildgehege' - WHEN bauwerksfunktion=1450 THEN - coalesce( - t.schriftinhalt, - (SELECT beschreibung FROM ax_bauwerksfunktion_bauwerkoderanlagefuersportfreizeitunde WHERE wert=bauwerksfunktion) - ) - WHEN o.gml_id LIKE 'DERP%' AND bauwerksfunktion=1410 THEN - coalesce( - t.schriftinhalt, - 'Sportplatz' - ) - END AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4100') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_bauwerkoderanlagefuersportfreizeitunderholung o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BWF' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWF' AND d.endet IS NULL - WHERE o.endet IS NULL - ) AS o WHERE NOT text IS NULL; - --- Bauwerk oder Anlage für Sport, Freizeit und Erholung, Symbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Sport und Freizeit' AS thema, - 'ax_bauwerkoderanlagefuersportfreizeitunderholung' AS layer, - st_multi(point), - drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce( - d.signaturnummer, - p.signaturnummer, - CASE - WHEN bauwerksfunktion=1480 THEN '3524' - WHEN bauwerksfunktion=1490 THEN '3525' - END - ) AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_bauwerkoderanlagefuersportfreizeitunderholung o - LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='BWF' AND p.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWF' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Bauwerk oder Anlage für Sport, Freizeit und Erholung, Name -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Sport und Freizeit' AS thema, - 'ax_bauwerkoderanlagefuersportfreizeitunderholung' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_bauwerkoderanlagefuersportfreizeitunderholung o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND NOT name IS NULL -) AS n; - --- Bauwerk oder Anlage für Sport, Freizeit und Erholung, Sportart -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Sport und Freizeit' AS thema, - 'ax_bauwerkoderanlagefuersportfreizeitunderholung' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - CASE - WHEN sportart IN (1010,1020) THEN 'Sportplatz' - WHEN sportart=1030 THEN 'Tennisplatz' - WHEN sportart=1040 THEN 'Reitplatz' - WHEN sportart=1060 THEN 'Skisportanlage' - WHEN sportart=1070 THEN 'Eis-, Rollschuhbahn' - WHEN sportart=1071 THEN 'Eisbahn' - WHEN sportart=1072 THEN 'Rollschuhbahn' - WHEN sportart=1090 THEN 'Motorrennbahn' - WHEN sportart=1100 THEN 'Radrennbahn' - WHEN sportart=1110 THEN 'Pferderennbahn' - END AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4100') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_bauwerkoderanlagefuersportfreizeitunderholung o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='SPO' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='SPO' AND d.endet IS NULL - WHERE o.endet IS NULL AND NOT sportart IS NULL -) AS n WHERE NOT text IS NULL; - --- Bauwerk oder Anlage für Sport, Freizeit und Erholung, Symbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Sport und Freizeit' AS thema, - 'ax_bauwerkoderanlagefuersportfreizeitunderholung' AS layer, - st_multi(coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry))) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce(d.signaturnummer,p.signaturnummer,'3409') AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_bauwerkoderanlagefuersportfreizeitunderholung o -LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='SPO' AND p.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='SPO' AND d.endet IS NULL -WHERE o.endet IS NULL AND sportart=1080; - - --- --- Historisches Bauwerk oder historische Einrichtung (51007) --- - - --- Historisches Bauwerk oder historische Einrichtung, Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Gebäude' AS thema, - 'ax_historischesbauwerkoderhistorischeeinrichtung' AS layer, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN archaeologischertyp IN (1000,1100,1020,1100,1110,1200,1210,9999) THEN 1330 - WHEN archaeologischertyp IN (1400,1410,1420,1430) THEN 1317 - WHEN archaeologischertyp IN (1500,1510,1520) THEN 1305 - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_historischesbauwerkoderhistorischeeinrichtung -WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL; - --- Historisches Bauwerk oder historische Einrichtung, Linien -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Gebäude' AS thema, - 'ax_historischesbauwerkoderhistorischeeinrichtung' AS layer, - st_multi(polygon), - signaturnummer, - modell -FROM ( - SELECT - gml_id, - alkis_bufferline(wkb_geometry,0.5) AS polygon, - CASE - WHEN archaeologischertyp IN (1500,1520,1510) THEN 2510 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_historischesbauwerkoderhistorischeeinrichtung - WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - - --- Historisches Bauwerk oder historische Einrichtung, Symbol -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Gebäude' AS thema, - 'ax_historischesbauwerkoderhistorischeeinrichtung' AS layer, - point, drehwinkel, signaturnummer, modell -FROM ( - SELECT - o.gml_id, - st_multi(coalesce( - p.wkb_geometry, - CASE - WHEN geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN o.wkb_geometry - WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN st_centroid(o.wkb_geometry) - END - )) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce( - d.signaturnummer, - p.signaturnummer, - CASE - WHEN archaeologischertyp=1010 THEN '3526' - WHEN archaeologischertyp=1020 THEN '3527' - WHEN archaeologischertyp=1300 THEN '3528' - END - ) AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_historischesbauwerkoderhistorischeeinrichtung o - LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='ATP' AND p.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ATP' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Historisches Bauwerk oder historische Einrichtung, Texte -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Gebäude' AS thema, - 'ax_historischesbauwerkoderhistorischeeinrichtung' AS layer, - point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce( - t.wkb_geometry, - CASE - WHEN geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN o.wkb_geometry - WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN st_centroid(o.wkb_geometry) - WHEN geometrytype(o.wkb_geometry)='LINESTRING' THEN st_lineinterpolatepoint(o.wkb_geometry,0.5) - END - ) AS point, - CASE - WHEN - archaeologischertyp IN (1000,1110) - OR (archaeologischertyp=1420 AND coalesce(name,n.schriftinhalt) IS NULL) - THEN - (SELECT beschreibung FROM ax_archaeologischertyp_historischesbauwerkoderhistorischee WHERE wert=archaeologischertyp) - WHEN archaeologischertyp=1100 THEN - coalesce(t.schriftinhalt, 'Historische Wasserleitung') - WHEN archaeologischertyp=1210 THEN - coalesce(t.schriftinhalt, 'Römischer Wachturm') - WHEN archaeologischertyp=1400 AND coalesce(name,n.schriftinhalt) IS NULL THEN - 'Ruine' - WHEN archaeologischertyp IN (1200,1410,1500,1510,1520) - OR (archaeologischertyp=1430 AND coalesce(name,n.schriftinhalt) IS NULL) - THEN - coalesce( - t.schriftinhalt, - (SELECT beschreibung FROM ax_archaeologischertyp_historischesbauwerkoderhistorischee WHERE wert=archaeologischertyp) - ) - END AS text, - coalesce(d.signaturnummer,t.signaturnummer,n.signaturnummer,'4070') AS signaturnummer, - t.drehwinkel,t.horizontaleausrichtung,t.vertikaleausrichtung,t.skalierung,t.fontsperrung, - coalesce( - t.advstandardmodell||t.sonstigesmodell||n.advstandardmodell||n.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell - FROM ax_historischesbauwerkoderhistorischeeinrichtung o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ATP' AND t.endet IS NULL - LEFT OUTER JOIN ap_pto n ON ARRAY[o.gml_id] <@ n.dientzurdarstellungvon AND n.art='NAM' AND n.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art IN ('ATP','NAM') AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o WHERE NOT text IS NULL; - --- Historisches Bauwerk oder historische Einrichtung, Name -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Gebäude' AS thema, - 'ax_historischesbauwerkoderhistorischeeinrichtung' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4074') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_historischesbauwerkoderhistorischeeinrichtung o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND NOT name IS NULL -) AS n; - - --- --- Heilquelle (51008) --- - --- Symbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_heilquellegasquelle' AS layer, - st_multi(wkb_geometry), - 0 AS drehwinkel, - 3529 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_heilquellegasquelle; - --- Texte -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_heilquellegasquelle' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,o.wkb_geometry) AS point, - CASE - WHEN o.art=4010 THEN 'Hqu' - WHEN o.art=4020 THEN 'Gqu' - END AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4073') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_heilquellegasquelle o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ART' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ART' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS n; - --- Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_heilquellegasquelle' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4108') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_heilquellegasquelle o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND NOT name IS NULL -) AS n; - - --- --- Sonstiges Bauwerk oder sonstige Einrichtung (51009) --- - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Gebäude' AS thema, - 'ax_sonstigesbauwerkodersonstigeeinrichtung' AS layer, - polygon, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN bauwerksfunktion IN (1610,1611) THEN 20311304 - WHEN bauwerksfunktion IN (1620,1621,1622,1650,1670,1700,1720) THEN 1305 - WHEN bauwerksfunktion IN (1750,9999) THEN 1330 - WHEN bauwerksfunktion IN (1780,1782) THEN 1525 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_sonstigesbauwerkodersonstigeeinrichtung o - WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Linien -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Gebäude' AS thema, - 'ax_sonstigesbauwerkodersonstigeeinrichtung' AS layer, - st_multi(polygon), - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - alkis_bufferline(wkb_geometry,0.5) AS polygon, - CASE - WHEN bauwerksfunktion IN (1701,1702,1703,1721,1722,1723) THEN 2510 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_sonstigesbauwerkodersonstigeeinrichtung o - WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - gml_id, - 'Gebäude' AS thema, - 'ax_sonstigesbauwerkodersonstigeeinrichtung' AS layer, - st_multi(line), - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - wkb_geometry AS line, - CASE - WHEN bauwerksfunktion=1630 THEN 2507 - WHEN bauwerksfunktion=1740 THEN 2507 -- 25073580 - WHEN bauwerksfunktion=1790 THEN 2519 - WHEN bauwerksfunktion=1791 THEN 2002 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_sonstigesbauwerkodersonstigeeinrichtung o - WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Symbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Gebäude' AS thema, - 'ax_sonstigesbauwerkodersonstigeeinrichtung' AS layer, - st_multi(point), - drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - coalesce( - p.wkb_geometry, - CASE - WHEN geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN o.wkb_geometry - WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN st_centroid(o.wkb_geometry) - END - ) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce( - d.signaturnummer, - p.signaturnummer, - CASE - WHEN bauwerksfunktion=1640 THEN '3531' - WHEN bauwerksfunktion=1750 THEN '3532' - WHEN bauwerksfunktion=1760 THEN '3533' - WHEN bauwerksfunktion=1761 THEN '3534' - WHEN bauwerksfunktion IN (1762,1763) THEN '3535' - WHEN bauwerksfunktion=1770 THEN '3536' - WHEN bauwerksfunktion=1780 AND geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN '3529' - WHEN bauwerksfunktion=1781 THEN '3537' - WHEN bauwerksfunktion=1782 THEN '3539' - WHEN bauwerksfunktion=1783 THEN '3540' - END - ) AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_sonstigesbauwerkodersonstigeeinrichtung o - LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='BWF' AND p.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWF' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Texte -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Gebäude' AS thema, - 'ax_sonstigesbauwerkodersonstigeeinrichtung' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce( - t.wkb_geometry, - CASE - WHEN geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN o.wkb_geometry - WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN st_centroid(o.wkb_geometry) - WHEN geometrytype(o.wkb_geometry)='LINESTRING' THEN st_lineinterpolatepoint(o.wkb_geometry,0.5) - END - ) AS point, - CASE - WHEN bauwerksfunktion IN (1650,1670) THEN - coalesce( - t.schriftinhalt, - (SELECT beschreibung FROM ax_bauwerksfunktion_sonstigesbauwerkodersonstigeeinrichtun WHERE wert=bauwerksfunktion) - ) - END AS text, - coalesce( - d.signaturnummer, - t.signaturnummer, - CASE - WHEN bauwerksfunktion IN (1650,1670) THEN '4070' - WHEN bauwerksfunktion IN (1780) THEN '4073' - END - ) AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_sonstigesbauwerkodersonstigeeinrichtung o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BWF' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWF' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS n WHERE NOT text IS NULL AND NOT signaturnummer IS NULL; - --- Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Gebäude' AS thema, - 'ax_sonstigesbauwerkodersonstigeeinrichtung' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce( - t.wkb_geometry, - CASE - WHEN geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN o.wkb_geometry - WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN st_centroid(o.wkb_geometry) - WHEN geometrytype(o.wkb_geometry)='LINESTRING' THEN st_lineinterpolatepoint(o.wkb_geometry,0.5) - END - ) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4107') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_sonstigesbauwerkodersonstigeeinrichtung o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND NOT name IS NULL -) AS n; - - --- --- Einrichtung in öffentlichen Bereichen (51010) --- TODO: 1500 Bahnschranke? --- - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_einrichtunginoeffentlichenbereichen' AS layer, - polygon, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN o.art=1110 THEN 1330 - WHEN o.art=1510 THEN 2521 - WHEN o.art=9999 THEN 1330 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_einrichtunginoeffentlichenbereichen o - WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Punktsymbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ax_einrichtunginoeffentlichenbereichen' AS layer, - coalesce( - p.wkb_geometry, - st_multi(o.wkb_geometry) - ) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce( - d.signaturnummer, - p.signaturnummer, - CASE - WHEN o.art=1100 THEN '3541' - WHEN o.art=1110 THEN '3542' - WHEN o.art=1120 THEN '3544' - WHEN o.art=1130 THEN '3545' - WHEN o.art=1140 THEN '3546' - WHEN o.art=1150 THEN '3547' - WHEN o.art=1200 THEN '3548' - WHEN o.art=1300 THEN '3549' - WHEN o.art=1310 THEN '3550' - WHEN o.art=1320 THEN '3551' - WHEN o.art=1330 THEN '3552' - WHEN o.art=1340 THEN '3553' - WHEN o.art=1350 THEN '3554' - WHEN o.art IN (1400,1410,1420) THEN '3556' - WHEN o.art=1600 THEN '3557' - WHEN o.art=1610 THEN '3558' - WHEN o.art=1620 THEN '3559' - WHEN o.art=1630 THEN '3560' - WHEN o.art=1640 THEN '3561' - WHEN o.art=1650 THEN '3562' - WHEN o.art=1700 THEN '3563' - WHEN o.art=1710 THEN '3564' - WHEN o.art=1910 THEN '3565' - WHEN o.art=2100 THEN '3566' - WHEN o.art=2200 THEN '3567' - WHEN o.art=2300 THEN '3568' - WHEN o.art=2400 THEN '3569' - WHEN o.art=2500 THEN '3570' - WHEN o.art=2600 THEN '3571' - END - ) AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_einrichtunginoeffentlichenbereichen o -LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='ART' AND p.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ART' AND d.endet IS NULL -WHERE geometrytype(coalesce(p.wkb_geometry,o.wkb_geometry)) IN ('POINT','MULTIPOINT') AND o.endet IS NULL; - --- Flächensymbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_einrichtunginoeffentlichenbereichen' AS layer, - st_multi(point), - drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - coalesce( - p.wkb_geometry, - st_centroid(o.wkb_geometry) - ) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce( - d.signaturnummer, - p.signaturnummer, - CASE - WHEN o.art=1110 THEN '3543' - WHEN o.art=2200 THEN '3567' - END - ) AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_einrichtunginoeffentlichenbereichen o - LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='ART' AND p.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ART' AND d.endet IS NULL - WHERE o.endet IS NULL AND geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') -) AS o WHERE NOT signaturnummer IS NULL; - --- Linien -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_einrichtunginoeffentlichenbereichen' AS layer, - st_multi(line), - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - wkb_geometry AS line, - CASE WHEN o.art=1650 THEN 2002 END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_einrichtunginoeffentlichenbereichen o - WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Texte Ortsdurchfahrtstein -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ax_einrichtunginoeffentlichenbereichen' AS layer, - coalesce(t.wkb_geometry,o.wkb_geometry) AS point, - 'OD' AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_einrichtunginoeffentlichenbereichen o -LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ART' AND t.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ART' AND d.endet IS NULL -WHERE o.endet IS NULL AND o.art=1420; - --- Texte -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ax_einrichtunginoeffentlichenbereichen' AS layer, - coalesce(t.wkb_geometry,o.wkb_geometry) AS point, - kilometerangabe AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_einrichtunginoeffentlichenbereichen o -LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='KMA' AND t.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='KMA' AND d.endet IS NULL -WHERE o.endet IS NULL AND NOT kilometerangabe IS NULL; - - --- --- Bauwerk im Verkehrsbereich (53001) --- TODO: Ausrichtung Symbol am Steg 1820? --- - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_bauwerkimverkehrsbereich' AS layer, - polygon, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN bauwerksfunktion IN (1800,1801,1802,1803,1804,1805,1806,1807,1808,1810,1830) THEN 1530 - WHEN bauwerksfunktion=1840 THEN 1531 - WHEN bauwerksfunktion=1850 THEN 1532 - WHEN bauwerksfunktion=1870 THEN 1533 - WHEN bauwerksfunktion=1880 THEN 1534 - WHEN bauwerksfunktion=1890 THEN 1535 - WHEN bauwerksfunktion=1900 THEN 2305 - WHEN bauwerksfunktion=9999 THEN 1536 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_bauwerkimverkehrsbereich o - WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Linien -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_bauwerkimverkehrsbereich' AS layer, - st_multi(line), - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - wkb_geometry AS line, - CASE - WHEN bauwerksfunktion=1820 THEN 2530 - WHEN bauwerksfunktion=1845 THEN 2533 - WHEN bauwerksfunktion=1900 THEN 2505 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_bauwerkimverkehrsbereich o - WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Punkte -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_bauwerkimverkehrsbereich' AS layer, - st_multi(point), - drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - wkb_geometry AS point, - 0 AS drehwinkel, - CASE - WHEN bauwerksfunktion=1840 THEN 3572 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_bauwerkimverkehrsbereich o - WHERE geometrytype(wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Schutzgalerieanschrieb -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_bauwerkimverkehrsbereich' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,'Schutzgalerie') AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_bauwerkimverkehrsbereich o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BWF' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWF' AND d.endet IS NULL - WHERE o.endet IS NULL AND bauwerksfunktion=1880 -) AS n; - --- Anflugbefeuerung -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ax_bauwerkimverkehrsbereich' AS layer, - st_multi(coalesce(p.wkb_geometry,o.wkb_geometry)) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce(d.signaturnummer,p.signaturnummer,'3573') AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_bauwerkimverkehrsbereich o -LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='BWF' AND p.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWF' AND d.endet IS NULL -WHERE o.endet IS NULL AND bauwerksfunktion=1910 AND geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT'); - --- Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_bauwerkimverkehrsbereich' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4107') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_bauwerkimverkehrsbereich o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND NOT name IS NULL -) AS n; - --- Außer Betrieb -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_bauwerkimverkehrsbereich' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - '(außer Betrieb)'::text AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_bauwerkimverkehrsbereich o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND zustand=2100 -) AS n; - - --- --- Straßenverkehrsanlage (53002) --- - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_strassenverkehrsanlage' AS layer, - polygon, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN o.art=1000 THEN 1540 - WHEN o.art=2000 THEN 1320 - WHEN o.art=9999 THEN 1548 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_strassenverkehrsanlage o - WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Linien -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_strassenverkehrsanlage' AS layer, - st_multi(line), - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - wkb_geometry AS line, - CASE - WHEN o.art=1010 THEN 2527 - WHEN o.art=1011 THEN 2506 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_strassenverkehrsanlage o - WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Bezeichnungen -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ax_strassenverkehrsanlage' AS layer, - st_multi(coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry))) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce(d.signaturnummer,p.signaturnummer,'3574') AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_strassenverkehrsanlage o -LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='BEZ' AND p.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BEZ' AND d.endet IS NULL -WHERE o.endet IS NULL AND NOT bezeichnung IS NULL; - -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ax_strassenverkehrsanlage' AS layer, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - bezeichnung AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4052') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_strassenverkehrsanlage o -LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BEZ_TEXT' AND t.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BEZ_TEXT' AND d.endet IS NULL -WHERE o.endet IS NULL AND NOT bezeichnung IS NULL; - --- Furt Texte -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_strassenverkehrsanlage' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - (SELECT beschreibung FROM ax_art_strassenverkehrsanlage WHERE wert=o.art) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4100') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_strassenverkehrsanlage o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ART' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ART' AND d.endet IS NULL - WHERE o.endet IS NULL AND o.art=2000 -) AS n WHERE NOT text IS NULL; - --- Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_strassenverkehrsanlage' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_strassenverkehrsanlage o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND NOT name IS NULL OR NOT t.schriftinhalt IS NULL -) AS n WHERE NOT text IS NULL; - --- --- Weg, Pfad, Steig (53003) --- - --- Linien -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_wegpfadsteig' AS layer, - st_multi(line), - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - wkb_geometry AS line, - CASE - WHEN o.art IN (1103,1105,1106,1107,1110,1111) THEN 2535 - WHEN o.art=1108 THEN 2537 - WHEN o.art=1109 THEN 2539 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_wegpfadsteig o - WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_wegpfadsteig' AS layer, - polygon, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN o.art IN (1103,1105,1106,1107,1110,1111) THEN 1542 - WHEN o.art=1108 THEN 1543 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_wegpfadsteig o - WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Symbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_wegpfadsteig' AS layer, - st_multi(point), - drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - coalesce( - p.wkb_geometry, - CASE - WHEN geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN o.wkb_geometry - WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN st_centroid(o.wkb_geometry) - WHEN geometrytype(o.wkb_geometry)='LINESTRING' THEN st_lineinterpolatepoint(o.wkb_geometry,0.5) - END - ) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce( - d.signaturnummer, - p.signaturnummer, - CASE - WHEN o.art=1106 THEN '3426' - WHEN o.art=1107 THEN '3430' - WHEN o.art=1110 THEN '3428' - WHEN o.art=1111 THEN '3576' - END - ) AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_wegpfadsteig o - LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='ART' AND p.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ART' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_wegpfadsteig' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4109') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_wegpfadsteig o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) -) AS n WHERE NOT text IS NULL; - --- Name -INSERT INTO po_labels(gml_id,thema,layer,line,text,signaturnummer,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_wegpfadsteig' AS layer, - line, - text, - signaturnummer, - horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - t.wkb_geometry AS line, - coalesce(d.signaturnummer,t.signaturnummer,'4109') AS signaturnummer, - coalesce(t.schriftinhalt,name) AS text, - horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_wegpfadsteig o - LEFT OUTER JOIN ap_lto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) -) AS n WHERE NOT text IS NULL; - - --- --- Bahnverkehrsanlage (53004) --- - --- Bauwerksfunktion, Anschrieb -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_bahnverkehrsanlage' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce( - t.wkb_geometry, - CASE - WHEN geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN o.wkb_geometry - WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN st_centroid(o.wkb_geometry) - WHEN geometrytype(o.wkb_geometry)='LINESTRING' THEN st_lineinterpolatepoint(o.wkb_geometry,0.5) - END - ) AS point, - CASE - WHEN bahnhofskategorie=1010 THEN - CASE - WHEN name IS NULL AND n.schriftinhalt IS NULL THEN - -- WHEN bahnkategorie IN (1100,1102,1104,1200,1201,1202,1300,1301,1400,1500,1600,9999) THEN 'Bahnhof' - 'Bahnhof' - ELSE - coalesce(n.schriftinhalt,name) - END - WHEN bahnhofskategorie IN (1020,1030) THEN - coalesce(n.schriftinhalt,name) - END AS text, - coalesce( - d.signaturnummer, - t.signaturnummer, - n.signaturnummer, - CASE - WHEN bahnhofskategorie=1010 THEN - CASE - WHEN name IS NULL AND n.schriftinhalt IS NULL THEN '4141' - ELSE '4140' - END - ELSE - '4107' - END - ) AS signaturnummer, - CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.drehwinkel ELSE n.drehwinkel END AS drehwinkel, - CASE WHEN name IS NULL AND n.horizontaleausrichtung IS NULL THEN t.horizontaleausrichtung ELSE n.horizontaleausrichtung END AS horizontaleausrichtung, - CASE WHEN name IS NULL AND n.vertikaleausrichtung IS NULL THEN t.vertikaleausrichtung ELSE n.vertikaleausrichtung END AS vertikaleausrichtung, - CASE WHEN name IS NULL AND n.skalierung IS NULL THEN t.skalierung ELSE n.skalierung END AS skalierung, - CASE WHEN name IS NULL AND n.fontsperrung IS NULL THEN t.fontsperrung ELSE n.fontsperrung END AS fontsperrung, - coalesce( - t.advstandardmodell||t.sonstigesmodell||n.advstandardmodell||n.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell - FROM ax_bahnverkehrsanlage o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BFK' AND t.endet IS NULL - LEFT OUTER JOIN ap_pto n ON ARRAY[o.gml_id] <@ n.dientzurdarstellungvon AND n.art='NAM' AND n.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art IN ('BFK','NAM') AND d.endet IS NULL - WHERE o.endet IS NULL -) AS n WHERE NOT text IS NULL; - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_bahnverkehrsanlage' AS layer, - st_multi(wkb_geometry) AS polygon, - 1541 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_bahnverkehrsanlage o -WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON'); - --- Symbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_bahnverkehrsanlage' AS layer, - st_multi(point), - drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - coalesce( - p.wkb_geometry, - CASE - WHEN geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN o.wkb_geometry - WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN st_centroid(o.wkb_geometry) - WHEN geometrytype(o.wkb_geometry)='LINESTRING' THEN st_lineinterpolatepoint(o.wkb_geometry,0.5) - END - ) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce( - d.signaturnummer, - p.signaturnummer, - CASE - WHEN bahnhofskategorie=1010 THEN - CASE - WHEN 1104 = ANY(bahnkategorie) THEN '3330' - WHEN 1200 = ANY(bahnkategorie) THEN '3343' - WHEN 1201 = ANY(bahnkategorie) THEN '3554' - WHEN 1201 = ANY(bahnkategorie) THEN '3328' - END - WHEN bahnhofskategorie IN (1020,1030) THEN - CASE - WHEN bahnkategorie && ARRAY[1100,1102,1300,1301,1400,1500,1600,9999] THEN '3578' - WHEN 1104 = ANY(bahnkategorie) THEN '3330' - WHEN 1200 = ANY(bahnkategorie) THEN '3343' - WHEN 1201 = ANY(bahnkategorie) THEN '3554' - WHEN 1201 = ANY(bahnkategorie) THEN '3328' - END - END - ) AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_bahnverkehrsanlage o - LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='BKT' AND p.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BKT' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - - - --- --- Seilbahn, Schwebebahn (53005) --- - -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_seilbahnschwebebahn' AS layer, - st_multi(wkb_geometry) AS line, - 2001 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_seilbahnschwebebahn o -WHERE endet IS NULL; - -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_seilbahnschwebebahn' AS layer, - st_multi( st_lineinterpolatepoint(line,o.offset) ) AS point, - 0.5*pi()-st_azimuth(st_lineinterpolatepoint(line,o.offset*0.9999), st_lineinterpolatepoint(line,CASE WHEN o.offset=0 THEN 0.001 WHEN o.offset*1.0001>1 THEN 1 ELSE o.offset*1.0001 END)) AS drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - CASE geometrytype(wkb_geometry) WHEN 'MULTILINESTRING' THEN (st_dump(wkb_geometry)).geom ELSE wkb_geometry END AS line, - generate_series( 0, trunc(st_length(wkb_geometry)*1000.0)::int, - CASE - WHEN bahnkategorie IN (2100,2200,2300,2400,2600) THEN 16000 - WHEN bahnkategorie=2500 THEN 20000 - END - ) / 1000.0 / st_length(wkb_geometry) AS offset, - CASE - WHEN bahnkategorie IN (2100,2200) THEN 3642 - WHEN bahnkategorie IN (2300,2400) THEN 3643 - WHEN bahnkategorie=2500 THEN 3644 - WHEN bahnkategorie=2600 THEN 3645 - END AS signaturnummer, - o.advstandardmodell||o.sonstigesmodell AS modell - FROM ax_seilbahnschwebebahn o - WHERE o.endet IS NULL - AND geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') -) AS o WHERE NOT signaturnummer IS NULL; - --- Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_seilbahnschwebebahn' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(d.signaturnummer,t.signaturnummer,'4107') AS signaturnummer, - coalesce(t.schriftinhalt,name) AS text, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_seilbahnschwebebahn o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) -) AS n WHERE NOT text IS NULL; - --- --- Gleis (55006) --- - --- Drehscheibe, Fläche -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_gleis' AS layer, - st_multi(wkb_geometry) AS polygon, - 1541 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_gleis o -WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND NOT bahnkategorie IS NULL AND o.art=1200 AND endet IS NULL; - --- Drehscheibe, Symbol -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ax_gleis' AS layer, - st_multi(coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry))) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce(p.signaturnummer,'3587') AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_gleis o -JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='ART' AND p.endet IS NULL -WHERE o.endet IS NULL AND geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND NOT bahnkategorie IS NULL AND o.art=1200; - --- Gleis, Punktsignaturen auf Linien -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_gleis' AS layer, - st_multi( st_lineinterpolatepoint(line,o.offset) ) AS point, - 0.5*pi()-st_azimuth( st_lineinterpolatepoint(line,o.offset*0.9999), st_lineinterpolatepoint(line,CASE WHEN o.offset=0 THEN 0.001 WHEN o.offset*1.0001>1 THEN 1 ELSE o.offset*1.0001 END) ) AS drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - o.wkb_geometry AS line, - generate_series(0,trunc(st_length(wkb_geometry)*1000.0)::int, - CASE - WHEN bahnkategorie && ARRAY[1201,1300,1302] THEN 16000 - WHEN 1301 = ANY(bahnkategorie) THEN 8000 - WHEN 1600 = ANY(bahnkategorie) THEN 20000 - END - ) / 1000.0 / st_length(wkb_geometry) AS offset, - CASE - WHEN 1201 = ANY(bahnkategorie) THEN 3646 - WHEN bahnkategorie && ARRAY[1300,1301] THEN 3647 - WHEN 1302 = ANY(bahnkategorie) THEN 3648 - WHEN 1600 = ANY(bahnkategorie) THEN 3649 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_gleis o - WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Gleis, Linien -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_gleis' AS layer, - st_multi(line), - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - wkb_geometry AS line, - CASE - WHEN lagezuroberflaeche IS NULL THEN 2525 - WHEN lagezuroberflaeche=1200 THEN 2300 - WHEN lagezuroberflaeche=1400 THEN 2301 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_gleis o - WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_gleis' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4107') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_gleis o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) -) AS n WHERE NOT text IS NULL; - - --- --- Flugverkehrsanlage (53007) --- - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_flugverkehrsanlage' AS layer, - st_multi(wkb_geometry) AS polygon, - 1808 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_flugverkehrsanlage o -WHERE o.endet IS NULL AND o.art IN (1310,1320,1330,5531) AND geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON'); - --- Hubschrauberlandeplatz -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ax_flugverkehrsanlage' AS layer, - st_multi(coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry))) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce(p.signaturnummer,'3588') AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_flugverkehrsanlage o -JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='ART' AND p.endet IS NULL -WHERE o.endet IS NULL AND o.art=5531; - --- Bake/Leuchtfeuer/Kilometerstein -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ax_flugverkehrsanlage' AS layer, - st_multi(coalesce(p.wkb_geometry,o.wkb_geometry)) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce( - p.signaturnummer, - CASE - WHEN o.art=1410 THEN '3589' - WHEN o.art=1420 THEN '3590' - WHEN o.art=1430 THEN '3556' - END - ) AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_flugverkehrsanlage o -JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='ART' AND p.endet IS NULL -WHERE o.endet IS NULL AND o.art IN (1410,1420,1430) AND geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT'); - --- Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_flugverkehrsanlage' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4107') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_flugverkehrsanlage o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND NOT name IS NULL OR NOT t.schriftinhalt IS NULL -) AS n WHERE NOT text IS NULL; - - --- --- Einrichtungen für den Schiffsverkehr (53008) --- - --- Symbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_einrichtungenfuerdenschiffsverkehr' AS layer, - st_multi(wkb_geometry) AS point, - 0 AS drehwinkel, - CASE - WHEN art=1420 THEN 3590 - WHEN art=1430 THEN 3556 - WHEN art=1440 THEN 3583 - WHEN art=1450 THEN 3584 - WHEN art=9999 THEN 3640 - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_einrichtungenfuerdenschiffsverkehr o -WHERE geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL; - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_einrichtungenfuerdenschiffsverkehr' AS layer, - st_multi(wkb_geometry) AS polygon, - 1544 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_einrichtungenfuerdenschiffsverkehr -WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL; - --- Kilometerangaben -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ax_einrichtungenfuerdenschiffsverkehr' AS layer, - coalesce(t.wkb_geometry,st_translate(o.wkb_geometry,5,0)) AS point, - kilometerangabe AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4101') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_einrichtungenfuerdenschiffsverkehr o -LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='KMA' AND t.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='KMA' AND d.endet IS NULL -WHERE o.endet IS NULL AND NOT kilometerangabe IS NULL; - --- Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_einrichtungenfuerdenschiffsverkehr' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4081') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_einrichtungenfuerdenschiffsverkehr o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) -) AS n WHERE NOT text IS NULL; - --- --- Bauwerk im Gewässerbereich (53009) --- - --- Linien -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_bauwerkimgewaesserbereich' AS layer, - st_multi(polygon), - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - alkis_bufferline(wkb_geometry,0.5) AS polygon, - CASE - WHEN bauwerksfunktion=2136 THEN 2510 - WHEN bauwerksfunktion=2060 THEN 2526 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_bauwerkimgewaesserbereich o - WHERE geometrytype(o.wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_bauwerkimgewaesserbereich' AS layer, - st_multi(line), - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - wkb_geometry AS line, - CASE - WHEN bauwerksfunktion IN (2010,2011,2070) THEN 2560 - WHEN bauwerksfunktion=2012 THEN 2561 - WHEN bauwerksfunktion=2050 THEN 2003 -- 20033650 - WHEN bauwerksfunktion=2080 THEN 2003 -- 20033593 - WHEN bauwerksfunktion=2090 THEN 2003 -- 20033594 - WHEN bauwerksfunktion=2132 THEN 2003 -- 20033638 - WHEN bauwerksfunktion=9999 THEN 2003 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_bauwerkimgewaesserbereich o - WHERE geometrytype(o.wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- TODO: Linienbegleitende Signaturen - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_bauwerkimgewaesserbereich' AS layer, - polygon, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN bauwerksfunktion IN (2010,2011,2070) THEN 1550 - WHEN bauwerksfunktion=2020 THEN 1551 - WHEN bauwerksfunktion=2030 THEN - CASE WHEN zustand=4000 THEN 1552 ELSE 1305 END - WHEN bauwerksfunktion=2040 THEN - CASE WHEN zustand=4000 THEN 1552 ELSE 1551 END - WHEN bauwerksfunktion IN (2050,2060,2080,2110,9999) THEN 1548 - WHEN bauwerksfunktion=2090 THEN 1305 - WHEN bauwerksfunktion IN (2131,2133) THEN 1308 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_bauwerkimgewaesserbereich o - WHERE geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Symbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_bauwerkimgewaesserbereich' AS layer, - st_multi(point), - drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce( - p.signaturnummer, - CASE - WHEN bauwerksfunktion=2050 THEN '3653' - WHEN bauwerksfunktion=2060 THEN '3592' - WHEN bauwerksfunktion=2080 THEN '3593' - WHEN bauwerksfunktion=2090 THEN '3594' - WHEN bauwerksfunktion=2110 THEN '3595' - WHEN bauwerksfunktion=2131 THEN '3482' - END - ) AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_bauwerkimgewaesserbereich o - JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='BWF' AND p.endet IS NULL - WHERE o.endet IS NULL AND geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') -) AS o WHERE NOT signaturnummer IS NULL; - --- Punkte -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_bauwerkimgewaesserbereich' AS layer, - st_multi(point), - drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - wkb_geometry AS point, - 0 AS drehwinkel, - CASE - WHEN bauwerksfunktion=2120 THEN 3596 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_bauwerkimgewaesserbereich o - WHERE geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Texte -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_bauwerkimgewaesserbereich' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - (SELECT beschreibung FROM ax_bauwerksfunktion_bauwerkimgewaesserbereich WHERE wert=o.bauwerksfunktion) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4105') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_bauwerkimgewaesserbereich o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BWF' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWF' AND d.endet IS NULL - WHERE o.endet IS NULL AND bauwerksfunktion=2020 -) AS n WHERE NOT text IS NULL; - --- Zustand -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_bauwerkimgewaesserbereich' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - CASE - WHEN zustand=2100 THEN '(außer Betrieb)' - WHEN zustand=4000 THEN - (SELECT beschreibung FROM ax_bauwerksfunktion_bauwerkimgewaesserbereich WHERE wert=o.bauwerksfunktion) - || E' (im Bau)' - END AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_bauwerkimgewaesserbereich o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ZUS' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ZUS' AND d.endet IS NULL - WHERE o.endet IS NULL AND bauwerksfunktion IN (2030,2040) AND NOT zustand IS NULL -) AS n WHERE NOT text IS NULL; - --- Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_bauwerkimgewaesserbereich' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4074') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_bauwerkimgewaesserbereich o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) -) AS n WHERE NOT text IS NULL; - - --- --- Vegetationsmerkmale (54001) --- - -SELECT 'Vegetationsmerkmale werden verarbeitet.'; - --- Punkte -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Vegetation' AS thema, - 'ax_vegetationsmerkmal' AS layer, - st_multi(point), - drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - wkb_geometry AS point, - 0 AS drehwinkel, - CASE - WHEN bewuchs=1011 THEN 3597 - WHEN bewuchs=1012 THEN 3599 - WHEN bewuchs=1400 THEN 3603 - WHEN bewuchs=1700 THEN 3607 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_vegetationsmerkmal o - WHERE geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Punktförmige Begleitsignaturen an Linien -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Vegetation' AS thema, - 'ax_vegetationsmerkmal' AS layer, - st_multi(st_collect(st_lineinterpolatepoint(line,CASE WHEN a.offset<0 THEN 0 WHEN a.offset>1 THEN 1 ELSE a.offset END))) AS point, - 0 AS drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - gml_id, - signaturnummer, - line, - generate_series(einzug,trunc(st_length(line)*1000.0)::int,abstand)/100.0/st_length(line) AS offset, - modell - FROM ( - SELECT - gml_id, - bewuchs, - einzug, - abstand, - CASE geometrytype(line) WHEN 'MULTILINESTRING' THEN (st_dump(line)).geom ELSE line END AS line, - signaturnummer, - modell - FROM ( - SELECT - gml_id, - bewuchs, - CASE - WHEN bewuchs IN (1100,1230,1260) THEN 0 - WHEN bewuchs IN (1101,1102) THEN 300 - WHEN bewuchs=1103 THEN unnest(ARRAY[300,600]) - WHEN bewuchs IN (1210,1220) THEN 186 - WHEN bewuchs=1230 THEN unnest(ARRAY[1000,2000]) - END AS einzug, - CASE - WHEN bewuchs IN (1100,1101,1102,1210,1220,1260) THEN 600 - WHEN bewuchs=1103 THEN unnest(ARRAY[1200,1200]) - WHEN bewuchs=1210 THEN 1000 - WHEN bewuchs=1230 THEN unnest(ARRAY[2000,2000]) - END AS abstand, - CASE - WHEN bewuchs IN (1100,1210,1220,1260) THEN wkb_geometry - WHEN bewuchs=1101 THEN st_reverse(alkis_safe_offsetcurve(wkb_geometry,-0.11,''::text)) - WHEN bewuchs=1102 THEN alkis_safe_offsetcurve(wkb_geometry,0.11,''::text) - WHEN bewuchs=1103 THEN - unnest(ARRAY[ - st_reverse(alkis_safe_offsetcurve(wkb_geometry,-0.11,''::text)), - alkis_safe_offsetcurve(wkb_geometry,0.11,'') - ]) - WHEN bewuchs=1230 THEN - unnest(ARRAY[ - wkb_geometry, - wkb_geometry - ]) - END AS line, - CASE - WHEN bewuchs IN (1100,1101,1102,1103) THEN 3601 - WHEN bewuchs=1210 THEN 3458 - WHEN bewuchs=1220 THEN 3460 - WHEN bewuchs=1230 THEN unnest(ARRAY[3458,3460]) - WHEN bewuchs=1260 THEN 3601 - WHEN bewuchs=1700 THEN 3607 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_vegetationsmerkmal o - WHERE o.endet IS NULL - AND geometrytype(o.wkb_geometry) IN ('LINESTRING','MULTILINESTRING') - ) AS a - ) AS a -) AS a -GROUP BY gml_id,signaturnummer,modell; - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Vegetation' AS thema, - 'ax_vegetationsmerkmal' AS layer, - polygon, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN bewuchs IN (1021,1022,1023,1050,1260,1400,1500,1510,1600,1700,1800) THEN 1560 - WHEN bewuchs=1300 THEN 1561 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_vegetationsmerkmal o - WHERE geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Flächensymbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Vegetation' AS thema, - 'ax_vegetationsmerkmal' AS layer, - st_multi(point), - 0 AS drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - coalesce(p.wkb_geometry,pg_temp.alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry)) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce( - d.signaturnummer, - p.signaturnummer, - CASE - WHEN bewuchs=1021 THEN '3458' - WHEN bewuchs=1022 THEN '3460' - WHEN bewuchs=1023 THEN '3462' - WHEN bewuchs=1050 THEN '3470' - WHEN bewuchs=1260 THEN '3601' - WHEN bewuchs=1400 THEN '3603' - WHEN bewuchs IN (1500,1510) THEN '3413' - WHEN bewuchs=1600 THEN '3605' - WHEN bewuchs=1700 THEN '3607' - WHEN bewuchs=1800 THEN '3609' - END - ) AS signaturnummer, - coalesce( - p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell - FROM ax_vegetationsmerkmal o - LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='BWS' AND p.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWS' AND d.endet IS NULL - WHERE o.endet IS NULL AND geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') -) AS o WHERE NOT signaturnummer IS NULL; - --- Zustand nass, Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - o.gml_id, - 'Vegetation' AS thema, - 'ax_vegetationsmerkmal' AS layer, - st_multi(wkb_geometry) AS polygon, - 1563 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_vegetationsmerkmal o -WHERE geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND zustand=5000; - --- Zustand nass, Symbol -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Vegetation' AS thema, - 'ax_vegetationsmerkmal' AS layer, - st_multi(coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry))) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce(p.signaturnummer,'3478') AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_vegetationsmerkmal o -JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='ZUS' AND p.endet IS NULL -WHERE o.endet IS NULL AND geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND zustand=5000; - --- Schneise, Text -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Vegetation' AS thema, - 'ax_vegetationsmerkmal' AS layer, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - 'Schneise' AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_vegetationsmerkmal o -LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BWS' AND t.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWS' AND d.endet IS NULL -WHERE o.endet IS NULL AND geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND bewuchs=1300; - --- Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Vegetation' AS thema, - 'ax_vegetationsmerkmal' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4074') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_vegetationsmerkmal o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) -) AS n WHERE NOT text IS NULL; - - --- --- Gewässermerkmal (55001) --- - -SELECT 'Gewässermerkmale werden verarbeitet.'; - --- Punkte -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_gewaessermerkmal' AS layer, - st_multi(point), - 0 AS drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - wkb_geometry AS point, - CASE - WHEN o.art=1610 THEN 3613 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_gewaessermerkmal o - WHERE geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - - -/* --- Linien --- TODO: Zickzacklinie - Wasserfall -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_gewaessermerkmal' AS layer, - st_multi(line), - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - wkb_geometry AS line, - CASE - WHEN o.art=1620 THEN 3651 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_gewaessermerkmal o - WHERE geometrytype(o.wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; -*/ - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_gewaessermerkmal' AS layer, - polygon, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN o.art IN (1610,1620) THEN 1562 - WHEN o.art=1630 THEN 1562 - WHEN o.art=1640 THEN 1570 - WHEN o.art=1650 THEN 1571 - WHEN o.art=1660 THEN 1523 - WHEN o.art=9999 THEN 1551 - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_gewaessermerkmal o - WHERE geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Flächensymbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_gewaessermerkmal' AS layer, - st_multi(point), - drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - coalesce(p.wkb_geometry,pg_temp.alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry)) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce( - d.signaturnummer, - p.signaturnummer, - CASE - WHEN o.art=1620 THEN '3615' - WHEN o.art=1630 THEN '3617' - WHEN o.art=1640 THEN '3484' - WHEN o.art=1660 THEN '3490' - END - ) AS signaturnummer, - coalesce( - p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell - FROM ax_gewaessermerkmal o - LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='ART' AND p.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ART' AND d.endet IS NULL - WHERE o.endet IS NULL AND geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') -) AS o WHERE NOT signaturnummer IS NULL; - --- Texte -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_gewaessermerkmal' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce( - t.wkb_geometry, - CASE - WHEN geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN st_translate(o.wkb_geometry,5.5,0) - WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN st_centroid(o.wkb_geometry) - END - ) AS point, - 'Qu'::text AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4103') AS signaturnummer, - drehwinkel, - horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_gewaessermerkmal o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ART' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ART' AND d.endet IS NULL - WHERE o.endet IS NULL AND o.art=1610 -) AS n WHERE NOT text IS NULL; - --- Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_gewaessermerkmal' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,name) AS text, - coalesce( - d.signaturnummer, - t.signaturnummer, - CASE - WHEN o.art IN (1610,1620,1630,1660) THEN '4117' - WHEN o.art IN (1640,1650,9999) THEN '4116' - END - ) AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_gewaessermerkmal o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) -) AS n WHERE NOT text IS NULL AND NOT signaturnummer IS NULL; - - --- --- Untergeordnetes Gewässer (55002) --- - -SELECT 'Untergeordnete Gewässer werden verarbeitet.'; - --- Linien -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_untergeordnetesgewaesser' AS layer, - st_multi(line), - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - wkb_geometry AS line, - CASE - WHEN coalesce(funktion,0) IN (0,1010,1011,1012,1013,1020,1030) THEN - CASE - WHEN lagezurerdoberflaeche IS NULL AND hydrologischesmerkmal IS NULL THEN 2592 - WHEN lagezurerdoberflaeche IN (1800,1810) THEN 2560 - WHEN lagezurerdoberflaeche IS NULL AND hydrologischesmerkmal=2000 THEN 2593 - WHEN lagezurerdoberflaeche IS NULL AND hydrologischesmerkmal=3000 THEN 2595 - END - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_untergeordnetesgewaesser o - WHERE geometrytype(o.wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_untergeordnetesgewaesser' AS layer, - polygon, - signaturnummer, - modell -FROM ( - SELECT - gml_id, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN coalesce(funktion,0) IN (0,1010,1011,1012,1013,1020,1030) THEN - CASE - WHEN lagezurerdoberflaeche IS NULL AND hydrologischesmerkmal IS NULL THEN 1523 - WHEN lagezurerdoberflaeche IN (1800,1810) THEN 1550 - WHEN lagezurerdoberflaeche IS NULL AND hydrologischesmerkmal=2000 THEN 1572 - WHEN lagezurerdoberflaeche IS NULL AND hydrologischesmerkmal=3000 THEN 1573 - END - WHEN funktion=1040 THEN - CASE - WHEN hydrologischesmerkmal IS NULL THEN 1523 - WHEN hydrologischesmerkmal=2000 THEN 1572 - WHEN hydrologischesmerkmal=3000 THEN 1573 - END - END AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_untergeordnetesgewaesser o - WHERE geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL -) AS o WHERE NOT signaturnummer IS NULL; - --- Symbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_untergeordnetesgewaesser' AS layer, - st_multi(point), - drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - coalesce( - p.wkb_geometry, - CASE - WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN coalesce(pg_temp.alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry)) - WHEN geometrytype(o.wkb_geometry)='LINESTRING' THEN st_lineinterpolatepoint( alkis_safe_offsetcurve( o.wkb_geometry, 0.8,''::text ), 0.5 ) - END - ) AS point, - coalesce(p.drehwinkel, - CASE - WHEN geometrytype(o.wkb_geometry)='LINESTRING' - THEN 0.5*pi()-st_azimuth( st_lineinterpolatepoint( o.wkb_geometry, 0.501), st_lineinterpolatepoint( o.wkb_geometry, 0.499) ) - ELSE 0 - END - ) AS drehwinkel, - coalesce( - d.signaturnummer, - p.signaturnummer, - CASE - WHEN coalesce(funktion,0) IN (0,1040) THEN '3490' - WHEN funktion IN (1010,1011,1012,1013,1020,1030) THEN - CASE - WHEN lagezurerdoberflaeche IS NULL AND hydrologischesmerkmal IS NULL THEN '3488' - WHEN lagezurerdoberflaeche IN (1800,1810) THEN '3619' - WHEN lagezurerdoberflaeche IS NULL AND hydrologischesmerkmal=2000 THEN '3621' - END - END - ) AS signaturnummer, - coalesce( - p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell - FROM ax_untergeordnetesgewaesser o - LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='FKT' AND p.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o WHERE NOT point IS NULL; - --- Texte, Lage zur Oberfläche -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_untergeordnetesgewaesser' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce( - t.wkb_geometry, - CASE - WHEN geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN o.wkb_geometry - WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN st_centroid(o.wkb_geometry) - END - ) AS point, - (SELECT beschreibung FROM ax_lagezurerdoberflaeche_untergeordnetesgewaesser WHERE wert=lagezurerdoberflaeche) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_untergeordnetesgewaesser o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='OFL' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='OFL' AND d.endet IS NULL - WHERE o.endet IS NULL AND lagezurerdoberflaeche IN (1800,1810) -) AS o WHERE NOT text IS NULL; - --- Texte, Graben -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_untergeordnetesgewaesser' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce( - t.wkb_geometry, - st_centroid(o.wkb_geometry) - ) AS point, - 'Graben'::text AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_untergeordnetesgewaesser o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='FKT' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL - WHERE o.endet IS NULL AND funktion=1013 AND lagezurerdoberflaeche IS NULL AND hydrologischesmerkmal=3000 -) AS o WHERE NOT text IS NULL; - --- Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Gewässer' AS thema, - 'ax_untergeordnetesgewaesser' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4117') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_untergeordnetesgewaesser o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o WHERE NOT text IS NULL; - --- --- Wasserspiegelhöhe (57001) --- - -SELECT 'Wasserspiegelhöhen werden verarbeitet.'; - --- Symbol -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Gewässer' AS thema, - 'ax_wasserspiegelhoehe' AS layer, - st_multi(coalesce(p.wkb_geometry,o.wkb_geometry)) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce(d.signaturnummer,p.signaturnummer,'3623') AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_wasserspiegelhoehe o -LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='SYMBOL' AND p.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='SYMBOL' AND d.endet IS NULL -WHERE o.endet IS NULL AND NOT hoehedeswasserspiegels IS NULL; - --- Wasserspiegeltext -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Gewässer' AS thema, - 'ax_wasserspiegelhoehe' AS layer, - coalesce(t.wkb_geometry,st_translate(st_centroid(o.wkb_geometry),-3.5,0)) AS point, - hoehedeswasserspiegels AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4102') AS signaturnummer, - drehwinkel, - coalesce(horizontaleausrichtung,'rechtsbündig'::text) AS horizontaleausrichtung, - vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_wasserspiegelhoehe o -LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='HWS' AND t.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='HWS' AND d.endet IS NULL -WHERE o.endet IS NULL AND NOT hoehedeswasserspiegels IS NULL; - --- --- Schifffahrtslinie, Fährverkehr (57002) --- - -SELECT 'Schifffahrtslinien werden verarbeitet.'; - --- Linien -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ax_schifffahrtsliniefaehrverkehr' AS layer, - st_multi(coalesce(l.wkb_geometry,o.wkb_geometry)) AS line, - coalesce( - d.signaturnummer, - l.signaturnummer, - CASE - WHEN o.art=ARRAY[1740] THEN '2592' - ELSE '2609' - END - ) AS signaturnummer, - coalesce(l.advstandardmodell||l.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_schifffahrtsliniefaehrverkehr o -LEFT OUTER JOIN ap_lpo l ON ARRAY[o.gml_id] <@ l.dientzurdarstellungvon AND l.art='Schifffahrtslinie' AND l.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='Schifffahrtslinie' AND d.endet IS NULL -WHERE o.endet IS NULL AND o.art IS NULL; - --- Texte -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_schifffahrtsliniefaehrverkehr' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce( - t.schriftinhalt, - CASE - WHEN o.art IN (ARRAY[1710], ARRAY[1710,1730]) THEN 'Autofähre' - WHEN o.art=ARRAY[1710,1720] THEN 'Auto- und Eisenbahnfähre' - WHEN o.art IN (ARRAY[1720], ARRAY[1720,1730]) THEN 'Eisenbahnfähre' - WHEN o.art=ARRAY[1730] THEN 'Personenfähre' - END - ) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4103') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_schifffahrtsliniefaehrverkehr o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ART' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ART' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS a WHERE NOT text IS NULL; - --- Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ax_schifffahrtsliniefaehrverkehr' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,o.name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4107') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_schifffahrtsliniefaehrverkehr o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) -) AS n WHERE NOT text IS NULL; - --- --- Böschungslinie, Kliff (61001) --- - -SELECT 'Böschungen und Kliffe werden verarbeitet.'; - -SELECT alkis_dropobject('alkis_boeschung'); -CREATE OR REPLACE FUNCTION pg_temp.alkis_boeschung() RETURNS varchar AS $$ -DECLARE - ok GEOMETRY; - uk GEOMETRY; - sk GEOMETRY; - maxdistance DOUBLE PRECISION; - p0 GEOMETRY; - p1 GEOMETRY; - i INTEGER; - dx DOUBLE PRECISION; - dy DOUBLE PRECISION; - s INTEGER; - l DOUBLE PRECISION; - ol DOUBLE PRECISION; - o DOUBLE PRECISION; - int GEOMETRY; - b GEOMETRY; - b1 GEOMETRY[]; - b1l DOUBLE PRECISION[]; - r RECORD; -BEGIN - DELETE FROM po_lines WHERE layer='ax_boeschungkliff'; - - FOR r IN SELECT gml_id, advstandardmodell||sonstigesmodell AS modell FROM ax_boeschungkliff WHERE endet IS NULL LOOP - -- RAISE NOTICE 'gml_id:%', r.gml_id; - - SELECT st_linemerge(st_collect(wkb_geometry)) INTO ok FROM ax_gelaendekante WHERE ARRAY[r.gml_id] <@ istteilvon AND artdergelaendekante=1220 AND endet IS NULL; - IF ok IS NULL THEN - RAISE NOTICE '%: Oberkante fehlt', r.gml_id; - CONTINUE; - END IF; - - -- RAISE NOTICE 'Oberkante:%', st_astext(ok); - - IF geometrytype(ok) <> 'LINESTRING' THEN - RAISE NOTICE '%: LINESTRING als Oberkante erwartet: %', r.gml_id, st_astext(ok); - CONTINUE; - END IF; - - SELECT st_linemerge(st_collect(wkb_geometry)) INTO uk FROM ax_gelaendekante WHERE ARRAY[r.gml_id] <@ istteilvon AND artdergelaendekante=1230 AND endet IS NULL; - IF uk IS NULL THEN - RAISE NOTICE '%: Keine Unterkante', r.gml_id; - CONTINUE; - END IF; - - -- RAISE NOTICE 'Unterkante:%', st_astext(uk); - - SELECT coalesce(st_union(st_union(wkb_geometry),uk),uk) INTO sk FROM ax_gelaendekante WHERE ARRAY[r.gml_id] <@ istteilvon AND artdergelaendekante=1240 AND endet IS NULL; - SELECT st_maxdistance(uk, ok)*1.1 INTO maxdistance; - - -- RAISE NOTICE 'Schnittkanten:%', st_astext(sk); - - s := CASE WHEN st_distance( alkis_safe_offsetcurve(ok, -0.001, ''::text), uk ) > st_distance( alkis_safe_offsetcurve(ok, 0.001, ''::text), uk ) THEN -1 ELSE 1 END; - - o := 0.0; - ol := st_length(ok); - WHILE o < ol-3 LOOP - -- RAISE NOTICE '1 %: %', r.gml_id, o; - - p0 := st_lineinterpolatepoint(ok, o/ol); - p1 := st_lineinterpolatepoint(ok, (o+0.001)/ol); - l := st_distance(p0, p1); - - dx := (st_x(p1) - st_x(p0)) / l; - dy := (st_y(p1) - st_y(p0)) / l; - - b := st_makeline( - p0, - st_translate(p0, s * dy * maxdistance, -s * dx * maxdistance) - ); - - int := st_intersection(b, sk); - - IF int IS NOT NULL AND NOT st_isempty(int) THEN - IF geometrytype(int) = 'POINT' THEN - b := st_makeline(p0, int); - ELSE - b := (SELECT st_makeline(p0, (SELECT * FROM (SELECT (st_dump(int)).geom AS pi) AS pi ORDER BY st_distance(p0, pi) LIMIT 1))); - END IF; - - b1 := array_append(b1, b); - b1l := array_append(b1l, st_length(b)); - END IF; - - o := o + 6.0; - END LOOP; - - IF b1 IS NOT NULL AND array_length(b1,1)>1 THEN - DECLARE - idxs INTEGER[]; - j INTEGER; - k INTEGER; - b2 GEOMETRY[]; - BEGIN - SELECT array_agg(g.idx) INTO idxs FROM ( - SELECT g.idx FROM ( - SELECT (g).path[1] AS idx,st_length((g).geom) AS len FROM ( - SELECT st_dump(st_collect(b1)) AS g - ) AS g - ) AS g ORDER BY g.len DESC - ) AS g; - - FOR j IN 1..array_upper(idxs, 1) LOOP - i := idxs[j]; - - b2 := ARRAY[]::GEOMETRY[]; - FOR k IN 1..array_upper(b1, 1) LOOP - IF k<>i THEN - b2 := array_append(b2, b1[k]); - END IF; - END LOOP; - - b := st_collect(b2); - p0 := st_startpoint(b1[i]); - int := st_intersection(b1[i], b); - - IF int IS NULL OR st_isempty(int) THEN - CONTINUE; - ELSIF geometrytype(int) = 'POINT' THEN - b := st_makeline(p0, int); - ELSE - b := (SELECT st_makeline(p0, (SELECT * FROM (SELECT (st_dump(int)).geom AS pi) AS pi ORDER BY st_distance(p0, pi) LIMIT 1))); - END IF; - - b1[i] := b; - b1l[i] := st_length(b); - END LOOP; - END; - END IF; - - i := 2; - o := 3.0; - WHILE o < ol-3 LOOP - p0 := st_lineinterpolatepoint(ok, o/ol); - p1 := st_lineinterpolatepoint(ok, (o+0.001)/ol); - l := st_distance(p0, p1); - - dx := (st_x(p1) - st_x(p0)) / l; - dy := (st_y(p1) - st_y(p0)) / l; - - l := (b1l[i-1]+b1l[i])/4; - - b1 := array_append( - b1, - st_makeline( - p0, - st_translate(p0, s * dy * l, -s * dx * l) - ) - ); - - o := o + 6.0; - i := i + 1; - END LOOP; - - IF b1 IS NOT NULL AND array_length(b1,1)>0 THEN - INSERT INTO po_lines( - gml_id, thema, layer, line, signaturnummer, modell - ) VALUES ( - r.gml_id, 'Topographie', 'ax_boeschungkliff', st_multi(st_collect(b1)), '2531', r.modell - ); - ELSE - RAISE NOTICE '%: Böschungsgeometrie leer', r.gml_id; - END IF; - - - b1l := ARRAY[]::double precision[]; - b1 := ARRAY[]::GEOMETRY[]; - END LOOP; - - RETURN 'Böschungen berechnet.'; -END; -$$ LANGUAGE plpgsql; - -SELECT pg_temp.alkis_boeschung(); - --- --- Einrichtungen im öffentlichen Bereichen (59102; NRW) --- - --- Punkte -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ks_einrichtunginoeffentlichenbereichen' AS layer, - st_multi(wkb_geometry) AS point, - 0 AS drehwinkel, - CASE - WHEN art='1100' THEN 'KS_1014' - WHEN art='1200' THEN 'KS_1002' - WHEN art='1300' THEN 'KS_1003' - WHEN art='1400' THEN 'KS_1004' - WHEN art='1500' THEN 'KS_1005' - WHEN art='1600' THEN 'KS_1006' - WHEN art='1700' THEN 'KS_1027' - ELSE 'KS_1001' - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_einrichtunginoeffentlichenbereichen o -WHERE geometrytype(wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL; - --- Linien -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ks_einrichtunginoeffentlichenbereichen' AS layer, - st_multi(wkb_geometry) AS point, - 'KS_2001' AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_einrichtunginoeffentlichenbereichen o -WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL; - -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Verkehr' AS thema, - 'ks_einrichtunginoeffentlichenbereichen' AS layer, - st_multi( st_lineinterpolatepoint(line,o.offset) ) AS point, - 0.5*pi()-st_azimuth( st_lineinterpolatepoint(line,o.offset*0.9999), st_lineinterpolatepoint(line,CASE WHEN o.offset=0 THEN 0.001 WHEN o.offset*1.0001>1 THEN 1 ELSE o.offset*1.0001 END) ) AS drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - o.wkb_geometry AS line, - generate_series(125,trunc(st_length(wkb_geometry)*1000.0-125)::int,250) / 1000.0 / st_length(wkb_geometry) AS offset, - 'KS_1003' AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ks_einrichtunginoeffentlichenbereichen o - WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL AND art='1300' -) AS o WHERE NOT signaturnummer IS NULL; - - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ks_einrichtunginoeffentlichenbereichen' AS layer, - st_multi(wkb_geometry) AS polygon, - 'KS_3001' AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_einrichtunginoeffentlichenbereichen o -WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL; - --- --- Bauwerk, Anlagen für Ver- und Entsorgen (59103; NRW) --- - --- Punkte -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ks_bauwerkanlagenfuerverundentsorgung' AS layer, - st_multi(wkb_geometry) AS point, - 0 AS drehwinkel, - CASE - WHEN art='1200' THEN 'KS_1007' - WHEN art='1300' THEN 'KS_1008' - WHEN art IN ('1400', '2100', '2200') THEN 'KS_1009' - WHEN art='1500' THEN 'KS_1010' - WHEN art IN ('3100', '3200', '3300', '3400') THEN 'KS_1011' - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_bauwerkanlagenfuerverundentsorgung o -WHERE geometrytype(wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL; - --- Linien -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ks_bauwerkanlagenfuerverundentsorgung' AS layer, - st_multi(wkb_geometry) AS point, - 'KS_2002' AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_bauwerkanlagenfuerverundentsorgung o -WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL AND art='1100'; - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ks_bauwerkanlagenfuerverundentsorgung' AS layer, - st_multi(wkb_geometry) AS polygon, - 'KS_3001' AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_bauwerkanlagenfuerverundentsorgung o -WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL AND art='1100'; - --- --- Sonstiges Bauwerk (59109; NRW) --- - --- Punkte -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Gebäude' AS thema, - 'ks_sonstigesbauwerk' AS layer, - st_multi(wkb_geometry) AS point, - 0 AS drehwinkel, - 'KS_1012' AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell -FROM ks_sonstigesbauwerk o -WHERE geometrytype(wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL AND bauwerksfunktion='4000'; - --- Linien -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - o.gml_id, - 'Gebäude' AS thema, - 'ks_sonstigesbauwerk' AS layer, - st_multi(wkb_geometry) AS point, - 'KS_2001' AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_sonstigesbauwerk o -WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL AND bauwerksfunktion='3000'; - --- Punktförmige Begleitsignaturen an Linien -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Gebäude' AS thema, - 'ks_sonstigesbauwerk' AS layer, - st_multi( st_lineinterpolatepoint(line,o.offset) ) AS point, - winkel-st_azimuth( st_lineinterpolatepoint(line,o.offset*0.9999), st_lineinterpolatepoint(line,CASE WHEN o.offset=0 THEN 0.001 WHEN o.offset*1.0001>1 THEN 1 ELSE o.offset*1.0001 END) ) AS drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - o.wkb_geometry AS line, - generate_series(1000, trunc(st_length(wkb_geometry)*1000.0)::int, 2000) / 1000.0 / st_length(wkb_geometry) AS offset, - 0.5*pi() AS winkel, - 'KS_1026' AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ks_sonstigesbauwerk o - WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL AND bauwerksfunktion='3000' - UNION - SELECT - o.gml_id, - o.wkb_geometry AS line, - generate_series(2000, trunc(st_length(wkb_geometry)*1000.0)::int, 2000) / 1000.0 / st_length(wkb_geometry) AS offset, - 1.5*pi() AS winkel, - 'KS_1026' AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ks_sonstigesbauwerk o - WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL AND bauwerksfunktion='3000' -) AS o WHERE NOT signaturnummer IS NULL; - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - o.gml_id, - 'Gebäude' AS thema, - 'ks_sonstigesbauwerk' AS layer, - st_multi(wkb_geometry) AS polygon, - 'KS_2001' AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_sonstigesbauwerk o -WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL AND bauwerksfunktion IN (1100, 5000); - - --- --- Einrichtung im Straßenverkehr (59201; NRW) --- - --- Punkte -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ks_einrichtungimstrassenverkehr' AS layer, - st_multi(wkb_geometry) AS point, - 0 AS drehwinkel, - CASE - WHEN art='4100' THEN 'KS_1013' - ELSE 'KS_1001' - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_einrichtungimstrassenverkehr o -WHERE geometrytype(wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL; - --- Linien -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ks_einrichtungimstrassenverkehr' AS layer, - st_multi(wkb_geometry) AS line, - CASE - WHEN art='2200' THEN 'KS_2002' - ELSE 'KS_2001' - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_einrichtungimstrassenverkehr o -WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL; - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ks_einrichtungimstrassenverkehr' AS layer, - st_multi(wkb_geometry) AS polygon, - 'KS_3001' AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_einrichtungimstrassenverkehr o -WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL; - --- --- Verkehrszeichen (59202; NRW) --- - --- Punkte -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ks_verkehrszeichen' AS layer, - st_multi(wkb_geometry) AS point, - 0 AS drehwinkel, - CASE - WHEN gefahrzeichen IS NOT NULL OR vorschriftzeichen IS NOT NULL OR zusatzzeichen IS NOT NULL THEN 'KS_1015' - WHEN 1200 = ANY(richtzeichen) THEN 'KS_1016' - WHEN 1100 = ANY(verkehrseinrichtung) THEN 'KS_1017' - WHEN ARRAY[1210,1220] && verkehrseinrichtung THEN 'KS_1018' - WHEN 1400 = ANY(verkehrseinrichtung) THEN 'KS_1019' - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_verkehrszeichen o -WHERE geometrytype(wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL; - --- Linien -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ks_verkehrszeichen' AS layer, - st_multi(wkb_geometry) AS line, - CASE - WHEN 1111 = ANY(richtzeichen) THEN 'KS_2002' - WHEN ARRAY[1110,1199] && verkehrseinrichtung THEN 'KS_2003' - WHEN 1600 = ANY(verkehrseinrichtung) THEN 'KS_2004' - ELSE 'KS_2001' - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_verkehrszeichen o -WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL; - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ks_verkehrszeichen' AS layer, - st_multi(wkb_geometry) AS polygon, - 'KS_3001' AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_verkehrszeichen o -WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL; - --- --- Einrichtung im Bahnverkehr (59206; NRW) --- - --- Punkte -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ks_einrichtungimbahnverkehr' AS layer, - st_multi(wkb_geometry) AS point, - 0 AS drehwinkel, - CASE - WHEN art=1100 THEN 'KS_1012' - WHEN art=1200 THEN 'KS_1020' - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_einrichtungimbahnverkehr o -WHERE geometrytype(wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL AND art IN (1100,1200); - --- Linien -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - o.gml_id, - 'Verkehr' AS thema, - 'ks_einrichtungimbahnverkehr' AS layer, - st_multi(wkb_geometry) AS line, - 'KS_2001' AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_einrichtungimbahnverkehr o -WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL AND art=1100; - --- --- Bauwerk im Gewässerbereich (59207; NRW) --- - --- Punkte -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Gewässer' AS thema, - 'ks_bauwerkimgewaesserbereich' AS layer, - st_multi(wkb_geometry) AS point, - 0 AS drehwinkel, - 'KS_1022' AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_bauwerkimgewaesserbereich o -WHERE geometrytype(wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL AND bauwerksfunktion=1200; - --- Linien -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - o.gml_id, - 'Gewässer' AS thema, - 'ks_bauwerkimgewaesserbereich' AS layer, - st_multi(wkb_geometry) AS line, - CASE - WHEN bauwerksfunktion=1100 THEN 'KS_2001' - WHEN bauwerksfunktion=1200 THEN 'KS_2002' - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_bauwerkimgewaesserbereich o -WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL AND bauwerksfunktion IN (1100,1200); - --- --- Vegetationsmerkmal (59301; NRW) --- - --- Punkte -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Vegetation' AS thema, - 'ks_vegetationsmerkmal' AS layer, - st_multi(wkb_geometry) AS point, - 0 AS drehwinkel, - CASE - WHEN bewuchs=1013 THEN 'KS_1023' - WHEN bewuchs=2100 THEN 'KS_1024' - WHEN bewuchs=2200 THEN 'KS_1025' - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_vegetationsmerkmal o -WHERE geometrytype(wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL AND bewuchs IN (1013,2100,2200); - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - o.gml_id, - 'Vegetation' AS thema, - 'ks_vegetationsmerkmal' AS layer, - st_multi(wkb_geometry) AS polygon, - 'KS_2001' AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_vegetationsmerkmal o -WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL AND bewuchs IN (1100,3100); - --- --- Bau-, Raum- oder Bodenordnungsrecht (59401; NRW) --- - -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - o.gml_id, - 'Rechtliche Festlegungen' AS thema, - 'ks_bauraumoderbodenordnungsrecht' AS layer, - st_multi(wkb_geometry) AS line, - 'KS_2001' AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_bauraumoderbodenordnungsrecht o -WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL; - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - o.gml_id, - 'Rechtliche Festlegungen' AS thema, - 'ks_bauraumoderbodenordnungsrecht' AS layer, - st_multi(wkb_geometry) AS polygon, - 'KS_3002' AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_bauraumoderbodenordnungsrecht o -WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL; - --- --- Kommunaler Besitz (59402; NRW) --- - -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - o.gml_id, - 'Flurstücke' AS thema, - 'ks_kommunalerbesitz' AS layer, - st_multi(wkb_geometry) AS line, - 'KS_2001' AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_kommunalerbesitz o -WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL; - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Flurstücke' AS thema, - 'ks_kommunalerbesitz' AS layer, - st_multi(wkb_geometry) AS polygon, - 'KS_3003' AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ks_kommunalerbesitz -WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL; - --- --- Damm, Wall, Deich (61003) --- - -SELECT 'Dämme, Wälle und Deiche werden verarbeitet.'; - --- Linien -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - o.gml_id, - 'Topographie' AS thema, - 'ax_dammwalldeich' AS layer, - st_multi( - CASE - WHEN art='1991' THEN alkis_safe_offsetcurve(line,-0.17,''::text) - WHEN art='1992' THEN alkis_safe_offsetcurve(line, 0.17,''::text) - ELSE line - END - ) AS line, - 2620 AS signaturnummer, - modell -FROM ( - SELECT - gml_id, - art, - CASE geometrytype(wkb_geometry) WHEN 'MULTILINESTRING' THEN (st_dump(wkb_geometry)).geom ELSE wkb_geometry END AS line, - advstandardmodell||sonstigesmodell AS modell - FROM ax_dammwalldeich - WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL -) AS o; - --- Punkte, Wall -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Topographie' AS thema, - 'ax_dammwalldeich' AS layer, - st_multi( st_lineinterpolatepoint(line,o.offset) ) AS point, - 0.5*pi()-st_azimuth( st_lineinterpolatepoint(line,o.offset*0.9999), st_lineinterpolatepoint(line,CASE WHEN o.offset=0 THEN 0.001 WHEN o.offset*1.0001>1 THEN 1 ELSE o.offset*1.0001 END) ) AS drehwinkel, - 3632 AS signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - CASE - WHEN art='1991' THEN alkis_safe_offsetcurve(o.line,-0.17,''::text) - WHEN art='1992' THEN alkis_safe_offsetcurve(o.line, 0.17,''::text) - WHEN art IN ('2010','2012') THEN alkis_safe_offsetcurve(o.line,-0.34,''::text) - WHEN art IN ('2011','2013') THEN alkis_safe_offsetcurve(o.line, 0.34,''::text) - ELSE o.line - END AS line, - generate_series( 3650, trunc(st_length(line)*1000.0)::int, 6000 ) / 1000.0 / st_length(line) AS offset, - modell - FROM ( - SELECT - gml_id, - art, - CASE geometrytype(wkb_geometry) WHEN 'MULTILINESTRING' THEN (st_dump(wkb_geometry)).geom ELSE wkb_geometry END AS line, - advstandardmodell||sonstigesmodell AS modell - FROM ax_dammwalldeich o - WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL AND art IN ('1910','1920','1930','1940','1950','1960','1970','1980','1990','1991','1992','2010','2011','2012','2013') - ) AS o -) AS o; - --- Punkte, Knick, Wall -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Topographie' AS thema, - 'ax_dammwalldeich' AS layer, - st_multi( st_lineinterpolatepoint(line,o.offset) ) AS point, - 0.5*pi()-st_azimuth( st_lineinterpolatepoint(line,o.offset*0.9999), st_lineinterpolatepoint(line,CASE WHEN o.offset=0 THEN 0.001 WHEN o.offset*1.0001>1 THEN 1 ELSE o.offset*1.0001 END) ) AS drehwinkel, - 3632 AS signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - CASE - WHEN art='2001' THEN alkis_safe_offsetcurve(o.line,-0.17,''::text) - WHEN art='2002' THEN alkis_safe_offsetcurve(o.line, 0.17,''::text) - ELSE line - END AS line, - generate_series( 5950, trunc(st_length(line)*1000.0)::int, 6000 ) / 1000.0 / st_length(line) AS offset, - modell - FROM ( - SELECT - gml_id, - art, - CASE geometrytype(wkb_geometry) WHEN 'MULTILINESTRING' THEN (st_dump(wkb_geometry)).geom ELSE wkb_geometry END AS line, - advstandardmodell||sonstigesmodell AS modell - FROM ax_dammwalldeich o - WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL AND art IN ('2000','2001','2002','2003') - ) AS o -) AS o; - --- Punkte, Knick, Bewuchs -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Topographie' AS thema, - 'ax_dammwalldeich' AS layer, - st_multi( st_lineinterpolatepoint(line,o.offset) ) AS point, - 0.5*pi()-st_azimuth( st_lineinterpolatepoint(line,o.offset*0.9999), st_lineinterpolatepoint(line,CASE WHEN o.offset=0 THEN 0.001 WHEN o.offset*1.0001>1 THEN 1 ELSE o.offset*1.0001 END) ) AS drehwinkel, - 3601 AS signaturnummer, - modell -FROM ( - SELECT - o.gml_id, - CASE - WHEN art='2001' THEN alkis_safe_offsetcurve(o.line,-0.17,''::text) - WHEN art='2002' THEN alkis_safe_offsetcurve(o.line, 0.17,''::text) - ELSE line - END AS line, - generate_series( 2900, trunc(st_length(line)*1000.0)::int, 6000 ) / 1000.0 / st_length(line) AS offset, - modell - FROM ( - SELECT - gml_id, - art, - CASE geometrytype(wkb_geometry) WHEN 'MULTILINESTRING' THEN (st_dump(wkb_geometry)).geom ELSE wkb_geometry END AS line, - advstandardmodell||sonstigesmodell AS modell - FROM ax_dammwalldeich o - WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL AND art IN ('2000','2001','2002','2003') - ) AS o -) AS o; - --- Fläche -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - o.gml_id, - 'Topographie' AS thema, - 'ax_dammwalldeich' AS layer, - st_multi(wkb_geometry) AS polygon, - 1551 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_dammwalldeich o -WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL AND art IN ('1910','1920','1930','1940','1950','1960','1970','1980','1990'); - --- TODO mit Graben - --- Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Topographie' AS thema, - 'ax_dammwalldeich' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4109') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_dammwalldeich o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) -) AS n WHERE NOT text IS NULL; - --- --- Höhleneingang (61005) --- - -SELECT 'Höhleneingänge werden verarbeitet.'; - -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Topographie' AS thema, - 'ax_hoehleneingang' AS layer, - st_multi(wkb_geometry) AS point, - 0 AS drehwinkel, - 3625 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_hoehleneingang -WHERE endet IS NULL; - --- Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Topographie' AS thema, - 'ax_hoehleneingang' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(d.signaturnummer,t.signaturnummer,'4118') AS signaturnummer, - coalesce(t.schriftinhalt,name) AS text, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_hoehleneingang o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) -) AS n WHERE NOT text IS NULL; - --- --- Felsen, Felsblock, Felsnadel (61006) --- - -SELECT 'Felsen werden verarbeitet.'; - -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Topographie' AS thema, - 'ax_felsenfelsblockfelsnadel' AS layer, - st_multi(wkb_geometry) AS point, - 0 AS drehwinkel, - 3627 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_felsenfelsblockfelsnadel o -WHERE geometrytype(wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL; - --- Punktförmige Begleitsignaturen an Linien -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - gml_id, - 'Topographie' AS thema, - 'ax_felsenfelsblockfelsnadel' AS layer, - st_multi(st_collect(st_lineinterpolatepoint(line,CASE WHEN a.offset<0 THEN 0 WHEN a.offset>1 THEN 1 ELSE a.offset END))) AS point, - 0 AS drehwinkel, - signaturnummer, - modell -FROM ( - SELECT - gml_id, - signaturnummer, - line, - generate_series(einzug,trunc(st_length(line)*1000)::int,abstand) / 1000.0 / st_length(line) AS offset, - modell - FROM ( - SELECT - gml_id, - einzug, - abstand, - CASE geometrytype(line) WHEN 'MULTILINESTRING' THEN (st_dump(line)).geom ELSE line END AS line, - signaturnummer, - modell - FROM ( - SELECT - gml_id, - 710 AS einzug, - 800 AS abstand, - wkb_geometry AS line, - 3634 AS signaturnummer, - advstandardmodell||sonstigesmodell AS modell - FROM ax_felsenfelsblockfelsnadel o - WHERE o.endet IS NULL - AND geometrytype(o.wkb_geometry) IN ('LINESTRING','MULTILINESTRING') - ) AS a - ) AS a -) AS a -GROUP BY gml_id,signaturnummer,modell; - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - o.gml_id, - 'Topographie' AS thema, - 'ax_felsenfelsblockfelsnadel' AS layer, - st_multi(wkb_geometry) AS polygon, - 1551 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_felsenfelsblockfelsnadel o -WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL; - --- Flächensymbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Topographie' AS thema, - 'ax_felsenfelsblockfelsnadel' AS layer, - st_multi(coalesce(p.wkb_geometry,pg_temp.alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry))) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce(d.signaturnummer,p.signaturnummer,'3627') AS signaturnummer, - coalesce( - p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell -FROM ax_felsenfelsblockfelsnadel o -LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='Felsen' AND p.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='Felsen' AND d.endet IS NULL -WHERE o.endet IS NULL AND geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON'); - --- Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Topographie' AS thema, - 'ax_felsenfelsblockfelsnadel' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(t.schriftinhalt,name) AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4118') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_felsenfelsblockfelsnadel o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) -) AS n WHERE NOT text IS NULL; - --- --- Düne (61007) --- - -SELECT 'Dünen werden verarbeitet.'; - --- Flächen -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Topographie' AS thema, - 'ax_duene' AS layer, - st_multi(wkb_geometry) AS polygon, - 1570 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_duene -WHERE endet IS NULL; - --- Flächensymbole -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Topographie' AS thema, - 'ax_duene' AS layer, - st_multi(coalesce(p.wkb_geometry,pg_temp.alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry))) AS point, - coalesce(p.drehwinkel,0) AS drehwinkel, - coalesce(d.signaturnummer,p.signaturnummer,'3484') AS signaturnummer, - coalesce( - p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, - o.advstandardmodell||o.sonstigesmodell - ) AS modell -FROM ax_duene o -LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='Duene' AND p.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='Duene' AND d.endet IS NULL -WHERE o.endet IS NULL; - --- Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Topographie' AS thema, - 'ax_duene' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce(d.signaturnummer,t.signaturnummer,'4118') AS signaturnummer, - coalesce(t.schriftinhalt,name) AS text, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_duene o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) -) AS n WHERE NOT text IS NULL; - --- --- Höhenlinien (61008) --- - -SELECT 'Höhenlinien werden verarbeitet.'; - --- TODO: Ob das wohl stimmt? -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - gml_id, - 'Topographie' AS thema, - 'ax_hoehenlinie' AS layer, - st_multi(wkb_geometry) AS line, - CASE - WHEN hoehevonhoehenlinie::int%20=0 THEN 2670 - WHEN hoehevonhoehenlinie::int%10=0 THEN 2672 - WHEN (hoehevonhoehenlinie*2)::int%10=0 THEN 2674 - WHEN (hoehevonhoehenlinie*4)::int%10=0 THEN 2676 - WHEN (hoehevonhoehenlinie*20)::int%10=0 THEN 2676 - WHEN (hoehevonhoehenlinie*40)::int%10=0 THEN 2676 - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_hoehenlinie -WHERE endet IS NULL; - --- Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Topographie' AS thema, - 'ax_hoehenlinie' AS layer, - coalesce(t.wkb_geometry,st_lineinterpolatepoint(o.wkb_geometry,0.5)) AS point, - hoehevonhoehenlinie AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4104') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_hoehenlinie o -LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='HHL' AND t.endet IS NULL -LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='HHL' AND d.endet IS NULL -WHERE o.endet IS NULL AND NOT hoehevonhoehenlinie IS NULL; - --- --- Besonderer topographischer Punkt (61009) --- - -SELECT 'Besondere topographische Punkte verarbeitet.'; - -INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) -SELECT - o.gml_id, - 'Topographie' AS thema, - 'ax_besonderertopographischerpunkt' AS layer, - st_multi(st_force2d(p.wkb_geometry)) AS point, - 0 AS drehwinkel, - 3629 AS signaturnummer, - coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_besonderertopographischerpunkt o -JOIN ax_punktortau p ON ARRAY[o.gml_id] <@ p.istteilvon AND p.endet IS NULL -WHERE o.endet IS NULL; - --- Text --- TODO: 14003 [UPO] steht für welches Beschriftungsfeld? -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Topographie' AS thema, - 'ax_besonderertopographischerpunkt' AS layer, - t.wkb_geometry AS point, - coalesce(schriftinhalt,punktkennung) AS text, - coalesce(t.signaturnummer,'4104') AS signaturnummer, - drehwinkel, - horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_besonderertopographischerpunkt o -JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='UPO' AND t.endet IS NULL -WHERE o.endet IS NULL; - --- --- Geländekante (62040) --- - -SELECT 'Geländekanten werden verarbeitet.'; - -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - gml_id, - 'Topographie' AS thema, - 'ax_gelaendekante' AS layer, - st_multi(wkb_geometry) AS line, - CASE - WHEN artdergelaendekante IN (1220,1230) AND gml_id LIKE 'DENW%' THEN - CASE erfassung_identifikation - WHEN 5400 THEN 2531 - WHEN 5410 THEN 8223 - END - WHEN artdergelaendekante IN (1220,1230,1240) THEN 2531 - WHEN artdergelaendekante=1210 THEN 2622 - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_gelaendekante WHERE artdergelaendekante IN (1210,1220,1230,1240) AND endet IS NULL; - - --- --- Klassifizierungen nach Straßenrecht (71001) --- - -SELECT 'Klassifizierungen nach Straßenrecht werden verarbeitet.'; - -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Rechtliche Festlegungen' AS thema, - 'ax_klassifizierungnachstrassenrecht' AS layer, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN artderfestlegung IN (1110,1120) THEN 1701 - WHEN artderfestlegung=1130 THEN 1702 - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_klassifizierungnachstrassenrecht -WHERE artderfestlegung IN (1110,1120,1130) - AND endet IS NULL - AND geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON'); - -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Rechtliche Festlegungen' AS thema, - 'ax_klassifizierungnachstrassenrecht' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - t.wkb_geometry AS point, - bezeichnung AS text, - coalesce(t.signaturnummer,'4140') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_klassifizierungnachstrassenrecht o - JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BEZ' AND t.endet IS NULL - WHERE o.endet IS NULL -) AS o WHERE NOT text IS NULL; - --- --- Klassifizierungen nach Wasserrecht (71003) --- (kommt in SK nicht vor) --- - -SELECT 'Klassifizierungen nach Wasserrecht werden verarbeitet.'; - -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Rechtliche Festlegungen' AS thema, - 'ax_klassifizierungnachwasserrecht' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - t.wkb_geometry AS point, - schriftinhalt AS text, - coalesce(t.signaturnummer,'4140') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_klassifizierungnachwasserrecht o - JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.endet IS NULL - WHERE o.endet IS NULL -) AS o WHERE NOT text IS NULL; - --- TODO: Kam noch nicht vor --- RP: ax_andereklassifizierungnachwasserrecht (71004) --- RP: ax_anderefestlegungnachwasserrecht (71005) - --- --- Klassifizierungen nach Natur-, Umwelt- oder Bodenschutzrecht (71006) --- - -SELECT 'Klassifizierungen nach Natur-, Umwelt und Bodenschutzrecht werden verarbeitet.'; - -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - o.gml_id, - 'Rechtliche Festlegungen' AS thema, - 'ax_naturumweltoderbodenschutzrecht' AS layer, - st_multi(wkb_geometry) AS polygon, - CASE - WHEN o.gml_id LIKE 'DERP%' THEN - CASE - WHEN artderfestlegung IN (1610,1612,1621,1622,1642,1653,1656) THEN 1703 - WHEN artderfestlegung IN (1632,1634,1641,1655,1662) THEN 1704 - END - ELSE 1703 - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_naturumweltoderbodenschutzrecht o -WHERE (artderfestlegung=1621 OR (o.gml_id LIKE 'DERP%' AND artderfestlegung IN (1610,1612,1621,1622,1632,1634,1641,1642,1653,1655,1656,1662))) AND endet IS NULL - AND geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON'); - -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Rechtliche Festlegungen' AS thema, - 'ax_naturumweltoderbodenschutzrecht' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - t.wkb_geometry AS point, - CASE - WHEN o.gml_id LIKE 'DERP%' THEN - coalesce( - t.schriftinhalt, - CASE - WHEN artderfestlegung=1610 THEN 'Schutzfläche' - WHEN artderfestlegung=1656 THEN 'Ausgleichsfläche' - WHEN artderfestlegung IN (1612,1621,1622,1632,1634,1641,1642,1653,1655,1662) THEN - (SELECT beschreibung FROM ax_artderfestlegung_naturumweltoderbodenschutzrecht WHERE wert=artderfestlegung) - END - ) - ELSE - (SELECT beschreibung FROM ax_artderfestlegung_naturumweltoderbodenschutzrecht WHERE wert=artderfestlegung) - END AS text, - coalesce( - t.signaturnummer, - CASE - WHEN o.gml_id LIKE 'DERP%' THEN - CASE - WHEN artderfestlegung IN (1610,1612,1621,1622,1642) THEN '4143' - WHEN artderfestlegung IN (1632,1634,1641) THEN '4144' - WHEN artderfestlegung IN (1655,1662) THEN 'RP4075' - WHEN artderfestlegung=1656 THEN 'RP4076' - END - ELSE '4143' - END - ) AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_naturumweltoderbodenschutzrecht o - JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ADF' AND t.endet IS NULL - WHERE (artderfestlegung=1621 OR (o.gml_id LIKE 'DERP%' AND artderfestlegung IN (1610,1612,1621,1622,1632,1634,1641,1642,1653,1655,1656,1662))) AND o.endet IS NULL -) AS o WHERE NOT text IS NULL; - --- Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Rechtliche Festlegungen' AS thema, - 'ax_naturumweltoderbodenschutzrecht' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - '"' || coalesce(t.schriftinhalt,name) || '"' AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4143') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_naturumweltoderbodenschutzrecht o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) -) AS n WHERE NOT text IS NULL; - --- --- Schutzgebiet nach Natur-, Umwelt- oder Bodenschutzrecht (71007) --- - -SELECT 'Schutzgebiete nach Natur-, Umwelt und Bodenschutzrecht werden verarbeitet.'; - -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - o.gml_id, - 'Rechtliche Festlegungen' AS thema, - 'ax_schutzgebietnachnaturumweltoderbodenschutzrecht' AS layer, - st_multi(z.wkb_geometry) AS polygon, - 1703 AS signaturnummer, - o.advstandardmodell||o.sonstigesmodell -FROM ax_schutzgebietnachnaturumweltoderbodenschutzrecht o -JOIN ax_schutzzone z ON ARRAY[o.gml_id] <@ z.istteilvon AND z.endet IS NULL -WHERE o.artderfestlegung=1621 AND o.endet IS NULL; - -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Rechtliche Festlegungen' AS thema, - 'ax_schutzgebietnachnaturumweltoderbodenschutzrecht' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(z.wkb_geometry)) AS point, - (SELECT beschreibung FROM ax_artderfestlegung_schutzgebietnachnaturumweltoderbodensc WHERE wert=artderfestlegung) AS text, - coalesce(t.signaturnummer,'4143') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_schutzgebietnachnaturumweltoderbodenschutzrecht o - LEFT OUTER JOIN ax_schutzzone z ON ARRAY[o.gml_id] <@ z.istteilvon AND z.endet IS NULL - JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ADF' AND t.endet IS NULL - WHERE o.endet IS NULL -) AS o WHERE NOT text IS NULL; - --- Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Rechtliche Festlegungen' AS thema, - 'ax_schutzgebietnachnaturumweltoderbodenschutzrecht' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(z.wkb_geometry)) AS point, - '"' || name || '"' AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4143') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_schutzgebietnachnaturumweltoderbodenschutzrecht o - LEFT OUTER JOIN ax_schutzzone z ON ARRAY[o.gml_id] <@ z.istteilvon AND z.endet IS NULL - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND NOT name IS NULL -) AS n WHERE NOT text IS NULL; - --- --- Bauraum- oder Bauordnungsrecht (71008) --- - -SELECT 'Bauraum und Bauordnungsrecht wird verarbeitet.'; - -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Rechtliche Festlegungen' AS thema, - 'ax_bauraumoderbodenordnungsrecht' AS layer, - st_multi(wkb_geometry) AS polygon, - 1704 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_bauraumoderbodenordnungsrecht o -WHERE endet IS NULL; - -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Rechtliche Festlegungen' AS thema, - 'ax_bauraumoderbodenordnungsrecht' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - coalesce( - t.schriftinhalt, - CASE - WHEN artderfestlegung=1750 THEN 'Umlegung' - WHEN artderfestlegung=1840 THEN 'Sanierung' - WHEN artderfestlegung IN (2100,2110,2120,2130,2140,2150) THEN 'Flurbereinigung' - WHEN o.gml_id LIKE 'DERP%' THEN - CASE - WHEN artderfestlegung IN (1760,2610) THEN - (SELECT beschreibung FROM ax_artderfestlegung_bauraumoderbodenordnungsrecht WHERE wert=artderfestlegung) - WHEN artderfestlegung=1810 THEN 'Entwickungsbereich' - END - END - ) AS text, - coalesce( - d.signaturnummer, - t.signaturnummer, - CASE - WHEN o.gml_id LIKE 'DERP%' AND artderfestlegung IN (1760,2610) - THEN 'RP4075' - ELSE '4144' - END - ) AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_bauraumoderbodenordnungsrecht o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ADF' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ADF' AND d.endet IS NULL - WHERE o.endet IS NULL -) AS o WHERE NOT text IS NULL; - --- Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Rechtliche Festlegungen' AS thema, - 'ax_bauraumoderbodenordnungsrecht' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - CASE - WHEN artderfestlegung=1750 THEN 'Umlegung' - WHEN artderfestlegung=1840 THEN 'Sanierung' - WHEN artderfestlegung IN (2100,2110,2120,2130,2140,2150) THEN 'Flurbereinigung' - END - || ' "' || name || '"' AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4144') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_bauraumoderbodenordnungsrecht o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND NOT name IS NULL AND artderfestlegung IN (1750,1840,2100,2110,2120,2130,2140,2150) -) AS n WHERE NOT text IS NULL; - --- --- Denkmalschutzrecht (71009; RP) --- - -SELECT 'Denkmalschutzrecht wird verarbeitet.'; - -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Rechtliche Festlegungen' AS thema, - 'ax_denkmalschutzrecht' AS layer, - st_multi(wkb_geometry) AS polygon, - '1704' AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_denkmalschutzrecht o -WHERE endet IS NULL AND gml_id LIKE 'DERP%'; - -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Rechtliche Festlegungen' AS thema, - 'ax_denkmalschutzrecht' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - t.wkb_geometry AS point, - CASE - WHEN artderfestlegung=2910 THEN 'DZ' - WHEN artderfestlegung=2930 THEN 'GSG' - END AS text, - coalesce(t.signaturnummer,'RP4144') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_denkmalschutzrecht o - JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ADF' AND t.endet IS NULL - WHERE o.endet IS NULL AND o.gml_id LIKE 'DERP%' -) AS o WHERE NOT text IS NULL; - --- --- Sonstiges Recht (71011) --- - -SELECT 'Sonstiges Recht wird verarbeitet.'; - -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - gml_id, - 'Rechtliche Festlegungen' AS thema, - 'ax_sonstigesrecht' AS layer, - st_multi(wkb_geometry) AS polygon, - 1704 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_sonstigesrecht o -WHERE artderfestlegung=1740 AND endet IS NULL; - -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Rechtliche Festlegungen' AS thema, - 'ax_sonstigesrecht' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - CASE - WHEN o.gml_id LIKE 'DERP%' THEN - coalesce( - t.schriftinhalt, - CASE - WHEN artderfestlegung=4720 THEN 'MÜG' - WHEN artderfestlegung=7000 THEN 'WLG' - WHEN artderfestlegung=7100 THEN 'STL' - WHEN artderfestlegung=7300 THEN 'SSL' - END - ) - ELSE 'Truppenübungsplatz'::text - END AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4144') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_sonstigesrecht o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ART' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ART' AND d.endet IS NULL - WHERE o.endet IS NULL AND (NOT name IS NULL AND artderfestlegung=4720) -) AS n WHERE NOT text IS NULL; - --- Namen -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Rechtliche Festlegungen' AS thema, - 'ax_sonstigesrecht' AS layer, - point, - text, - signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - 'Truppenübungsplatz "' || name || '"' AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4144') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_sonstigesrecht o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND (NOT name IS NULL AND artderfestlegung=4720) -) AS n WHERE NOT text IS NULL; - --- --- Landwirtschaftliche Nutzung (72004; RP) --- - -INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) -SELECT - o.gml_id, - 'Landwirtschaftliche Nutzung' AS thema, - 'ax_bewertung' AS layer, - st_multi(wkb_geometry) AS polygon, - 1704 AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_bewertung o -WHERE gml_id LIKE 'DERP%' AND endet IS NULL AND geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON'); - -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - o.gml_id, - 'Landwirtschaftliche Nutzung' AS thema, - 'ax_bewertung' AS layer, - t.wkb_geometry AS point, - t.schriftinhalt AS text, - 4107 AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell -FROM ax_bewertung o -JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='KLA' AND t.endet IS NULL AND t.schriftinhalt IS NOT NULL -WHERE o.gml_id LIKE 'DERP%' AND o.endet IS NULL; - --- --- Wohnplatz (74005) --- - -SELECT 'Wohnplätze werden verarbeitet.'; - -INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) -SELECT - gml_id, - 'Flurstücke' AS thema, - 'ax_wohnplatz' AS layer, - point, - text, - signaturnummer, - drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell -FROM ( - SELECT - o.gml_id, - coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, - name AS text, - coalesce(d.signaturnummer,t.signaturnummer,'4200') AS signaturnummer, - drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, - coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell - FROM ax_wohnplatz o - LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL - LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL - WHERE o.endet IS NULL AND NOT name IS NULL -) AS n WHERE NOT text IS NULL; - --- --- Migrationsobjekt: Gebäudeausgestaltung (91001) --- - -SELECT 'Migrationsobjekte werden verarbeitet.'; - -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) -SELECT - gml_id, - 'Gebäude' AS thema, - 'ax_gebaeudeausgestaltung' AS layer, - st_multi(wkb_geometry) AS line, - CASE - WHEN darstellung=1012 THEN 2030 -- öffentliches Gebäude - WHEN darstellung=1013 THEN 2031 -- nicht öffentliches Gebäude - WHEN darstellung=1014 THEN 2305 -- Offene Begrenzungslinie eines Gebäude - END AS signaturnummer, - advstandardmodell||sonstigesmodell -FROM ax_gebaeudeausgestaltung -WHERE endet IS NULL AND darstellung IN (1012,1013,1014); - -SELECT - darstellung AS "Migrationsobjekte ohne Signatur", - count(*) AS "Anzahl" -FROM ax_gebaeudeausgestaltung -WHERE NOT darstellung IN (1012,1013,1014) -GROUP BY darstellung; - --- --- --- - -SELECT 'Nachbearbeitung läuft...'; - --- Polygonsignaturen aufteilen (1XXX = Fläche, 2XXX = Linie) -UPDATE po_polygons SET - sn_flaeche=CASE - WHEN signaturnummer::int BETWEEN 1000 AND 1999 THEN signaturnummer - WHEN signaturnummer::int>10000 THEN - CASE - WHEN signaturnummer::int%10000 BETWEEN 1000 AND 1999 THEN (signaturnummer::int%10000)::text - WHEN signaturnummer::int/10000 BETWEEN 1000 AND 1999 THEN (signaturnummer::int/10000)::text - END - WHEN signaturnummer::int BETWEEN 2000 AND 2999 AND EXISTS (SELECT * FROM alkis_flaechen f WHERE po_polygons.signaturnummer=f.signaturnummer) THEN signaturnummer - END, - sn_randlinie=CASE - WHEN signaturnummer::int BETWEEN 2000 AND 2999 THEN signaturnummer - WHEN signaturnummer::int>10000 THEN - CASE - WHEN signaturnummer::int%10000 BETWEEN 2000 AND 2999 THEN (signaturnummer::int%10000)::text - WHEN signaturnummer::int/10000 BETWEEN 2000 AND 2999 THEN (signaturnummer::int/10000)::text - END - END -WHERE signaturnummer ~ E'^[0-9]+$'; - --- --- Randlinien als 'normale' Linien ergänzen --- - -DELETE FROM alkis_linie WHERE signaturnummer LIKE 'rn%'; -DELETE FROM alkis_linien WHERE signaturnummer LIKE 'rn%'; - -CREATE TEMPORARY SEQUENCE rnstrichart0_seq; -SELECT setval('rnstrichart0_seq',max(id)+1) FROM alkis_stricharten; -CREATE TEMPORARY SEQUENCE rnstrichart_seq; - -CREATE TEMPORARY SEQUENCE rnstricharteni_seq; -SELECT setval('rnstricharteni_seq',max(id)+1) FROM alkis_stricharten_i; - -CREATE TEMPORARY SEQUENCE rnlinie_seq; -SELECT setval('rnlinie_seq',max(id)+1) FROM alkis_linie; - -SELECT setval('rnstrichart_seq',currval('rnstrichart0_seq')); -INSERT INTO alkis_stricharten(id) - SELECT nextval('rnstrichart_seq') - FROM alkis_flaechen f - JOIN alkis_randlinie r ON f.randlinie=r.id - ORDER BY f.katalog,f.signaturnummer,r.id; - -SELECT setval('rnstrichart_seq',currval('rnstrichart0_seq')); -INSERT INTO alkis_stricharten_i(id,stricharten,i,strichart) - SELECT nextval('rnstricharteni_seq'), nextval('rnstrichart_seq'),0,strichart - FROM alkis_flaechen f - JOIN alkis_randlinie r ON f.randlinie=r.id - ORDER BY f.katalog,f.signaturnummer,r.id; - -INSERT INTO alkis_linien(katalog,signaturnummer,darstellungsprioritaet,name,seite) - SELECT katalog,'rn'||signaturnummer,darstellungsprioritaet,name,seite - FROM alkis_flaechen f - JOIN alkis_randlinie r ON f.randlinie=r.id - ORDER BY f.katalog,f.signaturnummer,r.id; - -SELECT setval('rnstrichart_seq',currval('rnstrichart0_seq')); -INSERT INTO alkis_linie(id,i,katalog,signaturnummer,strichart,abschluss,scheitel,strichstaerke,farbe) - SELECT nextval('rnlinie_seq'),0,katalog,'rn'||signaturnummer,nextval('rnstrichart_seq'),abschluss,scheitel,strichstaerke,r.farbe - FROM alkis_flaechen f - JOIN alkis_randlinie r ON f.randlinie=r.id - ORDER BY f.katalog,f.signaturnummer,r.id; - -DROP SEQUENCE rnstrichart0_seq; -DROP SEQUENCE rnstrichart_seq; -DROP SEQUENCE rnstricharteni_seq; -DROP SEQUENCE rnlinie_seq; - --- Array -> Set -UPDATE po_points SET modell=(SELECT array_agg(modell) FROM (SELECT DISTINCT unnest(modell) AS modell ORDER BY modell) AS foo),drehwinkel_grad=degrees(drehwinkel); -UPDATE po_lines SET modell=(SELECT array_agg(modell) FROM (SELECT DISTINCT unnest(modell) AS modell ORDER BY modell) AS foo); -UPDATE po_polygons SET modell=(SELECT array_agg(modell) FROM (SELECT DISTINCT unnest(modell) AS modell ORDER BY modell) AS foo); -UPDATE po_labels SET modell=(SELECT array_agg(modell) FROM (SELECT DISTINCT unnest(modell) AS modell ORDER BY modell) AS foo),drehwinkel_grad=degrees(drehwinkel); - -SELECT - modell AS "ALKIS-Modellart", - count(*) AS "#Objekte" -FROM ( - SELECT unnest(modell) AS modell FROM po_points UNION ALL - SELECT unnest(modell) AS modell FROM po_lines UNION ALL - SELECT unnest(modell) AS modell FROM po_polygons UNION ALL - SELECT unnest(modell) AS modell from po_lines UNION ALL - SELECT unnest(modell) AS modell from po_labels -) AS foo -GROUP BY modell -ORDER BY "#Objekte" DESC; - -SELECT - modell AS "ALKIS-Modellart", - count(*) AS "#Objekte" -FROM ( - SELECT modell FROM po_points UNION ALL - SELECT modell FROM po_lines UNION ALL - SELECT modell FROM po_polygons UNION ALL - SELECT modell from po_lines UNION ALL - SELECT modell from po_labels -) AS foo -GROUP BY modell -ORDER BY "#Objekte" DESC; - --- Unerwünschte Modelle löschen --- DELETE FROM po_points WHERE NOT :alkis_modelle::varchar[] && modell; --- DELETE FROM po_lines WHERE NOT :alkis_modelle::varchar[] && modell; --- DELETE FROM po_polygons WHERE NOT :alkis_modelle::varchar[] && modell; --- DELETE FROM po_labels WHERE NOT :alkis_modelle::varchar[] && modell; - --- 'Randsignatur' für Flächen mit Umrandung eintragen -UPDATE po_polygons - SET sn_randlinie='rn'||po_polygons.signaturnummer - FROM alkis_flaechen - WHERE alkis_flaechen.signaturnummer=po_polygons.signaturnummer AND NOT alkis_flaechen.randlinie IS NULL; - --- Skalierung setzen -UPDATE po_labels SET skalierung=1 WHERE skalierung IS NULL; - --- Zeilenumbrüche austauschen -UPDATE po_labels SET text=replace(text,E'\\n',E'\n') WHERE text LIKE E'%\\n%'; - --- Pfeilspitzen -INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) - SELECT - gml_id, - thema, - layer, - st_setsrid( - st_multi( - st_linemerge( - st_collect( - st_translate( st_rotate( st_makeline( st_point(0,0), st_point( h,l) ), -st_azimuth( p0, p1 ) ), st_x(p0), st_y(p0) ), - st_translate( st_rotate( st_makeline( st_point(0,0), st_point(-h,l) ), -st_azimuth( p0, p1 ) ), st_x(p0), st_y(p0) ) - ) - ) - ), - srid - ), - signaturnummer, - modell - FROM ( - SELECT - l.gml_id, - l.thema, - l.layer /* || '_pfeil' */ AS layer, - l.signaturnummer, - st_srid(l.line) AS srid, - st_pointn( st_geometryn( l.line, 1 ), 1 ) AS p0, - st_pointn( st_geometryn( l.line, 1 ), 2 ) AS p1, - s.pfeillaenge*0.01 AS l, - s.pfeilhoehe*0.005 AS h, - l.modell - FROM po_lines l - JOIN alkis_linie s ON s.abschluss='Pfeil' AND l.signaturnummer=s.signaturnummer - ) AS pfeile; - --- RP-Gruppensignaturen -UPDATE po_points - SET - point=st_collect(ARRAY[ - st_translate(st_geometryn(point,1), -10, 0 ), - st_translate(st_geometryn(point,1), -5, 5 ), - st_translate(st_geometryn(point,1), -5, -5 ), - st_translate(st_geometryn(point,1), 0, 0 ), - st_translate(st_geometryn(point,1), 5, 5 ), - st_translate(st_geometryn(point,1), 5, -5 ), - st_translate(st_geometryn(point,1), 10, 0 ) - ]), - signaturnummer=substring(signaturnummer,3) - WHERE - signaturnummer IN ( - 'RP3413','RP3415','RP3421','RP3442','RP3444','RP3448','RP3474','RP3476','RP3478','RP3480','RP3481','RP3484','RP3490', - -- TODO: Folgende mit Strichstärke 18 - 'RP3440','RP3441','RP3446','RP3450','RP3452','RP3454','RP3456','RP3458','RP3460', 'RP3462','RP3470' - ); - --- RP-Flurstücksnummern mit ap_pto.art=NULL mit Bruchstrich 3m nach Norden schieben -UPDATE po_labels - SET - layer='ax_flurstueck_nummer_rpnoart', - point=st_translate(point,0,3) - FROM ap_pto t - WHERE po_labels.gml_id LIKE 'DERP%' - AND layer='ax_flurstueck_nummer' - AND ARRAY[po_labels.gml_id] <@ t.dientzurdarstellungvon AND t.endet IS NULL AND t.art IS NULL; - -UPDATE po_lines - SET - layer='ax_flurstueck_nummer_rpnoart', - line=st_translate(line,0,3) - FROM ap_pto t - WHERE po_lines.gml_id LIKE 'DERP%' - AND layer='ax_flurstueck_nummer' - AND ARRAY[po_lines.gml_id] <@ t.dientzurdarstellungvon AND t.endet IS NULL AND t.art IS NULL; - -SELECT 'Lösche nicht darzustellende Signaturen...'; - -DELETE FROM po_points WHERE signaturnummer IS NULL OR signaturnummer IN ('6000','RP6000'); -DELETE FROM po_lines WHERE signaturnummer IS NULL OR signaturnummer IN ('6000','RP6000'); -DELETE FROM po_polygons WHERE signaturnummer IS NULL OR signaturnummer IN ('6000','RP6000'); -DELETE FROM po_labels WHERE signaturnummer IS NULL OR signaturnummer IN ('6000','RP6000') OR text IS NULL; - -DELETE FROM alkis_linie WHERE signaturnummer IN ('6000','RP6000'); -DELETE FROM alkis_linien WHERE signaturnummer IN ('6000','RP6000'); -DELETE FROM alkis_flaechen WHERE signaturnummer IN ('6000','RP6000'); -DELETE FROM alkis_schriften WHERE signaturnummer IN ('6000','RP6000'); - -SELECT 'Punkt' AS "Fehlende Signaturen",count(*) AS "Anzahl",array_agg(distinct signaturnummer) AS "Signaturen" - FROM po_points o - WHERE NOT EXISTS (SELECT * FROM alkis_punkte s WHERE o.signaturnummer=s.signaturnummer) - HAVING count(*)>0 -UNION SELECT 'Linien',count(*),array_agg(distinct signaturnummer) - FROM po_lines o - WHERE NOT EXISTS (SELECT * FROM alkis_linien s WHERE o.signaturnummer=s.signaturnummer) - HAVING count(*)>0 -UNION SELECT 'Flächen',count(*),array_agg(distinct sn_flaeche) - FROM po_polygons o - WHERE sn_flaeche IS NOT NULL AND NOT EXISTS (SELECT * FROM alkis_flaechen s WHERE o.sn_flaeche=s.signaturnummer) - HAVING count(*)>0 -UNION SELECT 'Randlinien',count(*),array_agg(distinct sn_randlinie) - FROM po_polygons o - WHERE sn_randlinie IS NOT NULL AND NOT EXISTS (SELECT * FROM alkis_linien s WHERE o.sn_randlinie=s.signaturnummer) - HAVING count(*)>0 -UNION SELECT 'Beschriftungen',count(*),array_agg(distinct signaturnummer) - FROM po_labels o - WHERE NOT EXISTS (SELECT * FROM alkis_schriften s WHERE o.signaturnummer=s.signaturnummer) - HAVING count(*)>0; - -END; - --- vim: foldmethod=marker diff --git a/alkis-compat.sql b/alkis-compat.sql index feb85cb..92d364f 100644 --- a/alkis-compat.sql +++ b/alkis-compat.sql @@ -20,7 +20,7 @@ CREATE FUNCTION unnest(anyarray) RETURNS SETOF anyelement AS $$ SELECT $1[i] FROM generate_series(array_lower($1,1), array_upper($1,1)) i; $$ LANGUAGE 'sql' IMMUTABLE; -SET search_path = :"postgis_schema", :"alkis_schema", public; +SET search_path = :"postgis_schema", :"parent_schema", public; CREATE FUNCTION st_snaptogrid(geometry,float8,float8) RETURNS geometry AS $$ SELECT snaptogrid($1,$2,$3); @@ -231,7 +231,7 @@ CREATE AGGREGATE st_union ( finalfunc = unite_garray ); -SET search_path = :"alkis_schema", :"postgis_schema", public; +SET search_path = :"parent_schema", :"postgis_schema", public; CREATE FUNCTION alkis_intersect_lines( p0 geometry, p1 geometry, p2 geometry, p3 geometry ) RETURNS geometry AS $$ DECLARE @@ -364,7 +364,7 @@ BEGIN END; $$ LANGUAGE plpgsql IMMUTABLE; -SET search_path = :"postgis_schema", :"alkis_schema", public; +SET search_path = :"postgis_schema", :"parent_schema", public; CREATE FUNCTION st_offsetcurve(geometry,float8,text) RETURNS geometry AS $$ SELECT alkis_offsetcurve($1,$2,$3); diff --git a/alkis-functions.sql b/alkis-functions.sql index 92aa3d6..160bf73 100644 --- a/alkis-functions.sql +++ b/alkis-functions.sql @@ -18,7 +18,7 @@ CREATE FUNCTION pg_temp.alkis_set_schema(t TEXT) RETURNS varchar AS $$ DECLARE i integer; BEGIN - SELECT count(*) INTO i FROM pg_namespace WHERE nspname=t; + SELECT count(*) INTO i FROM pg_catalog.pg_namespace WHERE nspname=t; IF i = 0 THEN EXECUTE 'CREATE SCHEMA '|| quote_ident(t); RAISE NOTICE 'Schema % angelegt.', t; @@ -34,10 +34,11 @@ BEGIN END $$ LANGUAGE plpgsql; +SET search_path = :"parent_schema", :"postgis_schema", public; SELECT pg_temp.alkis_set_schema(:'alkis_schema'); -- Table/View/Sequence löschen, wenn vorhanden -CREATE OR REPLACE FUNCTION alkis_dropobject(t TEXT) RETURNS varchar AS $$ +CREATE OR REPLACE FUNCTION :"parent_schema".alkis_dropobject(t TEXT) RETURNS varchar AS $$ DECLARE c RECORD; s varchar; @@ -48,9 +49,9 @@ DECLARE 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=current_schema() AND pg_class.relname=t + FROM pg_catalog.pg_class + JOIN pg_catalog.pg_namespace ON pg_class.relnamespace=pg_namespace.oid + WHERE pg_catalog.pg_namespace.nspname=current_schema() AND pg_class.relname=t ORDER BY relkind LOOP IF c.relkind = 'v' THEN @@ -67,15 +68,15 @@ BEGIN END IF; END LOOP; - FOR c IN SELECT indexname FROM pg_indexes WHERE schemaname=current_schema() AND indexname=t + FOR c IN SELECT indexname FROM pg_catalog.pg_indexes WHERE schemaname=current_schema() AND indexname=t LOOP r := alkis_string_append(r, 'Index ' || c.indexname || ' gelöscht.'); EXECUTE 'DROP INDEX ' || c.indexname; END LOOP; FOR c IN SELECT proname,proargtypes - FROM pg_proc - JOIN pg_namespace ON pg_proc.pronamespace=pg_namespace.oid + FROM pg_catalog.pg_proc + JOIN pg_catalog.pg_namespace ON pg_proc.pronamespace=pg_namespace.oid WHERE pg_namespace.nspname=current_schema() AND pg_proc.proname=t LOOP r := alkis_string_append(r, 'Funktion ' || c.proname || ' gelöscht.'); @@ -84,7 +85,7 @@ BEGIN 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]; + SELECT typname INTO tn FROM pg_catalog.pg_type WHERE oid=c.proargtypes[i]; s := s || d || tn; d := ','; END LOOP; @@ -95,9 +96,9 @@ BEGIN 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 + FROM pg_catalog.pg_constraint + JOIN pg_catalog.pg_class ON pg_constraint.conrelid=pg_constraint.oid + JOIN pg_catalog.pg_namespace ON pg_constraint.connamespace=pg_namespace.oid WHERE pg_namespace.nspname=current_schema() AND pg_constraint.conname=t LOOP r := alkis_string_append(r, 'Constraint ' || c.conname || ' von ' || c.relname || ' gelöscht.'); @@ -108,14 +109,12 @@ BEGIN END; $$ LANGUAGE plpgsql; -SELECT alkis_dropobject('alkis_string_append'); -CREATE OR REPLACE FUNCTION alkis_string_append(varchar, varchar) RETURNS varchar AS $$ +CREATE OR REPLACE FUNCTION :"parent_schema".alkis_string_append(varchar, varchar) RETURNS varchar AS $$ SELECT CASE WHEN $1='' OR $1 LIKE E'%\n' THEN $1 ELSE coalesce($1||E'\n','') END || coalesce($2, ''); $$ LANGUAGE 'sql' IMMUTABLE; -- Alle ALKIS-Tabellen löschen -SELECT alkis_dropobject('alkis_drop'); -CREATE FUNCTION alkis_drop() RETURNS varchar AS $$ +CREATE OR REPLACE FUNCTION :"parent_schema".alkis_drop() RETURNS varchar AS $$ DECLARE c RECORD; r VARCHAR; @@ -148,8 +147,7 @@ END; $$ LANGUAGE plpgsql; -- Alle ALKIS-Tabellen leeren -SELECT alkis_dropobject('alkis_clean'); -CREATE FUNCTION alkis_clean() RETURNS varchar AS $$ +CREATE OR REPLACE FUNCTION :"parent_schema".alkis_clean() RETURNS varchar AS $$ DECLARE c RECORD; r VARCHAR; @@ -169,50 +167,57 @@ END; $$ LANGUAGE plpgsql; -- Alle ALKIS-Tabellen erben -SELECT alkis_dropobject('alkis_inherit'); -CREATE FUNCTION alkis_inherit(parent varchar) RETURNS varchar AS $$ +CREATE OR REPLACE FUNCTION :"parent_schema".alkis_inherit(parent varchar) RETURNS varchar AS $$ DECLARE tab RECORD; ind RECORD; r VARCHAR; nt INTEGER; ni INTEGER; + nv INTEGER; BEGIN nt := 0; ni := 0; + nv := 0; -- inherit tables FOR tab IN - SELECT c.oid, c.relname + SELECT c.oid, c.relname, obj_description(c.oid) AS description FROM pg_catalog.pg_class c - JOIN pg_namespace n ON n.oid=c.relnamespace AND n.nspname=parent + JOIN pg_catalog.pg_namespace n ON n.oid=c.relnamespace AND n.nspname=parent WHERE pg_get_userbyid(c.relowner)=current_user AND c.relkind='r' + AND NOT EXISTS ( + SELECT * + FROM pg_catalog.pg_class c1 + JOIN pg_catalog.pg_namespace n1 ON n1.oid=c1.relnamespace AND n1.nspname=current_schema + WHERE c1.relname=c.relname + ) LOOP - nt := nt + 1; - RAISE NOTICE 'Tabelle % abgeleitet.', tab.relname; - BEGIN + IF tab.description LIKE 'FeatureType:%' OR tab.description LIKE 'BASE:%' THEN + nt := nt + 1; EXECUTE 'CREATE TABLE ' || quote_ident(tab.relname) || '() INHERITS (' || quote_ident(parent) || '.' || quote_ident(tab.relname) || ')'; - EXCEPTION WHEN OTHERS THEN - END; - - FOR ind IN - SELECT c.relname, replace(pg_get_indexdef(i.indexrelid), 'ON '||quote_ident(parent)||'.', 'ON ') AS sql - FROM pg_index i - JOIN pg_class c ON c.oid=i.indexrelid - WHERE i.indrelid=tab.oid - LOOP - RAISE NOTICE ' Index % erzeugt.', ind.relname; - ni := ni + 1; - EXECUTE ind.sql; - END LOOP; + RAISE NOTICE 'Tabelle % abgeleitet.', tab.relname; + + FOR ind IN + SELECT c.relname, replace(pg_get_indexdef(i.indexrelid), 'ON '||quote_ident(parent)||'.', 'ON ') AS sql + FROM pg_catalog.pg_index i + JOIN pg_catalog.pg_class c ON c.oid=i.indexrelid + WHERE i.indrelid=tab.oid + LOOP + ni := ni + 1; + EXECUTE ind.sql; + END LOOP; + ELSE + nv := nv + 1; + EXECUTE 'CREATE VIEW ' || quote_ident(tab.relname) || ' AS SELECT * FROM ' || quote_ident(parent) || '.' || quote_ident(tab.relname); + END IF; END LOOP; - RETURN nt || ' Tabellen mit ' || ni || ' Indizes abgeleitet.'; + RETURN nt || ' Tabellen mit ' || ni || ' Indizes abgeleitet und ' || nv || ' Sichten erzeugt.'; END; $$ LANGUAGE plpgsql; -SELECT alkis_dropobject('alkis_create_bsrs'); -CREATE FUNCTION alkis_create_bsrs(id INTEGER) RETURNS varchar AS $$ +CREATE OR REPLACE FUNCTION :"parent_schema".alkis_create_bsrs(id INTEGER) RETURNS varchar AS $$ DECLARE n INTEGER; BEGIN @@ -269,8 +274,7 @@ END; $$ LANGUAGE plpgsql; -- Alle ALKIS-Tabellen leeren -SELECT alkis_dropobject('alkis_delete'); -CREATE FUNCTION alkis_delete() RETURNS varchar AS $$ +CREATE OR REPLACE FUNCTION :"parent_schema".alkis_delete() RETURNS varchar AS $$ DECLARE c RECORD; r varchar; @@ -292,8 +296,7 @@ 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 $$ +CREATE OR REPLACE FUNCTION :"parent_schema".alkis_mviews() RETURNS varchar AS $$ DECLARE sql TEXT; delim TEXT; @@ -326,7 +329,7 @@ END; $$ LANGUAGE plpgsql; -- 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 $$ +CREATE OR REPLACE FUNCTION :"parent_schema".alkis_delete_all_endet() RETURNS void AS $$ DECLARE c RECORD; BEGIN @@ -343,13 +346,13 @@ BEGIN END; $$ LANGUAGE plpgsql; -CREATE OR REPLACE FUNCTION alkis_exception() RETURNS void AS $$ +CREATE OR REPLACE FUNCTION :"parent_schema".alkis_exception() RETURNS void AS $$ BEGIN RAISE EXCEPTION 'raising deliberate exception'; END; $$ LANGUAGE plpgsql; -CREATE OR REPLACE FUNCTION alkis_hist_check() RETURNS varchar AS $$ +CREATE OR REPLACE FUNCTION :"parent_schema".alkis_hist_check() RETURNS varchar AS $$ DECLARE c RECORD; n INTEGER; @@ -380,8 +383,7 @@ BEGIN END; $$ LANGUAGE plpgsql; -SELECT alkis_dropobject('alkis_bufferline'); -CREATE FUNCTION alkis_bufferline(g geometry,offs float8) RETURNS geometry AS $$ +CREATE OR REPLACE FUNCTION :"parent_schema".alkis_bufferline(g geometry,offs float8) RETURNS geometry AS $$ BEGIN BEGIN RETURN st_buffer(g,offs,'endcap=flat'); @@ -419,8 +421,7 @@ $$ LANGUAGE plpgsql; -- Datenbankmigration -- -SELECT alkis_dropobject('alkis_rename_table'); -CREATE OR REPLACE FUNCTION alkis_rename_table(t TEXT) RETURNS varchar AS $$ +CREATE OR REPLACE FUNCTION :"parent_schema".alkis_rename_table(t TEXT) RETURNS varchar AS $$ BEGIN PERFORM alkis_dropobject(t || '_'); @@ -435,8 +436,7 @@ EXCEPTION WHEN OTHERS THEN END; $$ LANGUAGE plpgsql; -SELECT alkis_dropobject('alkis_update_schema'); -CREATE OR REPLACE FUNCTION alkis_update_schema() RETURNS varchar AS $$ +CREATE OR REPLACE FUNCTION :"parent_schema".alkis_update_schema() RETURNS varchar AS $$ DECLARE c RECORD; s INTEGER; @@ -16307,8 +16307,38 @@ Erholung von Reisenden.'), updated_at timestamp without time zone NOT NULL DEFAULT now(), user_name character varying NOT NULL ); + END IF; + + IF ver<16 THEN + RAISE NOTICE 'Migriere auf Schema-Version 16'; - UPDATE alkis_version SET version=15; + COMMENT ON TABLE delete IS 'BASE: Lösch- und Fortführungsdatensätze'; + COMMENT ON TABLE alkis_beziehungen IS 'BASE: Objektbeziehungen'; + + COMMENT ON TABLE ks_einrichtunginoeffentlichenbereichen IS 'BASE: ks_einrichtunginoeffentlichenbereichen'; + COMMENT ON TABLE ks_bauwerkanlagenfuerverundentsorgung IS 'BASE: ks_bauwerkanlagenfuerverundentsorgung'; + COMMENT ON TABLE ks_sonstigesbauwerk IS 'BASE: ks_sonstigesbauwerk'; + COMMENT ON TABLE ks_einrichtungimstrassenverkehr IS 'BASE: ks_einrichtungimstrassenverkehr'; + COMMENT ON TABLE ks_verkehrszeichen IS 'BASE: ks_verkehrszeichen'; + COMMENT ON TABLE ks_einrichtungimbahnverkehr IS 'BASE: ks_einrichtungimbahnverkehr'; + COMMENT ON TABLE ks_bauwerkimgewaesserbereich IS 'BASE: ks_bauwerkimgewaesserbereich'; + COMMENT ON TABLE ks_vegetationsmerkmal IS 'BASE: ks_vegetationsmerkmal'; + COMMENT ON TABLE ks_bauraumoderbodenordnungsrecht IS 'BASE: ks_bauraumoderbodenordnungsrecht'; + COMMENT ON TABLE ks_kommunalerbesitz IS 'BASE: ks_kommunalerbesitz'; + + CREATE INDEX ap_pto_art ON ap_pto USING btree (art); + CREATE INDEX ap_lto_art ON ap_lto USING btree (art); + CREATE INDEX ap_darstellung_art ON ap_darstellung USING btree (art); + + CREATE INDEX ap_lpo_sn ON ap_lpo USING btree (signaturnummer); + CREATE INDEX ap_ppo_sn ON ap_ppo USING btree (signaturnummer); + CREATE INDEX ap_pto_sn ON ap_pto USING btree (signaturnummer); + CREATE INDEX ap_lto_sn ON ap_lto USING btree (signaturnummer); + CREATE INDEX ap_darstellung_sn ON ap_darstellung USING btree (signaturnummer); + + CREATE INDEX ax_dienststelle_sg ON ax_dienststelle(schluesselgesamt); + + UPDATE alkis_version SET version=16; r := alkis_string_append(r, 'ALKIS-Schema migriert'); END IF; @@ -16416,8 +16446,17 @@ Erholung von Reisenden.'), ALTER TABLE po_labels DROP darstellungsprioritaet; END IF; END LOOP; + END IF; + + IF ver<2 THEN + RAISE NOTICE 'Migriere auf Schema-Version 2'; + + COMMENT ON TABLE po_points IS 'BASE: Punktobjekte'; + COMMENT ON TABLE po_lines IS 'BASE: Linienobjekte'; + COMMENT ON TABLE po_polygons IS 'BASE: Flächenobjekte'; + COMMENT ON TABLE po_labels IS 'BASE: Beschriftungsobjekte'; - UPDATE alkis_po_version SET version=1; + UPDATE alkis_po_version SET version=2; r := coalesce(r||E'\n','') || 'ALKIS-PO-Schema migriert'; END IF; @@ -16426,9 +16465,9 @@ Erholung von Reisenden.'), END; $$ LANGUAGE plpgsql; -DROP AGGREGATE IF EXISTS alkis_accum(anyarray); +DROP AGGREGATE IF EXISTS :"parent_schema".alkis_accum(anyarray); -CREATE AGGREGATE alkis_accum (anyarray) ( +CREATE AGGREGATE :"parent_schema".alkis_accum (anyarray) ( sfunc = array_cat, stype = anyarray, initcond = '{}' diff --git a/alkis-import.sh b/alkis-import.sh index 9ca3666..b45225f 100755 --- a/alkis-import.sh +++ b/alkis-import.sh @@ -15,8 +15,9 @@ # ############################################################################ - set -e +set -u +set -o pipefail # Felder als String interpretieren (führende Nullen nicht abschneiden) export GML_FIELDTYPES=ALWAYS_STRING @@ -32,6 +33,7 @@ export OGR_SKIP=GML,SEGY # Headerkennungen die NAS-Daten identifizieren export NAS_INDICATOR="NAS-Operationen;AAA-Fachschema;aaa.xsd;aaa-suite" +export NAS_SKIP_CORRUPTED_FEATURES=YES export LIST_ALL_TABLES=YES export TABLES="aa_advstandardmodell,aa_nas_ausgabeform,nas_filter_capabilities,aa_themendimension,aa_art_themendefinition,operation,ap_horizontaleausrichtung,ap_vertikaleausrichtung,ap_dateityp_3d,ax_artdesnullpunktes_nullpunkt,ax_li_processstep_mitdatenerhebung_description,ax_datenerhebung,ax_sportart_bauwerkoderanlagefuersportfreizeitunderholung,ax_lagezurerdoberflaeche_transportanlage,ax_produkt_transportanlage,ax_bauwerksfunktion_turm,ax_hydrologischesmerkmal_sonstigesbauwerkodersonstigeeinri,ax_zustand_turm,ax_art_heilquellegasquelle,ax_bauwerksfunktion_transportanlage,ax_lagezurerdoberflaeche_vorratsbehaelterspeicherbauwerk,ax_speicherinhalt_vorratsbehaelterspeicherbauwerk,ax_bauwerksfunktion_bauwerkoderanlagefuerindustrieundgewer,ax_art_einrichtunginoeffentlichenbereichen,ax_bauwerksfunktion_bauwerkoderanlagefuersportfreizeitunde,ax_archaeologischertyp_historischesbauwerkoderhistorischee,ax_hydrologischesmerkmal_heilquellegasquelle,ax_zustand_bauwerkoderanlagefuerindustrieundgewerbe,ax_bauwerksfunktion_sonstigesbauwerkodersonstigeeinrichtun,ax_funktion_bauwerk,ax_bauwerksfunktion_leitung,ax_bauwerksfunktion_vorratsbehaelterspeicherbauwerk,ax_befestigung_wegpfadsteig,ax_oberflaechenmaterial_flugverkehrsanlage,ax_art_gleis,ax_bahnkategorie_gleis,ax_art_strassenverkehrsanlage,ax_markierung_wegpfadsteig,ax_bahnhofskategorie_bahnverkehrsanlage,ax_bahnkategorie_seilbahnschwebebahn,ax_zustand_bahnverkehrsanlage,ax_zustand_bauwerkimgewaesserbereich,ax_art_wegpfadsteig,ax_lagezuroberflaeche_gleis,ax_art_flugverkehrsanlage,ax_bauwerksfunktion_bauwerkimverkehrsbereich,ax_bauwerksfunktion_bauwerkimgewaesserbereich,ax_art_einrichtungenfuerdenschiffsverkehr,ax_zustand_bauwerkimverkehrsbereich,ax_artdergewaesserachse,ax_art_schifffahrtsliniefaehrverkehr,ax_zustand_schleuse,ax_nutzung_hafen,ax_konstruktionsmerkmalbauart_schleuse,ax_hafenkategorie_hafen,ax_art_gewaessermerkmal,ax_hydrologischesmerkmal_untergeordnetesgewaesser,ax_lagezurerdoberflaeche_untergeordnetesgewaesser,ax_artdespolders,ax_funktion_polder,ax_funktion_untergeordnetesgewaesser,ax_hydrologischesmerkmal_gewaessermerkmal,ax_funktion_vegetationsmerkmal,ax_zustand_vegetationsmerkmal,ax_bewuchs_vegetationsmerkmal,ax_eigentuemerart_namensnummer,ax_li_processstep_ohnedatenerhebung_description,ax_blattart_buchungsblatt,ax_anrede_person,ax_artderrechtsgemeinschaft_namensnummer,ax_buchungsart_buchungsstelle,ax_klassifikation_hierarchiestufe3d_lagefestpunkt,ax_punktstabilitaet,ax_punktstabilitaet_hoehenfestpunkt_geologischestabilitaet,ax_klassifikation_ordnung_lagefestpunkt,ax_punktstabilitaet_hoehenfestpunkt_guetedesvermarkungstra,ax_ordnung_schwerefestpunkt,ax_funktion_referenzstationspunkt,ax_funktion_lagefestpunkt,ax_skizzenart_skizze,ax_funktion_schwerefestpunkt,ax_punktstabilitaet_hoehenfestpunkt_hoehenstabilitaetauswi,ax_punktstabilitaet_hoehenfestpunkt_guetedesbaugrundes,ax_punktstabilitaet_hoehenfestpunkt_grundwasserschwankung,ax_punktstabilitaet_hoehenfestpunkt_topographieundumwelt,ax_klassifikation_wertigkeit_lagefestpunkt,ax_gnsstauglichkeit,ax_punktstabilitaet_hoehenfestpunkt_grundwasserstand,ax_punktstabilitaet_hoehenfestpunkt_vermutetehoehenstabili,ax_ordnung_hoehenfestpunkt,ax_horizontfreiheit_grenzpunkt,ax_gruendederausgesetztenabmarkung_grenzpunkt,ax_bemerkungzurabmarkung_grenzpunkt,ax_artderflurstuecksgrenze_besondereflurstuecksgrenze,ax_horizontfreiheit_netzpunkt,ax_marke,ax_genauigkeitsstufe_punktort,ax_messmethode_schwere,ax_koordinatenstatus_punktort,ax_datenerhebung_schwere,ax_vertrauenswuerdigkeit_schwere,ax_schwereanomalie_schwere_art,ax_vertrauenswuerdigkeit_punktort,ax_schwerestatus_schwere,ax_li_processstep_punktort_description,ax_genauigkeitsstufe_schwere,ax_datenerhebung_punktort,ax_schweresystem_schwere,ax_blattart_historischesflurstueck,ax_qualitaet_hauskoordinate,ax_art_punktkennung,ax_art_reservierung,ax_art_adressat_auszug,ax_lagezurerdoberflaeche_bauteil,ax_lagezurerdoberflaeche_gebaeude,ax_zustand_gebaeude,ax_dachgeschossausbau_gebaeude,ax_dachform,ax_bauweise_gebaeude,ax_gebaeudefunktion,ax_art_gebaeudepunkt,ax_weitere_gebaeudefunktion,ax_beschaffenheit_besonderegebaeudelinie,ax_bauart_bauteil,ax_nutzung,ax_art_verbandsgemeinde,ax_art_baublock,ax_artdergebietsgrenze_gebietsgrenze,ax_sonstigeangaben_bodenschaetzung,ax_kulturart_musterlandesmusterundvergleichsstueck,ax_entstehungsartoderklimastufewasserverhaeltnisse_bodensc,ax_sonstigeangaben_musterlandesmusterundvergleichsstueck,ax_kulturart_bodenschaetzung,ax_klassifizierung_bewertung,ax_merkmal_musterlandesmusterundvergleichsstueck,ax_zustandsstufeoderbodenstufe_bodenschaetzung,ax_bedeutung_grablochderbodenschaetzung,ax_zustandsstufeoderbodenstufe_musterlandesmusterundvergle,ax_entstehungsartoderklimastufewasserverhaeltnisse_musterl,ax_bodenart_bodenschaetzung,ax_bodenart_musterlandesmusterundvergleichsstueck,ax_landschaftstyp,ax_art_verband,ax_behoerde,ax_administrative_funktion,ax_bezeichnung_verwaltungsgemeinschaft,ax_funktion_schutzgebietnachwasserrecht,ax_artderfestlegung_schutzgebietnachnaturumweltoderbodensc,ax_artderfestlegung_anderefestlegungnachstrassenrecht,ax_artderfestlegung_schutzgebietnachwasserrecht,ax_besonderefunktion_forstrecht,ax_zone_schutzzone,ax_artderfestlegung_klassifizierungnachstrassenrecht,ax_artderfestlegung_denkmalschutzrecht,ax_artderfestlegung_klassifizierungnachwasserrecht,ax_rechtszustand_schutzzone,ax_artderfestlegung_bauraumoderbodenordnungsrecht,ax_artderfestlegung_anderefestlegungnachwasserrecht,ax_artderfestlegung_forstrecht,ax_zustand_naturumweltoderbodenschutzrecht,ax_artderfestlegung_sonstigesrecht,ax_artderfestlegung_naturumweltoderbodenschutzrecht,ax_liniendarstellung_topographischelinie,ax_darstellung_gebaeudeausgestaltung,ax_datenformat_benutzer,ax_art_bereichzeitlich,ax_letzteabgabeart,ax_ausgabemedium_benutzer,ax_identifikation,ax_dqerfassungsmethodemarkantergelaendepunkt,ax_dqerfassungsmethodestrukturiertegelaendepunkte,ax_dqerfassungsmethode,ax_besonderebedeutung,ax_dqerfassungsmethodebesondererhoehenpunkt,ax_artdergeripplinie,ax_artdergelaendekante,ax_artderstrukturierung,ax_dqerfassungsmethodegewaesserbegrenzung,ax_artdernichtgelaendepunkte,ax_artdesmarkantengelaendepunktes,ax_artderaussparung,ax_besondereartdergewaesserbegrenzung,ax_ursprung,ax_funktion_dammwalldeich,ax_art_dammwalldeich,ax_funktion_einschnitt,ax_zustand_boeschungkliff,ax_zustand_hoehleneingang,ax_berechnungsmethode,ax_verwendeteobjekte,ax_berechnungsmethodehoehenlinie,ax_dqerfassungsmethodesekundaeresdgm,ax_zustand_kanal,ax_funktion_stehendesgewaesser,ax_schifffahrtskategorie,ax_hydrologischesmerkmal_fliessgewaesser,ax_schifffahrtskategorie_kanal,ax_funktion_fliessgewaesser,ax_widmung_wasserlauf,ax_funktion_meer,ax_hydrologischesmerkmal_gewaesserachse,ax_tidemerkmal_meer,ax_nutzung_hafenbecken,ax_hydrologischesmerkmal_stehendesgewaesser,ax_widmung_stehendesgewaesser,ax_funktion_gewaesserachse,ax_funktion_hafenbecken,ax_widmung_kanal,ax_zustand_wohnbauflaeche,ax_artderbebauung_wohnbauflaeche,ax_zustand_flaechebesondererfunktionalerpraegung,ax_funktion_flaechegemischternutzung,ax_foerdergut_industrieundgewerbeflaeche,ax_artderbebauung_flaechegemischternutzung,ax_zustand_sportfreizeitunderholungsflaeche,ax_funktion_flaechebesondererfunktionalerpraegung,ax_funktion_sportfreizeitunderholungsflaeche,ax_lagergut_industrieundgewerbeflaeche,ax_zustand_halde,ax_zustand_bergbaubetrieb,ax_abbaugut_tagebaugrubesteinbruch,ax_primaerenergie_industrieundgewerbeflaeche,ax_abbaugut_bergbaubetrieb,ax_zustand_flaechegemischternutzung,ax_zustand_industrieundgewerbeflaeche,ax_funktion_friedhof,ax_zustand_friedhof,ax_lagergut_halde,ax_funktion_industrieundgewerbeflaeche,ax_zustand_tagebaugrubesteinbruch,ax_artderbebauung_siedlungsflaeche,ax_artderbebauung_flaechebesondererfunktionalerpraegung,ax_vegetationsmerkmal_gehoelz,ax_vegetationsmerkmal_wald,ax_vegetationsmerkmal_landwirtschaft,ax_oberflaechenmaterial_unlandvegetationsloseflaeche,ax_funktion_unlandvegetationsloseflaeche,ax_funktion_gehoelz,ax_bahnkategorie,ax_funktion_weg,ax_funktion_bahnverkehr,ax_verkehrsbedeutunginneroertlich,ax_internationalebedeutung_strasse,ax_besonderefahrstreifen,ax_zustand_bahnverkehr,ax_befestigung_fahrwegachse,ax_spurweite,ax_zustand_schiffsverkehr,ax_funktion_platz,ax_art_flugverkehr,ax_elektrifizierung,ax_zustand,ax_fahrbahntrennung_strasse,ax_funktion_fahrbahnachse,ax_oberflaechenmaterial_strasse,ax_funktion_flugverkehr,ax_funktion_wegachse,ax_zustand_strasse,ax_markierung_wegachse,ax_zustand_flugverkehr,ax_funktion_strassenachse,ax_verkehrsbedeutungueberoertlich,ax_nutzung_flugverkehr,ax_funktion_schiffsverkehr,ax_funktion_strasse,ax_widmung_strasse,ax_anzahlderstreckengleise,ax_funktionoa_k_tngr_all,ax_klassifizierunggr_k_bewgr,ax_funktionoa_k_tnfl,ax_klassifizierungobg_k_bewfl,ax_funktionoa_k_tngrerweitert_all,ax_funktionhgr_k_tnhgr,ax_wirtschaftsart,ax_punktart_k_punkte,ax_k_zeile_punktart,aa_besonderemeilensteinkategorie,aa_anlassart,aa_levelofdetail,aa_anlassart_benutzungsauftrag,aa_weiteremodellart,aa_instanzenthemen,ax_benutzer,ax_benutzergruppemitzugriffskontrolle,ax_benutzergruppenba,ap_darstellung,aa_projektsteuerung,aa_meilenstein,aa_antrag,aa_aktivitaet,aa_vorgang,ax_person,ax_namensnummer,ax_anschrift,ax_verwaltung,ax_buchungsstelle,ax_personengruppe,ax_buchungsblatt,ax_vertretung,ax_skizze,ax_schwere,ax_historischesflurstueckalb,ax_historischesflurstueckohneraumbezug,ax_lagebezeichnungohnehausnummer,ax_lagebezeichnungmithausnummer,ax_lagebezeichnungmitpseudonummer,ax_reservierung,ax_punktkennunguntergegangen,ax_punktkennungvergleichend,ax_fortfuehrungsnachweisdeckblatt,ax_fortfuehrungsfall,ax_gemeinde,ax_buchungsblattbezirk,ax_gemarkungsteilflur,ax_kreisregion,ax_bundesland,ax_regierungsbezirk,ax_gemeindeteil,ax_lagebezeichnungkatalogeintrag,ax_gemarkung,ax_dienststelle,ax_verband,ax_nationalstaat,ax_besondererbauwerkspunkt,ax_netzknoten,ax_referenzstationspunkt,ax_lagefestpunkt,ax_hoehenfestpunkt,ax_schwerefestpunkt,ax_grenzpunkt,ax_aufnahmepunkt,ax_sonstigervermessungspunkt,ax_sicherungspunkt,ax_besonderergebaeudepunkt,ax_wirtschaftlicheeinheit,ax_verwaltungsgemeinschaft,ax_schutzgebietnachnaturumweltoderbodenschutzrecht,ax_schutzgebietnachwasserrecht,ax_boeschungkliff,ax_besonderertopographischerpunkt,ax_kanal,ax_wasserlauf,ax_strasse,ap_fpo,aa_antragsgebiet,ax_polder,ax_historischesflurstueck,ax_kondominium,ax_baublock,ax_aussparungsflaeche,ax_soll,ax_duene,ax_transportanlage,ax_wegpfadsteig,ax_gleis,ax_bahnverkehrsanlage,ax_strassenverkehrsanlage,ax_einrichtungenfuerdenschiffsverkehr,ax_flugverkehrsanlage,ax_hafen,ax_testgelaende,ax_schleuse,ax_ortslage,ax_grenzuebergang,ax_gewaessermerkmal,ax_untergeordnetesgewaesser,ax_vegetationsmerkmal,ax_musterlandesmusterundvergleichsstueck,ax_insel,ax_gewann,ax_kleinraeumigerlandschaftsteil,ax_landschaft,ax_felsenfelsblockfelsnadel,ap_lto,ax_leitung,ax_abschnitt,ax_ast,ap_lpo,ax_seilbahnschwebebahn,ax_gebaeudeausgestaltung,ax_topographischelinie,ax_geripplinie,ax_gewaesserbegrenzung,ax_strukturierterfasstegelaendepunkte,ax_einschnitt,ax_hoehenlinie,ax_abgeleitetehoehenlinie,ap_pto,ax_heilquellegasquelle,ax_wasserspiegelhoehe,ax_nullpunkt,ax_punktortau,ax_georeferenziertegebaeudeadresse,ax_grablochderbodenschaetzung,ax_wohnplatz,ax_markantergelaendepunkt,ax_besondererhoehenpunkt,ax_hoehleneingang,ap_ppo,ax_sickerstrecke,ax_firstlinie,ax_besonderegebaeudelinie,ax_gelaendekante,ax_sonstigesbauwerkodersonstigeeinrichtung,ax_bauwerkoderanlagefuersportfreizeitunderholung,ax_bauwerkoderanlagefuerindustrieundgewerbe,ax_einrichtunginoeffentlichenbereichen,ax_historischesbauwerkoderhistorischeeinrichtung,ax_turm,ax_vorratsbehaelterspeicherbauwerk,ax_bauwerkimgewaesserbereich,ax_bauwerkimverkehrsbereich,ax_schifffahrtsliniefaehrverkehr,ax_gebaeude,ax_anderefestlegungnachstrassenrecht,ax_naturumweltoderbodenschutzrecht,ax_klassifizierungnachstrassenrecht,ax_sonstigesrecht,ax_denkmalschutzrecht,ax_dammwalldeich,ax_punktortag,ax_bauteil,ax_tagesabschnitt,ax_bewertung,ax_anderefestlegungnachwasserrecht,ax_klassifizierungnachwasserrecht,ax_forstrecht,ax_bauraumoderbodenordnungsrecht,ax_schutzzone,ax_boeschungsflaeche,ax_flurstueck,ax_gebiet_kreis,ax_gebiet_bundesland,ax_gebiet_regierungsbezirk,ax_gebiet_nationalstaat,ax_kommunalesgebiet,ax_gebiet_verwaltungsgemeinschaft,ax_bodenschaetzung,ax_gewaesserstationierungsachse,ax_besondereflurstuecksgrenze,ax_gebietsgrenze,ax_gewaesserachse,ax_strassenachse,ax_bahnstrecke,ax_fahrwegachse,ax_fahrbahnachse,ax_punktortta,ax_stehendesgewaesser,ax_meer,ax_fliessgewaesser,ax_hafenbecken,ax_bergbaubetrieb,ax_friedhof,ax_flaechegemischternutzung,ax_wohnbauflaeche,ax_flaechebesondererfunktionalerpraegung,ax_industrieundgewerbeflaeche,ax_siedlungsflaeche,ax_tagebaugrubesteinbruch,ax_sportfreizeitunderholungsflaeche,ax_halde,ax_flaechezurzeitunbestimmbar,ax_sumpf,ax_unlandvegetationsloseflaeche,ax_gehoelz,ax_wald,ax_heide,ax_moor,ax_landwirtschaft,ax_bahnverkehr,ax_weg,ax_schiffsverkehr,ax_flugverkehr,ax_platz,ax_strassenverkehr,ta_compositesolidcomponent_3d,ta_surfacecomponent_3d,ta_curvecomponent_3d,ta_pointcomponent_3d,au_trianguliertesoberflaechenobjekt_3d,au_mehrfachflaechenobjekt_3d,au_mehrfachlinienobjekt_3d,au_umringobjekt_3d,ap_kpo_3d,au_punkthaufenobjekt_3d,au_koerperobjekt_3d,au_geometrieobjekt_3d,ax_fortfuehrungsauftrag,ks_einrichtunginoeffentlichenbereichen,ks_bauwerkanlagenfuerverundentsorgung,ks_sonstigesbauwerk,ks_verkehrszeichen,ks_bauwerkimgewaesserbereich,ks_vegetationsmerkmal,ks_bauraumoderbodenordnungsrecht,ks_kommunalerbesitz" @@ -41,7 +43,8 @@ export FNBRUCH=true export PGVERDRAENGEN=false export SCHEMA=public export PGSCHEMA=public -export PARENTSCHEMA= +export PARENTSCHEMA=$PGSCHEMA +export PG_USE_COPY=YES B=${0%/*} # BASEDIR if [ "$0" = "$B" ]; then @@ -54,13 +57,10 @@ export NAS_NO_RELATION_LAYER=YES bdate() { - local t=$1 - if [ -z "$t" ]; then - t="+%F %T" - fi - + local t=${1:-+%F %T} date "$t" } +export -f bdate memunits() { local s=$1 @@ -72,6 +72,7 @@ memunits() { echo "$s$u" } +export -f memunits timeunits() { local t=$1 @@ -90,30 +91,192 @@ timeunits() { if (( m > 0 )); then r="$r${m}m"; fi if (( s > 0 )); then r="$r${s}s"; fi + [ -z "$r" ] && r="0,nichts" + echo $r } +export -f timeunits log() { tee $1 | python $B/refilter.py } +export -f log rund() { local dir=$1 if [ -d "$dir.d" ]; then - for i in $(ls -1 ${dir}.d/* | sort); do - if [ -r "$i" ]; then - echo "SQL RUNNING: $i $(bdate)" + for i in $(ls -1d ${dir}.d/* | sort); do + if [ -d "$i" ]; then + ls -1 $i/*.sql | sort | parallel --jobs=$JOBS sql + elif [ -r "$i" ]; then sql $i fi done fi } +import() { + local src=$1 + local dst + local elapsed + local sf_opt + local t0 + local t1 + + t0=$(bdate +%s) + + case $src in + *.zip) + dst="$TEMP/$(basename "$src" .zip).xml" + echo "DECOMPRESS $(bdate): $src" + zcat "$src" >"$dst" + rm=1 + ;; + + *.xml.gz) + if ! [ -r "$src" ]; then + echo "$P: $src nicht gefunden oder nicht lesbar." >&2 + exit 1 + fi + + dst="$TEMP/$(basename "$src" .gz)" + echo "DECOMPRESS $(bdate): $src" + zcat "$src" >"$dst" + rm=1 + ;; + + *.xml) + if ! [ -r "$src" ]; then + echo "$P: $src nicht gefunden oder nicht lesbar." >&2 + exit 1 + fi + + dst="$src" + rm=0 + ;; + *) + echo "UNKNOWN FILE $src" + exit 1 + ;; + esac + + [ -f "${dst%.xml}.gfs" ] && rm -v "${dst%.xml}.gfs" + + if ! [ -r "$dst" ]; then + echo "$src => $dst" + exit 1 + fi + + trap "echo '$P: Fehler bei $src' >&2; src=error" EXIT + + s=$(stat -c %s "$dst") + + echo "IMPORT $(bdate): $dst $(memunits $s)" + + sf_opt= + if [ -n "$sfre" ] && eval [[ "$src" =~ "$sfre" ]]; then + sf_opt=-skipfailures + fi + + echo RUNNING: ogr2ogr -f $DRIVER $opt $sf_opt -update -append "$DST" $CRS "$dst" | sed -Ee 's/password=\S+/password=*removed*/' + ogr2ogr -f $DRIVER $opt $sf_opt -update -append "$DST" $CRS "$dst" + t1=$(bdate +%s) + + progress $dst $s $t0 $t1 + + [ $rm == 1 ] && rm -v "$dst" + trap "" EXIT +} +export -f import + +process() { + if [ -f "$job" ]; then + if [ -z "$DST" ]; then + echo "$P: Keine Datenbankverbindungsdaten angegeben" >&2 + exit 1 + fi + + if (( preprocessed == 0 )); then + pushd "$B" >/dev/null + preprocessed=1 + rund preprocessing + popd >/dev/null + fi + + export job + export progress + parallel --jobs=$JOBS import <$job + rm $job + fi +} + +progress() { + local file=$1 + local size=$2 + local t0=$3 + local t1=$4 + local elapsed + local total_elapsed + local total_size + local remaining_size + + lockfile $lock + [ -f $progress ] && . $progress + + start_time=${start_time:-$t0} + elapsed=$(( t1 - t0 )) + total_elapsed=$(( t1 - start_time )) + (( remaining_size -= size )) + done_size=$(( total_size - remaining_size )) + remaining_time=$(( remaining_size * total_elapsed / done_size )) + eta=$(( t1 + remaining_time )) + + if (( elapsed > 0 )); then + throughput=$(( size / elapsed )) + total_throughput=$(( done_size / total_elapsed )) + + if (( t0 < t1 )); then + echo "TIME: $file mit $(memunits $size) in $(timeunits $t0 $t1) importiert ($(memunits $throughput)/s; Gesamt:$(memunits $total_throughput)/s)." + echo "REMAINING: $(memunits $remaining_size) $(( remaining_size * 100 / total_size ))% $(timeunits $remaining_time) ETA:$(date --date="1970-01-01 $eta seconds UTC")" + else + echo "TIME: $file mit $(memunits $size) in 0,nichts (Gesamt $(memunits $total_throughput)/s)." + fi + else + echo "TIME: $file mit $(memunits $size) in 0,nichts importiert." + fi + + cat <$progress +start_time=$start_time +total_size=$total_size +remaining_size=$remaining_size +last_time=$t1 +EOF + + rm $lock +} +export -f progress + +final() { + lockfile $lock + start_time=0 + last_time=0 + . $progress + total_elapsed=$(( last_time - start_time )) + if (( total_elapsed > 0 )); then + echo "FINAL: $(memunits $total_size) in $(timeunits $start_time $last_time) ($(memunits $(( total_size / total_elapsed )))/s)" + fi + rm -f $progress $lock +} export LC_CTYPE=de_DE.UTF-8 export TEMP=${TEMP:-/tmp} +if [ "$#" -ne 1 ]; then + echo "usage: $P file" >&2 + exit 1 +fi + F=$1 if [ -z "$F" ]; then echo "usage: $P file" @@ -135,17 +298,17 @@ echo $GDAL_VERSION export CPL_DEBUG export B +export DRIVER +export DST +export JOBS=-1 +export GDAL2_OPTS +export opt opt= log= -gdb= preprocessed=0 sfre= -T0= - -S1=0 - case "$GDAL_VERSION" in "GDAL 2."*) GDAL2_OPTS=" -nlt CONVERT_TO_LINEAR -ds_transaction" @@ -156,6 +319,7 @@ case "$GDAL_VERSION" in ;; esac +S=0 while read src do if ! [ -r "$src" ]; then @@ -185,15 +349,38 @@ do ;; esac - (( S1 += s )) + (( S += s )) done <$F -if (( S1 > 0 )); then - echo "$P: Unkomprimierte Gesamtgröße: $(memunits $S1)" +if (( S > 0 )); then + echo "$P: Unkomprimierte Gesamtgröße: $(memunits $S)" fi + +export job= +export lock=$(mktemp -t nasXXXXXX.lock) +export progress=$(mktemp -t nasXXXXXX.progress) + +cat <$progress +total_size=$S +remaining_size=$S +EOF + +rm $lock while read src do + case $src in + *.zip|*.xml.gz|*.xml) + if [ -z "$job" ]; then + export job=$(mktemp -t nasXXXXXX.lst) + fi + echo $src >>$job + continue + ;; + esac + + process + case $src in ""|"#"*) # Leerzeilen und Kommentare ignorieren @@ -205,20 +392,27 @@ do DB=${src#PG:} DRIVER=PostgreSQL sql() { + local file=$1 pushd "$B" >/dev/null + local t0=$(bdate +%s) + echo "SQL RUN: $file $(bdate)" psql -P pager=off \ -v alkis_pgverdraengen=$PGVERDRAENGEN \ -v alkis_fnbruch=$FNBRUCH \ -v alkis_epsg=$EPSG \ -v alkis_schema=$SCHEMA \ -v postgis_schema=$PGSCHEMA \ - -v parent_schema=$PARENTSCHEMA \ - -q -f "$1" "$DB" + -v parent_schema=${PARENTSCHEMA:-$SCHEMA} \ + -q -f "$file" "$DB" + local t1=$(bdate +%s) + echo "SQL DONE: $file $(bdate) in $(timeunits $t0 $t1)" popd >/dev/null } + export -f sql runsql() { psql -P pager=off -c "$1" "$DB" } + export -f runsql dump() { pg_dump -Fc -f "$1.cpgdmp" "$DB" } @@ -268,6 +462,7 @@ do fi popd >/dev/null } + export -f sql runsql() { sqlplus "$DB" <&2 @@ -430,16 +631,6 @@ EOF continue ;; - "gdb") - if [ -n "$log" ]; then - echo "$P: gdb und log schließen sich aus" >&2 - exit 1 - fi - - GDB=ON - continue - ;; - "temp "*) TEMP=${src#temp } if ! [ -d "$TEMP" ]; then @@ -491,11 +682,6 @@ EOF ;; log|"log "*) - if [ -n "$GDB" ]; then - echo "$P: gdb und log schließen sich aus" >&2 - exit 1 - fi - if [ "$src" = "log" ]; then src="${F%.*}-%Y-%m-%d-%H-%M.log" else @@ -551,120 +737,19 @@ EOF break ;; - *.zip) - dst="$TEMP/$(basename "$src" .zip).xml" - echo "DECOMPRESS $(bdate): $src" - zcat "$src" >"$dst" - rm=1 - ;; - - *.xml.gz) - if ! [ -r "$src" ]; then - echo "$P: $src nicht gefunden oder nicht lesbar." >&2 - exit 1 - fi - - dst="$TEMP/$(basename "$src" .gz)" - echo "DECOMPRESS $(bdate): $src" - zcat "$src" >"$dst" - rm=1 - ;; - - *.xml) - if ! [ -r "$src" ]; then - echo "$P: $src nicht gefunden oder nicht lesbar." >&2 - exit 1 - fi - - dst="$src" - rm=0 - ;; - esac - - if (( preprocessed == 0 )); then - pushd "$B" >/dev/null - sql alkis-signaturen.sql - preprocessed=1 - rund preprocessing - popd >/dev/null - fi - - if [ -z "$DB" ]; then - echo "$P: Keine Datenbankverbindungsdaten angegeben" >&2 - exit 1 - fi - - [ -f "${dst%.xml}.gfs" ] && rm -v "${dst%.xml}.gfs" - - if ! [ -r "$dst" ]; then - echo "$src => $dst" - exit 1 - fi - - trap "echo '$P: Fehler bei $src' >&2; src=error" EXIT - - s=$(stat -c %s "$dst") -# if (( s == 623 || s == 712 )); then -# echo "SKIP $(bdate): $dst zu kurz - übersprungen" -# continue -# fi - - (( S += s )) - - echo "IMPORT $(bdate): $dst $(memunits $s)" - - sf_opt= - if [ -n "$sfre" ] && eval [[ "$src" =~ "$sfre" ]]; then - sf_opt=-skipfailures - fi - - echo RUNNING: ogr2ogr -f $DRIVER $opt $sf_opt -update -append "$DST" $CRS "$dst" | sed -Ee 's/password=\S+/password=*removed*/' - t0=$(bdate +%s) - if [ -z "$T0" ]; then T0=$t0; fi - if [ -n "$GDB" ]; then - gdb --args ogr2ogr -f $DRIVER $opt $sf_opt -update -append "$DST" $CRS "$dst" /dev/tty 2>&1 - else - ogr2ogr -f $DRIVER $opt $sf_opt -update -append "$DST" $CRS "$dst" - fi - t1=$(bdate +%s) - - elapsed=$(( t1 - T0 )) - - if (( elapsed > 0 )); then - throughput=$(( S / elapsed )) - - if (( t0 < t1 )); then - echo "TIME: $(memunits $s) in $(timeunits $t0 $t1) importiert ($(memunits $(( s / (t1-t0) )))/s; Gesamt:$(memunits $throughput)/s)." - - remaining_data=$(( S1-S )) - remaining_time=$(( remaining_data * elapsed / S )) - eta=$(( t1 + remaining_time )) - - echo "REMAINING: $(memunits $remaining_data) $(( remaining_data * 100 / S1 ))% $(timeunits $remaining_time) ETA:$(date --date="1970-01-01 $eta seconds UTC")" - else - echo "TIME: $(memunits $s) in 0,nichts (Gesamt $(memunits $(( S / elapsed )))/s)." - fi - else - echo "TIME: $(memunits $s) in 0,nichts importiert." - fi - - [ $rm == 1 ] && rm -v "$dst" - trap "" EXIT done <$F -if (( T0 < t1 )); then - echo "FINAL: $(memunits $S) in $(timeunits $T0 $t1) ($(memunits $(( S / elapsed )))/s)" -fi +process + +final if [ "$src" != "exit" -a "$src" != "error" ]; then pushd "$B" >/dev/null if (( preprocessed == 0 )); then - sql alkis-signaturen.sql preprocessed=1 rund preprocessing fi - sql alkis-ableitungsregeln.sql rund postprocessing popd >/dev/null fi diff --git a/alkis-init.sql b/alkis-init.sql index 57c057f..af22706 100644 --- a/alkis-init.sql +++ b/alkis-init.sql @@ -26,7 +26,8 @@ SET search_path = :"alkis_schema", public; SELECT alkis_drop(); CREATE TABLE alkis_version(version integer); -INSERT INTO alkis_version(version) VALUES (15); +INSERT INTO alkis_version(version) VALUES (16); +COMMENT ON TABLE alkis_version IS 'ALKIS: Schemaversion'; -- BW/BY-Koordinatensystem anlegen SELECT alkis_create_bsrs(:alkis_epsg); diff --git a/alkis-po-tables.sql b/alkis-po-tables.sql index c2e09eb..ef01133 100644 --- a/alkis-po-tables.sql +++ b/alkis-po-tables.sql @@ -22,7 +22,7 @@ SELECT 'Präsentationstabellen werden erzeugt.'; SELECT alkis_dropobject('alkis_po_version'); CREATE TABLE alkis_po_version(version integer); -INSERT INTO alkis_po_version(version) VALUES (1); +INSERT INTO alkis_po_version(version) VALUES (2); -- -- Präsentationstabellen @@ -40,6 +40,7 @@ CREATE TABLE po_points( modell varchar[] CHECK (array_length(modell,1)>0), drehwinkel_grad double precision ); +COMMENT ON TABLE po_points IS 'BASE: Punktobjekte'; SELECT AddGeometryColumn('po_points','point', :alkis_epsg, 'MULTIPOINT', 2); @@ -53,6 +54,7 @@ CREATE TABLE po_lines( signaturnummer varchar, modell varchar[] CHECK (array_length(modell,1)>0) ); +COMMENT ON TABLE po_points IS 'BASE: Linienobjekte'; SELECT AddGeometryColumn('po_lines','line', :alkis_epsg, 'MULTILINESTRING', 2); @@ -68,6 +70,7 @@ CREATE TABLE po_polygons( sn_randlinie varchar, modell varchar[] CHECK (array_length(modell,1)>0) ); +COMMENT ON TABLE po_points IS 'BASE: Flächenobjekte'; SELECT AddGeometryColumn('po_polygons','polygon', :alkis_epsg, 'MULTIPOLYGON', 2); @@ -88,6 +91,7 @@ CREATE TABLE po_labels( vertikaleausrichtung varchar, modell varchar[] CHECK (array_length(modell,1)>0) ); +COMMENT ON TABLE po_points IS 'BASE: Beschriftungsobjekte'; SELECT AddGeometryColumn('po_labels','point', :alkis_epsg, 'POINT', 2); SELECT AddGeometryColumn('po_labels','line', :alkis_epsg, 'LINESTRING', 2); diff --git a/alkis-schema.sql b/alkis-schema.sql index 8cdcb99..bc9d74a 100644 --- a/alkis-schema.sql +++ b/alkis-schema.sql @@ -21333,8 +21333,14 @@ CREATE TABLE ax_fortfuehrungsauftrag ( CREATE INDEX ap_lpo_art ON ap_lpo USING btree (art); CREATE INDEX ap_ppo_art ON ap_ppo USING btree (art); CREATE INDEX ap_pto_art ON ap_pto USING btree (art); +CREATE INDEX ap_lto_art ON ap_lto USING btree (art); +CREATE INDEX ap_darstellung_art ON ap_darstellung USING btree (art); +CREATE INDEX ap_lpo_sn ON ap_lpo USING btree (signaturnummer); +CREATE INDEX ap_ppo_sn ON ap_ppo USING btree (signaturnummer); CREATE INDEX ap_pto_sn ON ap_pto USING btree (signaturnummer); +CREATE INDEX ap_lto_sn ON ap_lto USING btree (signaturnummer); +CREATE INDEX ap_darstellung_sn ON ap_darstellung USING btree (signaturnummer); CREATE INDEX ax_besondereflurstuecksgrenze_adfg ON ax_besondereflurstuecksgrenze USING gin (artderflurstuecksgrenze); CREATE INDEX ax_besonderegebaeudelinie_bes ON ax_besonderegebaeudelinie USING gin (beschaffenheit); @@ -21350,6 +21356,8 @@ CREATE INDEX ax_naturumweltoderbodenschutzrecht_afs ON ax_naturumweltoderbodensc CREATE INDEX ax_schutzgebietnachnaturumweltoderbodenschutzrecht_afs ON ax_schutzgebietnachnaturumweltoderbodenschutzrecht(land,stelle); CREATE INDEX ax_schutzgebietnachwasserrecht_afs ON ax_schutzgebietnachwasserrecht(land,stelle); +CREATE INDEX ax_dienststelle_sg ON ax_dienststelle(schluesselgesamt); + 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); CREATE INDEX ax_flurstueck_kz ON ax_flurstueck USING btree (flurstueckskennzeichen); @@ -21392,6 +21400,7 @@ CREATE TABLE ks_einrichtunginoeffentlichenbereichen ( zustand integer, PRIMARY KEY (ogc_fid) ); +COMMENT ON ks_einrichtunginoeffentlichenbereichen IS 'BASE: ks_einrichtunginoeffentlichenbereichen'; SELECT AddGeometryColumn('ks_einrichtunginoeffentlichenbereichen','wkb_geometry',:alkis_epsg,'GEOMETRY',2); diff --git a/alkis-trigger.sql b/alkis-trigger.sql index 2e35c37..cc77cce 100644 --- a/alkis-trigger.sql +++ b/alkis-trigger.sql @@ -29,6 +29,7 @@ CREATE TABLE "delete" ( CREATE INDEX delete_fid ON "delete"(featureid); +COMMENT ON TABLE delete IS 'BASE: Lösch- und Fortführungsdatensätze'; COMMENT ON COLUMN delete.context IS 'Operation ''delete'', ''replace'' oder ''update''.'; COMMENT ON COLUMN delete.safetoignore IS 'Attribut safeToIgnore von wfsext:Replace'; COMMENT ON COLUMN delete.replacedBy IS 'gml_id des Objekts, das featureid ersetzt'; @@ -169,7 +170,7 @@ CREATE INDEX alkis_beziehungen_von_idx ON alkis_beziehungen USING btree (beziehu 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); -COMMENT ON TABLE alkis_beziehungen IS 'zentrale Multi-Verbindungstabelle'; +COMMENT ON TABLE alkis_beziehungen IS 'BASE: Objektbeziehungen'; 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'; diff --git a/alkisImport.py b/alkisImport.py index f4f6447..8c72ac6 100755 --- a/alkisImport.py +++ b/alkisImport.py @@ -25,6 +25,7 @@ import sys import os +import fnmatch import traceback import gzip import re @@ -65,6 +66,7 @@ os.putenv("NAS_GFS_TEMPLATE", os.path.join(d, "alkis-schema.gfs")) os.putenv("NAS_NO_RELATION_LAYER", "YES") +os.putenv("NAS_SKIP_CORRUPTED_FEATURES", "YES") os.putenv("TABLES", "aa_advstandardmodell,aa_nas_ausgabeform,nas_filter_capabilities,aa_themendimension,aa_art_themendefinition,operation,ap_horizontaleausrichtung,ap_vertikaleausrichtung,ap_dateityp_3d,ax_artdesnullpunktes_nullpunkt,ax_li_processstep_mitdatenerhebung_description,ax_datenerhebung,ax_sportart_bauwerkoderanlagefuersportfreizeitunderholung,ax_lagezurerdoberflaeche_transportanlage,ax_produkt_transportanlage,ax_bauwerksfunktion_turm,ax_hydrologischesmerkmal_sonstigesbauwerkodersonstigeeinri,ax_zustand_turm,ax_art_heilquellegasquelle,ax_bauwerksfunktion_transportanlage,ax_lagezurerdoberflaeche_vorratsbehaelterspeicherbauwerk,ax_speicherinhalt_vorratsbehaelterspeicherbauwerk,ax_bauwerksfunktion_bauwerkoderanlagefuerindustrieundgewer,ax_art_einrichtunginoeffentlichenbereichen,ax_bauwerksfunktion_bauwerkoderanlagefuersportfreizeitunde,ax_archaeologischertyp_historischesbauwerkoderhistorischee,ax_hydrologischesmerkmal_heilquellegasquelle,ax_zustand_bauwerkoderanlagefuerindustrieundgewerbe,ax_bauwerksfunktion_sonstigesbauwerkodersonstigeeinrichtun,ax_funktion_bauwerk,ax_bauwerksfunktion_leitung,ax_bauwerksfunktion_vorratsbehaelterspeicherbauwerk,ax_befestigung_wegpfadsteig,ax_oberflaechenmaterial_flugverkehrsanlage,ax_art_gleis,ax_bahnkategorie_gleis,ax_art_strassenverkehrsanlage,ax_markierung_wegpfadsteig,ax_bahnhofskategorie_bahnverkehrsanlage,ax_bahnkategorie_seilbahnschwebebahn,ax_zustand_bahnverkehrsanlage,ax_zustand_bauwerkimgewaesserbereich,ax_art_wegpfadsteig,ax_lagezuroberflaeche_gleis,ax_art_flugverkehrsanlage,ax_bauwerksfunktion_bauwerkimverkehrsbereich,ax_bauwerksfunktion_bauwerkimgewaesserbereich,ax_art_einrichtungenfuerdenschiffsverkehr,ax_zustand_bauwerkimverkehrsbereich,ax_artdergewaesserachse,ax_art_schifffahrtsliniefaehrverkehr,ax_zustand_schleuse,ax_nutzung_hafen,ax_konstruktionsmerkmalbauart_schleuse,ax_hafenkategorie_hafen,ax_art_gewaessermerkmal,ax_hydrologischesmerkmal_untergeordnetesgewaesser,ax_lagezurerdoberflaeche_untergeordnetesgewaesser,ax_artdespolders,ax_funktion_polder,ax_funktion_untergeordnetesgewaesser,ax_hydrologischesmerkmal_gewaessermerkmal,ax_funktion_vegetationsmerkmal,ax_zustand_vegetationsmerkmal,ax_bewuchs_vegetationsmerkmal,ax_eigentuemerart_namensnummer,ax_li_processstep_ohnedatenerhebung_description,ax_blattart_buchungsblatt,ax_anrede_person,ax_artderrechtsgemeinschaft_namensnummer,ax_buchungsart_buchungsstelle,ax_klassifikation_hierarchiestufe3d_lagefestpunkt,ax_punktstabilitaet,ax_punktstabilitaet_hoehenfestpunkt_geologischestabilitaet,ax_klassifikation_ordnung_lagefestpunkt,ax_punktstabilitaet_hoehenfestpunkt_guetedesvermarkungstra,ax_ordnung_schwerefestpunkt,ax_funktion_referenzstationspunkt,ax_funktion_lagefestpunkt,ax_skizzenart_skizze,ax_funktion_schwerefestpunkt,ax_punktstabilitaet_hoehenfestpunkt_hoehenstabilitaetauswi,ax_punktstabilitaet_hoehenfestpunkt_guetedesbaugrundes,ax_punktstabilitaet_hoehenfestpunkt_grundwasserschwankung,ax_punktstabilitaet_hoehenfestpunkt_topographieundumwelt,ax_klassifikation_wertigkeit_lagefestpunkt,ax_gnsstauglichkeit,ax_punktstabilitaet_hoehenfestpunkt_grundwasserstand,ax_punktstabilitaet_hoehenfestpunkt_vermutetehoehenstabili,ax_ordnung_hoehenfestpunkt,ax_horizontfreiheit_grenzpunkt,ax_gruendederausgesetztenabmarkung_grenzpunkt,ax_bemerkungzurabmarkung_grenzpunkt,ax_artderflurstuecksgrenze_besondereflurstuecksgrenze,ax_horizontfreiheit_netzpunkt,ax_marke,ax_genauigkeitsstufe_punktort,ax_messmethode_schwere,ax_koordinatenstatus_punktort,ax_datenerhebung_schwere,ax_vertrauenswuerdigkeit_schwere,ax_schwereanomalie_schwere_art,ax_vertrauenswuerdigkeit_punktort,ax_schwerestatus_schwere,ax_li_processstep_punktort_description,ax_genauigkeitsstufe_schwere,ax_datenerhebung_punktort,ax_schweresystem_schwere,ax_blattart_historischesflurstueck,ax_qualitaet_hauskoordinate,ax_art_punktkennung,ax_art_reservierung,ax_art_adressat_auszug,ax_lagezurerdoberflaeche_bauteil,ax_lagezurerdoberflaeche_gebaeude,ax_zustand_gebaeude,ax_dachgeschossausbau_gebaeude,ax_dachform,ax_bauweise_gebaeude,ax_gebaeudefunktion,ax_art_gebaeudepunkt,ax_weitere_gebaeudefunktion,ax_beschaffenheit_besonderegebaeudelinie,ax_bauart_bauteil,ax_nutzung,ax_art_verbandsgemeinde,ax_art_baublock,ax_artdergebietsgrenze_gebietsgrenze,ax_sonstigeangaben_bodenschaetzung,ax_kulturart_musterlandesmusterundvergleichsstueck,ax_entstehungsartoderklimastufewasserverhaeltnisse_bodensc,ax_sonstigeangaben_musterlandesmusterundvergleichsstueck,ax_kulturart_bodenschaetzung,ax_klassifizierung_bewertung,ax_merkmal_musterlandesmusterundvergleichsstueck,ax_zustandsstufeoderbodenstufe_bodenschaetzung,ax_bedeutung_grablochderbodenschaetzung,ax_zustandsstufeoderbodenstufe_musterlandesmusterundvergle,ax_entstehungsartoderklimastufewasserverhaeltnisse_musterl,ax_bodenart_bodenschaetzung,ax_bodenart_musterlandesmusterundvergleichsstueck,ax_landschaftstyp,ax_art_verband,ax_behoerde,ax_administrative_funktion,ax_bezeichnung_verwaltungsgemeinschaft,ax_funktion_schutzgebietnachwasserrecht,ax_artderfestlegung_schutzgebietnachnaturumweltoderbodensc,ax_artderfestlegung_anderefestlegungnachstrassenrecht,ax_artderfestlegung_schutzgebietnachwasserrecht,ax_besonderefunktion_forstrecht,ax_zone_schutzzone,ax_artderfestlegung_klassifizierungnachstrassenrecht,ax_artderfestlegung_denkmalschutzrecht,ax_artderfestlegung_klassifizierungnachwasserrecht,ax_rechtszustand_schutzzone,ax_artderfestlegung_bauraumoderbodenordnungsrecht,ax_artderfestlegung_anderefestlegungnachwasserrecht,ax_artderfestlegung_forstrecht,ax_zustand_naturumweltoderbodenschutzrecht,ax_artderfestlegung_sonstigesrecht,ax_artderfestlegung_naturumweltoderbodenschutzrecht,ax_liniendarstellung_topographischelinie,ax_darstellung_gebaeudeausgestaltung,ax_datenformat_benutzer,ax_art_bereichzeitlich,ax_letzteabgabeart,ax_ausgabemedium_benutzer,ax_identifikation,ax_dqerfassungsmethodemarkantergelaendepunkt,ax_dqerfassungsmethodestrukturiertegelaendepunkte,ax_dqerfassungsmethode,ax_besonderebedeutung,ax_dqerfassungsmethodebesondererhoehenpunkt,ax_artdergeripplinie,ax_artdergelaendekante,ax_artderstrukturierung,ax_dqerfassungsmethodegewaesserbegrenzung,ax_artdernichtgelaendepunkte,ax_artdesmarkantengelaendepunktes,ax_artderaussparung,ax_besondereartdergewaesserbegrenzung,ax_ursprung,ax_funktion_dammwalldeich,ax_art_dammwalldeich,ax_funktion_einschnitt,ax_zustand_boeschungkliff,ax_zustand_hoehleneingang,ax_berechnungsmethode,ax_verwendeteobjekte,ax_berechnungsmethodehoehenlinie,ax_dqerfassungsmethodesekundaeresdgm,ax_zustand_kanal,ax_funktion_stehendesgewaesser,ax_schifffahrtskategorie,ax_hydrologischesmerkmal_fliessgewaesser,ax_schifffahrtskategorie_kanal,ax_funktion_fliessgewaesser,ax_widmung_wasserlauf,ax_funktion_meer,ax_hydrologischesmerkmal_gewaesserachse,ax_tidemerkmal_meer,ax_nutzung_hafenbecken,ax_hydrologischesmerkmal_stehendesgewaesser,ax_widmung_stehendesgewaesser,ax_funktion_gewaesserachse,ax_funktion_hafenbecken,ax_widmung_kanal,ax_zustand_wohnbauflaeche,ax_artderbebauung_wohnbauflaeche,ax_zustand_flaechebesondererfunktionalerpraegung,ax_funktion_flaechegemischternutzung,ax_foerdergut_industrieundgewerbeflaeche,ax_artderbebauung_flaechegemischternutzung,ax_zustand_sportfreizeitunderholungsflaeche,ax_funktion_flaechebesondererfunktionalerpraegung,ax_funktion_sportfreizeitunderholungsflaeche,ax_lagergut_industrieundgewerbeflaeche,ax_zustand_halde,ax_zustand_bergbaubetrieb,ax_abbaugut_tagebaugrubesteinbruch,ax_primaerenergie_industrieundgewerbeflaeche,ax_abbaugut_bergbaubetrieb,ax_zustand_flaechegemischternutzung,ax_zustand_industrieundgewerbeflaeche,ax_funktion_friedhof,ax_zustand_friedhof,ax_lagergut_halde,ax_funktion_industrieundgewerbeflaeche,ax_zustand_tagebaugrubesteinbruch,ax_artderbebauung_siedlungsflaeche,ax_artderbebauung_flaechebesondererfunktionalerpraegung,ax_vegetationsmerkmal_gehoelz,ax_vegetationsmerkmal_wald,ax_vegetationsmerkmal_landwirtschaft,ax_oberflaechenmaterial_unlandvegetationsloseflaeche,ax_funktion_unlandvegetationsloseflaeche,ax_funktion_gehoelz,ax_bahnkategorie,ax_funktion_weg,ax_funktion_bahnverkehr,ax_verkehrsbedeutunginneroertlich,ax_internationalebedeutung_strasse,ax_besonderefahrstreifen,ax_zustand_bahnverkehr,ax_befestigung_fahrwegachse,ax_spurweite,ax_zustand_schiffsverkehr,ax_funktion_platz,ax_art_flugverkehr,ax_elektrifizierung,ax_zustand,ax_fahrbahntrennung_strasse,ax_funktion_fahrbahnachse,ax_oberflaechenmaterial_strasse,ax_funktion_flugverkehr,ax_funktion_wegachse,ax_zustand_strasse,ax_markierung_wegachse,ax_zustand_flugverkehr,ax_funktion_strassenachse,ax_verkehrsbedeutungueberoertlich,ax_nutzung_flugverkehr,ax_funktion_schiffsverkehr,ax_funktion_strasse,ax_widmung_strasse,ax_anzahlderstreckengleise,ax_funktionoa_k_tngr_all,ax_klassifizierunggr_k_bewgr,ax_funktionoa_k_tnfl,ax_klassifizierungobg_k_bewfl,ax_funktionoa_k_tngrerweitert_all,ax_funktionhgr_k_tnhgr,ax_wirtschaftsart,ax_punktart_k_punkte,ax_k_zeile_punktart,aa_besonderemeilensteinkategorie,aa_anlassart,aa_levelofdetail,aa_anlassart_benutzungsauftrag,aa_weiteremodellart,aa_instanzenthemen,ax_benutzer,ax_benutzergruppemitzugriffskontrolle,ax_benutzergruppenba,ap_darstellung,aa_projektsteuerung,aa_meilenstein,aa_antrag,aa_aktivitaet,aa_vorgang,ax_person,ax_namensnummer,ax_anschrift,ax_verwaltung,ax_buchungsstelle,ax_personengruppe,ax_buchungsblatt,ax_vertretung,ax_skizze,ax_schwere,ax_historischesflurstueckalb,ax_historischesflurstueckohneraumbezug,ax_lagebezeichnungohnehausnummer,ax_lagebezeichnungmithausnummer,ax_lagebezeichnungmitpseudonummer,ax_reservierung,ax_punktkennunguntergegangen,ax_punktkennungvergleichend,ax_fortfuehrungsnachweisdeckblatt,ax_fortfuehrungsfall,ax_gemeinde,ax_buchungsblattbezirk,ax_gemarkungsteilflur,ax_kreisregion,ax_bundesland,ax_regierungsbezirk,ax_gemeindeteil,ax_lagebezeichnungkatalogeintrag,ax_gemarkung,ax_dienststelle,ax_verband,ax_nationalstaat,ax_besondererbauwerkspunkt,ax_netzknoten,ax_referenzstationspunkt,ax_lagefestpunkt,ax_hoehenfestpunkt,ax_schwerefestpunkt,ax_grenzpunkt,ax_aufnahmepunkt,ax_sonstigervermessungspunkt,ax_sicherungspunkt,ax_besonderergebaeudepunkt,ax_wirtschaftlicheeinheit,ax_verwaltungsgemeinschaft,ax_schutzgebietnachnaturumweltoderbodenschutzrecht,ax_schutzgebietnachwasserrecht,ax_boeschungkliff,ax_besonderertopographischerpunkt,ax_kanal,ax_wasserlauf,ax_strasse,ap_fpo,aa_antragsgebiet,ax_polder,ax_historischesflurstueck,ax_kondominium,ax_baublock,ax_aussparungsflaeche,ax_soll,ax_duene,ax_transportanlage,ax_wegpfadsteig,ax_gleis,ax_bahnverkehrsanlage,ax_strassenverkehrsanlage,ax_einrichtungenfuerdenschiffsverkehr,ax_flugverkehrsanlage,ax_hafen,ax_testgelaende,ax_schleuse,ax_ortslage,ax_grenzuebergang,ax_gewaessermerkmal,ax_untergeordnetesgewaesser,ax_vegetationsmerkmal,ax_musterlandesmusterundvergleichsstueck,ax_insel,ax_gewann,ax_kleinraeumigerlandschaftsteil,ax_landschaft,ax_felsenfelsblockfelsnadel,ap_lto,ax_leitung,ax_abschnitt,ax_ast,ap_lpo,ax_seilbahnschwebebahn,ax_gebaeudeausgestaltung,ax_topographischelinie,ax_geripplinie,ax_gewaesserbegrenzung,ax_strukturierterfasstegelaendepunkte,ax_einschnitt,ax_hoehenlinie,ax_abgeleitetehoehenlinie,ap_pto,ax_heilquellegasquelle,ax_wasserspiegelhoehe,ax_nullpunkt,ax_punktortau,ax_georeferenziertegebaeudeadresse,ax_grablochderbodenschaetzung,ax_wohnplatz,ax_markantergelaendepunkt,ax_besondererhoehenpunkt,ax_hoehleneingang,ap_ppo,ax_sickerstrecke,ax_firstlinie,ax_besonderegebaeudelinie,ax_gelaendekante,ax_sonstigesbauwerkodersonstigeeinrichtung,ax_bauwerkoderanlagefuersportfreizeitunderholung,ax_bauwerkoderanlagefuerindustrieundgewerbe,ax_einrichtunginoeffentlichenbereichen,ax_historischesbauwerkoderhistorischeeinrichtung,ax_turm,ax_vorratsbehaelterspeicherbauwerk,ax_bauwerkimgewaesserbereich,ax_bauwerkimverkehrsbereich,ax_schifffahrtsliniefaehrverkehr,ax_gebaeude,ax_anderefestlegungnachstrassenrecht,ax_naturumweltoderbodenschutzrecht,ax_klassifizierungnachstrassenrecht,ax_sonstigesrecht,ax_denkmalschutzrecht,ax_dammwalldeich,ax_punktortag,ax_bauteil,ax_tagesabschnitt,ax_bewertung,ax_anderefestlegungnachwasserrecht,ax_klassifizierungnachwasserrecht,ax_forstrecht,ax_bauraumoderbodenordnungsrecht,ax_schutzzone,ax_boeschungsflaeche,ax_flurstueck,ax_gebiet_kreis,ax_gebiet_bundesland,ax_gebiet_regierungsbezirk,ax_gebiet_nationalstaat,ax_kommunalesgebiet,ax_gebiet_verwaltungsgemeinschaft,ax_bodenschaetzung,ax_gewaesserstationierungsachse,ax_besondereflurstuecksgrenze,ax_gebietsgrenze,ax_gewaesserachse,ax_strassenachse,ax_bahnstrecke,ax_fahrwegachse,ax_fahrbahnachse,ax_punktortta,ax_stehendesgewaesser,ax_meer,ax_fliessgewaesser,ax_hafenbecken,ax_bergbaubetrieb,ax_friedhof,ax_flaechegemischternutzung,ax_wohnbauflaeche,ax_flaechebesondererfunktionalerpraegung,ax_industrieundgewerbeflaeche,ax_siedlungsflaeche,ax_tagebaugrubesteinbruch,ax_sportfreizeitunderholungsflaeche,ax_halde,ax_flaechezurzeitunbestimmbar,ax_sumpf,ax_unlandvegetationsloseflaeche,ax_gehoelz,ax_wald,ax_heide,ax_moor,ax_landwirtschaft,ax_bahnverkehr,ax_weg,ax_schiffsverkehr,ax_flugverkehr,ax_platz,ax_strassenverkehr,ta_compositesolidcomponent_3d,ta_surfacecomponent_3d,ta_curvecomponent_3d,ta_pointcomponent_3d,au_trianguliertesoberflaechenobjekt_3d,au_mehrfachflaechenobjekt_3d,au_mehrfachlinienobjekt_3d,au_umringobjekt_3d,ap_kpo_3d,au_punkthaufenobjekt_3d,au_koerperobjekt_3d,au_geometrieobjekt_3d,ax_fortfuehrungsauftrag,ks_einrichtunginoeffentlichenbereichen,ks_bauwerkanlagenfuerverundentsorgung,ks_sonstigesbauwerk,ks_verkehrszeichen,ks_bauwerkimgewaesserbereich,ks_vegetationsmerkmal,ks_bauraumoderbodenordnungsrecht,ks_kommunalerbesitz") os.putenv("LIST_ALL_TABLES", "YES") @@ -598,7 +600,7 @@ def runSQLScript(self, conn, fn, parallel=False): "-v", "alkis_epsg={}".format(self.epsg), "-v", "alkis_schema={}".format(self.schema), "-v", "postgis_schema={}".format(self.pgschema), - "-v", "parent_schema={}".format(self.parentschema), + "-v", "parent_schema={}".format(self.parentschema if self.parentschema else self.schema), "-v", "alkis_fnbruch={}".format("true" if self.fnbruch else "false"), "-v", "alkis_pgverdraengen={}".format("true" if self.pgverdraengen else "false"), "-q", "-f", fn, conn]) @@ -640,7 +642,12 @@ def connectDb(self): return conn def rund(self, conn, dir): - for f in sorted(glob("{}.d/*.sql".format(dir))): + matches = [] + for root, dirnames, filenames in os.walk(u"{}.d".format(dir)): + for filename in fnmatch.filter(filenames, '*.sql'): + matches.append(os.path.join(root, filename)) + + for f in sorted(matches): self.status(u"{} wird gestartet...".format(f)) if not self.runSQLScript(conn, f): self.log(u"{} gescheitert.".format(f)) @@ -955,12 +962,6 @@ def importALKIS(self): if not self.rund(conn, "postupdate"): break - self.status(u"Signaturen werden importiert...") - if not self.runSQLScript(conn, "alkis-signaturen.sql"): - self.log(u"Import der Signaturen schlug fehl.") - break - self.log(u"Signaturen importiert.") - ok = self.rund(conn, "preprocessing") self.pbProgress.setVisible(True) @@ -1132,17 +1133,7 @@ def importALKIS(self): " ({}/s)".format(self.memunits(ts * 1000 / t0.elapsed())) )) - if ok: - t1 = QTime() - t1.start() - - self.status(u"Ableitungsregeln werden verarbeitet...") - ok = self.runSQLScript(conn, "alkis-ableitungsregeln.sql") - if ok: - self.log(u"Ableitungsregeln in {} verarbeitet.".format(self.timeunits(t1.elapsed()))) - - if ok: - ok = self.rund(conn, "postprocessing") + ok = self.rund(conn, "postprocessing") if ok: self.status(u"VACUUM...") diff --git a/postcreate.d/nas2alb.sql b/postcreate.d/nas2alb.sql index f672f7a..b5f7b1e 100644 --- a/postcreate.d/nas2alb.sql +++ b/postcreate.d/nas2alb.sql @@ -23,7 +23,7 @@ SET search_path = :"alkis_schema", :"postgis_schema", public; SELECT alkis_dropobject('alb_version'); CREATE TABLE alb_version(version integer); -INSERT INTO alb_version(version) VALUES (2); +INSERT INTO alb_version(version) VALUES (3); -- Sichten löschen, die von alkis_toint abhängen SELECT alkis_dropobject('ax_tatsaechlichenutzung'); @@ -68,6 +68,7 @@ CREATE TABLE flurst ( ff_datum character(8), primary key (flsnr) ) WITH OIDS; +COMMENT ON TABLE flurst IS 'BASE: Flurstücke'; SELECT alkis_dropobject('ax_flurstueck_flsnr'); CREATE INDEX ax_flurstueck_flsnr ON ax_flurstueck USING btree (alkis_flsnr(ax_flurstueck)); @@ -88,6 +89,7 @@ CREATE TABLE str_shl ( strname varchar(200), gemshl character(32) ); +COMMENT ON TABLE str_shl IS 'BASE: Straßenschlüssel'; CREATE INDEX str_shl_idx0 ON str_shl(strshl); CREATE INDEX str_shl_idx1 ON str_shl(gemshl); @@ -102,6 +104,7 @@ CREATE TABLE strassen ( ff_stand integer, primary key (pk) ); +COMMENT ON TABLE strassen IS 'BASE: Straßenzuordnungen'; CREATE INDEX strassen_idx1 ON strassen(flsnr); CREATE INDEX strassen_idx2 ON strassen(strshl); @@ -114,6 +117,8 @@ CREATE TABLE gem_shl ( gemname character(100), primary key (gemshl) ); +COMMENT ON TABLE gem_shl IS 'BASE: Gemeindeschlüssel'; + CREATE INDEX gem_shl_idx0 ON gem_shl(gemshl); @@ -125,6 +130,7 @@ CREATE TABLE gema_shl ( ag_shl character(4), primary key (gemashl) ); +COMMENT ON TABLE gema_shl IS 'BASE: Gemarkungsschlüssel'; CREATE INDEX gema_shl_gemshl ON gema_shl(gemshl); CREATE INDEX gema_shl_ag_shl ON gema_shl(ag_shl); @@ -143,6 +149,7 @@ CREATE TABLE eignerart ( lkfs character(4), primary key (flsnr, bestdnr, bvnr) ); +COMMENT ON TABLE eignerart IS 'BASE: Eigentümerarten'; CREATE INDEX eignerart_idx1 ON eignerart(b); CREATE INDEX eignerart_idx2 ON eignerart(flsnr); @@ -162,6 +169,7 @@ CREATE TABLE bem_best ( ff_stand integer, primary key (pk) ); +COMMENT ON TABLE bem_best IS 'BASE: Bestandsbemerkung'; CREATE INDEX bem_best_idx1 ON bem_best(bestdnr); @@ -179,6 +187,8 @@ CREATE TABLE bestand ( pz character(1), PRIMARY KEY (bestdnr) ); +COMMENT ON TABLE bestand IS 'BASE: Bestände'; + CREATE INDEX bestand_bestdnr ON bestand(bestdnr); CREATE INDEX bestand_ff_entst ON bestand(ff_entst); CREATE INDEX bestand_ff_stand ON bestand(ff_stand); @@ -220,6 +230,8 @@ CREATE TABLE eigner ( primary key (pk) ); +COMMENT ON TABLE eigner IS 'BASE: Eigentümer'; + CREATE INDEX eigner_idx1 ON eigner(bestdnr); CREATE INDEX eigner_idx2 ON eigner(name); CREATE INDEX eigner_ff_entst ON eigner(ff_entst); @@ -235,6 +247,8 @@ CREATE TABLE eign_shl ( eignerart character(60), primary key (b) ); +COMMENT ON TABLE eign_shl IS 'BASE: Eigentumsarten'; + CREATE INDEX eign_shl_idx0 ON eign_shl(b); SELECT alkis_dropobject('hinw_shl'); @@ -243,6 +257,7 @@ CREATE TABLE hinw_shl ( hinw_txt character(50), PRIMARY KEY (shl) ); +COMMENT ON TABLE hinw_shl IS 'BASE: Hinweise'; SELECT alkis_dropobject('sonderbaurecht'); CREATE TABLE sonderbaurecht ( @@ -254,6 +269,7 @@ CREATE TABLE sonderbaurecht ( ff_stand integer, PRIMARY KEY (pk) ); +COMMENT ON TABLE sonderbaurecht IS 'BASE: Sonderbaurecht'; CREATE INDEX sonderbaurecht_idx1 ON sonderbaurecht(bestdnr); @@ -273,6 +289,8 @@ CREATE TABLE klas_3x ( ff_stand integer, primary key (pk) ); +COMMENT ON TABLE klas_3x IS 'BASE: Klassifizierungen'; + CREATE INDEX klas_3x_idx1 ON klas_3x(flsnr); CREATE INDEX klas_3x_idx2 ON klas_3x(klf); @@ -283,6 +301,7 @@ CREATE TABLE kls_shl ( klf_text character(200), primary key (klf) ); +COMMENT ON TABLE kls_shl IS 'BASE: Klassifiziersschlüssel'; SELECT alkis_dropobject('bem_fls'); CREATE TABLE bem_fls ( @@ -293,6 +312,8 @@ CREATE TABLE bem_fls ( ff_stand INTEGER, primary key (flsnr, lnr) ); +COMMENT ON TABLE bem_fls IS 'BASE: Flurstücksbemerkungen'; + CREATE INDEX bem_fls_idx1 ON bem_fls(flsnr); SELECT alkis_dropobject('erbbaurecht'); @@ -305,6 +326,8 @@ CREATE TABLE erbbaurecht( ff_stand integer, PRIMARY KEY (pk) ); +COMMENT ON TABLE erbbaurecht IS 'BASE: Erbbaurecht'; + CREATE INDEX erbbaurecht_idx1 ON erbbaurecht(bestdnr); SELECT alkis_dropobject('nutz_21'); @@ -318,6 +341,8 @@ CREATE TABLE nutz_21 ( ff_stand INTEGER, primary key (pk) ); +COMMENT ON TABLE nutz_21 IS 'BASE: Nutzungen'; + CREATE INDEX nutz_21_idx1 ON nutz_21(flsnr); CREATE INDEX nutz_21_idx2 ON nutz_21(nutzsl); @@ -327,6 +352,8 @@ CREATE TABLE nutz_shl ( nutzung character(200), primary key (nutzshl) ); +COMMENT ON TABLE nutz_shl IS 'BASE: Nutzungsschlüssel'; + CREATE INDEX nutz_shl_idx0 ON nutz_shl(nutzshl); SELECT alkis_dropobject('verf_shl'); @@ -335,6 +362,8 @@ CREATE TABLE verf_shl ( verf_txt character(50), PRIMARY KEY (verfshl) ); +COMMENT ON TABLE verf_shl IS 'BASE: Verfahrensschlüssel'; + CREATE INDEX verf_shl_idx0 ON verf_shl(verfshl); SELECT alkis_dropobject('vor_flst'); @@ -346,6 +375,8 @@ CREATE TABLE vor_flst( ff_stand integer, PRIMARY KEY (pk) ); +COMMENT ON TABLE vor_flst IS 'BASE: Vorgängerflurstücke'; + CREATE INDEX vor_flst_idx1 ON vor_flst(flsnr); CREATE INDEX vor_flst_idx2 ON vor_flst(v_flsnr); @@ -355,6 +386,8 @@ CREATE TABLE best_lkfs ( lkfs character(4) NOT NULL, PRIMARY KEY (bestdnr,lkfs) ); +COMMENT ON TABLE best_lkfs IS 'BASE: Bestandsführende Stelle'; + CREATE INDEX best_lkfs_idx0 ON best_lkfs(bestdnr); SELECT alkis_dropobject('flurst_lkfs'); @@ -363,6 +396,8 @@ CREATE TABLE flurst_lkfs ( lkfs character(4) NOT NULL, PRIMARY KEY (flsnr,lkfs) ); +COMMENT ON TABLE flurst_lkfs IS 'BASE: Flurstücksführende Stelle'; + CREATE INDEX flurst_lkfs_idx0 ON flurst_lkfs(flsnr); SELECT alkis_dropobject('fortf'); @@ -378,6 +413,7 @@ CREATE TABLE fortf ( datei character(250), PRIMARY KEY (ffnr) ); +COMMENT ON TABLE fortf IS 'BASE: Fortführungen'; SELECT alkis_dropobject('fina'); CREATE TABLE fina( @@ -385,6 +421,8 @@ CREATE TABLE fina( fina_name character(200), PRIMARY KEY (fina_nr) ); +COMMENT ON TABLE fina IS 'BASE: Finanzämter'; + CREATE INDEX fina_idx0 ON fina(fina_nr); SELECT alkis_dropobject('fs'); @@ -393,6 +431,7 @@ CREATE TABLE fs( fs_obj varchar, alb_key varchar ); +COMMENT ON TABLE fs IS 'BASE: Flurstücksverknüpfungen'; CREATE INDEX fs_obj ON fs(fs_obj); CREATE INDEX fs_alb ON fs(alb_key); @@ -408,6 +447,7 @@ CREATE TABLE ausfst ( ff_stand integer, primary key (pk) ); +COMMENT ON TABLE ausfst IS 'BASE: Ausführende Stellen'; CREATE INDEX ausfst_idx1 ON ausfst(flsnr); CREATE INDEX ausfst_idx2 ON ausfst(ausf_st); @@ -417,6 +457,7 @@ CREATE TABLE afst_shl ( afst_txt character(200), PRIMARY KEY (ausf_st) ); +COMMENT ON TABLE afst_shl IS 'BASE: Schlüssel ausführender Stellen'; CREATE INDEX afst_shl_idx0 ON afst_shl(ausf_st); diff --git a/postinherit.d/nas2alb.sql b/postinherit.d/nas2alb.sql new file mode 100644 index 0000000..f1e5f7a --- /dev/null +++ b/postinherit.d/nas2alb.sql @@ -0,0 +1,4 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +\i nas2alb-functions.sql diff --git a/postprocessing.d/0_ableitungsregeln.sql b/postprocessing.d/0_ableitungsregeln.sql new file mode 100644 index 0000000..c898ae2 --- /dev/null +++ b/postprocessing.d/0_ableitungsregeln.sql @@ -0,0 +1,381 @@ +/*************************************************************************** + * * + * Project: norGIS ALKIS Import * + * Purpose: Regeln zur Ableitung von Darstellungstabellen aus den * + * GDAL/OGR NAS Tabellen * + * Author: Jürgen E. Fischer jef@norbit.de * + * * + *************************************************************************** + * Copyright (c) 2013-2017 Juergen E. Fischer (jef@norbit.de) * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +-- %s/ARRAY\[\([^]]*\)\] <@ \([^ ;]*\)/\1 = ANY(\2)/ +-- \timing +-- \set ECHO queries + +-- +-- Variablen: +-- alkis_epsg Koordinatensystem +-- alkis_fnbruch Bruchstrichdarstellung für Flurstücksnummern voreinstellen +-- alkis_pgverdraengen Niederwertige zu höherwertige politischen Grenzen NICHT erzeugen +-- alkis_modelle Zu verwendende Modelle +-- + +/* + 1XXX = Fläche + 2XXX = Linie + 3XXX = Symbol + 4XXX = Schrift + +Linien-Signaturen mit Konturen: + 2504 + 51004 ax_transportanlage + Förderband, unterirdisch (BWF 1102, OFL 1200/1700) + + 2510 + 51007 ax_historischesbauwerkoderhistorischeeinrichtung + Historische Mauer (ATP 1500/1520) + Stadtmauer (ATP 1510) + + 51009 ax_sonstigesbauwerkodersonstigeeinrichtung + Mauerkante, rechts (BWF 1710/1721) + Mauerkante, links (BWF 1702/1722) + Mauermitte (BWF 1703/1723) + + 53009 ax_bauwerkimgewaesserbereich + Ufermauer (BWF 2136) + + 2521 + 51004 ax_transportanlage + Förderband (BWF 1102, OFL -/1400) + + 51010 ax_einrichtunginoeffentlichenbereichen + Tor (ART 1510) + + 2526 + 53009 ax_bauwerkimgewaesserbereich + Sicherheitstor (BWF 2060) + +Links/Rechts: + 51009 ax_sonstigesbauwerkodersonstigeeinrichtung Mauerkante, -mitte + 54001 ax_vegetationsmerkmal Heckenkante, -mitte + 55002 ax_untergeordnetesgewaesser Grabenkante, -nmitte + 61003 ax_dammwalldeich Wall-, Knick kante + +Länder: +BB Brandenburg +BE Berlin +BW Baden-Württemberg +BY Bayern +HB Bremen +HE Hessen +HH Hamburg +MV Mecklenburg-Vorpommern +NI Niedersachsen +NW Nordrhein-Westfalen +RP Rheinland-Pfalz +SH Schleswig-Holstein +SL Saarland +SN Sachsen +ST Sachsen-Anhalt +TH Thüringen +*/ + +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +\unset ON_ERROR_STOP +SET application_name='ALKIS-Import - Ableitungsregeln'; +SET client_min_messages TO notice; +\set ON_ERROR_STOP + +SELECT 'Koordinatensystem: ' || :alkis_epsg; +SELECT 'Bruchstrichvoreinstellung: ' || CASE WHEN :alkis_fnbruch THEN 'Bruchstrich' ELSE 'Schrägstrich' END; +SELECT 'Niederwertige politische Grenzen verdrängen: ' || CASE WHEN :alkis_pgverdraengen THEN 'Ja' ELSE 'Nein' END; +-- SELECT 'Aktive Modelle: ' || array_to_string(:alkis_modelle,', '); + +SELECT alkis_dropobject('alkis_positionierungsregeln'); +CREATE TABLE alkis_positionierungsregeln( + id INTEGER PRIMARY KEY, + abstand DOUBLE PRECISION, + zeilenabstand DOUBLE PRECISION, + versatz DOUBLE PRECISION, + dichte INTEGER); + +INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1100,7,3.5,3.5,100); +INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1101,7,3.5,3.5,20); +INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1102,18,10,9,100); +INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1103,18,10,9,20); +INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1104,24,22,12,100); +INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1105,24,22,12,20); +INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1106,10,3,5,100); +INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1107,10,3,5,20); +INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1108,8,7,4,100); +INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1109,8,7,4,20); +INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1110,7,6,3.5,100); +INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1111,7,6,3.5,20); +INSERT INTO alkis_positionierungsregeln(id,abstand,zeilenabstand,versatz,dichte) VALUES (1112,3,1.5,1.5,100); + +SELECT alkis_dropobject('alkis_flaechenfuellung'); +CREATE OR REPLACE FUNCTION alkis_flaechenfuellung(g0 GEOMETRY, regelid varchar) RETURNS GEOMETRY AS $$ +DECLARE + xmin DOUBLE PRECISION; + ymin DOUBLE PRECISION; + xmax DOUBLE PRECISION; + ymax DOUBLE PRECISION; + x0 DOUBLE PRECISION; + x DOUBLE PRECISION; + y DOUBLE PRECISION; + r GEOMETRY[]; + p GEOMETRY; + srid INTEGER; + g GEOMETRY; + regel RECORD; +BEGIN + IF regelid IS NULL OR geometrytype(g)<>'POLYGON' THEN + RETURN NULL; + END IF; + + SELECT * INTO regel FROM alkis_positionierungsregeln WHERE id=regelid::int; + + g := st_buffer(g0, -0.5); + xmin := floor(st_xmin(g)/regel.abstand)*regel.abstand; + ymin := floor(st_ymin(g)/regel.zeilenabstand)*regel.zeilenabstand; + xmax := ceil(st_xmax(g)/regel.abstand)*regel.abstand; + ymax := ceil(st_ymax(g)/regel.zeilenabstand)*regel.zeilenabstand; + + SELECT st_srid(g) INTO srid; + + x0 := xmin; + y := ymin; + +-- RAISE NOTICE 'w:% h:% cols:% rows:% n:%', +-- xmax-xmin, ymax-ymin, +-- (xmax-xmin)/abstand, +-- (ymax-ymin)/zeilenabstand, +-- ((xmax-xmin)/abstand) * ((ymax-ymin)/zeilenabstand); + + FOR i IN 0..1 LOOP + WHILE y'MULTIPOLYGON' OR st_numgeometries(g)=0 THEN + -- RAISE NOTICE '%: buffered %', p_gmlid, st_astext(g); + RETURN; + END IF; + + SELECT st_multi(st_union(st_exteriorring(geom))) FROM st_dump(g) INTO g; + IF geometrytype(g)<>'MULTILINESTRING' THEN + RAISE NOTICE '%: exterior %', p_gmlid, st_astext(g); + RETURN; + END IF; + + -- Nächstes Flurstückspolygon bestimmen + SELECT + fs.geom + INTO f + FROM ( + SELECT + (st_dump(st_multi(ax_flurstueck.wkb_geometry))).geom + FROM ax_flurstueck + JOIN ax_lagebezeichnungohnehausnummer loh ON ARRAY[loh.gml_id] <@ ax_flurstueck.zeigtAuf + WHERE loh.land=p_land AND loh.regierungsbezirk=p_regierungsbezirk AND loh.kreis=p_kreis AND loh.gemeinde=p_gemeinde AND loh.lage=p_lage + AND loh.unverschluesselt IS NULL + ) AS fs + ORDER BY st_distance(fs.geom,g) ASC + LIMIT 1; + + IF f IS NULL THEN + -- RAISE NOTICE '%: empty fs geom', p_gmlid; + RETURN; + END IF; + + -- Nächste Kante des Eingabepolygons bestimmen + SELECT + geom + INTO + g + FROM ( + SELECT + st_makeline(st_pointn(geom,i), st_pointn(geom,i+1)) AS geom + FROM ( + SELECT + generate_series(1,st_npoints(geom)-1) AS i, + geom + FROM st_dump(g) + ) AS indexes + ) AS segments + WHERE st_length(geom)>1.5 + ORDER BY st_distance(f,st_lineinterpolatepoint(geom,0.5)) ASC,st_length(geom) DESC + LIMIT 1; + + IF g IS NULL THEN + -- RAISE NOTICE '%: empty edge', p_gmlid; + RETURN; + END IF; + + -- Mitte/Winkel an der nächsten Kante + p := st_lineinterpolatepoint(g, 0.5); + b := 0.5*pi()-st_azimuth(st_startpoint(g), st_endpoint(g)); + WHILE b < 0 LOOP + b := b + 2*pi(); + END LOOP; + WHILE b > 2*pi() LOOP + b := b - 2*pi(); + END LOOP; + + IF b BETWEEN 0.5*pi() AND pi() THEN + b := b + pi(); + ELSIF b BETWEEN pi() AND 1.5*pi() THEN + b := b - pi(); + END IF; + + IF b IS NULL THEN + RAISE EXCEPTION E'%: p:% a:%\n\ng:%\nf:%', p_gmlid, st_astext(p), b, st_astext(g), st_astext(f); + END IF; + + a := b; +END; +$$ LANGUAGE plpgsql; + + +-- Präsentationsobjekte? + +-- BEGIN; + +SELECT 'Präsentationstabellen werden geleert.'; +DELETE FROM po_points; +DELETE FROM po_lines; +DELETE FROM po_polygons; +DELETE FROM po_labels; + +-- Nichtdarzustellende Signaturnummer ergänzen +-- (um sie am Ende inkl. der betreffenden Signaturen wieder zu entfernen) +DELETE FROM alkis_linie WHERE signaturnummer IN ('6000','RP6000'); +DELETE FROM alkis_linien WHERE signaturnummer IN ('6000','RP6000'); +DELETE FROM alkis_flaechen WHERE signaturnummer IN ('6000','RP6000'); +DELETE FROM alkis_schriften WHERE signaturnummer IN ('6000','RP6000'); + +INSERT INTO alkis_linien(katalog,signaturnummer) VALUES (1,'6000'); +INSERT INTO alkis_flaechen(katalog,signaturnummer) VALUES (1,'6000'); +INSERT INTO alkis_schriften(katalog,signaturnummer) VALUES (1,'6000'); +INSERT INTO alkis_linien(katalog,signaturnummer) VALUES (1,'RP6000'); +INSERT INTO alkis_flaechen(katalog,signaturnummer) VALUES (1,'RP6000'); +INSERT INTO alkis_schriften(katalog,signaturnummer) VALUES (1,'RP6000'); + +INSERT INTO alkis_linien(katalog,signaturnummer) VALUES (2,'6000'); +INSERT INTO alkis_flaechen(katalog,signaturnummer) VALUES (2,'6000'); +INSERT INTO alkis_schriften(katalog,signaturnummer) VALUES (2,'6000'); +INSERT INTO alkis_linien(katalog,signaturnummer) VALUES (2,'RP6000'); +INSERT INTO alkis_flaechen(katalog,signaturnummer) VALUES (2,'RP6000'); +INSERT INTO alkis_schriften(katalog,signaturnummer) VALUES (2,'RP6000'); + +-- Leere Signaturnummern ersetzen +UPDATE ap_ppo SET signaturnummer=NULL WHERE signaturnummer=''; +UPDATE ap_lpo SET signaturnummer=NULL WHERE signaturnummer=''; +UPDATE ap_pto SET signaturnummer=NULL WHERE signaturnummer=''; +UPDATE ap_lto SET signaturnummer=NULL WHERE signaturnummer=''; +UPDATE ap_pto SET art='Strasse' WHERE art='Straße'; -- Straße wird z.B. in TH verwendet + +-- Leere Geschosszahlen korrigieren (sonst to_char(0,'RN') => '###############') +UPDATE ax_gebaeude SET anzahlderoberirdischengeschosse=NULL WHERE anzahlderoberirdischengeschosse=0; +UPDATE ax_gebaeude SET anzahlderunterirdischengeschosse=NULL WHERE anzahlderunterirdischengeschosse=0; diff --git a/postprocessing.d/1_ableitungsregeln/11001.sql b/postprocessing.d/1_ableitungsregeln/11001.sql new file mode 100644 index 0000000..72a4c18 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/11001.sql @@ -0,0 +1,170 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Flurstücke (11001) +-- + +SELECT 'Flurstücke werden verarbeitet.'; + +-- Flurstücke +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Flurstücke' AS thema, + 'ax_flurstueck' AS layer, + st_multi(wkb_geometry) AS polygon, + 2028 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_flurstueck +WHERE endet IS NULL; + +UPDATE ax_flurstueck SET abweichenderrechtszustand='false' WHERE abweichenderrechtszustand IS NULL; + +SELECT count(*) || ' Flurstücke mit abweichendem Rechtszustand.' FROM ax_flurstueck WHERE abweichenderrechtszustand='true'; + +-- Flurstücksgrenzen mit abweichendem Rechtszustand +SELECT 'Bestimme Grenzen mit abweichendem Rechtszustand'; +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + a.gml_id, + 'Flurstücke' AS thema, + 'ax_flurstueck' AS layer, + st_multi( (SELECT st_collect(geom) FROM st_dump( st_intersection(a.wkb_geometry,b.wkb_geometry) ) WHERE geometrytype(geom)='LINESTRING') ) AS line, + 2029 AS signaturnummer, + a.advstandardmodell||a.sonstigesmodell||b.advstandardmodell||b.sonstigesmodell AS modell +FROM ax_flurstueck a, ax_flurstueck b +WHERE a.ogc_fid'0'); + +-- Nenner +-- Bruchdarstellung +SELECT 'Erzeuge Flurstücksnenner...'; +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Flurstücke' AS thema, + 'ax_flurstueck_nummer' AS layer, + point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + st_translate(coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)), 0, -0.40) AS point, + coalesce(split_part(replace(t.schriftinhalt,'-','/'),'/',2)::text,o.nenner::text) AS text, + coalesce(d.signaturnummer,t.signaturnummer,CASE WHEN o.abweichenderrechtszustand='true' THEN '4123' ELSE '4115' END) AS signaturnummer, + t.drehwinkel, 'zentrisch'::text AS horizontaleausrichtung, 'oben'::text AS vertikaleausrichtung, t.skalierung, t.fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_flurstueck o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.endet IS NULL + WHERE o.endet IS NULL AND (coalesce(t.signaturnummer,'4111') IN (CASE WHEN :alkis_fnbruch THEN '4111' ELSE NULL END,'4115','4123') AND coalesce(o.nenner,'0')<>'0') +) AS foo +WHERE NOT text IS NULL; + +-- Bruchstrich +SELECT 'Erzeuge Flurstücksbruchstriche...'; +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + gml_id, + 'Flurstücke' AS thema, + 'ax_flurstueck_nummer' AS layer, + st_multi(st_rotate(st_makeline(st_translate(point, -len, 0.0), st_translate(point, len, 0.0)),drehwinkel,st_x(point),st_y(point))) AS line, + signaturnummer, + modell +FROM ( + SELECT + gml_id, + point, + CASE WHEN lenn>lenz THEN lenn ELSE lenz END AS len, + signaturnummer, + modell, + drehwinkel + FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + length(coalesce(split_part(replace(t.schriftinhalt,'-','/'),'/',1),o.zaehler::text)) AS lenn, + length(coalesce(split_part(replace(t.schriftinhalt,'-','/'),'/',2),o.nenner::text)) AS lenz, + coalesce(d.signaturnummer,t.signaturnummer,'2001') AS signaturnummer, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell, + coalesce(t.drehwinkel,0) AS drehwinkel + FROM ax_flurstueck o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.endet IS NULL + WHERE o.endet IS NULL AND coalesce(t.signaturnummer,'4111') IN (CASE WHEN :alkis_fnbruch THEN '4111' ELSE NULL END,'4115','4123') AND coalesce(o.nenner,'0')<>'0' + ) AS bruchstrich0 WHERE lenz>0 AND lenn>0 +) AS bruchstrich1; + +-- Zuordnungspfeile +SELECT 'Erzeuge Zuordnungspfeile...'; +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + o.gml_id, + 'Flurstücke' AS thema, + 'ax_flurstueck_zuordnung' AS layer, + st_multi(l.wkb_geometry) AS line, + CASE WHEN o.abweichenderrechtszustand='true' THEN 2005 ELSE 2004 END AS signaturnummer, + coalesce(l.advstandardmodell||l.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_flurstueck o +JOIN ap_lpo l ON ARRAY[o.gml_id] <@ l.dientzurdarstellungvon AND l.endet IS NULL + -- AND l.art='Pfeil' -- art in RP nicht immer gesetzt +WHERE o.endet IS NULL; + +-- Überhaken +SELECT 'Erzeuge Überhaken...'; +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Flurstücke' AS thema, + 'ax_flurstueck' AS layer, + st_multi(p.wkb_geometry) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + CASE WHEN o.abweichenderrechtszustand='true' THEN 3011 ELSE 3010 END AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_flurstueck o +JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='Haken' AND p.endet IS NULL +WHERE o.endet IS NULL; + diff --git a/postprocessing.d/1_ableitungsregeln/11002.sql b/postprocessing.d/1_ableitungsregeln/11002.sql new file mode 100644 index 0000000..195130f --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/11002.sql @@ -0,0 +1,228 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Besondere Flurstücksgrenzen (11002) +-- + +SELECT 'Besondere Flurstücksgrenzen werden bearbeitet.'; + +SELECT alkis_dropobject('alkis_politischegrenzen'); +CREATE TEMPORARY TABLE alkis_politischegrenzen(i INTEGER, sn VARCHAR, adfs INTEGER[]); +INSERT INTO alkis_politischegrenzen(i,sn,adfs) VALUES (1, '2016', ARRAY[7101]); +INSERT INTO alkis_politischegrenzen(i,sn,adfs) VALUES (2, '2018', ARRAY[7102]); +INSERT INTO alkis_politischegrenzen(i,sn,adfs) VALUES (3, '2020', ARRAY[7103]); +INSERT INTO alkis_politischegrenzen(i,sn,adfs) VALUES (4, '2026', ARRAY[7108]); +INSERT INTO alkis_politischegrenzen(i,sn,adfs) VALUES (5, '2010', ARRAY[2500,7104]); +INSERT INTO alkis_politischegrenzen(i,sn,adfs) VALUES (6, '2022', ARRAY[7106]); +INSERT INTO alkis_politischegrenzen(i,sn,adfs) VALUES (7, '2024', ARRAY[7107]); +INSERT INTO alkis_politischegrenzen(i,sn,adfs) VALUES (8, '2014', ARRAY[7003]); +INSERT INTO alkis_politischegrenzen(i,sn,adfs) VALUES (9, '2012', ARRAY[3000]); + +CREATE TEMPORARY TABLE po_besondereflurstuecksgrenze ( + ogc_fid serial NOT NULL, + gml_id character(16) NOT NULL, + modell varchar[], + artderflurstuecksgrenze integer[], + PRIMARY KEY (ogc_fid) +); + +SELECT AddGeometryColumn('po_besondereflurstuecksgrenze','wkb_geometry',:alkis_epsg,'LINESTRING',2); + +CREATE INDEX po_besondereflurstuecksgrenze_geom_idx ON po_besondereflurstuecksgrenze USING gist (wkb_geometry); +CREATE INDEX po_besondereflurstuecksgrenze_adfg ON po_besondereflurstuecksgrenze USING gin (artderflurstuecksgrenze); + +SELECT alkis_dropobject('alkis_besondereflurstuecksgrenze'); +CREATE OR REPLACE FUNCTION pg_temp.alkis_besondereflurstuecksgrenze(verdraengen BOOLEAN) RETURNS varchar AS $$ +DECLARE + r0 RECORD; + r1 RECORD; + r2 RECORD; + r VARCHAR; + m VARCHAR[]; + p0 GEOMETRY; + p1 GEOMETRY; + l GEOMETRY; + n INTEGER; + np INTEGER; + i INTEGER; + j INTEGER; + doneadfs INTEGER[]; + adf RECORD; + c REFCURSOR; + joined BOOLEAN; +BEGIN + DELETE FROM po_lines WHERE layer='ax_besondereflurstuecksgrenze' AND signaturnummer = ANY ((SELECT DISTINCT sn FROM alkis_politischegrenzen)); + + FOR adf IN SELECT sn,adfs FROM alkis_politischegrenzen g ORDER BY g.i + LOOP + IF verdraengen THEN + INSERT INTO po_joinlines(ogc_fid,gml_id,line,visited,modell) + SELECT ogc_fid,gml_id,wkb_geometry AS line,false AS visited,modell + FROM po_besondereflurstuecksgrenze + WHERE adf.adfs && artderflurstuecksgrenze + AND NOT doneadfs && artderflurstuecksgrenze; + ELSE + INSERT INTO po_joinlines(ogc_fid,gml_id,line,visited,modell) + SELECT ogc_fid,gml_id,wkb_geometry AS line,false AS visited,modell + FROM po_besondereflurstuecksgrenze + WHERE adf.adfs && artderflurstuecksgrenze; + END IF; + + GET DIAGNOSTICS n = ROW_COUNT; + + ANALYZE po_joinlines; + + RAISE NOTICE 'adfs:% sn:% n:%', adf.adfs, adf.sn, n; + + doneadfs := array_cat(doneadfs, adf.adfs); + + WHILE n>0 + LOOP + SELECT ogc_fid,gml_id,line,modell INTO r0 FROM po_joinlines WHERE NOT visited LIMIT 1; +-- RAISE NOTICE 'START %: von:% nach:%)', +-- r0.ogc_fid, +-- st_astext(st_startpoint(r0.line)), +-- st_astext(st_endpoint(r0.line)); + UPDATE po_joinlines SET visited=true WHERE po_joinlines.ogc_fid=r0.ogc_fid; + n := n - 1; + + l := r0.line; + m := r0.modell; + + joined := true; + <> WHILE n>0 AND joined + LOOP + joined := false; + + FOR i in 0..1 + LOOP + np := st_numpoints(l); + p0 := st_startpoint(l); + p1 := st_endpoint(l); + + IF st_equals(p0,p1) THEN + EXIT joined; + END IF; + + IF i=0 THEN + OPEN c FOR SELECT ogc_fid, line AS line FROM po_joinlines WHERE p0 && line AND p0=st_endpoint(line) AND st_equals(p0,st_endpoint(line)) AND NOT visited + UNION SELECT ogc_fid,st_reverse(line) AS line FROM po_joinlines WHERE p0 && line AND p0=st_startpoint(line) AND st_equals(p0,st_startpoint(line)) AND NOT visited + LIMIT 2; + ELSE + OPEN c FOR SELECT ogc_fid, line AS line FROM po_joinlines WHERE p1 && line AND p1=st_startpoint(line) AND st_equals(p1,st_startpoint(line)) AND NOT visited + UNION SELECT ogc_fid,st_reverse(line) AS line FROM po_joinlines WHERE p1 && line AND p1=st_endpoint(line) AND st_equals(p1,st_endpoint(line)) AND NOT visited + LIMIT 2; + END IF; + + FETCH c INTO r1; + IF FOUND THEN + FETCH c INTO r2; + IF NOT FOUND THEN + l := st_setsrid(st_linemerge(st_collect(l,r1.line)),st_srid(l)); + + IF geometrytype(l)='MULTILINESTRING' THEN + RAISE EXCEPTION 'MULTILINESTRING after merge: %', st_astext(l); + ELSIF st_numpoints(l)=np THEN + RAISE EXCEPTION 'merge failed: % with %', + st_astext(l), + st_astext(r1.line); + END IF; + + UPDATE po_joinlines SET visited=true WHERE po_joinlines.ogc_fid=r1.ogc_fid; + n := n - 1; + joined := true; + END IF; + END IF; + + CLOSE c; + END LOOP; + END LOOP; + + -- RAISE NOTICE 'insert line (n:%)', n; + + INSERT + INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) + VALUES (r0.gml_id,'Politische Grenzen','ax_besondereflurstuecksgrenze',st_multi(l),adf.sn,m); + END LOOP; + + SELECT COUNT(*) INTO n FROM po_joinlines WHERE NOT visited; + IF n>0 THEN + RAISE NOTICE 'adf:% sn:%: % verbliebene Linien', adf.adfs, adf.sn, n; + END IF; + DELETE FROM po_joinlines; + END LOOP; + + RETURN 'Politische Grenze verschmolzen'; +END; +$$ LANGUAGE plpgsql; + +SELECT 'Besondere Flurstücksgrenzen werden verarbeitet.'; + +-- Strittige Grenze +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + o.gml_id AS gml_id, + 'Flurstücke' AS thema, + 'ax_besondereflurstuecksgrenze' AS layer, + st_multi(o.wkb_geometry) AS line, + CASE + WHEN a.abweichenderrechtszustand='true' AND b.abweichenderrechtszustand='true' THEN 2007 + ELSE 2006 END AS signaturnummer, + coalesce( + o.advstandardmodell||o.sonstigesmodell, + a.advstandardmodell||a.sonstigesmodell||b.advstandardmodell||b.sonstigesmodell + ) AS modell +FROM ax_besondereflurstuecksgrenze o +JOIN ax_flurstueck a ON o.wkb_geometry && a.wkb_geometry AND st_intersects(o.wkb_geometry,a.wkb_geometry) AND a.endet IS NULL +JOIN ax_flurstueck b ON o.wkb_geometry && b.wkb_geometry AND st_intersects(o.wkb_geometry,b.wkb_geometry) AND b.endet IS NULL +WHERE ARRAY[1000] <@ artderflurstuecksgrenze AND a.ogc_fid9500 AND p.endet IS NULL; + +/* +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + p.gml_id, + 'Flurstücke' AS thema, + 'ax_grenzpunkt' AS layer, + st_multi(st_force2d(o.wkb_geometry)) AS point, + 0 AS drehwinkel, + CASE abmarkung_marke + WHEN 9600 THEN 3022 + WHEN 9998 THEN 3024 + ELSE 3020 + END AS signaturnummer, + o.advstandardmodell||o.sonstigesmodell|| + p.advstandardmodell||p.sonstigesmodell AS modell +FROM ax_grenzpunkt p +JOIN ax_punktortau o ON ARRAY[p.gml_id] <@ o.istteilvon AND o.endet IS NULL +WHERE abmarkung_marke<>9500 AND p.endet IS NULL; +*/ + +UPDATE po_points + SET signaturnummer=CASE signaturnummer + WHEN '3022' THEN '3023' + WHEN '3024' THEN '3025' + ELSE '3021' + END + FROM ax_flurstueck f + WHERE layer='ax_grenzpunkt' + AND f.endet IS NULL + AND f.abweichenderrechtszustand='true' + AND po_points.point && f.wkb_geometry + AND st_intersects(po_points.point,f.wkb_geometry); + +-- Grenzpunktnummern +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + p.gml_id, + 'Flurstücke' AS thema, + 'ax_grenzpunkt' AS layer, + coalesce(t.wkb_geometry,st_translate(o.wkb_geometry,1.06,1.06)) AS point, + besonderePunktnummer AS text, + coalesce( + d.signaturnummer, + t.signaturnummer, + CASE + WHEN NOT EXISTS (SELECT * FROM po_points f WHERE f.point=o.wkb_geometry AND layer='ax_grenzpunkt' AND signaturnummer IN ('3021','3023','3025')) + THEN '4071' + ELSE '4072' + END + ) AS signaturnummer, + t.drehwinkel, + coalesce(t.horizontaleausrichtung,'linksbündig'::text), + coalesce(t.vertikaleausrichtung, 'Basis'::text), + t.skalierung, t.fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,p.advstandardmodell||p.sonstigesmodell||o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_grenzpunkt p +JOIN po_punktortta_istteilvon itv ON p.gml_id=itv.istteilvon +JOIN ax_punktortta o ON itv.gml_id=o.gml_id AND o.endet IS NULL +LEFT OUTER JOIN ap_pto t ON ARRAY[p.gml_id] <@ t.dientzurdarstellungvon AND t.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[p.gml_id] <@ d.dientzurdarstellungvon AND d.endet IS NULL +WHERE coalesce(besonderePunktnummer,'')<>'' AND p.endet IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/12001.sql b/postprocessing.d/1_ableitungsregeln/12001.sql new file mode 100644 index 0000000..6f07fdc --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/12001.sql @@ -0,0 +1,226 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Lagebezeichnung ohne Hausnummer (12001) +-- + +SELECT 'Lagebezeichnungen ohne Hausnummer werden verarbeitet.'; + +-- Flurnummer +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Lagebezeichnungen' AS thema, + 'ax_gemarkungsteilflur' AS layer, + t.wkb_geometry AS point, + coalesce(schriftinhalt,CASE WHEN bezeichnung LIKE 'Flur %' THEN bezeichnung ELSE 'Flur '||bezeichnung END) AS text, + coalesce(t.signaturnummer,'4200') AS signaturnummer, + t.drehwinkel, t.horizontaleausrichtung, t.vertikaleausrichtung, t.skalierung, t.fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_gemarkungsteilflur o +JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BEZ' AND t.endet IS NULL +WHERE coalesce(t.schriftinhalt,'')<>'Flur 0' AND o.endet IS NULL; + +-- Gemarkungsnamen (RP) +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Lagebezeichnungen' AS thema, + 'ax_gemarkung' AS layer, + t.wkb_geometry AS point, + coalesce(t.schriftinhalt,o.bezeichnung) AS text, + coalesce(t.signaturnummer,'4200') AS signaturnummer, + t.drehwinkel, t.horizontaleausrichtung, t.vertikaleausrichtung, t.skalierung, t.fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_gemarkung o +JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BEZ' AND t.endet IS NULL AND schriftinhalt IS NOT NULL +WHERE o.endet IS NULL AND o.gml_id LIKE 'DERP%'; + +-- Gemarkungsnamen (RP) +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Lagebezeichnungen' AS thema, + 'ax_gemeinde' AS layer, + t.wkb_geometry AS point, + coalesce(t.schriftinhalt,o.bezeichnung) AS text, + coalesce(t.signaturnummer,'4200') AS signaturnummer, + t.drehwinkel, t.horizontaleausrichtung, t.vertikaleausrichtung, t.skalierung, t.fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_gemeinde o +JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BEZ' AND t.endet IS NULL AND schriftinhalt IS NOT NULL +WHERE o.endet IS NULL AND o.gml_id LIKE 'DERP%'; + +-- Lagebezeichnung Ortsteil +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Lagebezeichnungen' AS thema, + 'ax_lagebezeichnungohnehausnummer' AS layer, + t.wkb_geometry AS point, + schriftinhalt AS text, + coalesce(t.signaturnummer,'4160') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_lagebezeichnungohnehausnummer o +JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='Ort' AND t.endet IS NULL +WHERE coalesce(schriftinhalt,'')<>'' AND o.endet IS NULL; + +-- Lagebezeichnungen +-- ohne Hausnummer bei Punkt +-- Gewanne +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Lagebezeichnungen' AS thema, + 'ax_lagebezeichnungohnehausnummer' AS layer, + t.wkb_geometry AS point, + coalesce( + schriftinhalt, + unverschluesselt, + (SELECT bezeichnung FROM ax_lagebezeichnungkatalogeintrag WHERE schluesselgesamt=to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage ORDER BY beginnt DESC LIMIT 1), + '(Lagebezeichnung zu '''||to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage||''' fehlt)' + ) AS text, + coalesce(t.signaturnummer,'4206') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_lagebezeichnungohnehausnummer o +JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='Gewanne' AND t.endet IS NULL +WHERE o.endet IS NULL; + +-- Straße/Weg +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Lagebezeichnungen' AS thema, + 'ax_lagebezeichnungohnehausnummer' AS layer, + t.wkb_geometry AS point, + coalesce( + schriftinhalt, + unverschluesselt, + (SELECT bezeichnung FROM ax_lagebezeichnungkatalogeintrag WHERE schluesselgesamt=to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage ORDER BY beginnt DESC LIMIT 1), + '(Lagebezeichnung zu '''||to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage||''' fehlt)' + ) AS text, + coalesce(t.signaturnummer,'4107') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_lagebezeichnungohnehausnummer o +JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art IN ('Strasse','Weg') AND t.endet IS NULL +WHERE o.endet IS NULL; + +-- Platz/Bahnverkehr +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Lagebezeichnungen' AS thema, + 'ax_lagebezeichnungohnehausnummer' AS layer, + t.wkb_geometry AS point, + coalesce( + schriftinhalt, + unverschluesselt, + (SELECT bezeichnung FROM ax_lagebezeichnungkatalogeintrag WHERE schluesselgesamt=to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage ORDER BY beginnt DESC LIMIT 1), + '(Lagebezeichnung zu '''||to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage||''' fehlt)' + ) AS text, + coalesce(t.signaturnummer,'4141') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_lagebezeichnungohnehausnummer o +JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art IN ('Platz','Bahnverkehr') AND t.endet IS NULL +WHERE o.endet IS NULL; + +-- Fließgewässer/Stehendes Gewässer +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Gewässer' AS thema, + 'ax_lagebezeichnungohnehausnummer' AS layer, + t.wkb_geometry AS point, + coalesce( + schriftinhalt, + unverschluesselt, + (SELECT bezeichnung FROM ax_lagebezeichnungkatalogeintrag WHERE schluesselgesamt=to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage ORDER BY beginnt DESC LIMIT 1), + '(Lagebezeichnung zu '''||to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage||''' fehlt)' + ) AS text, + coalesce(signaturnummer,'4117') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_lagebezeichnungohnehausnummer o +JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art IN ('Fliessgewaesser','StehendesGewaesser') AND t.endet IS NULL +WHERE o.endet IS NULL; + +-- ohne Hausnummer auf Linie +-- Straße/Weg, Text auf Linie +INSERT INTO po_labels(gml_id,thema,layer,line,text,signaturnummer,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Lagebezeichnungen' AS thema, + 'ax_lagebezeichnungohnehausnummer' AS layer, + t.wkb_geometry AS line, + coalesce( + schriftinhalt, + unverschluesselt, + (SELECT bezeichnung FROM ax_lagebezeichnungkatalogeintrag WHERE schluesselgesamt=to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage ORDER BY beginnt DESC LIMIT 1), + '(Lagebezeichnung zu '''||to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage||''' fehlt)' + ) AS text, + 4107 AS signaturnummer, + horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_lagebezeichnungohnehausnummer o +JOIN ap_lto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art IN ('Strasse','Weg') AND t.endet IS NULL AND coalesce(t.signaturnummer,'')<>'6000' +WHERE o.endet IS NULL; + +-- Platz/Bahnverkehr, Text auf Linien +INSERT INTO po_labels(gml_id,thema,layer,line,text,signaturnummer,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Lagebezeichnungen' AS thema, + 'ax_lagebezeichnungohnehausnummer' AS layer, + t.wkb_geometry AS line, + coalesce( + schriftinhalt, + unverschluesselt, + (SELECT bezeichnung FROM ax_lagebezeichnungkatalogeintrag WHERE schluesselgesamt=to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage ORDER BY beginnt DESC LIMIT 1), + '(Lagebezeichnung zu '''||to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage||''' fehlt)' + ) AS text, + 4141 AS signaturnummer, + horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_lagebezeichnungohnehausnummer o +JOIN ap_lto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art IN ('Platz','Bahnverkehr') AND t.endet IS NULL AND coalesce(t.signaturnummer,'')<>'6000' +WHERE o.endet IS NULL; + +-- Fließgewässer/Stehendes Gewässer, Text auf Linien +INSERT INTO po_labels(gml_id,thema,layer,line,text,signaturnummer,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Gewässer' AS thema, + 'ax_lagebezeichnungohnehausnummer' AS layer, + t.wkb_geometry AS line, + coalesce( + schriftinhalt, + unverschluesselt, + (SELECT bezeichnung FROM ax_lagebezeichnungkatalogeintrag WHERE schluesselgesamt=to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage ORDER BY beginnt DESC LIMIT 1), + '(Lagebezeichnung zu '''||to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage||''' fehlt)' + ) AS text, + coalesce(t.signaturnummer,'4117') AS signaturnummer, + horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_lagebezeichnungohnehausnummer o +JOIN ap_lto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art IN ('Fliessgewaesser','StehendesGewaesser') AND t.endet IS NULL +WHERE o.endet IS NULL; + +-- Sonstige Beschriftungen ohne art (kommen z.B. in DEHE vor) +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Lagebezeichnungen' AS thema, + 'ax_lagebezeichnungohnehausnummer' AS layer, + t.wkb_geometry AS point, + schriftinhalt AS text, + t.signaturnummer AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_lagebezeichnungohnehausnummer o +JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.endet IS NULL AND t.art IS NULL AND schriftinhalt IS NOT NULL AND t.signaturnummer IS NOT NULL +WHERE o.endet IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/12002.sql b/postprocessing.d/1_ableitungsregeln/12002.sql new file mode 100644 index 0000000..267467a --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/12002.sql @@ -0,0 +1,113 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Lagebezeichnung mit Hausnummer (12002) +-- + +SELECT 'Lagebezeichnungen mit Hausnummer werden verarbeitet.'; + +-- mit Hausnummer, Ortsteil +SELECT ' Ortsteil verarbeitet.'; +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Gebäude' AS thema, + 'ax_lagebezeichnungmithausnummer' AS layer, + t.wkb_geometry AS point, + schriftinhalt AS text, + coalesce(t.signaturnummer,'4160') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_lagebezeichnungmithausnummer o +JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.endet IS NULL AND t.art='Ort' +WHERE coalesce(schriftinhalt,'')<>'' AND o.endet IS NULL; + +-- mit Hausnummer (bezieht sich auf Gebäude, Turm oder Flurstück) +SELECT ' Gebäudehausnummern.'; + +CREATE TEMPORARY TABLE po_zeigtauf_hausnummer( + zeigtauf character(16) PRIMARY KEY, + wkb_geometry GEOMETRY, + prefix varchar +); + +INSERT INTO po_zeigtauf_hausnummer + SELECT + zeigtauf, wkb_geometry, prefix + FROM ( + SELECT DISTINCT + unnest(zeigtauf) AS zeigtauf, wkb_geometry, '' AS prefix + FROM ax_turm z + JOIN ax_lagebezeichnungmithausnummer lmh ON ARRAY[lmh.gml_id] <@ z.zeigtAuf AND lmh.endet IS NULL + WHERE z.endet IS NULL + ) AS z; + +ANALYZE po_zeigtauf_hausnummer; + +INSERT INTO po_zeigtauf_hausnummer + SELECT + zeigtauf, wkb_geometry, prefix + FROM ( + SELECT DISTINCT + unnest(zeigtauf) AS zeigtauf, wkb_geometry, '' AS prefix + FROM ax_gebaeude z + JOIN ax_lagebezeichnungmithausnummer lmh ON ARRAY[lmh.gml_id] <@ z.zeigtAuf AND lmh.endet IS NULL + WHERE z.endet IS NULL + ) AS z + WHERE NOT EXISTS (SELECT h.zeigtauf FROM po_zeigtauf_hausnummer h WHERE h.zeigtauf=z.zeigtauf); + +ANALYZE po_zeigtauf_hausnummer; + +INSERT INTO po_zeigtauf_hausnummer + SELECT + zeigtauf, wkb_geometry, prefix + FROM ( + SELECT + unnest(zeigtauf) AS zeigtauf, wkb_geometry, 'HsNr. ' AS prefix + FROM ax_flurstueck z + JOIN ax_lagebezeichnungmithausnummer lmh ON ARRAY[lmh.gml_id] <@ z.zeigtAuf AND lmh.endet IS NULL + WHERE z.endet IS NULL + ) AS z + WHERE NOT EXISTS (SELECT h.zeigtauf FROM po_zeigtauf_hausnummer h WHERE h.zeigtauf=z.zeigtauf); + +ANALYZE po_zeigtauf_hausnummer; + +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Gebäude' AS thema, + 'ax_lagebezeichnungmithausnummer' AS layer, + (po).p AS point, + text, signaturnummer, + (po).a AS drehwinkel, + horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell +FROM ( + SELECT + o.gml_id, + alkis_pnr3002(o.gml_id, tx.wkb_geometry, drehwinkel, o.land, o.regierungsbezirk, o.kreis, o.gemeinde, o.lage, gt.wkb_geometry) AS po, + coalesce(tx.schriftinhalt,gt.prefix||o.hausnummer) AS text, + coalesce(d.signaturnummer,tx.signaturnummer,'4070') AS signaturnummer, + horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(tx.advstandardmodell||tx.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_lagebezeichnungmithausnummer o + JOIN po_zeigtauf_hausnummer gt ON o.gml_id=gt.zeigtauf + LEFT OUTER JOIN ap_pto tx ON ARRAY[o.gml_id] <@ tx.dientzurdarstellungvon AND tx.endet IS NULL AND tx.art='HNR' + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.endet IS NULL AND d.art='HNR' + WHERE o.endet IS NULL +) AS foo; + +-- Sonstige Hausnummern ohne art (kommen z.B. in DEHE vor) +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Gebäude' AS thema, + 'ax_lagebezeichnungmithausnummer' AS layer, + tx.wkb_geometry AS point, + coalesce(tx.schriftinhalt,o.hausnummer) AS text, + coalesce(tx.signaturnummer,'4070') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(tx.advstandardmodell||tx.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_lagebezeichnungmithausnummer o +JOIN ap_pto tx ON ARRAY[o.gml_id] <@ tx.dientzurdarstellungvon AND tx.endet IS NULL AND tx.art IS NULL +WHERE o.endet IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/12003.sql b/postprocessing.d/1_ableitungsregeln/12003.sql new file mode 100644 index 0000000..b91fdde --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/12003.sql @@ -0,0 +1,50 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Lagebezeichnung mit Pseudonummer (12003) +-- + +SELECT 'Lagebezeichnungen mit Pseudonummer werden verarbeitet.'; + +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + thema, + 'ax_lagebezeichnungmitpseudonummer' AS layer, + (po).p AS point, + text, + signaturnummer, + (po).a AS drehwinkel, + horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell +FROM ( + SELECT + o.gml_id, + CASE WHEN laufendenummer IS NULL THEN 'Lagebezeichnungen' ELSE 'Gebäude' END AS thema, + alkis_pnr3002(o.gml_id, t.wkb_geometry, drehwinkel, o.land, o.regierungsbezirk, o.kreis, o.gemeinde, o.lage, g.wkb_geometry) AS po, + coalesce('('||laufendenummer||')','P'||pseudonummer) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, + horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_lagebezeichnungmitpseudonummer o + JOIN ax_gebaeude g ON g.gehoertzu=o.gml_id AND g.endet IS NULL + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.endet IS NULL AND t.art='PNR' + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.endet IS NULL AND d.art='PNR' + WHERE o.endet IS NULL +) AS foo; + +-- Lagebezeichnung mit Pseudonummer, Ortsteil +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Lagebezeichnungen' AS thema, + 'ax_lagebezeichnungmitpseudonummer' AS layer, + t.wkb_geometry AS point, + schriftinhalt AS text, + coalesce(t.signaturnummer,'4160') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_lagebezeichnungmitpseudonummer o +JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.endet IS NULL AND t.art='Ort' AND schriftinhalt IS NOT NULL +WHERE o.endet IS NULL; + diff --git a/postprocessing.d/1_ableitungsregeln/31001.sql b/postprocessing.d/1_ableitungsregeln/31001.sql new file mode 100644 index 0000000..9190b6e --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/31001.sql @@ -0,0 +1,395 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Gebäude (31001) +-- + +SELECT 'Gebäude werden verarbeitet.'; + +-- Gebäudeflächen (Signaturnummer = 2XXX oder 2XXX1XXX) +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Gebäude' AS thema, + 'ax_gebaeude' AS layer, + polygon, + signaturnummer, + modell +FROM ( + SELECT + gml_id, + st_multi(wkb_geometry) AS polygon, + CASE + WHEN gfk='1XXX' THEN + CASE + WHEN NOT hoh AND NOT verfallen AND ofl=0 THEN 25051301 + WHEN hoh AND NOT verfallen AND ofl=0 THEN 26231301 + WHEN hoh AND verfallen AND ofl IN (0,1400) THEN 2030 + WHEN hoh AND NOT verfallen AND ofl=1400 THEN 20301301 + WHEN NOT hoh AND verfallen AND ofl IN (0,1400) THEN 2031 + WHEN NOT hoh AND NOT verfallen AND ofl=1400 THEN 20311301 + WHEN NOT hoh AND ofl=1200 THEN 2032 + END + WHEN gfk='2XXX' THEN + CASE + WHEN NOT hoh AND NOT verfallen AND ofl=0 THEN + CASE + WHEN baw=0 THEN 25051304 + WHEN baw<>4000 THEN 25051304 + WHEN baw=4000 THEN 20311304 + END + WHEN hoh AND NOT verfallen AND ofl=0 THEN 26231304 + WHEN hoh AND verfallen AND ofl IN (0,1400) THEN 2030 + WHEN hoh AND NOT verfallen AND ofl=1400 THEN 20301304 + WHEN hoh AND verfallen AND ofl IN (0,1400) THEN 2031 + WHEN NOT hoh AND NOT verfallen AND ofl=1400 THEN 20311304 + WHEN NOT hoh AND ofl=1200 THEN 2032 + END + WHEN gfk='3XXX' THEN + CASE + WHEN NOT hoh AND NOT verfallen AND ofl=0 THEN + CASE + WHEN baw=0 THEN 25051309 + WHEN baw<>4000 THEN 25051309 + WHEN baw=4000 THEN 20311309 + END + WHEN hoh AND NOT verfallen AND ofl=0 THEN 26231309 + WHEN hoh AND verfallen AND ofl IN (0,1400) THEN 2030 + WHEN hoh AND NOT verfallen AND ofl=1400 THEN 20301309 + WHEN NOT hoh AND verfallen AND ofl IN (0,1400) THEN 2031 + WHEN NOT hoh AND NOT verfallen AND ofl=1400 THEN 20311309 + WHEN NOT hoh AND ofl=1200 THEN 2032 + END + WHEN gfk='9998' THEN + CASE + WHEN NOT hoh AND NOT verfallen AND ofl=0 THEN 25051304 + WHEN hoh AND NOT verfallen AND ofl=0 THEN 26231304 + WHEN hoh AND verfallen AND ofl IN (0,1400) THEN 2030 + WHEN hoh AND NOT verfallen AND ofl=1400 THEN 20301304 + WHEN NOT hoh AND verfallen AND ofl IN (0,1400) THEN 2031 + WHEN NOT hoh AND NOT verfallen AND ofl=1400 THEN 20311304 + WHEN NOT hoh AND ofl=1200 THEN 2032 + END + END AS signaturnummer, + modell + FROM ( + SELECT + o.gml_id, + CASE + WHEN gebaeudefunktion BETWEEN 1000 AND 1999 THEN '1XXX' + WHEN gebaeudefunktion BETWEEN 2000 AND 2999 THEN '2XXX' + WHEN gebaeudefunktion BETWEEN 3000 AND 3999 THEN '3XXX' + ELSE gebaeudefunktion::text + END AS gfk, + coalesce(hochhaus,'false')='true' AS hoh, + coalesce(zustand,0) IN (2200,2300,3000,4000) AS verfallen, + coalesce(lagezurerdoberflaeche,0) AS ofl, + coalesce(bauweise,0) AS baw, + wkb_geometry, + o.advstandardmodell||o.sonstigesmodell AS modell + FROM ax_gebaeude o + WHERE o.endet IS NULL AND geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') + ) AS o +) AS o +WHERE NOT signaturnummer IS NULL; + +-- Punktsymbole für Gebäude +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Gebäude' AS thema, + 'ax_gebaeude_funktion' AS layer, + st_multi(coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry))) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce(d.signaturnummer,p.signaturnummer,o.signaturnummer) AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell,o.modell) AS modell +FROM ( + SELECT + gml_id, + wkb_geometry, + CASE gebaeudefunktion + WHEN 2030 THEN '3300' + WHEN 2056 THEN '3338' + WHEN 2071 THEN '3302' + WHEN 2072 THEN '3303' + WHEN 2081 THEN '3305' + WHEN 2092 THEN '3306' + WHEN 2094 THEN '3308' + WHEN 2461 THEN '3309' WHEN 2462 THEN '3309' + WHEN 2465 THEN '3336' + WHEN 2523 THEN CASE WHEN gml_id LIKE 'DERP%' THEN 'RP3521' ELSE '3521' END + WHEN 2612 THEN '3311' + WHEN 3013 THEN '3312' + WHEN 3032 THEN '3314' + WHEN 3037 THEN '3315' + WHEN 3041 THEN '3316' -- TODO: PNR 1113? + WHEN 3042 THEN '3317' + WHEN 3043 THEN '3318' -- TODO: PNR 1113? + WHEN 3046 THEN '3319' + WHEN 3047 THEN '3320' + WHEN 3051 THEN '3321' WHEN 3052 THEN '3321' + WHEN 3065 THEN '3323' + WHEN 3071 THEN '3324' + WHEN 3072 THEN '3326' + WHEN 3094 THEN '3328' + WHEN 3095 THEN '3330' + WHEN 3097 THEN '3332' + WHEN 3221 THEN '3334' + WHEN 3290 THEN '3340' + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_gebaeude + WHERE endet IS NULL +) AS o +LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='GFK' AND p.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='GFK' AND d.endet IS NULL +WHERE NOT o.signaturnummer IS NULL; + +-- Gebäudebeschriftungen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Gebäude' AS thema, + 'ax_gebaeude_funktion' AS layer, + point, + text, + signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell +FROM ( + SELECT + o.gml_id, + coalesce(n.wkb_geometry,t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce( + n.schriftinhalt, + t.schriftinhalt, + o.name, + CASE + WHEN gebaeudefunktion=3012 THEN 'Rathaus' -- TODO: 31001 GFK [3012]? + WHEN gebaeudefunktion=3014 THEN 'Zoll' + WHEN gebaeudefunktion=3015 AND name IS NULL AND n.schriftinhalt IS NULL THEN 'Gericht' -- TODO: 31001 GFK [3015]? + WHEN gebaeudefunktion=3021 AND name IS NULL AND n.schriftinhalt IS NULL THEN 'Schule' + WHEN gebaeudefunktion=3034 AND name IS NULL AND n.schriftinhalt IS NULL THEN 'Museum' -- TODO: 31001 GFK [3034]? + WHEN gebaeudefunktion=3091 AND name IS NULL AND n.schriftinhalt IS NULL THEN 'Bahnhof' + WHEN gebaeudefunktion=9998 THEN 'oF' + WHEN o.gml_id LIKE 'DERP%' THEN + CASE + WHEN gebaeudefunktion=2513 THEN 'Wbh' + WHEN gebaeudefunktion IN (3011,3016,3017,3019,3024,3031,3033,3035,3036,3061,3062,3073,3074,3075,3080,3081,3092,3242) THEN + (SELECT beschreibung FROM ax_gebaeudefunktion WHERE wert=gebaeudefunktion) + WHEN gebaeudefunktion=3022 THEN 'Schule' + WHEN gebaeudefunktion=3023 THEN 'Hochschule' + WHEN gebaeudefunktion=3038 THEN 'Burg' + WHEN gebaeudefunktion=3211 THEN 'Sporthalle' + END + END + ) AS text, + coalesce(d.signaturnummer,CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.signaturnummer ELSE n.signaturnummer END,'4070') AS signaturnummer, + CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.drehwinkel ELSE n.drehwinkel END AS drehwinkel, + CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.horizontaleausrichtung ELSE n.horizontaleausrichtung END AS horizontaleausrichtung, + CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.vertikaleausrichtung ELSE n.vertikaleausrichtung END AS vertikaleausrichtung, + CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.skalierung ELSE n.skalierung END AS skalierung, + CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.fontsperrung ELSE n.fontsperrung END AS fontsperrung, + coalesce( + t.advstandardmodell||t.sonstigesmodell||n.advstandardmodell||n.sonstigesmodell, + o.modell + ) AS modell + FROM ( + SELECT gml_id, wkb_geometry, gebaeudefunktion, unnest(coalesce(name,ARRAY[NULL])) AS name,advstandardmodell||sonstigesmodell AS modell + FROM ax_gebaeude + WHERE endet IS NULL + ) AS o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='GFK' AND t.endet IS NULL + LEFT OUTER JOIN ap_pto n ON ARRAY[o.gml_id] <@ n.dientzurdarstellungvon AND n.art='NAM' AND n.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art IN ('GFK','NAM') AND d.endet IS NULL +) AS o WHERE NOT text IS NULL; + +-- Weitere Gebäudefunktion +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Gebäude' AS thema, + 'ax_gebaeude_funktion' AS layer, + st_multi(coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry))) AS point, + p.drehwinkel, + coalesce(d.signaturnummer,p.signaturnummer,o.signaturnummer) AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.modell) AS modell +FROM ( + SELECT + o.gml_id, + wkb_geometry, + CASE gebaeudefunktion + WHEN 1000 THEN '3300' + WHEN 1010 THEN '3302' + WHEN 1020 THEN '3303' + WHEN 1030 THEN '3305' + WHEN 1040 THEN '3306' + WHEN 1050 THEN '3308' + WHEN 1060 THEN '3336' + WHEN 1070 THEN '3309' + WHEN 1080 THEN '3311' + WHEN 1090 THEN '3112' + WHEN 1110 THEN '3314' + WHEN 1130 THEN '3315' + WHEN 1140 THEN '3318' -- TODO: Kapelle PNR 1113? + WHEN 1150 THEN '3319' + WHEN 1160 THEN '3320' + WHEN 1170 THEN '3338' + WHEN 1180 THEN '3324' + WHEN 1190 THEN '3321' + WHEN 1200 THEN '3340' + WHEN 1210 THEN '3323' + WHEN 1220 THEN '3324' + END AS signaturnummer, + modell + FROM ( + SELECT + gml_id, + wkb_geometry, + unnest(weiteregebaeudefunktion) AS gebaeudefunktion, + advstandardmodell||sonstigesmodell AS modell + FROM ax_gebaeude + WHERE NOT weiteregebaeudefunktion IS NULL AND endet IS NULL + ) AS o +) AS o +LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='GFK' AND p.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='GFK' AND d.endet IS NULL +WHERE NOT o.signaturnummer IS NULL; + +-- Weitere Gebäudefunktionsbeschriftungen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Gebäude' AS thema, + 'ax_gebaeude_funktion' AS layer, + point, + text, + signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + CASE + WHEN gebaeudefunktion=1100 AND coalesce(name,n.schriftinhalt) IS NULL THEN 'Zoll' + WHEN gebaeudefunktion=1129 AND coalesce(name,n.schriftinhalt) IS NULL THEN 'Museum' -- TODO: 31001 GFK [3034]? + END AS text, + CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.drehwinkel ELSE n.drehwinkel END AS drehwinkel, + coalesce(d.signaturnummer,CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.signaturnummer ELSE n.signaturnummer END,'4070') AS signaturnummer, + CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.horizontaleausrichtung ELSE n.horizontaleausrichtung END AS horizontaleausrichtung, + CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.vertikaleausrichtung ELSE n.vertikaleausrichtung END AS vertikaleausrichtung, + CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.skalierung ELSE n.skalierung END AS skalierung, + CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.fontsperrung ELSE n.fontsperrung END AS fontsperrung, + coalesce( + t.advstandardmodell||t.sonstigesmodell||n.advstandardmodell||n.sonstigesmodell, + o.modell + ) AS modell + FROM ( + SELECT + gml_id, + wkb_geometry, + unnest(coalesce(name,ARRAY[NULL])) AS name, + unnest(weiteregebaeudefunktion) AS gebaeudefunktion, + advstandardmodell||sonstigesmodell AS modell + FROM ax_gebaeude o + WHERE endet IS NULL + ) AS o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='GFK' AND t.endet IS NULL + LEFT OUTER JOIN ap_pto n ON ARRAY[o.gml_id] <@ n.dientzurdarstellungvon AND n.art='NAM' AND n.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art IN ('NAM','GFK') AND d.endet IS NULL + WHERE NOT gebaeudefunktion IS NULL +) AS o +WHERE NOT text IS NULL; + +/* +-- TODO: Gebäudenamen für weitere Funktionen (Mehrere Namen? Und Funktionen? Gleich viele oder wie ist das zu kombinieren?) +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Gebäude' AS thema, + 'ax_gebaeude' AS layer, + unnest(coalesce(name,ARRAY[NULL])), + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.zaehler||'/'||o.nenner,o.zaehler::text) AS text, + coalesce(t.signaturnummer,CASE WHEN o.abweichenderrechtszustand='true' THEN 4112 ELSE 4111 END) AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_gebaeude o +LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ZAE_NEN' AND (t.signaturnummer IS NULL OR t.signaturnummer IN ('4122','4123')) AND t.endet IS NULL +WHERE NOT name IS NULL AND o.endet IS NULL; +*/ + +-- Geschosszahl +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Gebäude' AS thema, + 'ax_gebaeude_geschosse' AS layer, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce( + trim(to_char(o.anzahlderoberirdischengeschosse,'RN'))||' / -'||trim(to_char(o.anzahlderunterirdischengeschosse,'RN')), + trim(to_char(o.anzahlderoberirdischengeschosse,'RN')), + '-'||trim(to_char(o.anzahlderunterirdischengeschosse,'RN')) + ) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_gebaeude o +LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='AOG_AUG' AND t.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='AOG_AUG' AND d.endet IS NULL +WHERE (NOT anzahlderoberirdischengeschosse IS NULL OR NOT anzahlderunterirdischengeschosse IS NULL) AND o.endet IS NULL; + +-- Dachform +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Gebäude' AS thema, + 'ax_gebaeude_dachform' AS layer, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + CASE dachform + WHEN 1000 THEN 'F' + WHEN 2100 THEN 'P' + WHEN 2200 THEN 'VP' + WHEN 3100 THEN 'S' + WHEN 3200 THEN 'W' + WHEN 3300 THEN 'KW' + WHEN 3400 THEN 'M' + WHEN 3500 THEN 'Z' + WHEN 3600 THEN 'KE' + WHEN 3700 THEN 'KU' + WHEN 3800 THEN 'SH' + WHEN 3900 THEN 'B' + WHEN 4000 THEN 'T' + WHEN 5000 THEN 'MD' + WHEN 9999 THEN 'SD' + END AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_gebaeude o +LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='DAF' AND t.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='DAF' AND d.endet IS NULL +WHERE NOT dachform IS NULL AND o.endet IS NULL; + +-- Gebäudezustände +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Gebäude' AS thema, + 'ax_gebaeude_zustand' AS layer, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce( + t.schriftinhalt, + CASE zustand + WHEN 2200 THEN '(zerstört)' + WHEN 2300 THEN '(teilweise zerstört)' + WHEN 3000 THEN '(geplant)' + WHEN 4000 THEN '(im Bau)' + END) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(o.advstandardmodell||o.sonstigesmodell,t.advstandardmodell||t.sonstigesmodell) AS modell +FROM ax_gebaeude o +LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ZUS' AND t.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ZUS' AND d.endet IS NULL +WHERE zustand IN (2200,2300,3000,4000) AND o.endet IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/31002.sql b/postprocessing.d/1_ableitungsregeln/31002.sql new file mode 100644 index 0000000..47e1aed --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/31002.sql @@ -0,0 +1,150 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Gebäudeteil (31002) +-- + +SELECT 'Gebäudeteile werden verarbeitet.'; + +-- Gebäudeteile (Bauteil) +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Gebäude' AS thema, + 'ax_bauteil' AS layer, + polygon, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + st_multi(wkb_geometry) AS polygon, + CASE + WHEN bat=1100 AND ofl=0 THEN 2507 + WHEN bat=1100 AND ofl=1400 THEN 2508 + WHEN bat=1200 AND ofl=0 THEN 2507 + WHEN bat=1200 AND ofl=1400 THEN 2508 + WHEN bat=1300 AND ofl=0 THEN 2509 + WHEN bat=1300 AND ofl=1400 THEN 2511 + WHEN bat=1400 AND ofl=0 THEN 2507 + WHEN bat=1400 AND ofl=1400 THEN 2508 + WHEN bat=2000 AND ofl=0 THEN 2507 + WHEN bat=2000 AND ofl=1200 THEN 2512 + WHEN bat=2100 AND ofl=0 THEN 2507 + WHEN bat=2100 AND ofl=1200 THEN 2512 + WHEN bat IN (2300,2350,2400,2500,2510,2520,2610,2620) THEN 2507 + WHEN bat=2710 THEN 2513 + WHEN bat=2720 THEN 2514 + WHEN bat=9999 AND ofl=0 THEN 2507 + WHEN bat=9999 AND ofl=1400 THEN 2508 + END AS signaturnummer, + modell + FROM ( + SELECT + gml_id, + bauart AS bat, + coalesce(lagezurerdoberflaeche,0) AS ofl, + wkb_geometry, + advstandardmodell||sonstigesmodell AS modell + FROM ax_bauteil + WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL + ) AS o +) AS o WHERE NOT signaturnummer IS NULL; + +-- Gebäudeteilsymbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Gebäude' AS thema, + 'ax_bauteil_funktion' AS layer, + st_multi(coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry))) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce(d.signaturnummer,p.signaturnummer,'3336') AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_bauteil o +LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='BAT' AND p.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BAT' AND d.endet IS NULL +WHERE bauart=2100 AND o.endet IS NULL; + +-- Gebäudeteildachform +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Gebäude' AS thema, + 'ax_bauteil_dachform' AS layer, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + CASE dachform + WHEN 1000 THEN 'F' + WHEN 2100 THEN 'P' + WHEN 2200 THEN 'VP' + WHEN 3100 THEN 'S' + WHEN 3200 THEN 'W' + WHEN 3300 THEN 'KW' + WHEN 3400 THEN 'M' + WHEN 3500 THEN 'Z' + WHEN 3600 THEN 'KE' + WHEN 3700 THEN 'KU' + WHEN 3800 THEN 'SH' + WHEN 3900 THEN 'B' + WHEN 4000 THEN 'T' + WHEN 5000 THEN 'MD' + WHEN 9999 THEN 'SD' + END AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_bauteil o +LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='DAF' AND t.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='DAF' AND d.endet IS NULL +WHERE NOT dachform IS NULL AND o.endet IS NULL; + +-- Gebäudeteil, oberirdische Geschosse +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Gebäude' AS thema, + 'ax_bauteil_geschosse' AS layer, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + trim(to_char(o.anzahlderoberirdischengeschosse,'RN')) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_bauteil o +LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='AOG' AND t.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='AOG' AND d.endet IS NULL +WHERE NOT anzahlderoberirdischengeschosse IS NULL AND o.endet IS NULL; + +-- Besondere Gebäudelinien +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + gml_id, + 'Gebäude' AS thema, + 'ax_besonderegebaeudelinie' AS layer, + st_multi(wkb_geometry) AS line, + 2305 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_besonderegebaeudelinie +WHERE ARRAY[1000] <@ beschaffenheit AND endet IS NULL; + +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + gml_id, + 'Gebäude' AS thema, + 'ax_besonderegebaeudelinie' AS layer, + st_multi(wkb_geometry) AS line, + 2302 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_besonderegebaeudelinie +WHERE ARRAY[4000] <@ beschaffenheit AND endet IS NULL; + +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + gml_id, + 'Gebäude' AS thema, + 'ax_firstlinie' AS layer, + st_multi(wkb_geometry) AS line, + 2303 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_firstlinie +WHERE endet IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/41001.sql b/postprocessing.d/1_ableitungsregeln/41001.sql new file mode 100644 index 0000000..e20c95f --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/41001.sql @@ -0,0 +1,48 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Tatsächliche Nutzung +-- + +SELECT 'Tatsächliche Nutzungen werden verarbeitet.'; + +-- +-- Wohnbauflächen +-- + +-- Wohnbauflächen, Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Wohnbauflächen' AS thema, + 'ax_wohnbauflaeche' AS layer, + st_multi(wkb_geometry) AS polygon, + 25151401 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_wohnbauflaeche +WHERE endet IS NULL; + +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Wohnbauflächen' AS thema, + 'ax_wohnbauflaeche' AS layer, + point, + text, + signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_wohnbauflaeche o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS n WHERE NOT text IS NULL; + diff --git a/postprocessing.d/1_ableitungsregeln/41002.sql b/postprocessing.d/1_ableitungsregeln/41002.sql new file mode 100644 index 0000000..5b5dfa5 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/41002.sql @@ -0,0 +1,152 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Industrie- und Gewerbefläche (41002) +-- + +SELECT 'Industrie- und Gewerbeflächen werden bearbeitet.'; + +-- Industrie- und Gewerbefläche, Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_industrieundgewerbeflaeche' AS layer, + st_multi(wkb_geometry) AS polygon, + 25151403 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_industrieundgewerbeflaeche +WHERE endet IS NULL; + +-- Industrie- und Gewerbefläche, Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_industrieundgewerbeflaeche' AS layer, + point, + text, + signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_industrieundgewerbeflaeche o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS i WHERE NOT text IS NULL; + +-- Industrie- und Gewerbefläche, Funktionen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_industrieundgewerbeflaeche' AS layer, + point, + text, + signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_translate(st_centroid(o.wkb_geometry),0,-7)) AS point, + CASE + WHEN funktion=1740 THEN + CASE + WHEN coalesce(lagergut,0) IN (0,9999) THEN + coalesce( + schriftinhalt, + (select beschreibung from ax_funktion_industrieundgewerbeflaeche where wert=funktion) + ) + ELSE + coalesce( + schriftinhalt, + (select beschreibung from ax_funktion_industrieundgewerbeflaeche where wert=funktion) + || E'\n(' + || (select beschreibung from ax_lagergut_industrieundgewerbeflaeche where wert=lagergut) + || ')', + (select beschreibung from ax_funktion_industrieundgewerbeflaeche where wert=funktion) + ) + END + WHEN o.gml_id LIKE 'DERP%' AND funktion=2502 THEN 'Versorgungsanlage' + WHEN o.gml_id LIKE 'DERP%' AND funktion=2602 THEN 'Entsorgungsanlage' + WHEN o.gml_id LIKE 'DERP%' AND funktion=2623 THEN 'Schlamm' + WHEN funktion IN (2520,2522, 2550,2552, 2560,2562, 2580.2582, 2610,2612, 2620,2622, 2630, 2640 ) THEN + coalesce( + schriftinhalt, + (SELECT beschreibung FROM ax_funktion_industrieundgewerbeflaeche WHERE wert=funktion) + ) + WHEN funktion IN (2530,2532) THEN + coalesce( + schriftinhalt, + '(' || (SELECT beschreibung FROM ax_primaerenergie_industrieundgewerbeflaeche WHERE wert=primaerenergie) || ')' + ) + WHEN funktion IN (2570,2572) THEN + CASE + WHEN primaerenergie IS NULL THEN + coalesce( + schriftinhalt, + (SELECT beschreibung FROM ax_funktion_industrieundgewerbeflaeche WHERE wert=funktion) + ) + ELSE + coalesce( + schriftinhalt, + (SELECT beschreibung FROM ax_funktion_industrieundgewerbeflaeche WHERE wert=funktion) + || E'\n(' + || (SELECT beschreibung FROM ax_primaerenergie_industrieundgewerbeflaeche WHERE wert=primaerenergie) + || ')', + (SELECT beschreibung FROM ax_funktion_industrieundgewerbeflaeche WHERE wert=funktion) + ) + END + END AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4140') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_industrieundgewerbeflaeche o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='FKT' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS i WHERE NOT text IS NULL; + +-- Industrie- und Gewerbefläche, Funktionssymbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_industrieundgewerbeflaeche' AS layer, + st_multi(point), + drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce( + d.signaturnummer, + p.signaturnummer, + CASE + WHEN funktion=1730 THEN '3401' + WHEN funktion=2510 THEN '3402' + WHEN funktion IN (2530,2432) THEN '3403' + WHEN funktion=2540 THEN '3404' + END + ) AS signaturnummer, + coalesce( + p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, + o.advstandardmodell||o.sonstigesmodell + ) AS modell + FROM ax_industrieundgewerbeflaeche o + LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='FKT' AND p.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o +WHERE NOT signaturnummer IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/41003.sql b/postprocessing.d/1_ableitungsregeln/41003.sql new file mode 100644 index 0000000..77acb77 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/41003.sql @@ -0,0 +1,74 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Halde (41003) +-- + +SELECT 'Halden werden bearbeitet.'; + +-- Halde, Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_halde' AS layer, + st_multi(wkb_geometry) AS polygon, + 25151403 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_halde +WHERE endet IS NULL; + +-- Halde, Texte +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_halde' AS layer, + point, + text, + signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce( + schriftinhalt, + E'Halde\n(' || (SELECT beschreibung FROM ax_lagergut_halde WHERE wert=lagergut) ||')', + 'Halde' + ) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4140') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_halde o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='Halde_LGT' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='Halde_LGT' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o +WHERE NOT text IS NULL; + +-- Halde, Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_halde' AS layer, + point, + text, + signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_halde o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/41004.sql b/postprocessing.d/1_ableitungsregeln/41004.sql new file mode 100644 index 0000000..ff51b78 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/41004.sql @@ -0,0 +1,96 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Bergbaubetrieb (41004) +-- + +SELECT 'Bergbaubetriebe werden bearbeitet.'; + +-- Bergbaubetrieb, Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_bergbaubetrieb' AS layer, + st_multi(wkb_geometry) AS polygon, + 25151403 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_bergbaubetrieb +WHERE endet IS NULL; + +-- Bergbaubetrieb, Zustandssymbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_bergbaubetrieb' AS layer, + st_multi(point), + drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce(d.signaturnummer,p.signaturnummer,CASE WHEN zustand=2100 THEN '3406' ELSE '3505' END) AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_bergbaubetrieb o + LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='ZUS' AND p.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ZUS' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS b; + +-- Bergbaubetrieb, Anschrieb Abbaugut +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_bergbaubetrieb' AS layer, + point, + text, + signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce( + schriftinhalt, + E'(' || (SELECT beschreibung FROM ax_abbaugut_bergbaubetrieb WHERE wert=abbaugut) ||')' + ) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_bergbaubetrieb o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='AGT' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='AGT' AND d.endet IS NULL + WHERE NOT abbaugut IS NULL AND o.endet IS NULL +) AS b +WHERE NOT text IS NULL; + +-- Bergbaubetrieb, Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_bergbaubetrieb' AS layer, + point, + text, + signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_bergbaubetrieb o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS h WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/41005.sql b/postprocessing.d/1_ableitungsregeln/41005.sql new file mode 100644 index 0000000..1009d24 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/41005.sql @@ -0,0 +1,90 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Tagebau (41005) +-- + +SELECT 'Tagebaue werden bearbeitet.'; + +-- Tagebau, Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_tagebaugrubesteinbruch' AS layer, + st_multi(wkb_geometry) AS polygon, + CASE WHEN abbaugut=4010 THEN 25151404 ELSE 25151403 END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_tagebaugrubesteinbruch +WHERE endet IS NULL; + + +-- Tagebau, Anschrieb Abbaugut +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_tagebaugrubesteinbruch' AS layer, + point, + text, + signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_translate(st_centroid(o.wkb_geometry),0,-7)) AS point, + coalesce( + schriftinhalt, + E'(' || (SELECT beschreibung FROM ax_abbaugut_tagebaugrubesteinbruch WHERE wert=abbaugut) ||')', + CASE WHEN abbaugut=4100 THEN '(Torfstich)' ELSE NULL END + ) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_tagebaugrubesteinbruch o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='AGT' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='AGT' AND d.endet IS NULL + WHERE NOT abbaugut IS NULL AND o.endet IS NULL +) AS b +WHERE NOT text IS NULL; + +-- Tagebau, Symbol +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_tagebaugrubesteinbruch' AS layer, + st_multi(coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry))) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce(d.signaturnummer,p.signaturnummer,'3407') AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_tagebaugrubesteinbruch o +LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='FKT' AND p.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL +WHERE o.endet IS NULL; + +-- Tagebau, Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_tagebaugrubesteinbruch' AS layer, + point, + text, + signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_tagebaugrubesteinbruch o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/41006.sql b/postprocessing.d/1_ableitungsregeln/41006.sql new file mode 100644 index 0000000..67fb7f5 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/41006.sql @@ -0,0 +1,44 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Fläche gemischter Nutzung (41006) +-- + +SELECT 'Flächen gemischter Nutzung werden bearbeitet.'; + +-- Fläche gemischter Nutzung +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_flaechegemischternutzung' AS layer, + st_multi(wkb_geometry) AS polygon, + 25151401 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_flaechegemischternutzung; + +-- Name, Fläche gemischter Nutzung +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_flaechegemischternutzung' AS layer, + point, + text, + signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_flaechegemischternutzung o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS n WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/41007.sql b/postprocessing.d/1_ableitungsregeln/41007.sql new file mode 100644 index 0000000..85055bc --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/41007.sql @@ -0,0 +1,70 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Fläche besonderer funktionaler Prägung (41007) +-- + +SELECT 'Flächen besonderer funktionaler Prägung werden bearbeitet.'; + +-- Fläche besonderer funktionaler Prägung +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_flaechebesondererfunktionalerpraegung' AS layer, + st_multi(wkb_geometry) AS polygon, + 25151401 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_flaechebesondererfunktionalerpraegung +WHERE endet IS NULL; + +-- Name, Fläche besonderer funktionaler Prägung +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_flaechebesondererfunktionalerpraegung' AS layer, + point, + text, + signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_flaechebesondererfunktionalerpraegung o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o WHERE NOT text IS NULL; + +-- Historische Anlagen (RP) +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_flaechebesondererfunktionalerpraegung' AS layer, + point, + text, + signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce( + t.schriftinhalt, + (SELECT beschreibung FROM ax_funktion_flaechebesondererfunktionalerpraegung WHERE wert=funktion) + ) AS text, + coalesce(t.signaturnummer,'4070') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_industrieundgewerbeflaeche o + JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='FKT' AND t.endet IS NULL + WHERE o.endet IS NULL AND funktion=1300 AND o.gml_id LIKE 'DERP%' +) AS i WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/41008.sql b/postprocessing.d/1_ableitungsregeln/41008.sql new file mode 100644 index 0000000..f98b31d --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/41008.sql @@ -0,0 +1,130 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Sport-, Freizeit- und Erholungsfläche (41008) +-- + +SELECT 'Sport-, Freizeit- und Erholungsflächen werden bearbeitet.'; + +-- Sport-, Freizeit- und Erholungsfläche +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Sport und Freizeit' AS thema, + 'ax_sportfreizeitunderholungsflaeche' AS layer, + st_multi(wkb_geometry) AS polygon, + 25151405 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_sportfreizeitunderholungsflaeche +WHERE endet IS NULL; + + +-- Anschrieb, Sport-, Freizeit- und Erholungsfläche +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Sport und Freizeit' AS thema, + 'ax_sportfreizeitunderholungsflaeche' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce( + t.schriftinhalt, + CASE + WHEN funktion IN (4100,4101) THEN 'Sportanlage' + WHEN funktion IN (4300,4301) THEN 'Erholungsfläche' + WHEN funktion IN (4320,4321) THEN 'Bad' + WHEN funktion IN (4110,4200,4230,4240,4250,4260,4270,4280,4290,4310,4450) THEN + (SELECT beschreibung FROM ax_funktion_sportfreizeitunderholungsflaeche WHERE wert=funktion) + WHEN o.gml_id LIKE 'DERP%' THEN + CASE + WHEN funktion IN (4120,4130,4140,4150,4160,4170,4230) THEN + (SELECT beschreibung FROM ax_funktion_sportfreizeitunderholungsflaeche WHERE wert=funktion) + WHEN funktion IS NULL THEN 'Sportfläche' + END + END + ) AS text, + coalesce(d.signaturnummer,t.signaturnummer,n.signaturnummer,'4140') AS signaturnummer, + t.drehwinkel,t.horizontaleausrichtung,t.vertikaleausrichtung,t.skalierung,t.fontsperrung, + coalesce( + t.advstandardmodell||t.sonstigesmodell||n.advstandardmodell||n.sonstigesmodell, + o.advstandardmodell||o.sonstigesmodell + ) AS modell + FROM ax_sportfreizeitunderholungsflaeche o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='FKT' AND t.endet IS NULL + LEFT OUTER JOIN ap_pto n ON ARRAY[o.gml_id] <@ n.dientzurdarstellungvon AND n.art='NAM' AND n.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art IN ('NAM','FKT') AND d.endet IS NULL + WHERE name IS NULL AND n.schriftinhalt IS NULL AND o.endet IS NULL +) AS o +WHERE NOT text IS NULL; + +-- Symbol, Sport-, Freizeit- und Erholungsfläche +-- TODO: 3413/5, 3421 + PNR 1100 v 1101 +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Sport und Freizeit' AS thema, + 'ax_sportfreizeitunderholungsflaeche' AS layer, + st_multi(point), + drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + coalesce(p.wkb_geometry,alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry)) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce( + d.signaturnummer, + p.signaturnummer, + CASE + WHEN funktion IN (4210,4211) THEN '3410' + WHEN funktion=4220 THEN '3411' + WHEN funktion IN (4330,4331) THEN '3412' + WHEN funktion IN (4400,4410) THEN '3413' + WHEN funktion=4420 THEN '3415' + WHEN funktion IN (4430,4431) THEN '3417' + WHEN funktion=4440 THEN '3419' + WHEN funktion=4460 THEN '3421' + WHEN funktion=4470 THEN '3423' + END + ) AS signaturnummer, + coalesce( + p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, + o.advstandardmodell||o.sonstigesmodell + ) AS modell + FROM ax_sportfreizeitunderholungsflaeche o + LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='FKT' AND p.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Name, Sport-, Freizeit- und Erholungsfläche +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Sport und Freizeit' AS thema, + 'ax_sportfreizeitunderholungsflaeche' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_sportfreizeitunderholungsflaeche o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS n WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/41009.sql b/postprocessing.d/1_ableitungsregeln/41009.sql new file mode 100644 index 0000000..e2e6191 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/41009.sql @@ -0,0 +1,71 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Friedhof (41009) +-- + +SELECT 'Friedhöfe werden bearbeitet.'; + +-- Fläche, Friedhof +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Friedhöfe' AS thema, + 'ax_friedhof' AS layer, + st_multi(wkb_geometry) AS polygon, + 25151405 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_friedhof; + +-- Text, Friedhof +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Friedhöfe' AS thema, + 'ax_friedhof' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,n.signaturnummer,'4140') AS signaturnummer, + t.drehwinkel,t.horizontaleausrichtung,t.vertikaleausrichtung,t.skalierung,t.fontsperrung, + coalesce( + t.advstandardmodell||t.sonstigesmodell||n.advstandardmodell||n.sonstigesmodell, + o.advstandardmodell||o.sonstigesmodell + ) AS modell + FROM ax_friedhof o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='Friedhof' AND t.endet IS NULL + LEFT OUTER JOIN ap_pto n ON ARRAY[o.gml_id] <@ n.dientzurdarstellungvon AND n.art='NAM' AND n.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art IN ('NAM','Friedhof') AND d.endet IS NULL + WHERE name IS NULL AND n.schriftinhalt IS NULL AND o.endet IS NULL +) AS n WHERE NOT text IS NULL; + +-- Name, Friedhof +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Friedhöfe' AS thema, + 'ax_friedhof' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_friedhof o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE NOT name IS NULL OR NOT t.schriftinhalt IS NULL AND o.endet IS NULL +) AS n; diff --git a/postprocessing.d/1_ableitungsregeln/42006.sql b/postprocessing.d/1_ableitungsregeln/42006.sql new file mode 100644 index 0000000..499d2b4 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/42006.sql @@ -0,0 +1,54 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Weg (42006) +-- + +SELECT 'Wege werden bearbeitet.'; + +-- Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_weg' AS layer, + st_multi(wkb_geometry) AS polygon, + 2515 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_weg; + +-- Symbol +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_weg' AS layer, + st_multi(point), + drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce( + d.signaturnummer, + p.signaturnummer, + CASE + WHEN funktion IN (5220,5230) THEN '3424' + WHEN funktion=5240 THEN '3426' + WHEN funktion=5250 THEN '3428' + WHEN funktion=5260 THEN '3430' + END + ) AS signaturnummer, + coalesce( + p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, + o.advstandardmodell||o.sonstigesmodell + ) AS modell + FROM ax_weg o + LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='FKT' AND p.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/42009.sql b/postprocessing.d/1_ableitungsregeln/42009.sql new file mode 100644 index 0000000..5ecd25c --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/42009.sql @@ -0,0 +1,106 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Platz (42009) +-- + +SELECT 'Plätze werden bearbeitet.'; + +-- Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_platz' AS layer, + st_multi(wkb_geometry) AS polygon, + CASE + WHEN funktion=5130 THEN 25151414 + ELSE 2515 + END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_platz; + +-- Symbol +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_platz' AS layer, + st_multi(point), + drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce( + d.signaturnummer, + p.signaturnummer, + CASE + WHEN funktion=5310 THEN '3432' + WHEN funktion=5320 THEN '3434' + WHEN funktion=5330 THEN '3436' + END + ) AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_platz o + LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='FKT' AND p.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o +WHERE NOT signaturnummer IS NULL; + +-- Platz, Funktion +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_platz' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce( + t.schriftinhalt, + (SELECT beschreibung FROM ax_funktion_platz WHERE wert=funktion) + ) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4140') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_platz o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.endet IS NULL AND (t.art='FKT' OR o.gml_id LIKE 'DERP') + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.endet IS NULL AND (d.art='FKT' OR o.gml_id LIKE 'DERP') + WHERE o.endet IS NULL AND (funktion IN (5340,5350) OR o.gml_id LIKE 'DERP%') +) AS n WHERE NOT text IS NULL; + +-- Platz, Zweitname +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_platz' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.zweitname) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_platz o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ZNM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ZNM' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS n WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/42010.sql b/postprocessing.d/1_ableitungsregeln/42010.sql new file mode 100644 index 0000000..55f5a8a --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/42010.sql @@ -0,0 +1,52 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Bahnverkehr (42010) +-- + +SELECT 'Bahnverkehr wird bearbeitet.'; + +-- Bahnverkehr, Fläche +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_bahnverkehr' AS layer, + st_multi(wkb_geometry) AS polygon, + CASE + WHEN coalesce(zustand,0)<>4000 THEN 25150000 + ELSE 25160000 + END + + + CASE + WHEN funktion=2322 AND coalesce(zustand,0)<>4000 THEN 1406 + ELSE 0 + END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_bahnverkehr +WHERE endet IS NULL; + +-- Bahnverkehr, Zweitname +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_bahnverkehr' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.zweitname) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_bahnverkehr o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ZNM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ZNM' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS n WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/42015.sql b/postprocessing.d/1_ableitungsregeln/42015.sql new file mode 100644 index 0000000..972fbef --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/42015.sql @@ -0,0 +1,80 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Flugverkehr (42015) +-- + +SELECT 'Flugverkehr wird bearbeitet.'; + +-- Flugverkehr, Fläche +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_flugverkehr' AS layer, + st_multi(wkb_geometry) AS polygon, + CASE + WHEN zustand=4000 THEN 2516 ELSE 25151406 END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_flugverkehr; + +-- Flugverkehr, Symbol +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_flugverkehr' AS layer, + st_multi(point), + drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce( + d.signaturnummer, + p.signaturnummer, + CASE + WHEN funktion=5530 THEN '3438' + WHEN funktion=5550 THEN '3439' + END + ) AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_flugverkehr o + LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='ART' AND p.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ART' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o +WHERE NOT signaturnummer IS NULL; + +-- Flugverkehr, Name +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_flugverkehr' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce( + t.schriftinhalt, + o.unverschluesselt, + (SELECT bezeichnung FROM ax_lagebezeichnungkatalogeintrag WHERE schluesselgesamt=to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage ORDER BY beginnt DESC LIMIT 1) + ) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4200') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_flugverkehr o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS n +WHERE text IS NOT NULL; diff --git a/postprocessing.d/1_ableitungsregeln/42016.sql b/postprocessing.d/1_ableitungsregeln/42016.sql new file mode 100644 index 0000000..cd3cc84 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/42016.sql @@ -0,0 +1,79 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Schiffsverkehr (42016) +-- + +SELECT 'Schiffsverkehr wird bearbeitet.'; + +-- Schiffsverkehr, Fläche +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_schiffsverkehr' AS layer, + st_multi(wkb_geometry) AS polygon, + CASE WHEN zustand=4000 THEN 2516 ELSE 2515 END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_schiffsverkehr +WHERE endet IS NULL; + +-- Schiffsverkehr, Name +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_schiffsverkehr' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce( + t.schriftinhalt, + o.unverschluesselt, + (SELECT bezeichnung FROM ax_lagebezeichnungkatalogeintrag WHERE schluesselgesamt=to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage ORDER BY beginnt DESC LIMIT 1) + ) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_schiffsverkehr o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS n +WHERE text IS NOT NULL; + +-- Hafenanlage (RP) +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_schiffsverkehr' AS layer, + point, + text, + signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce( + t.schriftinhalt, + CASE + WHEN funktion=5610 THEN 'Hafenanlage' + WHEN funktion IN (5630,5640) THEN + (SELECT beschreibung FROM ax_funktion_schiffsverkehr WHERE wert=funktion) + END + ) AS text, + coalesce(t.signaturnummer,'4140') AS signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_schiffsverkehr o + JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='FKT' AND t.endet IS NULL + WHERE o.endet IS NULL AND o.gml_id LIKE 'DERP%' +) AS i WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/43001.sql b/postprocessing.d/1_ableitungsregeln/43001.sql new file mode 100644 index 0000000..f1e265e --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/43001.sql @@ -0,0 +1,100 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Landwirtschaft (43001) +-- + +SELECT 'Landwirtschaft wird bearbeitet.'; + +-- Landwirtschaft, Fläche +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Vegetation' AS thema, + 'ax_landwirtschaft' AS layer, + polygon, + signaturnummer, + modell +FROM ( + SELECT + gml_id, + st_multi(wkb_geometry) AS polygon, + CASE + WHEN coalesce(vegetationsmerkmal,0) IN (0,1010,1011,1012,1013) THEN 25151409 + WHEN vegetationsmerkmal IN (1020,1021,1030,1031,1040,1050,1051,1052) THEN 25151406 + WHEN vegetationsmerkmal=1200 THEN 25151404 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_landwirtschaft + WHERE endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Landwirtschaft, Symbole +-- TODO: +-- 3440/2 + PNR 1104 v 1105 +-- 3442/3444 + PNR 1102 v 1103 +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Vegetation' AS thema, + 'ax_landwirtschaft' AS layer, + st_multi(point), + drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + coalesce(p.wkb_geometry,alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry)) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce( + d.signaturnummer, + p.signaturnummer, + CASE + WHEN vegetationsmerkmal=1011 THEN '3440' + WHEN vegetationsmerkmal=1012 THEN '3442' + WHEN vegetationsmerkmal=1013 THEN '3444' + WHEN vegetationsmerkmal=1020 THEN '3413' + WHEN vegetationsmerkmal=1021 THEN '3441' + WHEN vegetationsmerkmal=1030 THEN '3421' + WHEN vegetationsmerkmal=1031 THEN '3446' + WHEN vegetationsmerkmal=1040 THEN '3448' + WHEN vegetationsmerkmal=1050 THEN '3450' + WHEN vegetationsmerkmal=1051 THEN '3452' + WHEN vegetationsmerkmal=1052 THEN '3454' + END + ) AS signaturnummer, + coalesce( + p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, + o.advstandardmodell||o.sonstigesmodell + ) AS modell + FROM ax_landwirtschaft o + LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='VEG' AND p.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='VEG' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Landwirtschaft, Name +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Vegetation' AS thema, + 'ax_landwirtschaft' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4208') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_landwirtschaft o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND NOT name IS NULL +) AS n; diff --git a/postprocessing.d/1_ableitungsregeln/43002.sql b/postprocessing.d/1_ableitungsregeln/43002.sql new file mode 100644 index 0000000..51bfe82 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/43002.sql @@ -0,0 +1,80 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Wald (43002) +-- + +SELECT 'Wald wird bearbeitet.'; + +-- Wald, Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Vegetation' AS thema, + 'ax_wald' AS layer, + st_multi(wkb_geometry) AS polygon, + 25171414 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_wald; + +-- Wald, Symbole +-- TODO: PNR? +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Vegetation' AS thema, + 'ax_wald' AS layer, + st_multi(point), + drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + coalesce(p.wkb_geometry,alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry)) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce( + d.signaturnummer, + p.signaturnummer, + CASE + WHEN vegetationsmerkmal IS NULL THEN '3456' + WHEN vegetationsmerkmal=1100 THEN '3458' + WHEN vegetationsmerkmal=1200 THEN '3460' + WHEN vegetationsmerkmal IN (1300,1310,1320) THEN '3462' + END + ) AS signaturnummer, + coalesce( + p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, + o.advstandardmodell||o.sonstigesmodell + ) AS modell + FROM ax_wald o + LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='VEG' AND p.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='VEG' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o +WHERE NOT signaturnummer IS NULL; + +-- Wald, Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Vegetation' AS thema, + 'ax_wald' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4209') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_wald o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND NOT name IS NULL +) AS n; diff --git a/postprocessing.d/1_ableitungsregeln/43003.sql b/postprocessing.d/1_ableitungsregeln/43003.sql new file mode 100644 index 0000000..08a2bbc --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/43003.sql @@ -0,0 +1,79 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Gehölz (43003) +-- + +SELECT 'Gehölze werden bearbeitet.'; + +-- Gehölz, Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Vegetation' AS thema, + 'ax_gehoelz' AS layer, + st_multi(wkb_geometry) AS polygon, + 25171414 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_gehoelz +WHERE endet IS NULL; + +-- Gehölz, Symbole +-- TODO: PNR? +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Vegetation' AS thema, + 'ax_gehoelz' AS layer, + st_multi(point), + drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + coalesce(p.wkb_geometry,alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry)) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce( + d.signaturnummer, + p.signaturnummer, + CASE + WHEN vegetationsmerkmal IS NULL THEN '3470' + WHEN vegetationsmerkmal=1400 THEN '3472' + END + ) AS signaturnummer, + coalesce( + p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, + o.advstandardmodell||o.sonstigesmodell + ) AS modell + FROM ax_gehoelz o + LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='VEG' AND p.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='VEG' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o +WHERE NOT signaturnummer IS NULL; + +-- Gehölz, Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Vegetation' AS thema, + 'ax_gehoelz' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4209') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_gehoelz o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND NOT name IS NULL +) AS n; diff --git a/postprocessing.d/1_ableitungsregeln/43004.sql b/postprocessing.d/1_ableitungsregeln/43004.sql new file mode 100644 index 0000000..de9892a --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/43004.sql @@ -0,0 +1,61 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Heide (43004) +-- + +SELECT 'Heide wird bearbeitet.'; + +-- Heide, Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Vegetation' AS thema, + 'ax_heide' AS layer, + st_multi(wkb_geometry) AS polygon, + 25171404 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_heide; + +-- Heide, Symbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Vegetation' AS thema, + 'ax_heide' AS layer, + st_multi(coalesce(p.wkb_geometry,alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry))) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce(d.signaturnummer,'3474') AS signaturnummer, + coalesce( + p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, + o.advstandardmodell||o.sonstigesmodell + ) AS modell +FROM ax_heide o +LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='Heide' AND p.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='Heide' AND d.endet IS NULL +WHERE o.endet IS NULL; + +-- Heide, Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Vegetation' AS thema, + 'ax_heide' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4209') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_heide o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND NOT name IS NULL +) AS n; diff --git a/postprocessing.d/1_ableitungsregeln/43005.sql b/postprocessing.d/1_ableitungsregeln/43005.sql new file mode 100644 index 0000000..3129457 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/43005.sql @@ -0,0 +1,62 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Moor (43005) +-- + +SELECT 'Moor wird bearbeitet.'; + +-- Moor, Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Vegetation' AS thema, + 'ax_moor' AS layer, + st_multi(wkb_geometry) AS polygon, + 25171404 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_moor +WHERE endet IS NULL; + +-- Moor, Symbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Vegetation' AS thema, + 'ax_moor' AS layer, + st_multi(coalesce(p.wkb_geometry,alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry))) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce(d.signaturnummer,p.signaturnummer,'3476') AS signaturnummer, + coalesce( + p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, + o.advstandardmodell||o.sonstigesmodell + ) AS modell +FROM ax_moor o +LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='Moor' AND p.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='Moor' AND d.endet IS NULL +WHERE o.endet IS NULL; + +-- Moor, Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Vegetation' AS thema, + 'ax_moor' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4209') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_moor o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND NOT name IS NULL +) AS n; diff --git a/postprocessing.d/1_ableitungsregeln/43006.sql b/postprocessing.d/1_ableitungsregeln/43006.sql new file mode 100644 index 0000000..8fe2841 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/43006.sql @@ -0,0 +1,61 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Sumpf (43006) +-- + +SELECT 'Sumpf wird bearbeitet.'; + +-- Sumpf, Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Vegetation' AS thema, + 'ax_sumpf' AS layer, + st_multi(wkb_geometry) AS polygon, + 25171404 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_sumpf; + +-- Sumpf, Symbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Vegetation' AS thema, + 'ax_sumpf' AS layer, + st_multi(coalesce(p.wkb_geometry,alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry))) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce(d.signaturnummer,p.signaturnummer,'3478') AS signaturnummer, + coalesce( + p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, + o.advstandardmodell||o.sonstigesmodell + ) AS modell +FROM ax_sumpf o +LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='Sumpf' AND p.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='Sumpf' AND d.endet IS NULL +WHERE o.endet IS NULL; + +-- Sumpf, Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Vegetation' AS thema, + 'ax_sumpf' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4209') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_sumpf o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND NOT name IS NULL +) AS n; diff --git a/postprocessing.d/1_ableitungsregeln/43007.sql b/postprocessing.d/1_ableitungsregeln/43007.sql new file mode 100644 index 0000000..8fb17b1 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/43007.sql @@ -0,0 +1,104 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Unland/vegetationslose Fläche (43007) +-- + +SELECT 'Unland/vegetationslose Flächen werden bearbeitet.'; + +-- Unland, Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Vegetation' AS thema, + 'ax_unlandvegetationsloseflaeche' AS layer, + polygon, + signaturnummer, + modell +FROM ( + SELECT + gml_id, + st_multi(wkb_geometry) AS polygon, + CASE + WHEN coalesce(funktion,1000)=1000 THEN + CASE + WHEN coalesce(oberflaechenmaterial,0) IN (0,1010,1020,1030,1040) THEN 2515 + WHEN oberflaechenmaterial IN (1110,1120) THEN 2518 + END + ELSE 25151406 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_unlandvegetationsloseflaeche o + WHERE coalesce(funktion,1000) IN (1000,1100,1110,1120,1200) AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Unland, Symbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Vegetation' AS thema, + 'ax_unlandvegetationsloseflaeche' AS layer, + st_multi(point), + drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + coalesce(p.wkb_geometry,alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry)) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce( + d.signaturnummer, + p.signaturnummer, + CASE + WHEN coalesce(funktion,1000)=1000 THEN + CASE + WHEN oberflaechenmaterial IS NULL THEN '3480' + WHEN oberflaechenmaterial=1010 THEN '3481' + WHEN oberflaechenmaterial=1020 THEN '3482' + WHEN oberflaechenmaterial=1030 THEN '3483' + WHEN oberflaechenmaterial=1040 THEN '3484' + WHEN oberflaechenmaterial IN (1110,1120) THEN '3486' + END + END + ) AS signaturnummer, + coalesce( + p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, + o.advstandardmodell||o.sonstigesmodell + ) AS modell + FROM ax_unlandvegetationsloseflaeche o + LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='OFM' AND p.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='OFM' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Unland, Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Vegetation' AS thema, + 'ax_unlandvegetationsloseflaeche' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce( + d.signaturnummer, + t.signaturnummer, + CASE WHEN oberflaechenmaterial IN (1110,1120) THEN '4151' ELSE '4150' END + ) AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce( + t.advstandardmodell||t.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, + o.advstandardmodell||o.sonstigesmodell + ) AS modell + FROM ax_unlandvegetationsloseflaeche o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL +) AS n WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/44001.sql b/postprocessing.d/1_ableitungsregeln/44001.sql new file mode 100644 index 0000000..7607312 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/44001.sql @@ -0,0 +1,55 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Fließgewässer (44001) +-- + +SELECT 'Fließgewässer werden bearbeitet.'; + +-- Fließgewässer, Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Gewässer' AS thema, + 'ax_fliessgewaesser' AS layer, + st_multi(wkb_geometry) AS polygon, + CASE + WHEN zustand=4000 THEN 2519 + ELSE 25181410 + END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_fliessgewaesser +WHERE endet IS NULL; + +-- Fließgewäesser, Pfeil +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Gewässer' AS thema, + 'ax_fliessgewaesser' AS layer, + st_multi(coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry))) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce(p.signaturnummer,'3488') AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_fliessgewaesser o +JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='Fließpfeil' AND p.endet IS NULL +WHERE o.endet IS NULL AND coalesce(zustand,0)<>4000; + +-- Fließgewäesser, Symbol +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Gewässer' AS thema, + 'ax_fliessgewaesser' AS layer, + st_multi(coalesce(p.wkb_geometry,alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry))) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce(d.signaturnummer,p.signaturnummer,'3490') AS signaturnummer, + coalesce( + p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, + o.advstandardmodell||o.sonstigesmodell + ) AS modell +FROM ax_fliessgewaesser o +LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='FKT' AND p.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL +WHERE o.endet IS NULL AND funktion=8300 AND zustand=4000; diff --git a/postprocessing.d/1_ableitungsregeln/44005.sql b/postprocessing.d/1_ableitungsregeln/44005.sql new file mode 100644 index 0000000..c54159a --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/44005.sql @@ -0,0 +1,64 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Hafenbecken (44005) +-- + +SELECT 'Hafenbecken werden bearbeitet.'; + +-- Hafenbecken, Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Gewässer' AS thema, + 'ax_hafenbecken' AS layer, + st_multi(wkb_geometry) AS polygon, + 25181410 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_hafenbecken +WHERE endet IS NULL; + +-- Hafenbecken, Symbol +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Gewässer' AS thema, + 'ax_hafenbecken' AS layer, + st_multi(coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry))) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce(d.signaturnummer,p.signaturnummer,'3490') AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_hafenbecken o +LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='FKT' AND p.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL +WHERE o.endet IS NULL; + +-- Hafenbecken, Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Gewässer' AS thema, + 'ax_hafenbecken' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce( + t.schriftinhalt, + o.unverschluesselt, + (SELECT bezeichnung FROM ax_lagebezeichnungkatalogeintrag WHERE schluesselgesamt=to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage ORDER BY beginnt DESC LIMIT 1) + ) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4211') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_hafenbecken o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS n +WHERE text IS NOT NULL; diff --git a/postprocessing.d/1_ableitungsregeln/44006.sql b/postprocessing.d/1_ableitungsregeln/44006.sql new file mode 100644 index 0000000..c743b1c --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/44006.sql @@ -0,0 +1,41 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Stehendes Gewässer (44006) +-- + +SELECT 'Stehende Gewässer werden bearbeitet.'; + +-- Stehendes Gewässer, Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Gewässer' AS thema, + 'ax_stehendesgewaesser' AS layer, + st_multi(wkb_geometry) AS polygon, + CASE + WHEN hydrologischesmerkmal IS NULL THEN 25181410 + WHEN hydrologischesmerkmal=2000 THEN 25201410 + END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_stehendesgewaesser +WHERE endet IS NULL; + +-- Stehendes Gewässer, Symbol +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Gewässer' AS thema, + 'ax_stehendesgewaesser' AS layer, + st_multi(coalesce(p.wkb_geometry,alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry))) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce(d.signaturnummer,p.signaturnummer,'3490') AS signaturnummer, + coalesce( + p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, + o.advstandardmodell||o.sonstigesmodell + ) AS modell +FROM ax_stehendesgewaesser o +LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='FKT' AND p.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL +WHERE o.endet IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/44007.sql b/postprocessing.d/1_ableitungsregeln/44007.sql new file mode 100644 index 0000000..025000b --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/44007.sql @@ -0,0 +1,67 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Meer (44007) +-- + +SELECT 'Meere werden bearbeitet.'; + +-- Meer, Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Gewässer' AS thema, + 'ax_meer' AS layer, + st_multi(wkb_geometry) AS polygon, + 25181410 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_meer +WHERE endet IS NULL; + +-- Meer, Symbol +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Gewässer' AS thema, + 'ax_meer' AS layer, + st_multi(coalesce(p.wkb_geometry,alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry))) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce(d.signaturnummer,p.signaturnummer,'3490') AS signaturnummer, + coalesce( + p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, + o.advstandardmodell||o.sonstigesmodell + ) AS modell +FROM ax_meer o +LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='FKT' AND p.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL +WHERE o.endet IS NULL; + +-- Meer, Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Gewässer' AS thema, + 'ax_meer' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce( + t.schriftinhalt, + o.unverschluesselt, + (SELECT bezeichnung FROM ax_lagebezeichnungkatalogeintrag WHERE schluesselgesamt=to_char(o.land::int,'fm00')||coalesce(o.regierungsbezirk,'0')||to_char(o.kreis::int,'fm00')||to_char(o.gemeinde::int,'fm000')||o.lage ORDER BY beginnt DESC LIMIT 1) + ) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4286') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_meer o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS n +WHERE text IS NOT NULL; diff --git a/postprocessing.d/1_ableitungsregeln/51002.sql b/postprocessing.d/1_ableitungsregeln/51002.sql new file mode 100644 index 0000000..64d95f9 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/51002.sql @@ -0,0 +1,167 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Bauwerk oder Anlage für Industrie und Gewerbe (51002) +-- + +SELECT 'Bauwerke oder Anlagen für Industrie und Gewerbe werden bearbeitet.'; + +-- Bauwerk- oder Anlage für Industrie und Gewerbe, Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_bauwerkoderanlagefuerindustrieundgewerbe' AS layer, + st_multi(wkb_geometry) AS polygon, + CASE + WHEN bauwerksfunktion=1210 THEN 1510 + WHEN bauwerksfunktion IN (1215,1220,1230,1240,1260,1270,1280,1320,1330,1331,1332,1333,1340,1350,1390,9999) THEN 1305 + WHEN bauwerksfunktion=1250 THEN 1306 + WHEN bauwerksfunktion=1290 THEN 1501 + END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_bauwerkoderanlagefuerindustrieundgewerbe +WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') + AND endet IS NULL + AND bauwerksfunktion IN (1210,1215,1220,1230,1240,1250,1260,1270,1280,1290,1320,1330,1331,1332,1333,1340,1350,1390,9999); + +-- Bauwerk- oder Anlage für Industrie und Gewerbe, Symbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_bauwerkoderanlagefuerindustrieundgewerbe' AS layer, + st_multi(point), + drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + coalesce( + p.wkb_geometry, + CASE + WHEN geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN o.wkb_geometry + WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN st_centroid(o.wkb_geometry) + END + ) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce( + d.signaturnummer, + p.signaturnummer, + CASE + WHEN bauwerksfunktion=1220 THEN '3501' + WHEN bauwerksfunktion=1230 THEN '3502' + WHEN bauwerksfunktion=1240 THEN '3503' + WHEN bauwerksfunktion=1250 THEN '3504' + WHEN bauwerksfunktion IN (1260,1270) THEN '3506' + WHEN bauwerksfunktion=1280 THEN '3507' + WHEN bauwerksfunktion=1290 THEN '3508' + WHEN bauwerksfunktion=1310 THEN '3509' + WHEN bauwerksfunktion=1320 THEN '3510' + WHEN bauwerksfunktion=1330 THEN '3511' + WHEN bauwerksfunktion=1331 THEN '3512' + WHEN bauwerksfunktion=1332 THEN '3513' + WHEN bauwerksfunktion=1333 THEN '3514' + WHEN bauwerksfunktion=1350 THEN '3515' + WHEN bauwerksfunktion=1360 THEN '3516' + WHEN bauwerksfunktion IN (1370,1371) THEN '3517' + WHEN bauwerksfunktion=1372 THEN '3518' + WHEN bauwerksfunktion=1380 THEN '3519' + WHEN bauwerksfunktion=1390 THEN '3520' + WHEN bauwerksfunktion=1400 THEN '3521' + END + ) AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_bauwerkoderanlagefuerindustrieundgewerbe o + LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='FKT' AND p.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL AND NOT point IS NULL; + +-- Bauwerk- oder Anlage für Industrie und Gewerbe, Texte +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_bauwerkoderanlagefuerindustrieundgewerbe' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce( + t.schriftinhalt, + (SELECT beschreibung FROM ax_bauwerksfunktion_bauwerkoderanlagefuerindustrieundgewer WHERE wert=bauwerksfunktion) + ) AS text, + coalesce( + d.signaturnummer, + t.signaturnummer, + CASE + WHEN bauwerksfunktion IN (1210,1215) THEN '4100' + WHEN bauwerksfunktion=1340 THEN '4140' + END + ) AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_bauwerkoderanlagefuerindustrieundgewerbe o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BWF' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWF' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS n WHERE NOT signaturnummer IS NULL AND text IS NOT NULL; + +-- Bauwerk- oder Anlage für Industrie und Gewerbe, Name +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_bauwerkoderanlagefuerindustrieundgewerbe' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_bauwerkoderanlagefuerindustrieundgewerbe o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND NOT name IS NULL +) AS n; + +-- Bauwerk- oder Anlage für Industrie und Gewerbe, Zustandstext +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_bauwerkoderanlagefuerindustrieundgewerbe' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + CASE zustand + WHEN 2100 THEN '(außer Betrieb)' + WHEN 2200 THEN '(zerstört)' + WHEN 4200 THEN '(verschlossen)' + END AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_bauwerkoderanlagefuerindustrieundgewerbe o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ZUS' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ZUS' AND d.endet IS NULL + WHERE o.endet IS NULL AND zustand IN (2100,2200,4200) +) AS n; diff --git a/postprocessing.d/1_ableitungsregeln/51003.sql b/postprocessing.d/1_ableitungsregeln/51003.sql new file mode 100644 index 0000000..300849a --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/51003.sql @@ -0,0 +1,87 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Vorratsbehälter, Speicherbauwerk (51003) +-- + +SELECT 'Vorratsbehälter, Speicherbauwerke werden bearbeitet.'; + +-- Vorratsbehälter, Speicherbauwerk, Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_vorratsbehaelterspeicherbauwerk' AS layer, + polygon, + signaturnummer, + modell +FROM ( + SELECT + gml_id, + st_multi(wkb_geometry) AS polygon, + CASE + WHEN lagezurerdoberflaeche IS NULL THEN 1305 + WHEN lagezurerdoberflaeche=1200 THEN 1321 + WHEN lagezurerdoberflaeche=1400 THEN 20311304 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_vorratsbehaelterspeicherbauwerk + WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') +) AS o; + +-- Vorratsbehälter, Speicherbauwerk, Symbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_vorratsbehaelterspeicherbauwerk' AS layer, + point, + drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + st_multi(coalesce( + p.wkb_geometry, + CASE + WHEN geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN o.wkb_geometry + WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN st_centroid(o.wkb_geometry) + END + )) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce(d.signaturnummer,p.signaturnummer,'3522') AS signaturnummer, + coalesce( + p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, + o.advstandardmodell||o.sonstigesmodell + ) AS modell + FROM ax_vorratsbehaelterspeicherbauwerk o + LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='Vorratsbehaelter' AND p.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='Vorratsbehaelter' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o; + +-- Vorratsbehälter, Speicherbauwerk, Name +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_vorratsbehaelterspeicherbauwerk' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4107') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_vorratsbehaelterspeicherbauwerk o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND NOT name IS NULL +) AS n; diff --git a/postprocessing.d/1_ableitungsregeln/51004.sql b/postprocessing.d/1_ableitungsregeln/51004.sql new file mode 100644 index 0000000..c2d5b48 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/51004.sql @@ -0,0 +1,90 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Transportanlage (51004) +-- + +SELECT 'Transportanlagen werden bearbeitet.'; + +-- Transportanlage, Linie +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_transportanlage' AS layer, + polygon, + signaturnummer, + modell +FROM ( + SELECT + gml_id, + st_multi(alkis_bufferline(wkb_geometry,0.5)) AS polygon, + CASE + WHEN coalesce(lagezurerdoberflaeche,1400)=1400 THEN 2521 + WHEN lagezurerdoberflaeche IN (1200,1700) THEN 2504 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_transportanlage + WHERE bauwerksfunktion=1102 AND endet IS NULL +) AS t WHERE signaturnummer IS NOT NULL; + +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_transportanlage' AS layer, + line, + signaturnummer, + modell +FROM ( + SELECT + gml_id, + st_multi(wkb_geometry) AS line, + CASE + WHEN coalesce(lagezurerdoberflaeche,1400)=1400 THEN 2002 + WHEN lagezurerdoberflaeche IN (1200,1700) THEN 2523 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_transportanlage + WHERE bauwerksfunktion=1101 AND endet IS NULL +) AS t WHERE signaturnummer IS NOT NULL; + +-- Transportanlage, Symbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_transportanlage' AS layer, + st_multi(wkb_geometry) AS point, + 0 AS drehwinkel, + 3523 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_transportanlage +WHERE bauwerksfunktion=1103 AND geometrytype(wkb_geometry) IN ('POINT','MULTIPOINT') AND lagezurerdoberflaeche IS NULL AND endet IS NULL; + +-- Transportanlage, Anschrieb Produkt +-- TODO: welche Text sind NULL? +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_transportanlage' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + (SELECT beschreibung FROM ax_produkt_transportanlage WHERE wert=produkt) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_transportanlage o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='PRO' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='PRO' AND d.endet IS NULL + WHERE o.endet IS NULL AND NOT produkt IS NULL +) AS n +WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/51005.sql b/postprocessing.d/1_ableitungsregeln/51005.sql new file mode 100644 index 0000000..354b73b --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/51005.sql @@ -0,0 +1,55 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Leitung (51005) +-- + +SELECT 'Leitungen werden bearbeitet.'; + +-- Leitungsverlauf +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_leitung' AS layer, + st_multi(wkb_geometry) AS line, + CASE + WHEN bauwerksfunktion=1110 THEN 2524 + WHEN bauwerksfunktion=1111 THEN 2523 + END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_leitung +WHERE bauwerksfunktion IN (1110,1111) AND endet IS NULL; + +-- Anschrieb Erdkabel +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_leitung' AS layer, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + 'Erdkabel' AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_leitung o +LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BWF' AND t.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWF' AND d.endet IS NULL +WHERE bauwerksfunktion=1111 AND o.endet IS NULL; + +-- Anschrieb Spannungsebene +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Industrie und Gewerbe' AS thema, + 'ax_leitung' AS layer, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + spannungsebene || CASE WHEN o.gml_id LIKE 'DERP%' THEN ' kV' ELSE ' KV' END AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_leitung o +LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='SPG' AND t.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='SPG' AND d.endet IS NULL +WHERE o.endet IS NULL AND NOT spannungsebene IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/51006.sql b/postprocessing.d/1_ableitungsregeln/51006.sql new file mode 100644 index 0000000..f7b2dc1 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/51006.sql @@ -0,0 +1,171 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Bauwerk oder Anlage für Sport, Freizeit und Erholung (51006) +-- + +SELECT 'Bauwerke oder Anlagen für Sport, Freizeit und Erholung werden bearbeitet.'; + +-- Bauwerk oder Anlage für Sport, Freizeit und Erholung, Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Sport und Freizeit' AS thema, + 'ax_bauwerkoderanlagefuersportfreizeitunderholung' AS layer, + st_multi(wkb_geometry) AS polygon, + CASE + WHEN bauwerksfunktion IN (1410,1411,1412) THEN 1520 + WHEN bauwerksfunktion=1420 THEN 1521 + WHEN bauwerksfunktion IN (1430,1432,1460,1470,1480,1490,1510,9999) THEN 1524 + WHEN bauwerksfunktion=1431 THEN 1519 + WHEN bauwerksfunktion=1440 THEN 1522 + WHEN bauwerksfunktion=1450 THEN 1526 + END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_bauwerkoderanlagefuersportfreizeitunderholung +WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL; + +-- Bauwerk oder Anlage für Sport, Freizeit und Erholung, Texte +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Sport und Freizeit' AS thema, + 'ax_bauwerkoderanlagefuersportfreizeitunderholung' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + CASE + WHEN bauwerksfunktion IN (1430,1431,1432) THEN 'Tribüne' + WHEN bauwerksfunktion=1460 THEN 'Liegewiese' + WHEN bauwerksfunktion=1470 THEN 'Sprungschanze' + WHEN bauwerksfunktion=1510 THEN 'Wildgehege' + WHEN bauwerksfunktion=1450 THEN + coalesce( + t.schriftinhalt, + (SELECT beschreibung FROM ax_bauwerksfunktion_bauwerkoderanlagefuersportfreizeitunde WHERE wert=bauwerksfunktion) + ) + WHEN o.gml_id LIKE 'DERP%' AND bauwerksfunktion=1410 THEN + coalesce( + t.schriftinhalt, + 'Sportplatz' + ) + END AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4100') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_bauwerkoderanlagefuersportfreizeitunderholung o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BWF' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWF' AND d.endet IS NULL + WHERE o.endet IS NULL + ) AS o WHERE NOT text IS NULL; + +-- Bauwerk oder Anlage für Sport, Freizeit und Erholung, Symbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Sport und Freizeit' AS thema, + 'ax_bauwerkoderanlagefuersportfreizeitunderholung' AS layer, + st_multi(point), + drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce( + d.signaturnummer, + p.signaturnummer, + CASE + WHEN bauwerksfunktion=1480 THEN '3524' + WHEN bauwerksfunktion=1490 THEN '3525' + END + ) AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_bauwerkoderanlagefuersportfreizeitunderholung o + LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='BWF' AND p.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWF' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Bauwerk oder Anlage für Sport, Freizeit und Erholung, Name +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Sport und Freizeit' AS thema, + 'ax_bauwerkoderanlagefuersportfreizeitunderholung' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_bauwerkoderanlagefuersportfreizeitunderholung o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND NOT name IS NULL +) AS n; + +-- Bauwerk oder Anlage für Sport, Freizeit und Erholung, Sportart +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Sport und Freizeit' AS thema, + 'ax_bauwerkoderanlagefuersportfreizeitunderholung' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + CASE + WHEN sportart IN (1010,1020) THEN 'Sportplatz' + WHEN sportart=1030 THEN 'Tennisplatz' + WHEN sportart=1040 THEN 'Reitplatz' + WHEN sportart=1060 THEN 'Skisportanlage' + WHEN sportart=1070 THEN 'Eis-, Rollschuhbahn' + WHEN sportart=1071 THEN 'Eisbahn' + WHEN sportart=1072 THEN 'Rollschuhbahn' + WHEN sportart=1090 THEN 'Motorrennbahn' + WHEN sportart=1100 THEN 'Radrennbahn' + WHEN sportart=1110 THEN 'Pferderennbahn' + END AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4100') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_bauwerkoderanlagefuersportfreizeitunderholung o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='SPO' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='SPO' AND d.endet IS NULL + WHERE o.endet IS NULL AND NOT sportart IS NULL +) AS n WHERE NOT text IS NULL; + +-- Bauwerk oder Anlage für Sport, Freizeit und Erholung, Symbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Sport und Freizeit' AS thema, + 'ax_bauwerkoderanlagefuersportfreizeitunderholung' AS layer, + st_multi(coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry))) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce(d.signaturnummer,p.signaturnummer,'3409') AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_bauwerkoderanlagefuersportfreizeitunderholung o +LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='SPO' AND p.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='SPO' AND d.endet IS NULL +WHERE o.endet IS NULL AND sportart=1080; diff --git a/postprocessing.d/1_ableitungsregeln/51007.sql b/postprocessing.d/1_ableitungsregeln/51007.sql new file mode 100644 index 0000000..3a83256 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/51007.sql @@ -0,0 +1,155 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Historisches Bauwerk oder historische Einrichtung (51007) +-- + +SELECT 'Historische Bauwerke oder Einrichtungen werden bearbeitet.'; + +-- Historisches Bauwerk oder historische Einrichtung, Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Gebäude' AS thema, + 'ax_historischesbauwerkoderhistorischeeinrichtung' AS layer, + st_multi(wkb_geometry) AS polygon, + CASE + WHEN archaeologischertyp IN (1000,1100,1020,1100,1110,1200,1210,9999) THEN 1330 + WHEN archaeologischertyp IN (1400,1410,1420,1430) THEN 1317 + WHEN archaeologischertyp IN (1500,1510,1520) THEN 1305 + END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_historischesbauwerkoderhistorischeeinrichtung +WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL; + +-- Historisches Bauwerk oder historische Einrichtung, Linien +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Gebäude' AS thema, + 'ax_historischesbauwerkoderhistorischeeinrichtung' AS layer, + st_multi(polygon), + signaturnummer, + modell +FROM ( + SELECT + gml_id, + alkis_bufferline(wkb_geometry,0.5) AS polygon, + CASE + WHEN archaeologischertyp IN (1500,1520,1510) THEN 2510 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_historischesbauwerkoderhistorischeeinrichtung + WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + + +-- Historisches Bauwerk oder historische Einrichtung, Symbol +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Gebäude' AS thema, + 'ax_historischesbauwerkoderhistorischeeinrichtung' AS layer, + point, drehwinkel, signaturnummer, modell +FROM ( + SELECT + o.gml_id, + st_multi(coalesce( + p.wkb_geometry, + CASE + WHEN geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN o.wkb_geometry + WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN st_centroid(o.wkb_geometry) + END + )) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce( + d.signaturnummer, + p.signaturnummer, + CASE + WHEN archaeologischertyp=1010 THEN '3526' + WHEN archaeologischertyp=1020 THEN '3527' + WHEN archaeologischertyp=1300 THEN '3528' + END + ) AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_historischesbauwerkoderhistorischeeinrichtung o + LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='ATP' AND p.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ATP' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Historisches Bauwerk oder historische Einrichtung, Texte +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Gebäude' AS thema, + 'ax_historischesbauwerkoderhistorischeeinrichtung' AS layer, + point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce( + t.wkb_geometry, + CASE + WHEN geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN o.wkb_geometry + WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN st_centroid(o.wkb_geometry) + WHEN geometrytype(o.wkb_geometry)='LINESTRING' THEN st_lineinterpolatepoint(o.wkb_geometry,0.5) + END + ) AS point, + CASE + WHEN + archaeologischertyp IN (1000,1110) + OR (archaeologischertyp=1420 AND coalesce(name,n.schriftinhalt) IS NULL) + THEN + (SELECT beschreibung FROM ax_archaeologischertyp_historischesbauwerkoderhistorischee WHERE wert=archaeologischertyp) + WHEN archaeologischertyp=1100 THEN + coalesce(t.schriftinhalt, 'Historische Wasserleitung') + WHEN archaeologischertyp=1210 THEN + coalesce(t.schriftinhalt, 'Römischer Wachturm') + WHEN archaeologischertyp=1400 AND coalesce(name,n.schriftinhalt) IS NULL THEN + 'Ruine' + WHEN archaeologischertyp IN (1200,1410,1500,1510,1520) + OR (archaeologischertyp=1430 AND coalesce(name,n.schriftinhalt) IS NULL) + THEN + coalesce( + t.schriftinhalt, + (SELECT beschreibung FROM ax_archaeologischertyp_historischesbauwerkoderhistorischee WHERE wert=archaeologischertyp) + ) + END AS text, + coalesce(d.signaturnummer,t.signaturnummer,n.signaturnummer,'4070') AS signaturnummer, + t.drehwinkel,t.horizontaleausrichtung,t.vertikaleausrichtung,t.skalierung,t.fontsperrung, + coalesce( + t.advstandardmodell||t.sonstigesmodell||n.advstandardmodell||n.sonstigesmodell, + o.advstandardmodell||o.sonstigesmodell + ) AS modell + FROM ax_historischesbauwerkoderhistorischeeinrichtung o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ATP' AND t.endet IS NULL + LEFT OUTER JOIN ap_pto n ON ARRAY[o.gml_id] <@ n.dientzurdarstellungvon AND n.art='NAM' AND n.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art IN ('ATP','NAM') AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o WHERE NOT text IS NULL; + +-- Historisches Bauwerk oder historische Einrichtung, Name +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Gebäude' AS thema, + 'ax_historischesbauwerkoderhistorischeeinrichtung' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4074') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_historischesbauwerkoderhistorischeeinrichtung o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND NOT name IS NULL +) AS n; diff --git a/postprocessing.d/1_ableitungsregeln/51008.sql b/postprocessing.d/1_ableitungsregeln/51008.sql new file mode 100644 index 0000000..048064a --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/51008.sql @@ -0,0 +1,71 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Heilquelle (51008) +-- + +SELECT 'Heilquellen werden bearbeitet.'; + +-- Symbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Gewässer' AS thema, + 'ax_heilquellegasquelle' AS layer, + st_multi(wkb_geometry), + 0 AS drehwinkel, + 3529 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_heilquellegasquelle; + +-- Texte +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Gewässer' AS thema, + 'ax_heilquellegasquelle' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,o.wkb_geometry) AS point, + CASE + WHEN o.art=4010 THEN 'Hqu' + WHEN o.art=4020 THEN 'Gqu' + END AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4073') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_heilquellegasquelle o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ART' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ART' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS n; + +-- Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Gewässer' AS thema, + 'ax_heilquellegasquelle' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4108') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_heilquellegasquelle o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND NOT name IS NULL +) AS n; diff --git a/postprocessing.d/1_ableitungsregeln/51009.sql b/postprocessing.d/1_ableitungsregeln/51009.sql new file mode 100644 index 0000000..7cfe043 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/51009.sql @@ -0,0 +1,195 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Sonstiges Bauwerk oder sonstige Einrichtung (51009) +-- + +SELECT 'Sonstige Bauwerke oder Einrichtungen werden bearbeitet.'; + +-- Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Gebäude' AS thema, + 'ax_sonstigesbauwerkodersonstigeeinrichtung' AS layer, + polygon, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + st_multi(wkb_geometry) AS polygon, + CASE + WHEN bauwerksfunktion IN (1610,1611) THEN 20311304 + WHEN bauwerksfunktion IN (1620,1621,1622,1650,1670,1700,1720) THEN 1305 + WHEN bauwerksfunktion IN (1750,9999) THEN 1330 + WHEN bauwerksfunktion IN (1780,1782) THEN 1525 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_sonstigesbauwerkodersonstigeeinrichtung o + WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Linien +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Gebäude' AS thema, + 'ax_sonstigesbauwerkodersonstigeeinrichtung' AS layer, + st_multi(polygon), + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + alkis_bufferline(wkb_geometry,0.5) AS polygon, + CASE + WHEN bauwerksfunktion IN (1701,1702,1703,1721,1722,1723) THEN 2510 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_sonstigesbauwerkodersonstigeeinrichtung o + WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + gml_id, + 'Gebäude' AS thema, + 'ax_sonstigesbauwerkodersonstigeeinrichtung' AS layer, + st_multi(line), + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + wkb_geometry AS line, + CASE + WHEN bauwerksfunktion=1630 THEN 2507 + WHEN bauwerksfunktion=1740 THEN 2507 -- 25073580 + WHEN bauwerksfunktion=1790 THEN 2519 + WHEN bauwerksfunktion=1791 THEN 2002 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_sonstigesbauwerkodersonstigeeinrichtung o + WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Symbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Gebäude' AS thema, + 'ax_sonstigesbauwerkodersonstigeeinrichtung' AS layer, + st_multi(point), + drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + coalesce( + p.wkb_geometry, + CASE + WHEN geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN o.wkb_geometry + WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN st_centroid(o.wkb_geometry) + END + ) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce( + d.signaturnummer, + p.signaturnummer, + CASE + WHEN bauwerksfunktion=1640 THEN '3531' + WHEN bauwerksfunktion=1750 THEN '3532' + WHEN bauwerksfunktion=1760 THEN '3533' + WHEN bauwerksfunktion=1761 THEN '3534' + WHEN bauwerksfunktion IN (1762,1763) THEN '3535' + WHEN bauwerksfunktion=1770 THEN '3536' + WHEN bauwerksfunktion=1780 AND geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN '3529' + WHEN bauwerksfunktion=1781 THEN '3537' + WHEN bauwerksfunktion=1782 THEN '3539' + WHEN bauwerksfunktion=1783 THEN '3540' + END + ) AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_sonstigesbauwerkodersonstigeeinrichtung o + LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='BWF' AND p.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWF' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Texte +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Gebäude' AS thema, + 'ax_sonstigesbauwerkodersonstigeeinrichtung' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce( + t.wkb_geometry, + CASE + WHEN geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN o.wkb_geometry + WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN st_centroid(o.wkb_geometry) + WHEN geometrytype(o.wkb_geometry)='LINESTRING' THEN st_lineinterpolatepoint(o.wkb_geometry,0.5) + END + ) AS point, + CASE + WHEN bauwerksfunktion IN (1650,1670) THEN + coalesce( + t.schriftinhalt, + (SELECT beschreibung FROM ax_bauwerksfunktion_sonstigesbauwerkodersonstigeeinrichtun WHERE wert=bauwerksfunktion) + ) + END AS text, + coalesce( + d.signaturnummer, + t.signaturnummer, + CASE + WHEN bauwerksfunktion IN (1650,1670) THEN '4070' + WHEN bauwerksfunktion IN (1780) THEN '4073' + END + ) AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_sonstigesbauwerkodersonstigeeinrichtung o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BWF' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWF' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS n WHERE NOT text IS NULL AND NOT signaturnummer IS NULL; + +-- Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Gebäude' AS thema, + 'ax_sonstigesbauwerkodersonstigeeinrichtung' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce( + t.wkb_geometry, + CASE + WHEN geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN o.wkb_geometry + WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN st_centroid(o.wkb_geometry) + WHEN geometrytype(o.wkb_geometry)='LINESTRING' THEN st_lineinterpolatepoint(o.wkb_geometry,0.5) + END + ) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4107') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_sonstigesbauwerkodersonstigeeinrichtung o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND NOT name IS NULL +) AS n; diff --git a/postprocessing.d/1_ableitungsregeln/51010.sql b/postprocessing.d/1_ableitungsregeln/51010.sql new file mode 100644 index 0000000..a2f8c18 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/51010.sql @@ -0,0 +1,168 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Einrichtung in öffentlichen Bereichen (51010) +-- TODO: 1500 Bahnschranke? +-- + +SELECT 'Einrichtungen in öffentlichen Bereichen werden bearbeitet.'; + +-- Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_einrichtunginoeffentlichenbereichen' AS layer, + polygon, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + st_multi(wkb_geometry) AS polygon, + CASE + WHEN o.art=1110 THEN 1330 + WHEN o.art=1510 THEN 2521 + WHEN o.art=9999 THEN 1330 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_einrichtunginoeffentlichenbereichen o + WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Punktsymbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ax_einrichtunginoeffentlichenbereichen' AS layer, + coalesce( + p.wkb_geometry, + st_multi(o.wkb_geometry) + ) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce( + d.signaturnummer, + p.signaturnummer, + CASE + WHEN o.art=1100 THEN '3541' + WHEN o.art=1110 THEN '3542' + WHEN o.art=1120 THEN '3544' + WHEN o.art=1130 THEN '3545' + WHEN o.art=1140 THEN '3546' + WHEN o.art=1150 THEN '3547' + WHEN o.art=1200 THEN '3548' + WHEN o.art=1300 THEN '3549' + WHEN o.art=1310 THEN '3550' + WHEN o.art=1320 THEN '3551' + WHEN o.art=1330 THEN '3552' + WHEN o.art=1340 THEN '3553' + WHEN o.art=1350 THEN '3554' + WHEN o.art IN (1400,1410,1420) THEN '3556' + WHEN o.art=1600 THEN '3557' + WHEN o.art=1610 THEN '3558' + WHEN o.art=1620 THEN '3559' + WHEN o.art=1630 THEN '3560' + WHEN o.art=1640 THEN '3561' + WHEN o.art=1650 THEN '3562' + WHEN o.art=1700 THEN '3563' + WHEN o.art=1710 THEN '3564' + WHEN o.art=1910 THEN '3565' + WHEN o.art=2100 THEN '3566' + WHEN o.art=2200 THEN '3567' + WHEN o.art=2300 THEN '3568' + WHEN o.art=2400 THEN '3569' + WHEN o.art=2500 THEN '3570' + WHEN o.art=2600 THEN '3571' + END + ) AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_einrichtunginoeffentlichenbereichen o +LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='ART' AND p.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ART' AND d.endet IS NULL +WHERE geometrytype(coalesce(p.wkb_geometry,o.wkb_geometry)) IN ('POINT','MULTIPOINT') AND o.endet IS NULL; + +-- Flächensymbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_einrichtunginoeffentlichenbereichen' AS layer, + st_multi(point), + drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + coalesce( + p.wkb_geometry, + st_centroid(o.wkb_geometry) + ) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce( + d.signaturnummer, + p.signaturnummer, + CASE + WHEN o.art=1110 THEN '3543' + WHEN o.art=2200 THEN '3567' + END + ) AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_einrichtunginoeffentlichenbereichen o + LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='ART' AND p.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ART' AND d.endet IS NULL + WHERE o.endet IS NULL AND geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') +) AS o WHERE NOT signaturnummer IS NULL; + +-- Linien +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_einrichtunginoeffentlichenbereichen' AS layer, + st_multi(line), + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + wkb_geometry AS line, + CASE WHEN o.art=1650 THEN 2002 END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_einrichtunginoeffentlichenbereichen o + WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Texte Ortsdurchfahrtstein +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ax_einrichtunginoeffentlichenbereichen' AS layer, + coalesce(t.wkb_geometry,o.wkb_geometry) AS point, + 'OD' AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_einrichtunginoeffentlichenbereichen o +LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ART' AND t.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ART' AND d.endet IS NULL +WHERE o.endet IS NULL AND o.art=1420; + +-- Texte +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ax_einrichtunginoeffentlichenbereichen' AS layer, + coalesce(t.wkb_geometry,o.wkb_geometry) AS point, + kilometerangabe AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_einrichtunginoeffentlichenbereichen o +LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='KMA' AND t.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='KMA' AND d.endet IS NULL +WHERE o.endet IS NULL AND NOT kilometerangabe IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/53001.sql b/postprocessing.d/1_ableitungsregeln/53001.sql new file mode 100644 index 0000000..9c1969e --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/53001.sql @@ -0,0 +1,170 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Bauwerk im Verkehrsbereich (53001) +-- TODO: Ausrichtung Symbol am Steg 1820? +-- + +SELECT 'Bauwerke in Verkehrsbereich werden bearbeitet.'; + +-- Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_bauwerkimverkehrsbereich' AS layer, + polygon, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + st_multi(wkb_geometry) AS polygon, + CASE + WHEN bauwerksfunktion IN (1800,1801,1802,1803,1804,1805,1806,1807,1808,1810,1830) THEN 1530 + WHEN bauwerksfunktion=1840 THEN 1531 + WHEN bauwerksfunktion=1850 THEN 1532 + WHEN bauwerksfunktion=1870 THEN 1533 + WHEN bauwerksfunktion=1880 THEN 1534 + WHEN bauwerksfunktion=1890 THEN 1535 + WHEN bauwerksfunktion=1900 THEN 2305 + WHEN bauwerksfunktion=9999 THEN 1536 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_bauwerkimverkehrsbereich o + WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Linien +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_bauwerkimverkehrsbereich' AS layer, + st_multi(line), + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + wkb_geometry AS line, + CASE + WHEN bauwerksfunktion=1820 THEN 2530 + WHEN bauwerksfunktion=1845 THEN 2533 + WHEN bauwerksfunktion=1900 THEN 2505 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_bauwerkimverkehrsbereich o + WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Punkte +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_bauwerkimverkehrsbereich' AS layer, + st_multi(point), + drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + wkb_geometry AS point, + 0 AS drehwinkel, + CASE + WHEN bauwerksfunktion=1840 THEN 3572 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_bauwerkimverkehrsbereich o + WHERE geometrytype(wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Schutzgalerieanschrieb +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_bauwerkimverkehrsbereich' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,'Schutzgalerie') AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_bauwerkimverkehrsbereich o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BWF' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWF' AND d.endet IS NULL + WHERE o.endet IS NULL AND bauwerksfunktion=1880 +) AS n; + +-- Anflugbefeuerung +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ax_bauwerkimverkehrsbereich' AS layer, + st_multi(coalesce(p.wkb_geometry,o.wkb_geometry)) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce(d.signaturnummer,p.signaturnummer,'3573') AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_bauwerkimverkehrsbereich o +LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='BWF' AND p.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWF' AND d.endet IS NULL +WHERE o.endet IS NULL AND bauwerksfunktion=1910 AND geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT'); + +-- Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_bauwerkimverkehrsbereich' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4107') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_bauwerkimverkehrsbereich o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND NOT name IS NULL +) AS n; + +-- Außer Betrieb +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_bauwerkimverkehrsbereich' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + '(außer Betrieb)'::text AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_bauwerkimverkehrsbereich o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND zustand=2100 +) AS n; diff --git a/postprocessing.d/1_ableitungsregeln/53002.sql b/postprocessing.d/1_ableitungsregeln/53002.sql new file mode 100644 index 0000000..8baadf0 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/53002.sql @@ -0,0 +1,131 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Straßenverkehrsanlage (53002) +-- + +SELECT 'Straßenverkehrsanlagen werden bearbeitet.'; + +-- Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_strassenverkehrsanlage' AS layer, + polygon, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + st_multi(wkb_geometry) AS polygon, + CASE + WHEN o.art=1000 THEN 1540 + WHEN o.art=2000 THEN 1320 + WHEN o.art=9999 THEN 1548 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_strassenverkehrsanlage o + WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Linien +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_strassenverkehrsanlage' AS layer, + st_multi(line), + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + wkb_geometry AS line, + CASE + WHEN o.art=1010 THEN 2527 + WHEN o.art=1011 THEN 2506 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_strassenverkehrsanlage o + WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Bezeichnungen +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ax_strassenverkehrsanlage' AS layer, + st_multi(coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry))) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce(d.signaturnummer,p.signaturnummer,'3574') AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_strassenverkehrsanlage o +LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='BEZ' AND p.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BEZ' AND d.endet IS NULL +WHERE o.endet IS NULL AND NOT bezeichnung IS NULL; + +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ax_strassenverkehrsanlage' AS layer, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + bezeichnung AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4052') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_strassenverkehrsanlage o +LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BEZ_TEXT' AND t.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BEZ_TEXT' AND d.endet IS NULL +WHERE o.endet IS NULL AND NOT bezeichnung IS NULL; + +-- Furt Texte +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_strassenverkehrsanlage' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + (SELECT beschreibung FROM ax_art_strassenverkehrsanlage WHERE wert=o.art) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4100') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_strassenverkehrsanlage o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ART' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ART' AND d.endet IS NULL + WHERE o.endet IS NULL AND o.art=2000 +) AS n WHERE NOT text IS NULL; + +-- Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_strassenverkehrsanlage' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4141') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_strassenverkehrsanlage o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND NOT name IS NULL OR NOT t.schriftinhalt IS NULL +) AS n WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/53003.sql b/postprocessing.d/1_ableitungsregeln/53003.sql new file mode 100644 index 0000000..07fa6b4 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/53003.sql @@ -0,0 +1,140 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Weg, Pfad, Steig (53003) +-- + +SELECT 'Wege, Pfade und Steige werden bearbeitet.'; + +-- Linien +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_wegpfadsteig' AS layer, + st_multi(line), + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + wkb_geometry AS line, + CASE + WHEN o.art IN (1103,1105,1106,1107,1110,1111) THEN 2535 + WHEN o.art=1108 THEN 2537 + WHEN o.art=1109 THEN 2539 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_wegpfadsteig o + WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_wegpfadsteig' AS layer, + polygon, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + st_multi(wkb_geometry) AS polygon, + CASE + WHEN o.art IN (1103,1105,1106,1107,1110,1111) THEN 1542 + WHEN o.art=1108 THEN 1543 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_wegpfadsteig o + WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Symbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_wegpfadsteig' AS layer, + st_multi(point), + drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + coalesce( + p.wkb_geometry, + CASE + WHEN geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN o.wkb_geometry + WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN st_centroid(o.wkb_geometry) + WHEN geometrytype(o.wkb_geometry)='LINESTRING' THEN st_lineinterpolatepoint(o.wkb_geometry,0.5) + END + ) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce( + d.signaturnummer, + p.signaturnummer, + CASE + WHEN o.art=1106 THEN '3426' + WHEN o.art=1107 THEN '3430' + WHEN o.art=1110 THEN '3428' + WHEN o.art=1111 THEN '3576' + END + ) AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_wegpfadsteig o + LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='ART' AND p.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ART' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_wegpfadsteig' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4109') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_wegpfadsteig o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) +) AS n WHERE NOT text IS NULL; + +-- Name +INSERT INTO po_labels(gml_id,thema,layer,line,text,signaturnummer,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_wegpfadsteig' AS layer, + line, + text, + signaturnummer, + horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + t.wkb_geometry AS line, + coalesce(d.signaturnummer,t.signaturnummer,'4109') AS signaturnummer, + coalesce(t.schriftinhalt,name) AS text, + horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_wegpfadsteig o + LEFT OUTER JOIN ap_lto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) +) AS n WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/53004.sql b/postprocessing.d/1_ableitungsregeln/53004.sql new file mode 100644 index 0000000..1e3ff86 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/53004.sql @@ -0,0 +1,133 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Bahnverkehrsanlage (53004) +-- + +SELECT 'Bahnverkehrsanlagen werden bearbeitet.'; + +-- Bauwerksfunktion, Anschrieb +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_bahnverkehrsanlage' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce( + t.wkb_geometry, + CASE + WHEN geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN o.wkb_geometry + WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN st_centroid(o.wkb_geometry) + WHEN geometrytype(o.wkb_geometry)='LINESTRING' THEN st_lineinterpolatepoint(o.wkb_geometry,0.5) + END + ) AS point, + CASE + WHEN bahnhofskategorie=1010 THEN + CASE + WHEN name IS NULL AND n.schriftinhalt IS NULL THEN + -- WHEN bahnkategorie IN (1100,1102,1104,1200,1201,1202,1300,1301,1400,1500,1600,9999) THEN 'Bahnhof' + 'Bahnhof' + ELSE + coalesce(n.schriftinhalt,name) + END + WHEN bahnhofskategorie IN (1020,1030) THEN + coalesce(n.schriftinhalt,name) + END AS text, + coalesce( + d.signaturnummer, + t.signaturnummer, + n.signaturnummer, + CASE + WHEN bahnhofskategorie=1010 THEN + CASE + WHEN name IS NULL AND n.schriftinhalt IS NULL THEN '4141' + ELSE '4140' + END + ELSE + '4107' + END + ) AS signaturnummer, + CASE WHEN name IS NULL AND n.schriftinhalt IS NULL THEN t.drehwinkel ELSE n.drehwinkel END AS drehwinkel, + CASE WHEN name IS NULL AND n.horizontaleausrichtung IS NULL THEN t.horizontaleausrichtung ELSE n.horizontaleausrichtung END AS horizontaleausrichtung, + CASE WHEN name IS NULL AND n.vertikaleausrichtung IS NULL THEN t.vertikaleausrichtung ELSE n.vertikaleausrichtung END AS vertikaleausrichtung, + CASE WHEN name IS NULL AND n.skalierung IS NULL THEN t.skalierung ELSE n.skalierung END AS skalierung, + CASE WHEN name IS NULL AND n.fontsperrung IS NULL THEN t.fontsperrung ELSE n.fontsperrung END AS fontsperrung, + coalesce( + t.advstandardmodell||t.sonstigesmodell||n.advstandardmodell||n.sonstigesmodell, + o.advstandardmodell||o.sonstigesmodell + ) AS modell + FROM ax_bahnverkehrsanlage o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BFK' AND t.endet IS NULL + LEFT OUTER JOIN ap_pto n ON ARRAY[o.gml_id] <@ n.dientzurdarstellungvon AND n.art='NAM' AND n.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art IN ('BFK','NAM') AND d.endet IS NULL + WHERE o.endet IS NULL +) AS n WHERE NOT text IS NULL; + +-- Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_bahnverkehrsanlage' AS layer, + st_multi(wkb_geometry) AS polygon, + 1541 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_bahnverkehrsanlage o +WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON'); + +-- Symbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_bahnverkehrsanlage' AS layer, + st_multi(point), + drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + coalesce( + p.wkb_geometry, + CASE + WHEN geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN o.wkb_geometry + WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN st_centroid(o.wkb_geometry) + WHEN geometrytype(o.wkb_geometry)='LINESTRING' THEN st_lineinterpolatepoint(o.wkb_geometry,0.5) + END + ) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce( + d.signaturnummer, + p.signaturnummer, + CASE + WHEN bahnhofskategorie=1010 THEN + CASE + WHEN 1104 = ANY(bahnkategorie) THEN '3330' + WHEN 1200 = ANY(bahnkategorie) THEN '3343' + WHEN 1201 = ANY(bahnkategorie) THEN '3554' + WHEN 1201 = ANY(bahnkategorie) THEN '3328' + END + WHEN bahnhofskategorie IN (1020,1030) THEN + CASE + WHEN bahnkategorie && ARRAY[1100,1102,1300,1301,1400,1500,1600,9999] THEN '3578' + WHEN 1104 = ANY(bahnkategorie) THEN '3330' + WHEN 1200 = ANY(bahnkategorie) THEN '3343' + WHEN 1201 = ANY(bahnkategorie) THEN '3554' + WHEN 1201 = ANY(bahnkategorie) THEN '3328' + END + END + ) AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_bahnverkehrsanlage o + LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='BKT' AND p.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BKT' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/53005.sql b/postprocessing.d/1_ableitungsregeln/53005.sql new file mode 100644 index 0000000..f10c5ca --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/53005.sql @@ -0,0 +1,74 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Seilbahn, Schwebebahn (53005) +-- + +SELECT 'Seil- und Schwebebahnen werden bearbeitet.'; + +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_seilbahnschwebebahn' AS layer, + st_multi(wkb_geometry) AS line, + 2001 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_seilbahnschwebebahn o +WHERE endet IS NULL; + +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_seilbahnschwebebahn' AS layer, + st_multi( st_lineinterpolatepoint(line,o.offset) ) AS point, + 0.5*pi()-st_azimuth(st_lineinterpolatepoint(line,o.offset*0.9999), st_lineinterpolatepoint(line,CASE WHEN o.offset=0 THEN 0.001 WHEN o.offset*1.0001>1 THEN 1 ELSE o.offset*1.0001 END)) AS drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + CASE geometrytype(wkb_geometry) WHEN 'MULTILINESTRING' THEN (st_dump(wkb_geometry)).geom ELSE wkb_geometry END AS line, + generate_series( 0, trunc(st_length(wkb_geometry)*1000.0)::int, + CASE + WHEN bahnkategorie IN (2100,2200,2300,2400,2600) THEN 16000 + WHEN bahnkategorie=2500 THEN 20000 + END + ) / 1000.0 / st_length(wkb_geometry) AS offset, + CASE + WHEN bahnkategorie IN (2100,2200) THEN 3642 + WHEN bahnkategorie IN (2300,2400) THEN 3643 + WHEN bahnkategorie=2500 THEN 3644 + WHEN bahnkategorie=2600 THEN 3645 + END AS signaturnummer, + o.advstandardmodell||o.sonstigesmodell AS modell + FROM ax_seilbahnschwebebahn o + WHERE o.endet IS NULL + AND geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') +) AS o WHERE NOT signaturnummer IS NULL; + +-- Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_seilbahnschwebebahn' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(d.signaturnummer,t.signaturnummer,'4107') AS signaturnummer, + coalesce(t.schriftinhalt,name) AS text, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_seilbahnschwebebahn o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) +) AS n WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/53007.sql b/postprocessing.d/1_ableitungsregeln/53007.sql new file mode 100644 index 0000000..2424f95 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/53007.sql @@ -0,0 +1,79 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Flugverkehrsanlage (53007) +-- + +SELECT 'Flugverkehrsanlagen werden bearbeitet.'; + +-- Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_flugverkehrsanlage' AS layer, + st_multi(wkb_geometry) AS polygon, + 1808 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_flugverkehrsanlage o +WHERE o.endet IS NULL AND o.art IN (1310,1320,1330,5531) AND geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON'); + +-- Hubschrauberlandeplatz +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ax_flugverkehrsanlage' AS layer, + st_multi(coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry))) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce(p.signaturnummer,'3588') AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_flugverkehrsanlage o +JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='ART' AND p.endet IS NULL +WHERE o.endet IS NULL AND o.art=5531; + +-- Bake/Leuchtfeuer/Kilometerstein +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ax_flugverkehrsanlage' AS layer, + st_multi(coalesce(p.wkb_geometry,o.wkb_geometry)) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce( + p.signaturnummer, + CASE + WHEN o.art=1410 THEN '3589' + WHEN o.art=1420 THEN '3590' + WHEN o.art=1430 THEN '3556' + END + ) AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_flugverkehrsanlage o +JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='ART' AND p.endet IS NULL +WHERE o.endet IS NULL AND o.art IN (1410,1420,1430) AND geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT'); + +-- Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_flugverkehrsanlage' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4107') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_flugverkehrsanlage o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND NOT name IS NULL OR NOT t.schriftinhalt IS NULL +) AS n WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/53008.sql b/postprocessing.d/1_ableitungsregeln/53008.sql new file mode 100644 index 0000000..54848a1 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/53008.sql @@ -0,0 +1,79 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Einrichtungen für den Schiffsverkehr (53008) +-- + +SELECT 'Einrichtungen für den Schiffsverkehr werden bearbeitet.'; + +-- Symbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_einrichtungenfuerdenschiffsverkehr' AS layer, + st_multi(wkb_geometry) AS point, + 0 AS drehwinkel, + CASE + WHEN art=1420 THEN 3590 + WHEN art=1430 THEN 3556 + WHEN art=1440 THEN 3583 + WHEN art=1450 THEN 3584 + WHEN art=9999 THEN 3640 + END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_einrichtungenfuerdenschiffsverkehr o +WHERE geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL; + +-- Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_einrichtungenfuerdenschiffsverkehr' AS layer, + st_multi(wkb_geometry) AS polygon, + 1544 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_einrichtungenfuerdenschiffsverkehr +WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL; + +-- Kilometerangaben +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ax_einrichtungenfuerdenschiffsverkehr' AS layer, + coalesce(t.wkb_geometry,st_translate(o.wkb_geometry,5,0)) AS point, + kilometerangabe AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4101') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_einrichtungenfuerdenschiffsverkehr o +LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='KMA' AND t.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='KMA' AND d.endet IS NULL +WHERE o.endet IS NULL AND NOT kilometerangabe IS NULL; + +-- Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_einrichtungenfuerdenschiffsverkehr' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4081') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_einrichtungenfuerdenschiffsverkehr o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) +) AS n WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/53009.sql b/postprocessing.d/1_ableitungsregeln/53009.sql new file mode 100644 index 0000000..9c27719 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/53009.sql @@ -0,0 +1,219 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Bauwerk im Gewässerbereich (53009) +-- + +SELECT 'Bauwerke im Gewässerbereich werden bearbeitet.'; + +-- Linien +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Gewässer' AS thema, + 'ax_bauwerkimgewaesserbereich' AS layer, + st_multi(polygon), + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + alkis_bufferline(wkb_geometry,0.5) AS polygon, + CASE + WHEN bauwerksfunktion=2136 THEN 2510 + WHEN bauwerksfunktion=2060 THEN 2526 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_bauwerkimgewaesserbereich o + WHERE geometrytype(o.wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + gml_id, + 'Gewässer' AS thema, + 'ax_bauwerkimgewaesserbereich' AS layer, + st_multi(line), + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + wkb_geometry AS line, + CASE + WHEN bauwerksfunktion IN (2010,2011,2070) THEN 2560 + WHEN bauwerksfunktion=2012 THEN 2561 + WHEN bauwerksfunktion=2050 THEN 2003 -- 20033650 + WHEN bauwerksfunktion=2080 THEN 2003 -- 20033593 + WHEN bauwerksfunktion=2090 THEN 2003 -- 20033594 + WHEN bauwerksfunktion=2132 THEN 2003 -- 20033638 + WHEN bauwerksfunktion=9999 THEN 2003 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_bauwerkimgewaesserbereich o + WHERE geometrytype(o.wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- TODO: Linienbegleitende Signaturen + +-- Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Gewässer' AS thema, + 'ax_bauwerkimgewaesserbereich' AS layer, + polygon, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + st_multi(wkb_geometry) AS polygon, + CASE + WHEN bauwerksfunktion IN (2010,2011,2070) THEN 1550 + WHEN bauwerksfunktion=2020 THEN 1551 + WHEN bauwerksfunktion=2030 THEN + CASE WHEN zustand=4000 THEN 1552 ELSE 1305 END + WHEN bauwerksfunktion=2040 THEN + CASE WHEN zustand=4000 THEN 1552 ELSE 1551 END + WHEN bauwerksfunktion IN (2050,2060,2080,2110,9999) THEN 1548 + WHEN bauwerksfunktion=2090 THEN 1305 + WHEN bauwerksfunktion IN (2131,2133) THEN 1308 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_bauwerkimgewaesserbereich o + WHERE geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Symbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Gewässer' AS thema, + 'ax_bauwerkimgewaesserbereich' AS layer, + st_multi(point), + drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce( + p.signaturnummer, + CASE + WHEN bauwerksfunktion=2050 THEN '3653' + WHEN bauwerksfunktion=2060 THEN '3592' + WHEN bauwerksfunktion=2080 THEN '3593' + WHEN bauwerksfunktion=2090 THEN '3594' + WHEN bauwerksfunktion=2110 THEN '3595' + WHEN bauwerksfunktion=2131 THEN '3482' + END + ) AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_bauwerkimgewaesserbereich o + JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='BWF' AND p.endet IS NULL + WHERE o.endet IS NULL AND geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') +) AS o WHERE NOT signaturnummer IS NULL; + +-- Punkte +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Gewässer' AS thema, + 'ax_bauwerkimgewaesserbereich' AS layer, + st_multi(point), + drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + wkb_geometry AS point, + 0 AS drehwinkel, + CASE + WHEN bauwerksfunktion=2120 THEN 3596 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_bauwerkimgewaesserbereich o + WHERE geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Texte +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Gewässer' AS thema, + 'ax_bauwerkimgewaesserbereich' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + (SELECT beschreibung FROM ax_bauwerksfunktion_bauwerkimgewaesserbereich WHERE wert=o.bauwerksfunktion) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4105') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_bauwerkimgewaesserbereich o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BWF' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWF' AND d.endet IS NULL + WHERE o.endet IS NULL AND bauwerksfunktion=2020 +) AS n WHERE NOT text IS NULL; + +-- Zustand +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Gewässer' AS thema, + 'ax_bauwerkimgewaesserbereich' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + CASE + WHEN zustand=2100 THEN '(außer Betrieb)' + WHEN zustand=4000 THEN + (SELECT beschreibung FROM ax_bauwerksfunktion_bauwerkimgewaesserbereich WHERE wert=o.bauwerksfunktion) + || E' (im Bau)' + END AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_bauwerkimgewaesserbereich o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ZUS' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ZUS' AND d.endet IS NULL + WHERE o.endet IS NULL AND bauwerksfunktion IN (2030,2040) AND NOT zustand IS NULL +) AS n WHERE NOT text IS NULL; + +-- Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Gewässer' AS thema, + 'ax_bauwerkimgewaesserbereich' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4074') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_bauwerkimgewaesserbereich o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) +) AS n WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/54001.sql b/postprocessing.d/1_ableitungsregeln/54001.sql new file mode 100644 index 0000000..975ff91 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/54001.sql @@ -0,0 +1,238 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Vegetationsmerkmale (54001) +-- + +SELECT 'Vegetationsmerkmale werden verarbeitet.'; + +-- Punkte +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Vegetation' AS thema, + 'ax_vegetationsmerkmal' AS layer, + st_multi(point), + drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + wkb_geometry AS point, + 0 AS drehwinkel, + CASE + WHEN bewuchs=1011 THEN 3597 + WHEN bewuchs=1012 THEN 3599 + WHEN bewuchs=1400 THEN 3603 + WHEN bewuchs=1700 THEN 3607 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_vegetationsmerkmal o + WHERE geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Punktförmige Begleitsignaturen an Linien +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Vegetation' AS thema, + 'ax_vegetationsmerkmal' AS layer, + st_multi(st_collect(st_lineinterpolatepoint(line,CASE WHEN a.offset<0 THEN 0 WHEN a.offset>1 THEN 1 ELSE a.offset END))) AS point, + 0 AS drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + gml_id, + signaturnummer, + line, + generate_series(einzug,trunc(st_length(line)*1000.0)::int,abstand)/100.0/st_length(line) AS offset, + modell + FROM ( + SELECT + gml_id, + bewuchs, + einzug, + abstand, + CASE geometrytype(line) WHEN 'MULTILINESTRING' THEN (st_dump(line)).geom ELSE line END AS line, + signaturnummer, + modell + FROM ( + SELECT + gml_id, + bewuchs, + CASE + WHEN bewuchs IN (1100,1230,1260) THEN 0 + WHEN bewuchs IN (1101,1102) THEN 300 + WHEN bewuchs=1103 THEN unnest(ARRAY[300,600]) + WHEN bewuchs IN (1210,1220) THEN 186 + WHEN bewuchs=1230 THEN unnest(ARRAY[1000,2000]) + END AS einzug, + CASE + WHEN bewuchs IN (1100,1101,1102,1210,1220,1260) THEN 600 + WHEN bewuchs=1103 THEN unnest(ARRAY[1200,1200]) + WHEN bewuchs=1210 THEN 1000 + WHEN bewuchs=1230 THEN unnest(ARRAY[2000,2000]) + END AS abstand, + CASE + WHEN bewuchs IN (1100,1210,1220,1260) THEN wkb_geometry + WHEN bewuchs=1101 THEN st_reverse(alkis_safe_offsetcurve(wkb_geometry,-0.11,''::text)) + WHEN bewuchs=1102 THEN alkis_safe_offsetcurve(wkb_geometry,0.11,''::text) + WHEN bewuchs=1103 THEN + unnest(ARRAY[ + st_reverse(alkis_safe_offsetcurve(wkb_geometry,-0.11,''::text)), + alkis_safe_offsetcurve(wkb_geometry,0.11,'') + ]) + WHEN bewuchs=1230 THEN + unnest(ARRAY[ + wkb_geometry, + wkb_geometry + ]) + END AS line, + CASE + WHEN bewuchs IN (1100,1101,1102,1103) THEN 3601 + WHEN bewuchs=1210 THEN 3458 + WHEN bewuchs=1220 THEN 3460 + WHEN bewuchs=1230 THEN unnest(ARRAY[3458,3460]) + WHEN bewuchs=1260 THEN 3601 + WHEN bewuchs=1700 THEN 3607 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_vegetationsmerkmal o + WHERE o.endet IS NULL + AND geometrytype(o.wkb_geometry) IN ('LINESTRING','MULTILINESTRING') + ) AS a + ) AS a +) AS a +GROUP BY gml_id,signaturnummer,modell; + +-- Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Vegetation' AS thema, + 'ax_vegetationsmerkmal' AS layer, + polygon, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + st_multi(wkb_geometry) AS polygon, + CASE + WHEN bewuchs IN (1021,1022,1023,1050,1260,1400,1500,1510,1600,1700,1800) THEN 1560 + WHEN bewuchs=1300 THEN 1561 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_vegetationsmerkmal o + WHERE geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Flächensymbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Vegetation' AS thema, + 'ax_vegetationsmerkmal' AS layer, + st_multi(point), + 0 AS drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + coalesce(p.wkb_geometry,alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry)) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce( + d.signaturnummer, + p.signaturnummer, + CASE + WHEN bewuchs=1021 THEN '3458' + WHEN bewuchs=1022 THEN '3460' + WHEN bewuchs=1023 THEN '3462' + WHEN bewuchs=1050 THEN '3470' + WHEN bewuchs=1260 THEN '3601' + WHEN bewuchs=1400 THEN '3603' + WHEN bewuchs IN (1500,1510) THEN '3413' + WHEN bewuchs=1600 THEN '3605' + WHEN bewuchs=1700 THEN '3607' + WHEN bewuchs=1800 THEN '3609' + END + ) AS signaturnummer, + coalesce( + p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, + o.advstandardmodell||o.sonstigesmodell + ) AS modell + FROM ax_vegetationsmerkmal o + LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='BWS' AND p.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWS' AND d.endet IS NULL + WHERE o.endet IS NULL AND geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') +) AS o WHERE NOT signaturnummer IS NULL; + +-- Zustand nass, Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + o.gml_id, + 'Vegetation' AS thema, + 'ax_vegetationsmerkmal' AS layer, + st_multi(wkb_geometry) AS polygon, + 1563 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_vegetationsmerkmal o +WHERE geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND zustand=5000; + +-- Zustand nass, Symbol +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Vegetation' AS thema, + 'ax_vegetationsmerkmal' AS layer, + st_multi(coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry))) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce(p.signaturnummer,'3478') AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_vegetationsmerkmal o +JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='ZUS' AND p.endet IS NULL +WHERE o.endet IS NULL AND geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND zustand=5000; + +-- Schneise, Text +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Vegetation' AS thema, + 'ax_vegetationsmerkmal' AS layer, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + 'Schneise' AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_vegetationsmerkmal o +LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BWS' AND t.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWS' AND d.endet IS NULL +WHERE o.endet IS NULL AND geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND bewuchs=1300; + +-- Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Vegetation' AS thema, + 'ax_vegetationsmerkmal' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4074') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_vegetationsmerkmal o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) +) AS n WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/55001.sql b/postprocessing.d/1_ableitungsregeln/55001.sql new file mode 100644 index 0000000..ffc355b --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/55001.sql @@ -0,0 +1,86 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Turm (55001) +-- + +SELECT 'Türme werden bearbeitet.'; + +-- Turm, Flächen +-- TODO: Punkte? +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Gebäude' AS thema, + 'ax_turm' AS layer, + st_multi(wkb_geometry) AS polygon, + CASE WHEN zustand=2200 THEN 1502 ELSE 1501 END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_turm +WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') + AND endet IS NULL; + +-- Turm, Texte +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Gebäude' AS thema, + 'ax_turm_funktion' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce( + t.schriftinhalt, + CASE + WHEN bauwerksfunktion && ARRAY[1000,1010,1011] THEN + (SELECT beschreibung FROM ax_bauwerksfunktion_turm WHERE ARRAY[wert] <@ bauwerksfunktion LIMIT 1) || + CASE + WHEN zustand=2100 THEN E'\n(außer Betrieb)' + WHEN zustand=2200 THEN E'\n(zerstört)' + ELSE '' + END + WHEN bauwerksfunktion && ARRAY[1000,1009,1012,9998] THEN + CASE + WHEN zustand=2100 THEN '(außer Betrieb)' + WHEN zustand=2200 THEN '(zerstört)' + END + END + ) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_turm o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BWF_ZUS' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='BWF_ZUS' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS n WHERE NOT text IS NULL; + +-- Turm, Name +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Gebäude' AS thema, + 'ax_turm_funktion' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4074') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_turm o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND NOT name IS NULL +) AS n; diff --git a/postprocessing.d/1_ableitungsregeln/55002.sql b/postprocessing.d/1_ableitungsregeln/55002.sql new file mode 100644 index 0000000..946d8d2 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/55002.sql @@ -0,0 +1,199 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Untergeordnetes Gewässer (55002) +-- + +SELECT 'Untergeordnete Gewässer werden verarbeitet.'; + +-- Linien +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + gml_id, + 'Gewässer' AS thema, + 'ax_untergeordnetesgewaesser' AS layer, + st_multi(line), + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + wkb_geometry AS line, + CASE + WHEN coalesce(funktion,0) IN (0,1010,1011,1012,1013,1020,1030) THEN + CASE + WHEN lagezurerdoberflaeche IS NULL AND hydrologischesmerkmal IS NULL THEN 2592 + WHEN lagezurerdoberflaeche IN (1800,1810) THEN 2560 + WHEN lagezurerdoberflaeche IS NULL AND hydrologischesmerkmal=2000 THEN 2593 + WHEN lagezurerdoberflaeche IS NULL AND hydrologischesmerkmal=3000 THEN 2595 + END + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_untergeordnetesgewaesser o + WHERE geometrytype(o.wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Gewässer' AS thema, + 'ax_untergeordnetesgewaesser' AS layer, + polygon, + signaturnummer, + modell +FROM ( + SELECT + gml_id, + st_multi(wkb_geometry) AS polygon, + CASE + WHEN coalesce(funktion,0) IN (0,1010,1011,1012,1013,1020,1030) THEN + CASE + WHEN lagezurerdoberflaeche IS NULL AND hydrologischesmerkmal IS NULL THEN 1523 + WHEN lagezurerdoberflaeche IN (1800,1810) THEN 1550 + WHEN lagezurerdoberflaeche IS NULL AND hydrologischesmerkmal=2000 THEN 1572 + WHEN lagezurerdoberflaeche IS NULL AND hydrologischesmerkmal=3000 THEN 1573 + END + WHEN funktion=1040 THEN + CASE + WHEN hydrologischesmerkmal IS NULL THEN 1523 + WHEN hydrologischesmerkmal=2000 THEN 1572 + WHEN hydrologischesmerkmal=3000 THEN 1573 + END + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_untergeordnetesgewaesser o + WHERE geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Symbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Gewässer' AS thema, + 'ax_untergeordnetesgewaesser' AS layer, + st_multi(point), + drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + coalesce( + p.wkb_geometry, + CASE + WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN coalesce(alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry)) + WHEN geometrytype(o.wkb_geometry)='LINESTRING' THEN st_lineinterpolatepoint( alkis_safe_offsetcurve( o.wkb_geometry, 0.8,''::text ), 0.5 ) + END + ) AS point, + coalesce(p.drehwinkel, + CASE + WHEN geometrytype(o.wkb_geometry)='LINESTRING' + THEN 0.5*pi()-st_azimuth( st_lineinterpolatepoint( o.wkb_geometry, 0.501), st_lineinterpolatepoint( o.wkb_geometry, 0.499) ) + ELSE 0 + END + ) AS drehwinkel, + coalesce( + d.signaturnummer, + p.signaturnummer, + CASE + WHEN coalesce(funktion,0) IN (0,1040) THEN '3490' + WHEN funktion IN (1010,1011,1012,1013,1020,1030) THEN + CASE + WHEN lagezurerdoberflaeche IS NULL AND hydrologischesmerkmal IS NULL THEN '3488' + WHEN lagezurerdoberflaeche IN (1800,1810) THEN '3619' + WHEN lagezurerdoberflaeche IS NULL AND hydrologischesmerkmal=2000 THEN '3621' + END + END + ) AS signaturnummer, + coalesce( + p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, + o.advstandardmodell||o.sonstigesmodell + ) AS modell + FROM ax_untergeordnetesgewaesser o + LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='FKT' AND p.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o WHERE NOT point IS NULL; + +-- Texte, Lage zur Oberfläche +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Gewässer' AS thema, + 'ax_untergeordnetesgewaesser' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce( + t.wkb_geometry, + CASE + WHEN geometrytype(o.wkb_geometry) IN ('POINT','MULTIPOINT') THEN o.wkb_geometry + WHEN geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') THEN st_centroid(o.wkb_geometry) + END + ) AS point, + (SELECT beschreibung FROM ax_lagezurerdoberflaeche_untergeordnetesgewaesser WHERE wert=lagezurerdoberflaeche) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_untergeordnetesgewaesser o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='OFL' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='OFL' AND d.endet IS NULL + WHERE o.endet IS NULL AND lagezurerdoberflaeche IN (1800,1810) +) AS o WHERE NOT text IS NULL; + +-- Texte, Graben +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Gewässer' AS thema, + 'ax_untergeordnetesgewaesser' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce( + t.wkb_geometry, + st_centroid(o.wkb_geometry) + ) AS point, + 'Graben'::text AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4070') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_untergeordnetesgewaesser o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='FKT' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='FKT' AND d.endet IS NULL + WHERE o.endet IS NULL AND funktion=1013 AND lagezurerdoberflaeche IS NULL AND hydrologischesmerkmal=3000 +) AS o WHERE NOT text IS NULL; + +-- Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Gewässer' AS thema, + 'ax_untergeordnetesgewaesser' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4117') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_untergeordnetesgewaesser o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/55006.sql b/postprocessing.d/1_ableitungsregeln/55006.sql new file mode 100644 index 0000000..7b6cdee --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/55006.sql @@ -0,0 +1,113 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Gleis (55006) +-- + +SELECT 'Gleise werden bearbeitet.'; + +-- Drehscheibe, Fläche +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_gleis' AS layer, + st_multi(wkb_geometry) AS polygon, + 1541 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_gleis o +WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND NOT bahnkategorie IS NULL AND o.art=1200 AND endet IS NULL; + +-- Drehscheibe, Symbol +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ax_gleis' AS layer, + st_multi(coalesce(p.wkb_geometry,st_centroid(o.wkb_geometry))) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce(p.signaturnummer,'3587') AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_gleis o +JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='ART' AND p.endet IS NULL +WHERE o.endet IS NULL AND geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND NOT bahnkategorie IS NULL AND o.art=1200; + +-- Gleis, Punktsignaturen auf Linien +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_gleis' AS layer, + st_multi( st_lineinterpolatepoint(line,o.offset) ) AS point, + 0.5*pi()-st_azimuth( st_lineinterpolatepoint(line,o.offset*0.9999), st_lineinterpolatepoint(line,CASE WHEN o.offset=0 THEN 0.001 WHEN o.offset*1.0001>1 THEN 1 ELSE o.offset*1.0001 END) ) AS drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + o.wkb_geometry AS line, + generate_series(0,trunc(st_length(wkb_geometry)*1000.0)::int, + CASE + WHEN bahnkategorie && ARRAY[1201,1300,1302] THEN 16000 + WHEN 1301 = ANY(bahnkategorie) THEN 8000 + WHEN 1600 = ANY(bahnkategorie) THEN 20000 + END + ) / 1000.0 / st_length(wkb_geometry) AS offset, + CASE + WHEN 1201 = ANY(bahnkategorie) THEN 3646 + WHEN bahnkategorie && ARRAY[1300,1301] THEN 3647 + WHEN 1302 = ANY(bahnkategorie) THEN 3648 + WHEN 1600 = ANY(bahnkategorie) THEN 3649 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_gleis o + WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Gleis, Linien +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_gleis' AS layer, + st_multi(line), + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + wkb_geometry AS line, + CASE + WHEN lagezuroberflaeche IS NULL THEN 2525 + WHEN lagezuroberflaeche=1200 THEN 2300 + WHEN lagezuroberflaeche=1400 THEN 2301 + END AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_gleis o + WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL +) AS o WHERE NOT signaturnummer IS NULL; + +-- Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_gleis' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4107') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_gleis o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) +) AS n WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/57001.sql b/postprocessing.d/1_ableitungsregeln/57001.sql new file mode 100644 index 0000000..453692b --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/57001.sql @@ -0,0 +1,41 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Wasserspiegelhöhe (57001) +-- + +SELECT 'Wasserspiegelhöhen werden verarbeitet.'; + +-- Symbol +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Gewässer' AS thema, + 'ax_wasserspiegelhoehe' AS layer, + st_multi(coalesce(p.wkb_geometry,o.wkb_geometry)) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce(d.signaturnummer,p.signaturnummer,'3623') AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_wasserspiegelhoehe o +LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='SYMBOL' AND p.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='SYMBOL' AND d.endet IS NULL +WHERE o.endet IS NULL AND NOT hoehedeswasserspiegels IS NULL; + +-- Wasserspiegeltext +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Gewässer' AS thema, + 'ax_wasserspiegelhoehe' AS layer, + coalesce(t.wkb_geometry,st_translate(st_centroid(o.wkb_geometry),-3.5,0)) AS point, + hoehedeswasserspiegels AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4102') AS signaturnummer, + drehwinkel, + coalesce(horizontaleausrichtung,'rechtsbündig'::text) AS horizontaleausrichtung, + vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_wasserspiegelhoehe o +LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='HWS' AND t.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='HWS' AND d.endet IS NULL +WHERE o.endet IS NULL AND NOT hoehedeswasserspiegels IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/57002.sql b/postprocessing.d/1_ableitungsregeln/57002.sql new file mode 100644 index 0000000..f3bb051 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/57002.sql @@ -0,0 +1,85 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Schifffahrtslinie, Fährverkehr (57002) +-- + +SELECT 'Schifffahrtslinien werden verarbeitet.'; + +-- Linien +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ax_schifffahrtsliniefaehrverkehr' AS layer, + st_multi(coalesce(l.wkb_geometry,o.wkb_geometry)) AS line, + coalesce( + d.signaturnummer, + l.signaturnummer, + CASE + WHEN o.art=ARRAY[1740] THEN '2592' + ELSE '2609' + END + ) AS signaturnummer, + coalesce(l.advstandardmodell||l.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_schifffahrtsliniefaehrverkehr o +LEFT OUTER JOIN ap_lpo l ON ARRAY[o.gml_id] <@ l.dientzurdarstellungvon AND l.art='Schifffahrtslinie' AND l.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='Schifffahrtslinie' AND d.endet IS NULL +WHERE o.endet IS NULL AND o.art IS NULL; + +-- Texte +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_schifffahrtsliniefaehrverkehr' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce( + t.schriftinhalt, + CASE + WHEN o.art IN (ARRAY[1710], ARRAY[1710,1730]) THEN 'Autofähre' + WHEN o.art=ARRAY[1710,1720] THEN 'Auto- und Eisenbahnfähre' + WHEN o.art IN (ARRAY[1720], ARRAY[1720,1730]) THEN 'Eisenbahnfähre' + WHEN o.art=ARRAY[1730] THEN 'Personenfähre' + END + ) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4103') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_schifffahrtsliniefaehrverkehr o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ART' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ART' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS a WHERE NOT text IS NULL; + +-- Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ax_schifffahrtsliniefaehrverkehr' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,o.name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4107') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_schifffahrtsliniefaehrverkehr o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) +) AS n WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/59102.sql b/postprocessing.d/1_ableitungsregeln/59102.sql new file mode 100644 index 0000000..9856265 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/59102.sql @@ -0,0 +1,75 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Einrichtungen im öffentlichen Bereichen (59102; NRW) +-- + +SELECT 'Einrichtungen im öffentlichen Bereichen (NRW) werden bearbeitet.'; + +-- Punkte +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ks_einrichtunginoeffentlichenbereichen' AS layer, + st_multi(wkb_geometry) AS point, + 0 AS drehwinkel, + CASE + WHEN art='1100' THEN 'KS_1014' + WHEN art='1200' THEN 'KS_1002' + WHEN art='1300' THEN 'KS_1003' + WHEN art='1400' THEN 'KS_1004' + WHEN art='1500' THEN 'KS_1005' + WHEN art='1600' THEN 'KS_1006' + WHEN art='1700' THEN 'KS_1027' + ELSE 'KS_1001' + END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_einrichtunginoeffentlichenbereichen o +WHERE geometrytype(wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL; + +-- Linien +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ks_einrichtunginoeffentlichenbereichen' AS layer, + st_multi(wkb_geometry) AS point, + 'KS_2001' AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_einrichtunginoeffentlichenbereichen o +WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL; + +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Verkehr' AS thema, + 'ks_einrichtunginoeffentlichenbereichen' AS layer, + st_multi( st_lineinterpolatepoint(line,o.offset) ) AS point, + 0.5*pi()-st_azimuth( st_lineinterpolatepoint(line,o.offset*0.9999), st_lineinterpolatepoint(line,CASE WHEN o.offset=0 THEN 0.001 WHEN o.offset*1.0001>1 THEN 1 ELSE o.offset*1.0001 END) ) AS drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + o.wkb_geometry AS line, + generate_series(125,trunc(st_length(wkb_geometry)*1000.0-125)::int,250) / 1000.0 / st_length(wkb_geometry) AS offset, + 'KS_1003' AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ks_einrichtunginoeffentlichenbereichen o + WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL AND art='1300' +) AS o WHERE NOT signaturnummer IS NULL; + + +-- Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ks_einrichtunginoeffentlichenbereichen' AS layer, + st_multi(wkb_geometry) AS polygon, + 'KS_3001' AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_einrichtunginoeffentlichenbereichen o +WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/59103.sql b/postprocessing.d/1_ableitungsregeln/59103.sql new file mode 100644 index 0000000..27ce925 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/59103.sql @@ -0,0 +1,51 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Bauwerk, Anlagen für Ver- und Entsorgen (59103; NRW) +-- + +SELECT 'Bauwerke und Anlagen für Ver- und Entsorgen (NRW) werden bearbeitet.'; + +-- Punkte +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ks_bauwerkanlagenfuerverundentsorgung' AS layer, + st_multi(wkb_geometry) AS point, + 0 AS drehwinkel, + CASE + WHEN art='1200' THEN 'KS_1007' + WHEN art='1300' THEN 'KS_1008' + WHEN art IN ('1400', '2100', '2200') THEN 'KS_1009' + WHEN art='1500' THEN 'KS_1010' + WHEN art IN ('3100', '3200', '3300', '3400') THEN 'KS_1011' + END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_bauwerkanlagenfuerverundentsorgung o +WHERE geometrytype(wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL; + +-- Linien +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ks_bauwerkanlagenfuerverundentsorgung' AS layer, + st_multi(wkb_geometry) AS point, + 'KS_2002' AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_bauwerkanlagenfuerverundentsorgung o +WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL AND art='1100'; + +-- Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ks_bauwerkanlagenfuerverundentsorgung' AS layer, + st_multi(wkb_geometry) AS polygon, + 'KS_3001' AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_bauwerkanlagenfuerverundentsorgung o +WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL AND art='1100'; diff --git a/postprocessing.d/1_ableitungsregeln/59109.sql b/postprocessing.d/1_ableitungsregeln/59109.sql new file mode 100644 index 0000000..40260be --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/59109.sql @@ -0,0 +1,77 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Sonstiges Bauwerk (59109; NRW) +-- + +SELECT 'Sonstige Bauwerke (NRW) werden bearbeitet.'; + +-- Punkte +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Gebäude' AS thema, + 'ks_sonstigesbauwerk' AS layer, + st_multi(wkb_geometry) AS point, + 0 AS drehwinkel, + 'KS_1012' AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell +FROM ks_sonstigesbauwerk o +WHERE geometrytype(wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL AND bauwerksfunktion='4000'; + +-- Linien +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + o.gml_id, + 'Gebäude' AS thema, + 'ks_sonstigesbauwerk' AS layer, + st_multi(wkb_geometry) AS point, + 'KS_2001' AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_sonstigesbauwerk o +WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL AND bauwerksfunktion='3000'; + +-- Punktförmige Begleitsignaturen an Linien +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Gebäude' AS thema, + 'ks_sonstigesbauwerk' AS layer, + st_multi( st_lineinterpolatepoint(line,o.offset) ) AS point, + winkel-st_azimuth( st_lineinterpolatepoint(line,o.offset*0.9999), st_lineinterpolatepoint(line,CASE WHEN o.offset=0 THEN 0.001 WHEN o.offset*1.0001>1 THEN 1 ELSE o.offset*1.0001 END) ) AS drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + o.wkb_geometry AS line, + generate_series(1000, trunc(st_length(wkb_geometry)*1000.0)::int, 2000) / 1000.0 / st_length(wkb_geometry) AS offset, + 0.5*pi() AS winkel, + 'KS_1026' AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ks_sonstigesbauwerk o + WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL AND bauwerksfunktion='3000' + UNION + SELECT + o.gml_id, + o.wkb_geometry AS line, + generate_series(2000, trunc(st_length(wkb_geometry)*1000.0)::int, 2000) / 1000.0 / st_length(wkb_geometry) AS offset, + 1.5*pi() AS winkel, + 'KS_1026' AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ks_sonstigesbauwerk o + WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL AND bauwerksfunktion='3000' +) AS o WHERE NOT signaturnummer IS NULL; + +-- Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + o.gml_id, + 'Gebäude' AS thema, + 'ks_sonstigesbauwerk' AS layer, + st_multi(wkb_geometry) AS polygon, + 'KS_2001' AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_sonstigesbauwerk o +WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL AND bauwerksfunktion IN (1100, 5000); diff --git a/postprocessing.d/1_ableitungsregeln/59201.sql b/postprocessing.d/1_ableitungsregeln/59201.sql new file mode 100644 index 0000000..4048948 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/59201.sql @@ -0,0 +1,51 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Einrichtung im Straßenverkehr (59201; NRW) +-- + +SELECT 'Einrichtung im Straßenverkehr (NRW) werden bearbeitet.'; + +-- Punkte +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ks_einrichtungimstrassenverkehr' AS layer, + st_multi(wkb_geometry) AS point, + 0 AS drehwinkel, + CASE + WHEN art='4100' THEN 'KS_1013' + ELSE 'KS_1001' + END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_einrichtungimstrassenverkehr o +WHERE geometrytype(wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL; + +-- Linien +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ks_einrichtungimstrassenverkehr' AS layer, + st_multi(wkb_geometry) AS line, + CASE + WHEN art='2200' THEN 'KS_2002' + ELSE 'KS_2001' + END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_einrichtungimstrassenverkehr o +WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL; + +-- Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ks_einrichtungimstrassenverkehr' AS layer, + st_multi(wkb_geometry) AS polygon, + 'KS_3001' AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_einrichtungimstrassenverkehr o +WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/59202.sql b/postprocessing.d/1_ableitungsregeln/59202.sql new file mode 100644 index 0000000..13f199d --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/59202.sql @@ -0,0 +1,56 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Verkehrszeichen (59202; NRW) +-- + +SELECT 'Verkehrszeichen (NRW) werden bearbeitet.'; + +-- Punkte +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ks_verkehrszeichen' AS layer, + st_multi(wkb_geometry) AS point, + 0 AS drehwinkel, + CASE + WHEN gefahrzeichen IS NOT NULL OR vorschriftzeichen IS NOT NULL OR zusatzzeichen IS NOT NULL THEN 'KS_1015' + WHEN 1200 = ANY(richtzeichen) THEN 'KS_1016' + WHEN 1100 = ANY(verkehrseinrichtung) THEN 'KS_1017' + WHEN ARRAY[1210,1220] && verkehrseinrichtung THEN 'KS_1018' + WHEN 1400 = ANY(verkehrseinrichtung) THEN 'KS_1019' + END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_verkehrszeichen o +WHERE geometrytype(wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL; + +-- Linien +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ks_verkehrszeichen' AS layer, + st_multi(wkb_geometry) AS line, + CASE + WHEN 1111 = ANY(richtzeichen) THEN 'KS_2002' + WHEN ARRAY[1110,1199] && verkehrseinrichtung THEN 'KS_2003' + WHEN 1600 = ANY(verkehrseinrichtung) THEN 'KS_2004' + ELSE 'KS_2001' + END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_verkehrszeichen o +WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL; + +-- Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ks_verkehrszeichen' AS layer, + st_multi(wkb_geometry) AS polygon, + 'KS_3001' AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_verkehrszeichen o +WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/59206.sql b/postprocessing.d/1_ableitungsregeln/59206.sql new file mode 100644 index 0000000..c40e209 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/59206.sql @@ -0,0 +1,36 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Einrichtung im Bahnverkehr (59206; NRW) +-- + +SELECT 'Einrichtungen im Bahnverkehr (NRW) werden bearbeitet.'; + +-- Punkte +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ks_einrichtungimbahnverkehr' AS layer, + st_multi(wkb_geometry) AS point, + 0 AS drehwinkel, + CASE + WHEN art=1100 THEN 'KS_1012' + WHEN art=1200 THEN 'KS_1020' + END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_einrichtungimbahnverkehr o +WHERE geometrytype(wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL AND art IN (1100,1200); + +-- Linien +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + o.gml_id, + 'Verkehr' AS thema, + 'ks_einrichtungimbahnverkehr' AS layer, + st_multi(wkb_geometry) AS line, + 'KS_2001' AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_einrichtungimbahnverkehr o +WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL AND art=1100; diff --git a/postprocessing.d/1_ableitungsregeln/59207.sql b/postprocessing.d/1_ableitungsregeln/59207.sql new file mode 100644 index 0000000..e52d45a --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/59207.sql @@ -0,0 +1,36 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Bauwerk im Gewässerbereich (59207; NRW) +-- + +SELECT 'Bauwerke im Gewässerbereich (NRW) werden bearbeitet.'; + +-- Punkte +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Gewässer' AS thema, + 'ks_bauwerkimgewaesserbereich' AS layer, + st_multi(wkb_geometry) AS point, + 0 AS drehwinkel, + 'KS_1022' AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_bauwerkimgewaesserbereich o +WHERE geometrytype(wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL AND bauwerksfunktion=1200; + +-- Linien +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + o.gml_id, + 'Gewässer' AS thema, + 'ks_bauwerkimgewaesserbereich' AS layer, + st_multi(wkb_geometry) AS line, + CASE + WHEN bauwerksfunktion=1100 THEN 'KS_2001' + WHEN bauwerksfunktion=1200 THEN 'KS_2002' + END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_bauwerkimgewaesserbereich o +WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL AND bauwerksfunktion IN (1100,1200); diff --git a/postprocessing.d/1_ableitungsregeln/59301.sql b/postprocessing.d/1_ableitungsregeln/59301.sql new file mode 100644 index 0000000..8f8efe6 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/59301.sql @@ -0,0 +1,37 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Vegetationsmerkmal (59301; NRW) +-- + +SELECT 'Vegetationsmerkmale (NRW) werden bearbeitet.'; + +-- Punkte +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Vegetation' AS thema, + 'ks_vegetationsmerkmal' AS layer, + st_multi(wkb_geometry) AS point, + 0 AS drehwinkel, + CASE + WHEN bewuchs=1013 THEN 'KS_1023' + WHEN bewuchs=2100 THEN 'KS_1024' + WHEN bewuchs=2200 THEN 'KS_1025' + END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_vegetationsmerkmal o +WHERE geometrytype(wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL AND bewuchs IN (1013,2100,2200); + +-- Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + o.gml_id, + 'Vegetation' AS thema, + 'ks_vegetationsmerkmal' AS layer, + st_multi(wkb_geometry) AS polygon, + 'KS_2001' AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_vegetationsmerkmal o +WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL AND bewuchs IN (1100,3100); diff --git a/postprocessing.d/1_ableitungsregeln/59401.sql b/postprocessing.d/1_ableitungsregeln/59401.sql new file mode 100644 index 0000000..22f94cc --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/59401.sql @@ -0,0 +1,31 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Bau-, Raum- oder Bodenordnungsrecht (59401; NRW) +-- + +SELECT 'Bau-, Raum- oder Bodenordnungsrecht (NRW) wird bearbeitet.'; + +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + o.gml_id, + 'Rechtliche Festlegungen' AS thema, + 'ks_bauraumoderbodenordnungsrecht' AS layer, + st_multi(wkb_geometry) AS line, + 'KS_2001' AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_bauraumoderbodenordnungsrecht o +WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL; + +-- Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + o.gml_id, + 'Rechtliche Festlegungen' AS thema, + 'ks_bauraumoderbodenordnungsrecht' AS layer, + st_multi(wkb_geometry) AS polygon, + 'KS_3002' AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_bauraumoderbodenordnungsrecht o +WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/59402.sql b/postprocessing.d/1_ableitungsregeln/59402.sql new file mode 100644 index 0000000..25bdad3 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/59402.sql @@ -0,0 +1,31 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Kommunaler Besitz (59402; NRW) +-- + +SELECT 'Kommunaler Besitz (NRW) wird bearbeitet.'; + +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + o.gml_id, + 'Flurstücke' AS thema, + 'ks_kommunalerbesitz' AS layer, + st_multi(wkb_geometry) AS line, + 'KS_2001' AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_kommunalerbesitz o +WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL; + +-- Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Flurstücke' AS thema, + 'ks_kommunalerbesitz' AS layer, + st_multi(wkb_geometry) AS polygon, + 'KS_3003' AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ks_kommunalerbesitz +WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/61001.sql b/postprocessing.d/1_ableitungsregeln/61001.sql new file mode 100644 index 0000000..f5cf41f --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/61001.sql @@ -0,0 +1,198 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Böschungslinie, Kliff (61001) +-- + +SELECT 'Böschungen und Kliffe werden verarbeitet.'; + +SELECT alkis_dropobject('alkis_boeschung'); +CREATE OR REPLACE FUNCTION pg_temp.alkis_boeschung() RETURNS varchar AS $$ +DECLARE + ok GEOMETRY; + uk GEOMETRY; + sk GEOMETRY; + maxdistance DOUBLE PRECISION; + p0 GEOMETRY; + p1 GEOMETRY; + i INTEGER; + dx DOUBLE PRECISION; + dy DOUBLE PRECISION; + s INTEGER; + l DOUBLE PRECISION; + ol DOUBLE PRECISION; + o DOUBLE PRECISION; + int GEOMETRY; + b GEOMETRY; + b1 GEOMETRY[]; + b1l DOUBLE PRECISION[]; + r0 RECORD; + r1 RECORD; +BEGIN + DELETE FROM po_lines WHERE layer='ax_boeschungkliff'; + + FOR r0 IN SELECT gml_id, advstandardmodell||sonstigesmodell AS modell FROM ax_boeschungkliff WHERE endet IS NULL + LOOP + -- RAISE NOTICE 'gml_id:%', r0.gml_id; + + SELECT st_linemerge(st_collect(wkb_geometry)) INTO uk FROM ax_gelaendekante WHERE ARRAY[r0.gml_id] <@ istteilvon AND artdergelaendekante=1230 AND endet IS NULL; + + -- RAISE NOTICE 'Unterkante:%', st_astext(uk); + + SELECT st_union(wkb_geometry) INTO sk FROM ax_gelaendekante WHERE ARRAY[r0.gml_id] <@ istteilvon AND artdergelaendekante=1240 AND endet IS NULL; + IF uk IS NOT NULL AND sk IS NOT NULL THEN + sk := st_union(uk, sk); + END IF; + + IF sk IS NULL THEN + RAISE NOTICE '%: Keine Schnittkante', r0.gml_id; + CONTINUE; + END IF; + + SELECT st_maxdistance(sk, ok)*1.1 INTO maxdistance; + + -- RAISE NOTICE 'Schnittkanten:%', st_astext(sk); + + FOR r1 IN + SELECT (st_dump(st_multi(st_linemerge(st_collect(wkb_geometry))))).geom + FROM ax_gelaendekante + WHERE ARRAY[r0.gml_id] <@ istteilvon + AND artdergelaendekante=1220 + AND endet IS NULL + LOOP + ok := r1.geom; + -- RAISE NOTICE 'Oberkante:%', st_astext(ok); + IF ok IS NULL THEN + RAISE NOTICE '%: Oberkante fehlt', r0.gml_id; + CONTINUE; + END IF; + + IF geometrytype(ok) <> 'LINESTRING' THEN + RAISE NOTICE '%: LINESTRING als Oberkante erwartet: %', r0.gml_id, st_astext(ok); + CONTINUE; + END IF; + + s := CASE WHEN st_distance( alkis_safe_offsetcurve(ok, -0.001, ''::text), uk ) > st_distance( alkis_safe_offsetcurve(ok, 0.001, ''::text), uk ) THEN -1 ELSE 1 END; + + o := 0.0; + ol := st_length(ok); + WHILE o < ol-3 LOOP + -- RAISE NOTICE '1 %: %', r0.gml_id, o; + + p0 := st_lineinterpolatepoint(ok, o/ol); + p1 := st_lineinterpolatepoint(ok, (o+0.001)/ol); + l := st_distance(p0, p1); + + dx := (st_x(p1) - st_x(p0)) / l; + dy := (st_y(p1) - st_y(p0)) / l; + + b := st_makeline( + p0, + st_translate(p0, s * dy * maxdistance, -s * dx * maxdistance) + ); + + int := st_intersection(b, sk); + + IF int IS NOT NULL AND NOT st_isempty(int) THEN + IF geometrytype(int) = 'POINT' THEN + b := st_makeline(p0, int); + ELSE + b := (SELECT st_makeline(p0, (SELECT * FROM (SELECT (st_dump(int)).geom AS pi) AS pi ORDER BY st_distance(p0, pi) LIMIT 1))); + END IF; + + b1 := array_append(b1, b); + b1l := array_append(b1l, st_length(b)); + END IF; + + o := o + 6.0; + END LOOP; + + IF b1 IS NOT NULL AND array_length(b1,1)>1 THEN + DECLARE + idxs INTEGER[]; + j INTEGER; + k INTEGER; + b2 GEOMETRY[]; + BEGIN + SELECT array_agg(g.idx) INTO idxs FROM ( + SELECT g.idx FROM ( + SELECT (g).path[1] AS idx,st_length((g).geom) AS len FROM ( + SELECT st_dump(st_collect(b1)) AS g + ) AS g + ) AS g ORDER BY g.len DESC + ) AS g; + + FOR j IN 1..array_upper(idxs, 1) LOOP + i := idxs[j]; + + b2 := ARRAY[]::GEOMETRY[]; + FOR k IN 1..array_upper(b1, 1) LOOP + IF k<>i THEN + b2 := array_append(b2, b1[k]); + END IF; + END LOOP; + + b := st_collect(b2); + p0 := st_startpoint(b1[i]); + int := st_intersection(b1[i], b); + + IF int IS NULL OR st_isempty(int) THEN + CONTINUE; + ELSIF geometrytype(int) = 'POINT' THEN + b := st_makeline(p0, int); + ELSE + b := (SELECT st_makeline(p0, (SELECT * FROM (SELECT (st_dump(int)).geom AS pi) AS pi ORDER BY st_distance(p0, pi) LIMIT 1))); + END IF; + + b1[i] := b; + b1l[i] := st_length(b); + END LOOP; + END; + END IF; + + i := 2; + o := 3.0; + WHILE o < ol-3 LOOP + p0 := st_lineinterpolatepoint(ok, o/ol); + p1 := st_lineinterpolatepoint(ok, (o+0.001)/ol); + l := st_distance(p0, p1); + + dx := (st_x(p1) - st_x(p0)) / l; + dy := (st_y(p1) - st_y(p0)) / l; + + l := (b1l[i-1]+b1l[i])/4; + + b1 := array_append( + b1, + st_makeline( + p0, + st_translate(p0, s * dy * l, -s * dx * l) + ) + ); + + o := o + 6.0; + i := i + 1; + END LOOP; + + IF b1 IS NOT NULL AND array_length(b1,1)>0 THEN + INSERT INTO po_lines( + gml_id, thema, layer, line, signaturnummer, modell + ) VALUES ( + r0.gml_id, 'Topographie', 'ax_boeschungkliff', st_multi(st_collect(b1)), '2531', r0.modell + ); + ELSE + RAISE NOTICE '%: Böschungsgeometrie leer', r0.gml_id; + END IF; + + + b1l := ARRAY[]::double precision[]; + b1 := ARRAY[]::GEOMETRY[]; + END LOOP; + END LOOP; + + RETURN 'Böschungen berechnet.'; +END; +$$ LANGUAGE plpgsql; + +SELECT pg_temp.alkis_boeschung(); diff --git a/postprocessing.d/1_ableitungsregeln/61003.sql b/postprocessing.d/1_ableitungsregeln/61003.sql new file mode 100644 index 0000000..d3474ea --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/61003.sql @@ -0,0 +1,166 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Damm, Wall, Deich (61003) +-- + +SELECT 'Dämme, Wälle und Deiche werden verarbeitet.'; + +-- Linien +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + o.gml_id, + 'Topographie' AS thema, + 'ax_dammwalldeich' AS layer, + st_multi( + CASE + WHEN art='1991' THEN alkis_safe_offsetcurve(line,-0.17,''::text) + WHEN art='1992' THEN alkis_safe_offsetcurve(line, 0.17,''::text) + ELSE line + END + ) AS line, + 2620 AS signaturnummer, + modell +FROM ( + SELECT + gml_id, + art, + CASE geometrytype(wkb_geometry) WHEN 'MULTILINESTRING' THEN (st_dump(wkb_geometry)).geom ELSE wkb_geometry END AS line, + advstandardmodell||sonstigesmodell AS modell + FROM ax_dammwalldeich + WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL +) AS o; + +-- Punkte, Wall +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Topographie' AS thema, + 'ax_dammwalldeich' AS layer, + st_multi( st_lineinterpolatepoint(line,o.offset) ) AS point, + 0.5*pi()-st_azimuth( st_lineinterpolatepoint(line,o.offset*0.9999), st_lineinterpolatepoint(line,CASE WHEN o.offset=0 THEN 0.001 WHEN o.offset*1.0001>1 THEN 1 ELSE o.offset*1.0001 END) ) AS drehwinkel, + 3632 AS signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + CASE + WHEN art='1991' THEN alkis_safe_offsetcurve(o.line,-0.17,''::text) + WHEN art='1992' THEN alkis_safe_offsetcurve(o.line, 0.17,''::text) + WHEN art IN ('2010','2012') THEN alkis_safe_offsetcurve(o.line,-0.34,''::text) + WHEN art IN ('2011','2013') THEN alkis_safe_offsetcurve(o.line, 0.34,''::text) + ELSE o.line + END AS line, + generate_series( 3650, trunc(st_length(line)*1000.0)::int, 6000 ) / 1000.0 / st_length(line) AS offset, + modell + FROM ( + SELECT + gml_id, + art, + CASE geometrytype(wkb_geometry) WHEN 'MULTILINESTRING' THEN (st_dump(wkb_geometry)).geom ELSE wkb_geometry END AS line, + advstandardmodell||sonstigesmodell AS modell + FROM ax_dammwalldeich o + WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL AND art IN ('1910','1920','1930','1940','1950','1960','1970','1980','1990','1991','1992','2010','2011','2012','2013') + ) AS o +) AS o; + +-- Punkte, Knick, Wall +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Topographie' AS thema, + 'ax_dammwalldeich' AS layer, + st_multi( st_lineinterpolatepoint(line,o.offset) ) AS point, + 0.5*pi()-st_azimuth( st_lineinterpolatepoint(line,o.offset*0.9999), st_lineinterpolatepoint(line,CASE WHEN o.offset=0 THEN 0.001 WHEN o.offset*1.0001>1 THEN 1 ELSE o.offset*1.0001 END) ) AS drehwinkel, + 3632 AS signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + CASE + WHEN art='2001' THEN alkis_safe_offsetcurve(o.line,-0.17,''::text) + WHEN art='2002' THEN alkis_safe_offsetcurve(o.line, 0.17,''::text) + ELSE line + END AS line, + generate_series( 5950, trunc(st_length(line)*1000.0)::int, 6000 ) / 1000.0 / st_length(line) AS offset, + modell + FROM ( + SELECT + gml_id, + art, + CASE geometrytype(wkb_geometry) WHEN 'MULTILINESTRING' THEN (st_dump(wkb_geometry)).geom ELSE wkb_geometry END AS line, + advstandardmodell||sonstigesmodell AS modell + FROM ax_dammwalldeich o + WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL AND art IN ('2000','2001','2002','2003') + ) AS o +) AS o; + +-- Punkte, Knick, Bewuchs +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Topographie' AS thema, + 'ax_dammwalldeich' AS layer, + st_multi( st_lineinterpolatepoint(line,o.offset) ) AS point, + 0.5*pi()-st_azimuth( st_lineinterpolatepoint(line,o.offset*0.9999), st_lineinterpolatepoint(line,CASE WHEN o.offset=0 THEN 0.001 WHEN o.offset*1.0001>1 THEN 1 ELSE o.offset*1.0001 END) ) AS drehwinkel, + 3601 AS signaturnummer, + modell +FROM ( + SELECT + o.gml_id, + CASE + WHEN art='2001' THEN alkis_safe_offsetcurve(o.line,-0.17,''::text) + WHEN art='2002' THEN alkis_safe_offsetcurve(o.line, 0.17,''::text) + ELSE line + END AS line, + generate_series( 2900, trunc(st_length(line)*1000.0)::int, 6000 ) / 1000.0 / st_length(line) AS offset, + modell + FROM ( + SELECT + gml_id, + art, + CASE geometrytype(wkb_geometry) WHEN 'MULTILINESTRING' THEN (st_dump(wkb_geometry)).geom ELSE wkb_geometry END AS line, + advstandardmodell||sonstigesmodell AS modell + FROM ax_dammwalldeich o + WHERE geometrytype(wkb_geometry) IN ('LINESTRING','MULTILINESTRING') AND endet IS NULL AND art IN ('2000','2001','2002','2003') + ) AS o +) AS o; + +-- Fläche +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + o.gml_id, + 'Topographie' AS thema, + 'ax_dammwalldeich' AS layer, + st_multi(wkb_geometry) AS polygon, + 1551 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_dammwalldeich o +WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL AND art IN ('1910','1920','1930','1940','1950','1960','1970','1980','1990'); + +-- TODO mit Graben + +-- Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Topographie' AS thema, + 'ax_dammwalldeich' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4109') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_dammwalldeich o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) +) AS n WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/61005.sql b/postprocessing.d/1_ableitungsregeln/61005.sql new file mode 100644 index 0000000..e89af87 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/61005.sql @@ -0,0 +1,44 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Höhleneingang (61005) +-- + +SELECT 'Höhleneingänge werden verarbeitet.'; + +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Topographie' AS thema, + 'ax_hoehleneingang' AS layer, + st_multi(wkb_geometry) AS point, + 0 AS drehwinkel, + 3625 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_hoehleneingang +WHERE endet IS NULL; + +-- Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Topographie' AS thema, + 'ax_hoehleneingang' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(d.signaturnummer,t.signaturnummer,'4118') AS signaturnummer, + coalesce(t.schriftinhalt,name) AS text, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_hoehleneingang o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) +) AS n WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/61006.sql b/postprocessing.d/1_ableitungsregeln/61006.sql new file mode 100644 index 0000000..b300cf5 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/61006.sql @@ -0,0 +1,115 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Felsen, Felsblock, Felsnadel (61006) +-- + +SELECT 'Felsen werden verarbeitet.'; + +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Topographie' AS thema, + 'ax_felsenfelsblockfelsnadel' AS layer, + st_multi(wkb_geometry) AS point, + 0 AS drehwinkel, + 3627 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_felsenfelsblockfelsnadel o +WHERE geometrytype(wkb_geometry) IN ('POINT','MULTIPOINT') AND endet IS NULL; + +-- Punktförmige Begleitsignaturen an Linien +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + gml_id, + 'Topographie' AS thema, + 'ax_felsenfelsblockfelsnadel' AS layer, + st_multi(st_collect(st_lineinterpolatepoint(line,CASE WHEN a.offset<0 THEN 0 WHEN a.offset>1 THEN 1 ELSE a.offset END))) AS point, + 0 AS drehwinkel, + signaturnummer, + modell +FROM ( + SELECT + gml_id, + signaturnummer, + line, + generate_series(einzug,trunc(st_length(line)*1000)::int,abstand) / 1000.0 / st_length(line) AS offset, + modell + FROM ( + SELECT + gml_id, + einzug, + abstand, + CASE geometrytype(line) WHEN 'MULTILINESTRING' THEN (st_dump(line)).geom ELSE line END AS line, + signaturnummer, + modell + FROM ( + SELECT + gml_id, + 710 AS einzug, + 800 AS abstand, + wkb_geometry AS line, + 3634 AS signaturnummer, + advstandardmodell||sonstigesmodell AS modell + FROM ax_felsenfelsblockfelsnadel o + WHERE o.endet IS NULL + AND geometrytype(o.wkb_geometry) IN ('LINESTRING','MULTILINESTRING') + ) AS a + ) AS a +) AS a +GROUP BY gml_id,signaturnummer,modell; + +-- Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + o.gml_id, + 'Topographie' AS thema, + 'ax_felsenfelsblockfelsnadel' AS layer, + st_multi(wkb_geometry) AS polygon, + 1551 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_felsenfelsblockfelsnadel o +WHERE geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON') AND endet IS NULL; + +-- Flächensymbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Topographie' AS thema, + 'ax_felsenfelsblockfelsnadel' AS layer, + st_multi(coalesce(p.wkb_geometry,alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry))) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce(d.signaturnummer,p.signaturnummer,'3627') AS signaturnummer, + coalesce( + p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, + o.advstandardmodell||o.sonstigesmodell + ) AS modell +FROM ax_felsenfelsblockfelsnadel o +LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='Felsen' AND p.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='Felsen' AND d.endet IS NULL +WHERE o.endet IS NULL AND geometrytype(o.wkb_geometry) IN ('POLYGON','MULTIPOLYGON'); + +-- Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Topographie' AS thema, + 'ax_felsenfelsblockfelsnadel' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(t.schriftinhalt,name) AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4118') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_felsenfelsblockfelsnadel o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) +) AS n WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/61007.sql b/postprocessing.d/1_ableitungsregeln/61007.sql new file mode 100644 index 0000000..8acd077 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/61007.sql @@ -0,0 +1,62 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Düne (61007) +-- + +SELECT 'Dünen werden verarbeitet.'; + +-- Flächen +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Topographie' AS thema, + 'ax_duene' AS layer, + st_multi(wkb_geometry) AS polygon, + 1570 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_duene +WHERE endet IS NULL; + +-- Flächensymbole +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Topographie' AS thema, + 'ax_duene' AS layer, + st_multi(coalesce(p.wkb_geometry,alkis_flaechenfuellung(o.wkb_geometry,d.positionierungsregel),st_centroid(o.wkb_geometry))) AS point, + coalesce(p.drehwinkel,0) AS drehwinkel, + coalesce(d.signaturnummer,p.signaturnummer,'3484') AS signaturnummer, + coalesce( + p.advstandardmodell||p.sonstigesmodell||d.advstandardmodell||d.sonstigesmodell, + o.advstandardmodell||o.sonstigesmodell + ) AS modell +FROM ax_duene o +LEFT OUTER JOIN ap_ppo p ON ARRAY[o.gml_id] <@ p.dientzurdarstellungvon AND p.art='Duene' AND p.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='Duene' AND d.endet IS NULL +WHERE o.endet IS NULL; + +-- Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Topographie' AS thema, + 'ax_duene' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce(d.signaturnummer,t.signaturnummer,'4118') AS signaturnummer, + coalesce(t.schriftinhalt,name) AS text, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_duene o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) +) AS n WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/61008.sql b/postprocessing.d/1_ableitungsregeln/61008.sql new file mode 100644 index 0000000..141326e --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/61008.sql @@ -0,0 +1,43 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Höhenlinien (61008) +-- + +SELECT 'Höhenlinien werden verarbeitet.'; + +-- TODO: Ob das wohl stimmt? +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + gml_id, + 'Topographie' AS thema, + 'ax_hoehenlinie' AS layer, + st_multi(wkb_geometry) AS line, + CASE + WHEN hoehevonhoehenlinie::int%20=0 THEN 2670 + WHEN hoehevonhoehenlinie::int%10=0 THEN 2672 + WHEN (hoehevonhoehenlinie*2)::int%10=0 THEN 2674 + WHEN (hoehevonhoehenlinie*4)::int%10=0 THEN 2676 + WHEN (hoehevonhoehenlinie*20)::int%10=0 THEN 2676 + WHEN (hoehevonhoehenlinie*40)::int%10=0 THEN 2676 + END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_hoehenlinie +WHERE endet IS NULL; + +-- Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Topographie' AS thema, + 'ax_hoehenlinie' AS layer, + coalesce(t.wkb_geometry,st_lineinterpolatepoint(o.wkb_geometry,0.5)) AS point, + hoehevonhoehenlinie AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4104') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_hoehenlinie o +LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='HHL' AND t.endet IS NULL +LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='HHL' AND d.endet IS NULL +WHERE o.endet IS NULL AND NOT hoehevonhoehenlinie IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/61009.sql b/postprocessing.d/1_ableitungsregeln/61009.sql new file mode 100644 index 0000000..bb43777 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/61009.sql @@ -0,0 +1,38 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Besonderer topographischer Punkt (61009) +-- + +SELECT 'Besondere topographische Punkte werden verarbeitet.'; + +INSERT INTO po_points(gml_id,thema,layer,point,drehwinkel,signaturnummer,modell) +SELECT + o.gml_id, + 'Topographie' AS thema, + 'ax_besonderertopographischerpunkt' AS layer, + st_multi(st_force2d(p.wkb_geometry)) AS point, + 0 AS drehwinkel, + 3629 AS signaturnummer, + coalesce(p.advstandardmodell||p.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_besonderertopographischerpunkt o +JOIN ax_punktortau p ON ARRAY[o.gml_id] <@ p.istteilvon AND p.endet IS NULL +WHERE o.endet IS NULL; + +-- Text +-- TODO: 14003 [UPO] steht für welches Beschriftungsfeld? +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Topographie' AS thema, + 'ax_besonderertopographischerpunkt' AS layer, + t.wkb_geometry AS point, + coalesce(schriftinhalt,punktkennung) AS text, + coalesce(t.signaturnummer,'4104') AS signaturnummer, + drehwinkel, + horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_besonderertopographischerpunkt o +JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='UPO' AND t.endet IS NULL +WHERE o.endet IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/62040.sql b/postprocessing.d/1_ableitungsregeln/62040.sql new file mode 100644 index 0000000..4d6e4c6 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/62040.sql @@ -0,0 +1,26 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Geländekante (62040) +-- + +SELECT 'Geländekanten werden verarbeitet.'; + +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + gml_id, + 'Topographie' AS thema, + 'ax_gelaendekante' AS layer, + st_multi(wkb_geometry) AS line, + CASE + WHEN artdergelaendekante IN (1220,1230) AND gml_id LIKE 'DENW%' THEN + CASE erfassung_identifikation + WHEN 5400 THEN 2531 + WHEN 5410 THEN 8223 + END + WHEN artdergelaendekante IN (1220,1230,1240) THEN 2531 + WHEN artdergelaendekante=1210 THEN 2622 + END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_gelaendekante WHERE artdergelaendekante IN (1210,1220,1230,1240) AND endet IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/71001.sql b/postprocessing.d/1_ableitungsregeln/71001.sql new file mode 100644 index 0000000..bf668ca --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/71001.sql @@ -0,0 +1,46 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Klassifizierungen nach Straßenrecht (71001) +-- + +SELECT 'Klassifizierungen nach Straßenrecht werden verarbeitet.'; + +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Rechtliche Festlegungen' AS thema, + 'ax_klassifizierungnachstrassenrecht' AS layer, + st_multi(wkb_geometry) AS polygon, + CASE + WHEN artderfestlegung IN (1110,1120) THEN 1701 + WHEN artderfestlegung=1130 THEN 1702 + END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_klassifizierungnachstrassenrecht +WHERE artderfestlegung IN (1110,1120,1130) + AND endet IS NULL + AND geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON'); + +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Rechtliche Festlegungen' AS thema, + 'ax_klassifizierungnachstrassenrecht' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + t.wkb_geometry AS point, + bezeichnung AS text, + coalesce(t.signaturnummer,'4140') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_klassifizierungnachstrassenrecht o + JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='BEZ' AND t.endet IS NULL + WHERE o.endet IS NULL +) AS o WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/71003.sql b/postprocessing.d/1_ableitungsregeln/71003.sql new file mode 100644 index 0000000..389ac1e --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/71003.sql @@ -0,0 +1,35 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Klassifizierungen nach Wasserrecht (71003) +-- (kommt in SK nicht vor) +-- + +SELECT 'Klassifizierungen nach Wasserrecht werden verarbeitet.'; + +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Rechtliche Festlegungen' AS thema, + 'ax_klassifizierungnachwasserrecht' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + t.wkb_geometry AS point, + schriftinhalt AS text, + coalesce(t.signaturnummer,'4140') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_klassifizierungnachwasserrecht o + JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.endet IS NULL + WHERE o.endet IS NULL +) AS o WHERE NOT text IS NULL; + +-- TODO: Kam noch nicht vor +-- RP: ax_andereklassifizierungnachwasserrecht (71004) +-- RP: ax_anderefestlegungnachwasserrecht (71005) diff --git a/postprocessing.d/1_ableitungsregeln/71006.sql b/postprocessing.d/1_ableitungsregeln/71006.sql new file mode 100644 index 0000000..3772b1a --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/71006.sql @@ -0,0 +1,98 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Klassifizierungen nach Natur-, Umwelt- oder Bodenschutzrecht (71006) +-- + +SELECT 'Klassifizierungen nach Natur-, Umwelt und Bodenschutzrecht werden verarbeitet.'; + +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + o.gml_id, + 'Rechtliche Festlegungen' AS thema, + 'ax_naturumweltoderbodenschutzrecht' AS layer, + st_multi(wkb_geometry) AS polygon, + CASE + WHEN o.gml_id LIKE 'DERP%' THEN + CASE + WHEN artderfestlegung IN (1610,1612,1621,1622,1642,1653,1656) THEN 1703 + WHEN artderfestlegung IN (1632,1634,1641,1655,1662) THEN 1704 + END + ELSE 1703 + END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_naturumweltoderbodenschutzrecht o +WHERE (artderfestlegung=1621 OR (o.gml_id LIKE 'DERP%' AND artderfestlegung IN (1610,1612,1621,1622,1632,1634,1641,1642,1653,1655,1656,1662))) AND endet IS NULL + AND geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON'); + +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Rechtliche Festlegungen' AS thema, + 'ax_naturumweltoderbodenschutzrecht' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + t.wkb_geometry AS point, + CASE + WHEN o.gml_id LIKE 'DERP%' THEN + coalesce( + t.schriftinhalt, + CASE + WHEN artderfestlegung=1610 THEN 'Schutzfläche' + WHEN artderfestlegung=1656 THEN 'Ausgleichsfläche' + WHEN artderfestlegung IN (1612,1621,1622,1632,1634,1641,1642,1653,1655,1662) THEN + (SELECT beschreibung FROM ax_artderfestlegung_naturumweltoderbodenschutzrecht WHERE wert=artderfestlegung) + END + ) + ELSE + (SELECT beschreibung FROM ax_artderfestlegung_naturumweltoderbodenschutzrecht WHERE wert=artderfestlegung) + END AS text, + coalesce( + t.signaturnummer, + CASE + WHEN o.gml_id LIKE 'DERP%' THEN + CASE + WHEN artderfestlegung IN (1610,1612,1621,1622,1642) THEN '4143' + WHEN artderfestlegung IN (1632,1634,1641) THEN '4144' + WHEN artderfestlegung IN (1655,1662) THEN 'RP4075' + WHEN artderfestlegung=1656 THEN 'RP4076' + END + ELSE '4143' + END + ) AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_naturumweltoderbodenschutzrecht o + JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ADF' AND t.endet IS NULL + WHERE (artderfestlegung=1621 OR (o.gml_id LIKE 'DERP%' AND artderfestlegung IN (1610,1612,1621,1622,1632,1634,1641,1642,1653,1655,1656,1662))) AND o.endet IS NULL +) AS o WHERE NOT text IS NULL; + +-- Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Rechtliche Festlegungen' AS thema, + 'ax_naturumweltoderbodenschutzrecht' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + '"' || coalesce(t.schriftinhalt,name) || '"' AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4143') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_naturumweltoderbodenschutzrecht o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND (NOT name IS NULL OR NOT t.schriftinhalt IS NULL) +) AS n WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/71007.sql b/postprocessing.d/1_ableitungsregeln/71007.sql new file mode 100644 index 0000000..2369b78 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/71007.sql @@ -0,0 +1,70 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Schutzgebiet nach Natur-, Umwelt- oder Bodenschutzrecht (71007) +-- + +SELECT 'Schutzgebiete nach Natur-, Umwelt und Bodenschutzrecht werden verarbeitet.'; + +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + o.gml_id, + 'Rechtliche Festlegungen' AS thema, + 'ax_schutzgebietnachnaturumweltoderbodenschutzrecht' AS layer, + st_multi(z.wkb_geometry) AS polygon, + 1703 AS signaturnummer, + o.advstandardmodell||o.sonstigesmodell +FROM ax_schutzgebietnachnaturumweltoderbodenschutzrecht o +JOIN ax_schutzzone z ON ARRAY[o.gml_id] <@ z.istteilvon AND z.endet IS NULL +WHERE o.artderfestlegung=1621 AND o.endet IS NULL; + +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Rechtliche Festlegungen' AS thema, + 'ax_schutzgebietnachnaturumweltoderbodenschutzrecht' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(z.wkb_geometry)) AS point, + (SELECT beschreibung FROM ax_artderfestlegung_schutzgebietnachnaturumweltoderbodensc WHERE wert=artderfestlegung) AS text, + coalesce(t.signaturnummer,'4143') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_schutzgebietnachnaturumweltoderbodenschutzrecht o + LEFT OUTER JOIN ax_schutzzone z ON ARRAY[o.gml_id] <@ z.istteilvon AND z.endet IS NULL + JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ADF' AND t.endet IS NULL + WHERE o.endet IS NULL +) AS o WHERE NOT text IS NULL; + +-- Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Rechtliche Festlegungen' AS thema, + 'ax_schutzgebietnachnaturumweltoderbodenschutzrecht' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(z.wkb_geometry)) AS point, + '"' || name || '"' AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4143') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_schutzgebietnachnaturumweltoderbodenschutzrecht o + LEFT OUTER JOIN ax_schutzzone z ON ARRAY[o.gml_id] <@ z.istteilvon AND z.endet IS NULL + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND NOT name IS NULL +) AS n WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/71008.sql b/postprocessing.d/1_ableitungsregeln/71008.sql new file mode 100644 index 0000000..8dbcbf3 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/71008.sql @@ -0,0 +1,92 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Bauraum- oder Bauordnungsrecht (71008) +-- + +SELECT 'Bauraum und Bauordnungsrecht wird verarbeitet.'; + +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Rechtliche Festlegungen' AS thema, + 'ax_bauraumoderbodenordnungsrecht' AS layer, + st_multi(wkb_geometry) AS polygon, + 1704 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_bauraumoderbodenordnungsrecht o +WHERE endet IS NULL; + +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Rechtliche Festlegungen' AS thema, + 'ax_bauraumoderbodenordnungsrecht' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + coalesce( + t.schriftinhalt, + CASE + WHEN artderfestlegung=1750 THEN 'Umlegung' + WHEN artderfestlegung=1840 THEN 'Sanierung' + WHEN artderfestlegung IN (2100,2110,2120,2130,2140,2150) THEN 'Flurbereinigung' + WHEN o.gml_id LIKE 'DERP%' THEN + CASE + WHEN artderfestlegung IN (1760,2610) THEN + (SELECT beschreibung FROM ax_artderfestlegung_bauraumoderbodenordnungsrecht WHERE wert=artderfestlegung) + WHEN artderfestlegung=1810 THEN 'Entwickungsbereich' + END + END + ) AS text, + coalesce( + d.signaturnummer, + t.signaturnummer, + CASE + WHEN o.gml_id LIKE 'DERP%' AND artderfestlegung IN (1760,2610) + THEN 'RP4075' + ELSE '4144' + END + ) AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_bauraumoderbodenordnungsrecht o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ADF' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ADF' AND d.endet IS NULL + WHERE o.endet IS NULL +) AS o WHERE NOT text IS NULL; + +-- Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Rechtliche Festlegungen' AS thema, + 'ax_bauraumoderbodenordnungsrecht' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + CASE + WHEN artderfestlegung=1750 THEN 'Umlegung' + WHEN artderfestlegung=1840 THEN 'Sanierung' + WHEN artderfestlegung IN (2100,2110,2120,2130,2140,2150) THEN 'Flurbereinigung' + END + || ' "' || name || '"' AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4144') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_bauraumoderbodenordnungsrecht o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND NOT name IS NULL AND artderfestlegung IN (1750,1840,2100,2110,2120,2130,2140,2150) +) AS n WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/71009.sql b/postprocessing.d/1_ableitungsregeln/71009.sql new file mode 100644 index 0000000..af0e0cf --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/71009.sql @@ -0,0 +1,44 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Denkmalschutzrecht (71009; RP) +-- + +SELECT 'Denkmalschutzrecht wird verarbeitet.'; + +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Rechtliche Festlegungen' AS thema, + 'ax_denkmalschutzrecht' AS layer, + st_multi(wkb_geometry) AS polygon, + '1704' AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_denkmalschutzrecht o +WHERE endet IS NULL AND gml_id LIKE 'DERP%'; + +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Rechtliche Festlegungen' AS thema, + 'ax_denkmalschutzrecht' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + t.wkb_geometry AS point, + CASE + WHEN artderfestlegung=2910 THEN 'DZ' + WHEN artderfestlegung=2930 THEN 'GSG' + END AS text, + coalesce(t.signaturnummer,'RP4144') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_denkmalschutzrecht o + JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ADF' AND t.endet IS NULL + WHERE o.endet IS NULL AND o.gml_id LIKE 'DERP%' +) AS o WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/71011.sql b/postprocessing.d/1_ableitungsregeln/71011.sql new file mode 100644 index 0000000..5958414 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/71011.sql @@ -0,0 +1,78 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Sonstiges Recht (71011) +-- + +SELECT 'Sonstiges Recht wird verarbeitet.'; + +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + gml_id, + 'Rechtliche Festlegungen' AS thema, + 'ax_sonstigesrecht' AS layer, + st_multi(wkb_geometry) AS polygon, + 1704 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_sonstigesrecht o +WHERE artderfestlegung=1740 AND endet IS NULL; + +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Rechtliche Festlegungen' AS thema, + 'ax_sonstigesrecht' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + CASE + WHEN o.gml_id LIKE 'DERP%' THEN + coalesce( + t.schriftinhalt, + CASE + WHEN artderfestlegung=4720 THEN 'MÜG' + WHEN artderfestlegung=7000 THEN 'WLG' + WHEN artderfestlegung=7100 THEN 'STL' + WHEN artderfestlegung=7300 THEN 'SSL' + END + ) + ELSE 'Truppenübungsplatz'::text + END AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4144') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_sonstigesrecht o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='ART' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='ART' AND d.endet IS NULL + WHERE o.endet IS NULL AND (NOT name IS NULL AND artderfestlegung=4720) +) AS n WHERE NOT text IS NULL; + +-- Namen +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Rechtliche Festlegungen' AS thema, + 'ax_sonstigesrecht' AS layer, + point, + text, + signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + 'Truppenübungsplatz "' || name || '"' AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4144') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_sonstigesrecht o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND (NOT name IS NULL AND artderfestlegung=4720) +) AS n WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/72004.sql b/postprocessing.d/1_ableitungsregeln/72004.sql new file mode 100644 index 0000000..90076be --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/72004.sql @@ -0,0 +1,33 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Landwirtschaftliche Nutzung (72004; RP) +-- + +SELECT 'Landwirtschaftliche Nutzung (RP) wird verarbeitet.'; + +INSERT INTO po_polygons(gml_id,thema,layer,polygon,signaturnummer,modell) +SELECT + o.gml_id, + 'Landwirtschaftliche Nutzung' AS thema, + 'ax_bewertung' AS layer, + st_multi(wkb_geometry) AS polygon, + 1704 AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_bewertung o +WHERE gml_id LIKE 'DERP%' AND endet IS NULL AND geometrytype(wkb_geometry) IN ('POLYGON','MULTIPOLYGON'); + +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + o.gml_id, + 'Landwirtschaftliche Nutzung' AS thema, + 'ax_bewertung' AS layer, + t.wkb_geometry AS point, + t.schriftinhalt AS text, + 4107 AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell +FROM ax_bewertung o +JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='KLA' AND t.endet IS NULL AND t.schriftinhalt IS NOT NULL +WHERE o.gml_id LIKE 'DERP%' AND o.endet IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/74005.sql b/postprocessing.d/1_ableitungsregeln/74005.sql new file mode 100644 index 0000000..fe9cb53 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/74005.sql @@ -0,0 +1,31 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Wohnplatz (74005) +-- + +SELECT 'Wohnplätze werden verarbeitet.'; + +INSERT INTO po_labels(gml_id,thema,layer,point,text,signaturnummer,drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung,modell) +SELECT + gml_id, + 'Flurstücke' AS thema, + 'ax_wohnplatz' AS layer, + point, + text, + signaturnummer, + drehwinkel, horizontaleausrichtung, vertikaleausrichtung, skalierung, fontsperrung, modell +FROM ( + SELECT + o.gml_id, + coalesce(t.wkb_geometry,st_centroid(o.wkb_geometry)) AS point, + name AS text, + coalesce(d.signaturnummer,t.signaturnummer,'4200') AS signaturnummer, + drehwinkel,horizontaleausrichtung,vertikaleausrichtung,skalierung,fontsperrung, + coalesce(t.advstandardmodell||t.sonstigesmodell,o.advstandardmodell||o.sonstigesmodell) AS modell + FROM ax_wohnplatz o + LEFT OUTER JOIN ap_pto t ON ARRAY[o.gml_id] <@ t.dientzurdarstellungvon AND t.art='NAM' AND t.endet IS NULL + LEFT OUTER JOIN ap_darstellung d ON ARRAY[o.gml_id] <@ d.dientzurdarstellungvon AND d.art='NAM' AND d.endet IS NULL + WHERE o.endet IS NULL AND NOT name IS NULL +) AS n WHERE NOT text IS NULL; diff --git a/postprocessing.d/1_ableitungsregeln/91001.sql b/postprocessing.d/1_ableitungsregeln/91001.sql new file mode 100644 index 0000000..28e32b6 --- /dev/null +++ b/postprocessing.d/1_ableitungsregeln/91001.sql @@ -0,0 +1,30 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +-- +-- Migrationsobjekt: Gebäudeausgestaltung (91001) +-- + +SELECT 'Migrationsobjekte werden verarbeitet.'; + +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) +SELECT + gml_id, + 'Gebäude' AS thema, + 'ax_gebaeudeausgestaltung' AS layer, + st_multi(wkb_geometry) AS line, + CASE + WHEN darstellung=1012 THEN 2030 -- öffentliches Gebäude + WHEN darstellung=1013 THEN 2031 -- nicht öffentliches Gebäude + WHEN darstellung=1014 THEN 2305 -- Offene Begrenzungslinie eines Gebäude + END AS signaturnummer, + advstandardmodell||sonstigesmodell +FROM ax_gebaeudeausgestaltung +WHERE endet IS NULL AND darstellung IN (1012,1013,1014); + +SELECT + darstellung AS "Migrationsobjekte ohne Signatur", + count(*) AS "Anzahl" +FROM ax_gebaeudeausgestaltung +WHERE NOT darstellung IN (1012,1013,1014) +GROUP BY darstellung; diff --git a/postprocessing.d/2_ableitungsregeln.sql b/postprocessing.d/2_ableitungsregeln.sql new file mode 100644 index 0000000..2874a72 --- /dev/null +++ b/postprocessing.d/2_ableitungsregeln.sql @@ -0,0 +1,236 @@ +SET client_encoding TO 'UTF8'; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; + +SELECT 'Nachbearbeitung läuft...'; + +-- Polygonsignaturen aufteilen (1XXX = Fläche, 2XXX = Linie) +UPDATE po_polygons SET + sn_flaeche=CASE + WHEN signaturnummer::int BETWEEN 1000 AND 1999 THEN signaturnummer + WHEN signaturnummer::int>10000 THEN + CASE + WHEN signaturnummer::int%10000 BETWEEN 1000 AND 1999 THEN (signaturnummer::int%10000)::text + WHEN signaturnummer::int/10000 BETWEEN 1000 AND 1999 THEN (signaturnummer::int/10000)::text + END + WHEN signaturnummer::int BETWEEN 2000 AND 2999 AND EXISTS (SELECT * FROM alkis_flaechen f WHERE po_polygons.signaturnummer=f.signaturnummer) THEN signaturnummer + END, + sn_randlinie=CASE + WHEN signaturnummer::int BETWEEN 2000 AND 2999 THEN signaturnummer + WHEN signaturnummer::int>10000 THEN + CASE + WHEN signaturnummer::int%10000 BETWEEN 2000 AND 2999 THEN (signaturnummer::int%10000)::text + WHEN signaturnummer::int/10000 BETWEEN 2000 AND 2999 THEN (signaturnummer::int/10000)::text + END + END +WHERE signaturnummer ~ E'^[0-9]+$'; + +-- +-- Randlinien als 'normale' Linien ergänzen +-- + +DELETE FROM alkis_linie WHERE signaturnummer LIKE 'rn%'; +DELETE FROM alkis_linien WHERE signaturnummer LIKE 'rn%'; + +CREATE TEMPORARY SEQUENCE rnstrichart0_seq; +SELECT setval('rnstrichart0_seq',max(id)+1) FROM alkis_stricharten; +CREATE TEMPORARY SEQUENCE rnstrichart_seq; + +CREATE TEMPORARY SEQUENCE rnstricharteni_seq; +SELECT setval('rnstricharteni_seq',max(id)+1) FROM alkis_stricharten_i; + +CREATE TEMPORARY SEQUENCE rnlinie_seq; +SELECT setval('rnlinie_seq',max(id)+1) FROM alkis_linie; + +SELECT setval('rnstrichart_seq',currval('rnstrichart0_seq')); +INSERT INTO alkis_stricharten(id) + SELECT nextval('rnstrichart_seq') + FROM alkis_flaechen f + JOIN alkis_randlinie r ON f.randlinie=r.id + ORDER BY f.katalog,f.signaturnummer,r.id; + +SELECT setval('rnstrichart_seq',currval('rnstrichart0_seq')); +INSERT INTO alkis_stricharten_i(id,stricharten,i,strichart) + SELECT nextval('rnstricharteni_seq'), nextval('rnstrichart_seq'),0,strichart + FROM alkis_flaechen f + JOIN alkis_randlinie r ON f.randlinie=r.id + ORDER BY f.katalog,f.signaturnummer,r.id; + +INSERT INTO alkis_linien(katalog,signaturnummer,darstellungsprioritaet,name,seite) + SELECT katalog,'rn'||signaturnummer,darstellungsprioritaet,name,seite + FROM alkis_flaechen f + JOIN alkis_randlinie r ON f.randlinie=r.id + ORDER BY f.katalog,f.signaturnummer,r.id; + +SELECT setval('rnstrichart_seq',currval('rnstrichart0_seq')); +INSERT INTO alkis_linie(id,i,katalog,signaturnummer,strichart,abschluss,scheitel,strichstaerke,farbe) + SELECT nextval('rnlinie_seq'),0,katalog,'rn'||signaturnummer,nextval('rnstrichart_seq'),abschluss,scheitel,strichstaerke,r.farbe + FROM alkis_flaechen f + JOIN alkis_randlinie r ON f.randlinie=r.id + ORDER BY f.katalog,f.signaturnummer,r.id; + +DROP SEQUENCE rnstrichart0_seq; +DROP SEQUENCE rnstrichart_seq; +DROP SEQUENCE rnstricharteni_seq; +DROP SEQUENCE rnlinie_seq; + +-- Array -> Set +UPDATE po_points SET modell=(SELECT array_agg(modell) FROM (SELECT DISTINCT unnest(modell) AS modell ORDER BY modell) AS foo),drehwinkel_grad=degrees(drehwinkel); +UPDATE po_lines SET modell=(SELECT array_agg(modell) FROM (SELECT DISTINCT unnest(modell) AS modell ORDER BY modell) AS foo); +UPDATE po_polygons SET modell=(SELECT array_agg(modell) FROM (SELECT DISTINCT unnest(modell) AS modell ORDER BY modell) AS foo); +UPDATE po_labels SET modell=(SELECT array_agg(modell) FROM (SELECT DISTINCT unnest(modell) AS modell ORDER BY modell) AS foo),drehwinkel_grad=degrees(drehwinkel); + +SELECT + modell AS "ALKIS-Modellart", + count(*) AS "#Objekte" +FROM ( + SELECT unnest(modell) AS modell FROM po_points UNION ALL + SELECT unnest(modell) AS modell FROM po_lines UNION ALL + SELECT unnest(modell) AS modell FROM po_polygons UNION ALL + SELECT unnest(modell) AS modell from po_lines UNION ALL + SELECT unnest(modell) AS modell from po_labels +) AS foo +GROUP BY modell +ORDER BY "#Objekte" DESC; + +SELECT + modell AS "ALKIS-Modellart", + count(*) AS "#Objekte" +FROM ( + SELECT modell FROM po_points UNION ALL + SELECT modell FROM po_lines UNION ALL + SELECT modell FROM po_polygons UNION ALL + SELECT modell from po_lines UNION ALL + SELECT modell from po_labels +) AS foo +GROUP BY modell +ORDER BY "#Objekte" DESC; + +-- Unerwünschte Modelle löschen +-- DELETE FROM po_points WHERE NOT :alkis_modelle::varchar[] && modell; +-- DELETE FROM po_lines WHERE NOT :alkis_modelle::varchar[] && modell; +-- DELETE FROM po_polygons WHERE NOT :alkis_modelle::varchar[] && modell; +-- DELETE FROM po_labels WHERE NOT :alkis_modelle::varchar[] && modell; + +-- 'Randsignatur' für Flächen mit Umrandung eintragen +UPDATE po_polygons + SET sn_randlinie='rn'||po_polygons.signaturnummer + FROM alkis_flaechen + WHERE alkis_flaechen.signaturnummer=po_polygons.signaturnummer AND NOT alkis_flaechen.randlinie IS NULL; + +-- Skalierung setzen +UPDATE po_labels SET skalierung=1 WHERE skalierung IS NULL; + +-- Zeilenumbrüche austauschen +UPDATE po_labels SET text=replace(text,E'\\n',E'\n') WHERE text LIKE E'%\\n%'; + +-- Pfeilspitzen +INSERT INTO po_lines(gml_id,thema,layer,line,signaturnummer,modell) + SELECT + gml_id, + thema, + layer, + st_setsrid( + st_multi( + st_linemerge( + st_collect( + st_translate( st_rotate( st_makeline( st_point(0,0), st_point( h,l) ), -st_azimuth( p0, p1 ) ), st_x(p0), st_y(p0) ), + st_translate( st_rotate( st_makeline( st_point(0,0), st_point(-h,l) ), -st_azimuth( p0, p1 ) ), st_x(p0), st_y(p0) ) + ) + ) + ), + srid + ), + signaturnummer, + modell + FROM ( + SELECT + l.gml_id, + l.thema, + l.layer /* || '_pfeil' */ AS layer, + l.signaturnummer, + st_srid(l.line) AS srid, + st_pointn( st_geometryn( l.line, 1 ), 1 ) AS p0, + st_pointn( st_geometryn( l.line, 1 ), 2 ) AS p1, + s.pfeillaenge*0.01 AS l, + s.pfeilhoehe*0.005 AS h, + l.modell + FROM po_lines l + JOIN alkis_linie s ON s.abschluss='Pfeil' AND l.signaturnummer=s.signaturnummer + ) AS pfeile; + +-- RP-Gruppensignaturen +UPDATE po_points + SET + point=st_collect(ARRAY[ + st_translate(st_geometryn(point,1), -10, 0 ), + st_translate(st_geometryn(point,1), -5, 5 ), + st_translate(st_geometryn(point,1), -5, -5 ), + st_translate(st_geometryn(point,1), 0, 0 ), + st_translate(st_geometryn(point,1), 5, 5 ), + st_translate(st_geometryn(point,1), 5, -5 ), + st_translate(st_geometryn(point,1), 10, 0 ) + ]), + signaturnummer=substring(signaturnummer,3) + WHERE + signaturnummer IN ( + 'RP3413','RP3415','RP3421','RP3442','RP3444','RP3448','RP3474','RP3476','RP3478','RP3480','RP3481','RP3484','RP3490', + -- TODO: Folgende mit Strichstärke 18 + 'RP3440','RP3441','RP3446','RP3450','RP3452','RP3454','RP3456','RP3458','RP3460', 'RP3462','RP3470' + ); + +-- RP-Flurstücksnummern mit ap_pto.art=NULL mit Bruchstrich 3m nach Norden schieben +UPDATE po_labels + SET + layer='ax_flurstueck_nummer_rpnoart', + point=st_translate(point,0,3) + FROM ap_pto t + WHERE po_labels.gml_id LIKE 'DERP%' + AND layer='ax_flurstueck_nummer' + AND ARRAY[po_labels.gml_id] <@ t.dientzurdarstellungvon AND t.endet IS NULL AND t.art IS NULL; + +UPDATE po_lines + SET + layer='ax_flurstueck_nummer_rpnoart', + line=st_translate(line,0,3) + FROM ap_pto t + WHERE po_lines.gml_id LIKE 'DERP%' + AND layer='ax_flurstueck_nummer' + AND ARRAY[po_lines.gml_id] <@ t.dientzurdarstellungvon AND t.endet IS NULL AND t.art IS NULL; + +SELECT 'Lösche nicht darzustellende Signaturen...'; + +DELETE FROM po_points WHERE signaturnummer IS NULL OR signaturnummer IN ('6000','RP6000'); +DELETE FROM po_lines WHERE signaturnummer IS NULL OR signaturnummer IN ('6000','RP6000'); +DELETE FROM po_polygons WHERE signaturnummer IS NULL OR signaturnummer IN ('6000','RP6000'); +DELETE FROM po_labels WHERE signaturnummer IS NULL OR signaturnummer IN ('6000','RP6000') OR text IS NULL; + +DELETE FROM alkis_linie WHERE signaturnummer IN ('6000','RP6000'); +DELETE FROM alkis_linien WHERE signaturnummer IN ('6000','RP6000'); +DELETE FROM alkis_flaechen WHERE signaturnummer IN ('6000','RP6000'); +DELETE FROM alkis_schriften WHERE signaturnummer IN ('6000','RP6000'); + +SELECT 'Punkt' AS "Fehlende Signaturen",count(*) AS "Anzahl",array_agg(distinct signaturnummer) AS "Signaturen" + FROM po_points o + WHERE NOT EXISTS (SELECT * FROM alkis_punkte s WHERE o.signaturnummer=s.signaturnummer) + HAVING count(*)>0 +UNION SELECT 'Linien',count(*),array_agg(distinct signaturnummer) + FROM po_lines o + WHERE NOT EXISTS (SELECT * FROM alkis_linien s WHERE o.signaturnummer=s.signaturnummer) + HAVING count(*)>0 +UNION SELECT 'Flächen',count(*),array_agg(distinct sn_flaeche) + FROM po_polygons o + WHERE sn_flaeche IS NOT NULL AND NOT EXISTS (SELECT * FROM alkis_flaechen s WHERE o.sn_flaeche=s.signaturnummer) + HAVING count(*)>0 +UNION SELECT 'Randlinien',count(*),array_agg(distinct sn_randlinie) + FROM po_polygons o + WHERE sn_randlinie IS NOT NULL AND NOT EXISTS (SELECT * FROM alkis_linien s WHERE o.sn_randlinie=s.signaturnummer) + HAVING count(*)>0 +UNION SELECT 'Beschriftungen',count(*),array_agg(distinct signaturnummer) + FROM po_labels o + WHERE NOT EXISTS (SELECT * FROM alkis_schriften s WHERE o.signaturnummer=s.signaturnummer) + HAVING count(*)>0; + +SELECT alkis_dropobject('alkis_flaechenfuellung'); +SELECT alkis_dropobject('alkis_pnr3002'); + +-- vim: foldmethod=marker diff --git a/postprocessing.d/nas2alb.sql b/postprocessing.d/3_nas2alb.sql similarity index 94% rename from postprocessing.d/nas2alb.sql rename to postprocessing.d/3_nas2alb.sql index d230b6e..34a8cf1 100644 --- a/postprocessing.d/nas2alb.sql +++ b/postprocessing.d/3_nas2alb.sql @@ -19,7 +19,9 @@ SET application_name='ALKIS-Import - Liegenschaftsbuchübernahme'; SET client_min_messages TO notice; \set ON_ERROR_STOP -SET search_path = :"alkis_schema", :"postgis_schema", public; +\i nas2alb-functions.sql + +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; -- -- ALKIS: @@ -84,8 +86,8 @@ EXCEPTION WHEN OTHERS THEN END; $$ LANGUAGE plpgsql IMMUTABLE; -SELECT alkis_dropobject('alkis_fixgeometry'); -CREATE FUNCTION alkis_fixgeometry(t TEXT) RETURNS VARCHAR AS $$ +SELECT alkis_dropobject('alkis_fixareas'); +CREATE FUNCTION pg_temp.alkis_fixareas(t TEXT) RETURNS VARCHAR AS $$ DECLARE n INTEGER; m TEXT; @@ -97,12 +99,12 @@ BEGIN END IF; BEGIN - EXECUTE 'CREATE TABLE ' || t || '_defekt AS SELECT gml_id,beginnt,wkb_geometry FROM ' || t || ' WHERE NOT st_isvalid(wkb_geometry)'; + EXECUTE 'CREATE TABLE ' || t || '_defekt AS SELECT gml_id,beginnt,wkb_geometry FROM ' || t || ' WHERE NOT st_isvalid(wkb_geometry) OR geometrytype(wkb_geometry)=''GEOMETRYCOLLECTION'''; EXCEPTION WHEN OTHERS THEN - EXECUTE 'INSERT INTO ' || t || '_defekt(gml_id,beginnt,wkb_geometry) SELECT gml_id,beginnt,wkb_geometry FROM ' || t || ' WHERE NOT st_isvalid(wkb_geometry)'; + EXECUTE 'INSERT INTO ' || t || '_defekt(gml_id,beginnt,wkb_geometry) SELECT gml_id,beginnt,wkb_geometry FROM ' || t || ' WHERE NOT st_isvalid(wkb_geometry) OR geometrytype(wkb_geometry)=''GEOMETRYCOLLECTION'''; END; - EXECUTE 'UPDATE ' || t || ' SET wkb_geometry=st_makevalid(wkb_geometry) WHERE NOT st_isvalid(wkb_geometry)'; + EXECUTE 'UPDATE ' || t || ' SET wkb_geometry=st_collectionextract(st_makevalid(wkb_geometry),3) WHERE NOT st_isvalid(wkb_geometry) OR geometrytype(wkb_geometry)=''GEOMETRYCOLLECTION'''; GET DIAGNOSTICS n = ROW_COUNT; IF n > 0 THEN RAISE NOTICE '% Geometrien in % korrigiert.', n, t; @@ -113,7 +115,7 @@ BEGIN m := SQLERRM; BEGIN - EXECUTE 'SELECT count(*) FROM ' || t || ' WHERE NOT st_isvalid(wkb_geometry)' INTO n; + EXECUTE 'SELECT count(*) FROM ' || t || ' WHERE NOT st_isvalid(wkb_geometry) OR geometrytype(wkb_geometry)=''GEOMETRYCOLLECTION''' INTO n; IF n > 0 THEN RAISE EXCEPTION '% defekte Geometrien in % gefunden - Ausnahme bei Korrektur: %', n, t, m; END IF; @@ -164,7 +166,7 @@ INSERT INTO alkis_nutzungen(element, funktionsfeld, relationstext, elementtext, ('ax_wohnbauflaeche', 'artderbebauung', ' mit Art der Bebauung ', 'Wohnbaufläche', 'ax_artderbebauung_wohnbauflaeche'); SELECT alkis_dropobject('alkis_createnutzung'); -CREATE OR REPLACE FUNCTION alkis_createnutzung() RETURNS varchar AS $$ +CREATE OR REPLACE FUNCTION pg_temp.alkis_createnutzung() RETURNS varchar AS $$ DECLARE r RECORD; nv VARCHAR; @@ -187,11 +189,11 @@ BEGIN relationstext, elementtext, enumeration - FROM alkis_elemente - JOIN alkis_nutzungen ON alkis_elemente.name=alkis_nutzungen.element + FROM alkis_elemente e + JOIN alkis_nutzungen n ON e.name=n.element WHERE 'ax_tatsaechlichenutzung' = ANY (abgeleitet_aus) LOOP - res := alkis_string_append(res, alkis_fixgeometry(r.name)); + res := alkis_string_append(res, pg_temp.alkis_fixareas(r.name)); nv := nv || d @@ -251,7 +253,7 @@ INSERT INTO alkis_klassifizierungen(element, prefix, funktionsfeld, bodenzahl, a ('ax_klassifizierungnachstrassenrecht', 'S', 'artderfestlegung', 'NULL::varchar', 'NULL::varchar', 'ax_artderfestlegung_klassifizierungnachstrassenrecht'); SELECT alkis_dropobject('alkis_createklassifizierung'); -CREATE FUNCTION alkis_createklassifizierung() RETURNS varchar AS $$ +CREATE FUNCTION pg_temp.alkis_createklassifizierung() RETURNS varchar AS $$ DECLARE r RECORD; nv VARCHAR; @@ -275,10 +277,10 @@ BEGIN bodenzahl, ackerzahl, enumeration - FROM alkis_elemente - JOIN alkis_klassifizierungen ON alkis_elemente.name=alkis_klassifizierungen.element + FROM alkis_elemente e + JOIN alkis_klassifizierungen ON e.name=alkis_klassifizierungen.element LOOP - res := alkis_string_append(res, alkis_fixgeometry(r.name)); + res := alkis_string_append(res, pg_temp.alkis_fixareas(r.name)); nv := nv || d @@ -320,7 +322,7 @@ END; $$ LANGUAGE plpgsql; SELECT alkis_dropobject('alkis_createausfuehrendestellen'); -CREATE FUNCTION alkis_createausfuehrendestellen() RETURNS varchar AS $$ +CREATE FUNCTION pg_temp.alkis_createausfuehrendestellen() RETURNS varchar AS $$ DECLARE c RECORD; r VARCHAR[]; @@ -368,7 +370,7 @@ BEGIN 'ax_klassifizierungnachwasserrecht' ) LOOP - res := alkis_string_append(res, alkis_fixgeometry(c.table_name)); + res := alkis_string_append(res, pg_temp.alkis_fixareas(c.table_name)); v := v || d @@ -393,7 +395,9 @@ END; $$ LANGUAGE plpgsql; SELECT 'Prüfe Flurstücksgeometrien...'; -SELECT alkis_fixgeometry('ax_flurstueck'); +SELECT pg_temp.alkis_fixareas('ax_flurstueck'); + +SELECT 'Übertrage Flurstücke...'; DELETE FROM flurst; INSERT INTO flurst(flsnr,flsnrk,gemashl,flr,entst,fortf,flsfl,amtlflsfl,gemflsfl,af,flurknr,baublock,flskoord,fora,fina,h1shl,h2shl,hinwshl,strshl,gemshl,hausnr,lagebez,k_anlverm,anl_verm,blbnr,n_flst,ff_entst,ff_stand,ff_datum) @@ -444,6 +448,8 @@ INSERT INTO flurst(flsnr,flsnrk,gemashl,flr,entst,fortf,flsfl,amtlflsfl,gemflsfl ) ; +SELECT 'Erzeuge Straßenzuordnungen...'; + DELETE FROM str_shl; INSERT INTO str_shl(strshl,strname,gemshl) SELECT DISTINCT @@ -556,6 +562,8 @@ INSERT INTO bem_best(bestdnr,pk,lnr,text,ff_entst,ff_stand) JOIN ax_buchungsblatt bb ON bb.gml_id=bs.istbestandteilvon AND bb.endet IS NULL WHERE bs.beschreibungdessondereigentums IS NOT NULL AND bs.endet IS NULL; +SELECT 'Übernehme Bestände...'; + DELETE FROM bestand; INSERT INTO bestand(bestdnr,gbbz,gbblnr,anteil,auftlnr,bestfl,ff_entst,ff_stand,pz) SELECT @@ -581,6 +589,8 @@ INSERT INTO bestand(bestdnr,gbbz,gbblnr,anteil,auftlnr,bestfl,ff_entst,ff_stand, ) ; +SELECT 'Übernehme Eigentümer...'; + SELECT alkis_dropobject('eigner_pk_seq'); CREATE SEQUENCE eigner_pk_seq; @@ -696,7 +706,7 @@ SELECT "Buchdaten","Anzahl" FROM ( ) AS stat ORDER BY o; SELECT 'Erzeuge Sicht für Klassifizierungen...'; -SELECT alkis_createklassifizierung(); +SELECT pg_temp.alkis_createklassifizierung(); DELETE FROM kls_shl; INSERT INTO kls_shl(klf,klf_text) @@ -726,6 +736,13 @@ INSERT INTO klas_3x(flsnr,pk,klf,wertz1,wertz2,gemfl,fl,ff_entst,ff_stand) WHERE f.endet IS NULL GROUP BY alkis_flsnr(f), f.amtlicheflaeche, f.wkb_geometry, k.klassifizierung, k.bodenzahl, k.ackerzahl; +SELECT 'Erzeuge Sicht für Nutzungen...'; +SELECT pg_temp.alkis_createnutzung(); + +DELETE FROM nutz_shl; +INSERT INTO nutz_shl(nutzshl,nutzung) + SELECT nutzung,name FROM ax_tatsaechlichenutzungsschluessel; + SELECT 'Bestimme Flurstücksnutzungen...'; SELECT alkis_dropobject('nutz_shl_pk_seq'); @@ -749,7 +766,7 @@ INSERT INTO nutz_21(flsnr,pk,nutzsl,gemfl,fl,ff_entst,ff_stand) GROUP BY alkis_flsnr(f), f.wkb_geometry, n.nutzung; SELECT 'Erzeuge Sicht für ausführende Stellen...'; -SELECT alkis_createausfuehrendestellen(); +SELECT pg_temp.alkis_createausfuehrendestellen(); DELETE FROM v_schutzgebietnachwasserrecht; INSERT INTO v_schutzgebietnachwasserrecht diff --git a/postprocessing.d/postnas-keytables.sql b/postprocessing.d/4_postnas-keytables.sql similarity index 99% rename from postprocessing.d/postnas-keytables.sql rename to postprocessing.d/4_postnas-keytables.sql index 7c2998f..93b18bb 100644 --- a/postprocessing.d/postnas-keytables.sql +++ b/postprocessing.d/4_postnas-keytables.sql @@ -14,7 +14,7 @@ * * ***************************************************************************/ -SET search_path = :"alkis_schema", :"postgis_schema", public; +SET search_path = :"alkis_schema", :"parent_schema", :"postgis_schema", public; \set ON_ERROR_STOP -- TODO: Sichten mit Nutzungdaten (nutzung*) diff --git a/postupdate.d/nas2alb.sql b/postupdate.d/nas2alb.sql index 9684d9f..e534fbd 100644 --- a/postupdate.d/nas2alb.sql +++ b/postupdate.d/nas2alb.sql @@ -31,26 +31,58 @@ BEGIN BEGIN SELECT version INTO v FROM alb_version; - EXCEPTION WHEN OTHERS THEN - v := 0; - CREATE TABLE alb_version(version INTEGER); - INSERT INTO alb_version(version) VALUES (v); - END; + EXCEPTION WHEN OTHERS THEN + v := 0; + CREATE TABLE alb_version(version INTEGER); + INSERT INTO alb_version(version) VALUES (v); + END; - RAISE NOTICE 'ALB-Schema-Version %', v; + RAISE NOTICE 'ALB-Schema-Version %', v; - IF v<1 THEN - RAISE NOTICE 'Migriere auf Schema-Version 1'; + IF v<1 THEN + RAISE NOTICE 'Migriere auf Schema-Version 1'; ALTER TABLE bestand ALTER gbblnr TYPE character(7); END IF; - IF v<2 THEN - RAISE NOTICE 'Migriere auf Schema-Version 2'; + IF v<2 THEN + RAISE NOTICE 'Migriere auf Schema-Version 2'; ALTER TABLE eigner ALTER namensnr TYPE varchar; + END IF; + + IF v<3 THEN + RAISE NOTICE 'Migriere auf Schema-Version 3'; + + COMMENT ON TABLE flurst IS 'BASE: Flurstücke'; + COMMENT ON TABLE strassen IS 'BASE: Straßenzuordnungen'; + COMMENT ON TABLE gem_shl IS 'BASE: Gemeindeschlüssel'; + COMMENT ON TABLE gema_shl IS 'BASE: Gemarkungsschlüssel'; + COMMENT ON TABLE eignerart IS 'BASE: Eigentümerarten'; + COMMENT ON TABLE bem_best IS 'BASE: Bestandsbemerkung'; + COMMENT ON TABLE bestand IS 'BASE: Bestände'; + COMMENT ON TABLE eigner IS 'BASE: Eigentümer'; + COMMENT ON TABLE eign_shl IS 'BASE: Eigentumsarten'; + COMMENT ON TABLE hinw_shl IS 'BASE: Hinweise'; + COMMENT ON TABLE sonderbaurecht IS 'BASE: Sonderbaurecht'; + COMMENT ON TABLE klas_3x IS 'BASE: Klassifizierungen'; + COMMENT ON TABLE bem_fls IS 'BASE: Flurstücksbemerkungen'; + COMMENT ON TABLE erbbaurecht IS 'BASE: Erbbaurecht'; + COMMENT ON TABLE nutz_21 IS 'BASE: Nutzungen'; + COMMENT ON TABLE nutz_shl IS 'BASE: Nutzungsschlüssel'; + COMMENT ON TABLE verf_shl IS 'BASE: Verfahrensschlüssel'; + COMMENT ON TABLE vor_flst IS 'BASE: Vorgängerflurstücke'; + COMMENT ON TABLE best_lkfs IS 'BASE: Bestandsführende Stelle'; + COMMENT ON TABLE flurst_lkfs IS 'BASE: Flurstücksführende Stelle'; + COMMENT ON TABLE fortf IS 'BASE: Fortführungen'; + COMMENT ON TABLE fina IS 'BASE: Finanzämter'; + COMMENT ON TABLE fs IS 'BASE: Flurstücksverknüpfungen'; + COMMENT ON TABLE ausfst IS 'BASE: Ausführende Stellen'; + COMMENT ON TABLE afst_shl IS 'BASE: Schlüssel ausführender Stellen'; + COMMENT ON TABLE str_shl IS 'BASE: Straßenschlüssel'; + COMMENT ON TABLE kls_shl IS 'BASE: Klassifiziersschlüssel'; - UPDATE alb_version SET version=2; + UPDATE alb_version SET version=3; r := coalesce(r||E'\n','') || 'ALB-Schema migriert'; END IF; diff --git a/preinherit.d/nas2alb.sql b/preinherit.d/nas2alb.sql deleted file mode 100644 index 1077c5d..0000000 --- a/preinherit.d/nas2alb.sql +++ /dev/null @@ -1,26 +0,0 @@ -/*************************************************************************** - * * - * Project: norGIS ALKIS Import * - * Purpose: ALB-Daten in norBIT WLDGE-Strukturen aus ALKIS-Daten füllen * - * Author: Jürgen E. Fischer * - * * - *************************************************************************** - * Copyright (c) 2012-2017, Jürgen E. Fischer * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - ***************************************************************************/ - -\unset ON_ERROR_STOP -SET application_name='ALKIS-Import - Liegenschaftsbuchübernahme'; -SET client_min_messages TO notice; -\set ON_ERROR_STOP - -SET search_path = :"alkis_schema", :"postgis_schema", public; - -CREATE TABLE ax_flurstueck() INHERITS (:"parent_schema".ax_flurstueck); - -\i nas2alb-functions.sql diff --git a/alkis-signaturen.sql b/preprocessing.d/0_alkis-signaturen.sql similarity index 99% rename from alkis-signaturen.sql rename to preprocessing.d/0_alkis-signaturen.sql index d702f07..c8b9453 100644 --- a/alkis-signaturen.sql +++ b/preprocessing.d/0_alkis-signaturen.sql @@ -21,6 +21,8 @@ \set ON_ERROR_STOP SET search_path = :"alkis_schema", :"postgis_schema", public; +SELECT 'Lade Signaturen...'; + DELETE FROM alkis_flaechen; DELETE FROM alkis_linie; DELETE FROM alkis_linien; diff --git a/re b/re index a58470b..52648ea 100644 --- a/re +++ b/re @@ -40,7 +40,7 @@ psql:alkis-functions.sql:.*: ERROR: syntax error at or near "WITH RECURSIVE"\s* ^psql:alkis-compat.sql:.*: FEHLER: Aggregatfunktion ([^.]\.)?array_agg\(any(element|array)\) existiert nicht ^psql:alkis-update.sql:.*: NOTICE: ALTER TABLE \/ ADD PRIMARY KEY will create implicit index "alkis_(flaechen|linien|schriften)_pkey" for table "alkis_(flaechen|linien|schriften)" ^.*(Tabelle|Sicht|Sequenz|Funktion|Constraint|Index).*gel\S+scht\..*$ -^\s+(addgeometrycolumn|alkis_clean|alkis_drop|alkis_dropobject|alkis_create_bsrs|alkis_set_comments|alkis_update_schema|alkis_besondereflurstuecksgrenze|alkis_fixgeometry|version|postgis_version|\?column\?|alkis_set_schema)\s*$ +^\s+(addgeometrycolumn|alkis_clean|alkis_drop|alkis_dropobject|alkis_create_bsrs|alkis_set_comments|alkis_update_schema|alkis_besondereflurstuecksgrenze|alkis_fixareas|alkis_inherit|version|postgis_version|\?column\?|alkis_set_schema)\s*$ ^-+\s*$ ^\s+[^.]+\..*\.(wkb_geometry|dummy|objektkoordinaten|line) SRID:\d+ TYPE:(GEOMETRY|LINESTRING|POINT|MULTIPOINT|POLYGON) DIMS:2\+?\s*$ ^\s+[^.]+\.ax_punktortau\.wkb_geometry SRID:\d+ TYPE:POINT DIMS:3\+?\s*$