Skip to content

Commit

Permalink
#345 add BGT SQL from Willem for reference - not used in ETL
Browse files Browse the repository at this point in the history
  • Loading branch information
justb4 committed Jan 18, 2022
1 parent 5c3c1c6 commit 8a9a5e9
Show file tree
Hide file tree
Showing 2 changed files with 117 additions and 0 deletions.
33 changes: 33 additions & 0 deletions bgt/etl/sql/create-actueelbestaand-tables.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
-- Bijdrage van Willem Hoffmans - 18 jan 2022
-- NB: Gaat ervan uit dat schema 'bgt' heet!

-- Opschonen BGT (en BAG?) NLExtract dumps.
-- Alle historie eruit gooien, zodat je alleen actueelbestaand overhoudt
-- Alle 'actueel' en 'actueelbestaand' views eruit gooien, die zijn dan overbodig.

-- Dit werkt met een loopje vanuit de systeemtabellen, is een stuk efficiënter qua code.
DO LANGUAGE plpgsql
$$
DECLARE
currenttabel record;
tabelnaam VARCHAR;
BEGIN
FOR currenttabel IN
SELECT c.relname AS tabel
FROM pg_namespace AS n JOIN pg_class AS c ON n.oid = c.relnamespace
WHERE n.nspname = 'bgt' and c.relkind = 'r'
ORDER BY tabel
LOOP
BEGIN
RAISE NOTICE 'Verwerken tabel %', currenttabel.tabel;
-- Historie leeghalen
EXECUTE FORMAT ('DELETE FROM bgt.%s WHERE NOT (eindregistratie IS NULL AND bgt_status::text = ''bestaand''::text AND plus_status::text <> ''plan''::text AND plus_status::text <> ''historie''::text);', currenttabel.tabel);
-- Views weggooien
EXECUTE FORMAT ('DROP VIEW IF EXISTS bgt.%sactueel CASCADE;DROP VIEW IF EXISTS bgt.%sactueelbestaand CASCADE;', currenttabel.tabel, currenttabel.tabel);
EXCEPTION
WHEN OTHERS THEN
RAISE NOTICE 'Foutje in tabel %', currenttabel.tabel;
END;
END LOOP;
END;
$$;
84 changes: 84 additions & 0 deletions bgt/etl/sql/create-vlakken-table.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
-- Bijdrage van Willem Hoffmans - 18 jan 2022
-- Maak landsdekkende vlakken tabel uit alle BGT tabellen

-- landsdekkend vlakkenbestand maken
DROP TABLE IF EXISTS bgtvlakken CASCADE;
CREATE TABLE bgtvlakken
(gid SERIAL PRIMARY KEY,
laagnaam VARCHAR,
lokaalid VARCHAR,
relatievehoogteligging INTEGER,
bgt_functie VARCHAR,
plus_functie VARCHAR,
bgt_fysiekvoorkomen VARCHAR,
plus_fysiekvoorkomen VARCHAR,
bgt_type VARCHAR,
plus_type VARCHAR,
geom geometry (MultiSurface, 28992)
);


TRUNCATE TABLE bgtvlakken;
INSERT INTO bgtvlakken (laagnaam, lokaalid, relatievehoogteligging, bgt_fysiekvoorkomen, plus_fysiekvoorkomen, geom)
SELECT 'begroeidterreindeel', lokaalid, relatievehoogteligging, bgt_fysiekvoorkomen, plus_fysiekvoorkomen, ST_Multi(geometrie_vlak)
FROM begroeidterreindeel AS l1 WHERE geometrie_vlak IS NOT NULL;
INSERT INTO bgtvlakken (laagnaam, lokaalid, relatievehoogteligging, bgt_type, plus_type, geom)
SELECT 'gebouwinstallatie', lokaalid, relatievehoogteligging, bgt_type, plus_type, ST_Multi(geometrie_vlak)
FROM gebouwinstallatie AS l1 WHERE geometrie_vlak IS NOT NULL;
-- Kunstwerkdeel: enkele en multi geom's
INSERT INTO bgtvlakken (laagnaam, lokaalid, relatievehoogteligging, bgt_type, plus_type, geom)
SELECT 'kunstwerkdeel', lokaalid, relatievehoogteligging, bgt_type, plus_type, ST_Multi(geometrie_vlak)
FROM kunstwerkdeel AS l1 WHERE geometrie_vlak IS NOT NULL;
INSERT INTO bgtvlakken (laagnaam, lokaalid, relatievehoogteligging, bgt_type, plus_type, geom)
SELECT 'kunstwerkdeel', lokaalid, relatievehoogteligging, bgt_type, plus_type, geometrie_multivlak
FROM kunstwerkdeel AS l1 WHERE geometrie_multivlak IS NOT NULL;
INSERT INTO bgtvlakken (laagnaam, lokaalid, relatievehoogteligging, bgt_fysiekvoorkomen, plus_fysiekvoorkomen, geom)
SELECT 'onbegroeidterreindeel', lokaalid, relatievehoogteligging, bgt_fysiekvoorkomen, plus_fysiekvoorkomen, ST_Multi(geometrie_vlak)
FROM onbegroeidterreindeel AS l1 WHERE geometrie_vlak IS NOT NULL;
INSERT INTO bgtvlakken (laagnaam, lokaalid, relatievehoogteligging, bgt_type, plus_type, geom)
SELECT 'ondersteunendwaterdeel', lokaalid, relatievehoogteligging, bgt_type, plus_type, ST_Multi(geometrie_vlak)
FROM ondersteunendwaterdeel AS l1 WHERE geometrie_vlak IS NOT NULL;
INSERT INTO bgtvlakken (laagnaam, lokaalid, relatievehoogteligging, bgt_functie, plus_functie, bgt_fysiekvoorkomen, plus_fysiekvoorkomen, geom)
SELECT 'ondersteunendwegdeel', lokaalid, relatievehoogteligging, bgt_functie, plus_functie, bgt_fysiekvoorkomen, plus_fysiekvoorkomen, ST_Multi(geometrie_vlak)
FROM ondersteunendwegdeel AS l1 WHERE geometrie_vlak IS NOT NULL;
INSERT INTO bgtvlakken (laagnaam, lokaalid, relatievehoogteligging, geom)
SELECT 'ongeclassificeerdobject', lokaalid, relatievehoogteligging, ST_Multi(geometrie_vlak)
FROM ongeclassificeerdobject AS l1 WHERE geometrie_vlak IS NOT NULL;
INSERT INTO bgtvlakken (laagnaam, lokaalid, relatievehoogteligging, geom)
SELECT 'openbareruimte', lokaalid, relatievehoogteligging, ST_Multi(geometrie_vlak)
FROM openbareruimte AS l1 WHERE geometrie_vlak IS NOT NULL;
INSERT INTO bgtvlakken (laagnaam, lokaalid, relatievehoogteligging, bgt_type, plus_type, geom)
SELECT 'overigbouwwerk', lokaalid, relatievehoogteligging, bgt_type, plus_type, ST_Multi(geometrie_vlak)
FROM overigbouwwerk AS l1 WHERE geometrie_vlak IS NOT NULL;
INSERT INTO bgtvlakken (laagnaam, lokaalid, relatievehoogteligging, plus_type, geom)
SELECT 'overigescheiding', lokaalid, relatievehoogteligging, plus_type, ST_Multi(geometrie_vlak)
FROM overigescheiding AS l1 WHERE geometrie_vlak IS NOT NULL;
INSERT INTO bgtvlakken (laagnaam, lokaalid, relatievehoogteligging, geom)
SELECT 'pand', lokaalid, relatievehoogteligging, ST_Multi(geometrie_vlak)
FROM pand AS l1 WHERE geometrie_vlak IS NOT NULL;
INSERT INTO bgtvlakken (laagnaam, lokaalid, relatievehoogteligging, bgt_type, plus_type, geom)
SELECT 'scheiding', lokaalid, relatievehoogteligging, bgt_type, plus_type, ST_Multi(geometrie_vlak)
FROM scheiding AS l1 WHERE geometrie_vlak IS NOT NULL;
INSERT INTO bgtvlakken (laagnaam, lokaalid, relatievehoogteligging, bgt_type, plus_type, geom)
SELECT 'vegetatieobject', lokaalid, relatievehoogteligging, bgt_type, plus_type, ST_Multi(geometrie_vlak)
FROM vegetatieobject AS l1 WHERE geometrie_vlak IS NOT NULL;
INSERT INTO bgtvlakken (laagnaam, lokaalid, relatievehoogteligging, bgt_type, plus_type, geom)
SELECT 'waterdeel', lokaalid, relatievehoogteligging, bgt_type, plus_type, ST_Multi(geometrie_vlak)
FROM waterdeel AS l1 WHERE geometrie_vlak IS NOT NULL;
INSERT INTO bgtvlakken (laagnaam, lokaalid, relatievehoogteligging, bgt_functie, plus_functie, bgt_fysiekvoorkomen, plus_fysiekvoorkomen, geom)
SELECT 'wegdeel', lokaalid, relatievehoogteligging, bgt_functie, plus_functie, bgt_fysiekvoorkomen, plus_fysiekvoorkomen, ST_Multi(geometrie_vlak)
FROM wegdeel AS l1 WHERE geometrie_vlak IS NOT NULL;
INSERT INTO bgtvlakken (laagnaam, lokaalid, relatievehoogteligging, bgt_type, plus_type, geom)
SELECT 'weginrichtingselement', lokaalid, relatievehoogteligging, bgt_type, plus_type, ST_Multi(geometrie_vlak)
FROM weginrichtingselement AS l1 WHERE geometrie_vlak IS NOT NULL;

CREATE INDEX idx_bgtvlakken_geom ON bgtvlakken USING gist(geom);
CREATE INDEX idx_bgtvlakken_laagnaam ON bgtvlakken USING btree(laagnaam);
CREATE INDEX idx_bgtvlakken_lokaalid ON bgtvlakken USING btree(lokaalid);
CREATE INDEX idx_bgtvlakken_gid ON bgtvlakken USING btree(gid);
CREATE INDEX idx_bgtvlakken_relatievehoogteligging ON bgtvlakken USING btree(relatievehoogteligging);

-- Afgeleide views, o.a. hoogteligging = 0
CREATE OR REPLACE VIEW bgtvlakken_hoogte0 AS
SELECT * FROM bgtvlakken WHERE relatievehoogteligging = 0;

0 comments on commit 8a9a5e9

Please sign in to comment.