123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566 |
- /*
- BAG importer
- Dit script verrijkt de geïmporteerde BAG met de gegevens die
- nodig zijn om handige analyses te doen. Dit gebeurt door een
- aantal tussenstappen te nemen die uiteindelijk resulteren in
- de tabellen pand_compleet en verblijfsobject_compleet. De
- overige tabellen kunnen vervolgens verwijderd worden.
- */
- DROP TABLE IF EXISTS bagactueel.verblijfsobject_compleet CASCADE;
- DROP TABLE IF EXISTS bagactueel.pand_compleet;
- DROP TABLE IF EXISTS bagactueel.pand_oppervlakte CASCADE;
- DROP TABLE IF EXISTS bagactueel.temp_verblijfsobject_oppervlakte;
- DROP MATERIALIZED VIEW IF EXISTS bagactueel.pand_adres;
- DROP MATERIALIZED VIEW IF EXISTS bagactueel.wp_gem_prov;
- UPDATE bagactueel.pand
- SET bouwjaar = NULL
- WHERE bouwjaar > 2050;
- UPDATE bagactueel.verblijfsobject
- SET oppervlakteverblijfsobject = NULL
- WHERE oppervlakteverblijfsobject IN (1, 9999, 99999, 999999);
- /* Maak nieuwe tabel aan voor complete verblijfsobjecten */
- CREATE TABLE bagactueel.verblijfsobject_compleet(
- gid serial,
- identificatie numeric(16,0),
- verblijfsobjectstatus bagactueel.verblijfsobjectstatus,
- oppervlakteverblijfsobject numeric(6,0),
- gebruiksdoelverblijfsobject bagactueel.gebruiksdoelverblijfsobject,
- gerelateerdpand numeric(16,0),
- geopunt geometry(PointZ,28992),
- openbareruimtenaam varchar(80),
- huisnummer numeric(5,0),
- huisletter varchar(1),
- huisnummertoevoeging varchar(4),
- postcode varchar(6),
- woonplaatsnaam varchar(80),
- gemeentenaam varchar(80),
- provincienaam varchar(16)
- );
- /* Zorg ervoor dat er geen dubbelingen kunnen ontstaan door een UNIQUE INDEX op de identificatie te zetten */
- CREATE UNIQUE INDEX bagactueel_identificatie ON bagactueel.verblijfsobject_compleet (identificatie);
- /* Voeg de verschillende VO tabellen en de adres-tabel samen */
- INSERT INTO bagactueel.verblijfsobject_compleet (
- identificatie,
- verblijfsobjectstatus,
- oppervlakteverblijfsobject,
- gebruiksdoelverblijfsobject,
- gerelateerdpand,
- geopunt,
- openbareruimtenaam,
- huisnummer,
- huisletter,
- huisnummertoevoeging,
- postcode,
- woonplaatsnaam,
- gemeentenaam,
- provincienaam
- ) SELECT
- VO.identificatie,
- VO.verblijfsobjectstatus,
- VO.oppervlakteverblijfsobject,
- VOGD.gebruiksdoelverblijfsobject,
- VOGP.gerelateerdpand,
- VO.geopunt,
- A.openbareruimtenaam,
- A.huisnummer,
- A.huisletter,
- A.huisnummertoevoeging,
- A.postcode,
- A.woonplaatsnaam,
- A.gemeentenaam,
- A.provincienaam
- FROM
- bagactueel.verblijfsobjectactueelbestaand VO
- LEFT JOIN bagactueel.verblijfsobjectgebruiksdoelactueelbestaand VOGD
- ON VO.identificatie = VOGD.identificatie
- LEFT JOIN bagactueel.verblijfsobjectpandactueelbestaand VOGP
- ON VO.identificatie = VOGP.identificatie
- LEFT JOIN bagactueel.adres A
- ON VO.identificatie = A.adresseerbaarobject
- AND A.nevenadres = FALSE
- ON CONFLICT DO NOTHING;
- /* Maak indexen zodat snel op deze kolommen gefilterd kan worden */
- CREATE INDEX verblijfsobject_gerelateerdpand ON bagactueel.verblijfsobject_compleet (gerelateerdpand);
- CREATE INDEX verblijfsobject_gebruiksdoel ON bagactueel.verblijfsobject_compleet (gebruiksdoelverblijfsobject);
- CREATE INDEX verblijfsobject_woonplaats ON bagactueel.verblijfsobject_compleet (woonplaatsnaam);
- CREATE INDEX verblijfsobject_gemeente ON bagactueel.verblijfsobject_compleet (gemeentenaam);
- CREATE INDEX verblijfsobject_provincie ON bagactueel.verblijfsobject_compleet (provincienaam);
- CREATE INDEX verblijfsobject_geopunt ON bagactueel.verblijfsobject_compleet USING GIST(geovlak);
- /* In een paar stappen gaan we de oppervlaktes afleiden voor de panden */
- CREATE TABLE bagactueel.temp_verblijfsobject_oppervlakte(
- gid integer,
- gerelateerdpand numeric(16,0),
- oppervlakteverblijfsobject numeric(6,0),
- gebruiksdoelverblijfsobject bagactueel.gebruiksdoelverblijfsobject
- );
- CREATE UNIQUE INDEX temp_verblijfsobject_dubbelingen ON bagactueel.temp_verblijfsobject_oppervlakte (gid);
- INSERT INTO bagactueel.temp_verblijfsobject_oppervlakte (gid, gerelateerdpand, oppervlakteverblijfsobject, gebruiksdoelverblijfsobject)
- SELECT gid, gerelateerdpand, oppervlakteverblijfsobject, gebruiksdoelverblijfsobject FROM bagactueel.verblijfsobject_compleet
- ON CONFLICT DO NOTHING;
- CREATE TABLE bagactueel.pand_oppervlakte(
- identificatie numeric(16,0),
- oppervlakte_totaal numeric(6,0),
- oppervlakte_woonfunctie numeric(6,0),
- oppervlakte_bijeenkomstfunctie numeric(6,0),
- oppervlakte_celfunctie numeric(6,0),
- oppervlakte_gezondheidszorgfunctie numeric(6,0),
- oppervlakte_industriefunctie numeric(6,0),
- oppervlakte_kantoorfunctie numeric(6,0),
- oppervlakte_logiesfunctie numeric(6,0),
- oppervlakte_onderwijsfunctie numeric(6,0),
- oppervlakte_sportfunctie numeric(6,0),
- oppervlakte_winkelfunctie numeric(6,0),
- oppervlakte_overige numeric(6,0),
- aantal_totaal numeric(6,0),
- aantal_woonfunctie numeric(6,0),
- aantal_bijeenkomstfunctie numeric(6,0),
- aantal_celfunctie numeric(6,0),
- aantal_gezondheidszorgfunctie numeric(6,0),
- aantal_industriefunctie numeric(6,0),
- aantal_kantoorfunctie numeric(6,0),
- aantal_logiesfunctie numeric(6,0),
- aantal_onderwijsfunctie numeric(6,0),
- aantal_sportfunctie numeric(6,0),
- aantal_winkelfunctie numeric(6,0),
- aantal_overige numeric(6,0)
- );
- /* INSERT THE TOTALS INTO TEMPORARY HOLDING TABLE */
- INSERT INTO bagactueel.pand_oppervlakte(
- identificatie,
- oppervlakte_totaal,
- aantal_totaal
- ) SELECT
- gerelateerdpand,
- SUM(oppervlakteverblijfsobject),
- COUNT(*)
- FROM
- bagactueel.verblijfsobject_compleet
- GROUP BY
- gerelateerdpand;
- INSERT INTO bagactueel.pand_oppervlakte(
- identificatie,
- oppervlakte_woonfunctie,
- aantal_woonfunctie
- ) SELECT
- gerelateerdpand,
- SUM(oppervlakteverblijfsobject),
- COUNT(*)
- FROM
- bagactueel.verblijfsobject_compleet
- WHERE
- gebruiksdoelverblijfsobject = 'woonfunctie'
- GROUP BY
- gerelateerdpand;
- INSERT INTO bagactueel.pand_oppervlakte(
- identificatie,
- oppervlakte_bijeenkomstfunctie,
- aantal_bijeenkomstfunctie
- ) SELECT
- gerelateerdpand,
- SUM(oppervlakteverblijfsobject),
- COUNT(*)
- FROM
- bagactueel.verblijfsobject_compleet
- WHERE
- gebruiksdoelverblijfsobject = 'bijeenkomstfunctie'
- GROUP BY
- gerelateerdpand;
- INSERT INTO bagactueel.pand_oppervlakte(
- identificatie,
- oppervlakte_celfunctie,
- aantal_celfunctie
- ) SELECT
- gerelateerdpand,
- SUM(oppervlakteverblijfsobject),
- COUNT(*)
- FROM
- bagactueel.verblijfsobject_compleet
- WHERE
- gebruiksdoelverblijfsobject = 'celfunctie'
- GROUP BY
- gerelateerdpand;
- INSERT INTO bagactueel.pand_oppervlakte(
- identificatie,
- oppervlakte_gezondheidszorgfunctie,
- aantal_gezondheidszorgfunctie
- ) SELECT
- gerelateerdpand,
- SUM(oppervlakteverblijfsobject),
- COUNT(*)
- FROM
- bagactueel.verblijfsobject_compleet
- WHERE
- gebruiksdoelverblijfsobject = 'gezondheidszorgfunctie'
- GROUP BY
- gerelateerdpand;
- INSERT INTO bagactueel.pand_oppervlakte(
- identificatie,
- oppervlakte_industriefunctie,
- aantal_industriefunctie
- ) SELECT
- gerelateerdpand,
- SUM(oppervlakteverblijfsobject),
- COUNT(*)
- FROM
- bagactueel.verblijfsobject_compleet
- WHERE
- gebruiksdoelverblijfsobject = 'industriefunctie'
- GROUP BY
- gerelateerdpand;
- INSERT INTO bagactueel.pand_oppervlakte(
- identificatie,
- oppervlakte_kantoorfunctie,
- aantal_kantoorfunctie
- ) SELECT
- gerelateerdpand,
- SUM(oppervlakteverblijfsobject),
- COUNT(*)
- FROM
- bagactueel.verblijfsobject_compleet
- WHERE
- gebruiksdoelverblijfsobject = 'kantoorfunctie'
- GROUP BY
- gerelateerdpand;
- INSERT INTO bagactueel.pand_oppervlakte(
- identificatie,
- oppervlakte_logiesfunctie,
- aantal_logiesfunctie
- ) SELECT
- gerelateerdpand,
- SUM(oppervlakteverblijfsobject),
- COUNT(*)
- FROM
- bagactueel.verblijfsobject_compleet
- WHERE
- gebruiksdoelverblijfsobject = 'logiesfunctie'
- GROUP BY
- gerelateerdpand;
- INSERT INTO bagactueel.pand_oppervlakte(
- identificatie,
- oppervlakte_onderwijsfunctie,
- aantal_onderwijsfunctie
- ) SELECT
- gerelateerdpand,
- SUM(oppervlakteverblijfsobject),
- COUNT(*)
- FROM
- bagactueel.verblijfsobject_compleet
- WHERE
- gebruiksdoelverblijfsobject = 'onderwijsfunctie'
- GROUP BY
- gerelateerdpand;
- INSERT INTO bagactueel.pand_oppervlakte(
- identificatie,
- oppervlakte_sportfunctie,
- aantal_sportfunctie
- ) SELECT
- gerelateerdpand,
- SUM(oppervlakteverblijfsobject),
- COUNT(*)
- FROM
- bagactueel.verblijfsobject_compleet
- WHERE
- gebruiksdoelverblijfsobject = 'sportfunctie'
- GROUP BY
- gerelateerdpand;
- INSERT INTO bagactueel.pand_oppervlakte(
- identificatie,
- oppervlakte_winkelfunctie,
- aantal_winkelfunctie
- ) SELECT
- gerelateerdpand,
- SUM(oppervlakteverblijfsobject),
- COUNT(*)
- FROM
- bagactueel.verblijfsobject_compleet
- WHERE
- gebruiksdoelverblijfsobject = 'winkelfunctie'
- GROUP BY
- gerelateerdpand;
- INSERT INTO bagactueel.pand_oppervlakte(
- identificatie,
- oppervlakte_overige,
- aantal_overige
- ) SELECT
- gerelateerdpand,
- SUM(oppervlakteverblijfsobject),
- COUNT(*)
- FROM
- bagactueel.verblijfsobject_compleet
- WHERE
- gebruiksdoelverblijfsobject = 'overige gebruiksfunctie'
- GROUP BY
- gerelateerdpand;
- CREATE INDEX pand_oppervlakte_ident ON bagactueel.pand_oppervlakte (identificatie);
- /* CREATE THE TABLE THAT HOLDS THE TOTALS PER PAND */
- CREATE MATERIALIZED VIEW bagactueel.pand_oppervlakte_sum AS
- SELECT identificatie,
- SUM(oppervlakte_totaal) oppervlakte_totaal,
- SUM(oppervlakte_woonfunctie) oppervlakte_woonfunctie,
- SUM(oppervlakte_bijeenkomstfunctie) oppervlakte_bijeenkomstfunctie,
- SUM(oppervlakte_celfunctie) oppervlakte_celfunctie,
- SUM(oppervlakte_gezondheidszorgfunctie) oppervlakte_gezondheidszorgfunctie,
- SUM(oppervlakte_industriefunctie) oppervlakte_industriefunctie,
- SUM(oppervlakte_kantoorfunctie) oppervlakte_kantoorfunctie,
- SUM(oppervlakte_logiesfunctie) oppervlakte_logiesfunctie,
- SUM(oppervlakte_onderwijsfunctie) oppervlakte_onderwijsfunctie,
- SUM(oppervlakte_sportfunctie) oppervlakte_sportfunctie,
- SUM(oppervlakte_winkelfunctie) oppervlakte_winkelfunctie,
- SUM(oppervlakte_overige) oppervlakte_overige,
- SUM(aantal_totaal) aantal_totaal,
- SUM(aantal_woonfunctie) aantal_woonfunctie,
- SUM(aantal_bijeenkomstfunctie) aantal_bijeenkomstfunctie,
- SUM(aantal_celfunctie) aantal_celfunctie,
- SUM(aantal_gezondheidszorgfunctie) aantal_gezondheidszorgfunctie,
- SUM(aantal_industriefunctie) aantal_industriefunctie,
- SUM(aantal_kantoorfunctie) aantal_kantoorfunctie,
- SUM(aantal_logiesfunctie) aantal_logiesfunctie,
- SUM(aantal_onderwijsfunctie) aantal_onderwijsfunctie,
- SUM(aantal_sportfunctie) aantal_sportfunctie,
- SUM(aantal_winkelfunctie) aantal_winkelfunctie,
- SUM(aantal_overige) aantal_overige
- FROM
- bagactueel.pand_oppervlakte
- GROUP BY identificatie;
- CREATE INDEX pand_oppervlakte_sum_ident ON bagactueel.pand_oppervlakte_sum (identificatie);
- /* Verzamel de adressen per verblijfsobject in een tabel */
- CREATE MATERIALIZED VIEW bagactueel.pand_adres AS
- SELECT V.gerelateerdpand identificatie,
- string_agg(CONCAT(A.openbareruimtenaam,' ',A.huisnummer,A.huisletter,A.huisnummertoevoeging,' ',A.postcode),' ') adres,
- MIN(A.gemeentenaam) gemeentenaam,
- MIN(A.woonplaatsnaam) woonplaatsnaam,
- MIN(A.provincienaam) provincienaam
- FROM bagactueel.verblijfsobject_compleet V
- LEFT JOIN bagactueel.adres A
- ON V.identificatie = A.adresseerbaarobject
- GROUP BY V.gerelateerdpand;
- CREATE INDEX pand_adres_index ON bagactueel.pand_adres (identificatie);
- /* Construeer de tabel pand_compleet */
- CREATE TABLE bagactueel.pand_compleet(
- gid serial,
- identificatie numeric(16,0),
- pandstatus bagactueel.pandstatus,
- bouwjaar numeric(4,0),
- geovlak geometry(PolygonZ,28992),
- gemeentenaam varchar(80),
- woonplaatsnaam varchar(80),
- provincienaam varchar(16),
- adres TEXT,
- OTO_oppervlakte_totaal numeric(6,0),
- OWO_oppervlakte_woonfunctie numeric(6,0),
- OBI_oppervlakte_bijeenkomstfunctie numeric(6,0),
- OCE_oppervlakte_celfunctie numeric(6,0),
- OGZ_oppervlakte_gezondheidszorgfunctie numeric(6,0),
- OIN_oppervlakte_industriefunctie numeric(6,0),
- OKA_oppervlakte_kantoorfunctie numeric(6,0),
- OLO_oppervlakte_logiesfunctie numeric(6,0),
- OOW_oppervlakte_onderwijsfunctie numeric(6,0),
- OSP_oppervlakte_sportfunctie numeric(6,0),
- OWI_oppervlakte_winkelfunctie numeric(6,0),
- OOV_oppervlakte_overige numeric(6,0),
- ATO_aantal_totaal numeric(6,0),
- AWO_aantal_woonfunctie numeric(6,0),
- ABI_aantal_bijeenkomstfunctie numeric(6,0),
- ACE_aantal_celfunctie numeric(6,0),
- AGZ_aantal_gezondheidszorgfunctie numeric(6,0),
- AIN_aantal_industriefunctie numeric(6,0),
- AKA_aantal_kantoorfunctie numeric(6,0),
- ALO_aantal_logiesfunctie numeric(6,0),
- AOW_aantal_onderwijsfunctie numeric(6,0),
- ASP_aantal_sportfunctie numeric(6,0),
- AWI_aantal_winkelfunctie numeric(6,0),
- AOV_aantal_overige numeric(6,0),
- HFO_hoofdfunctie_naar_oppervlakte varchar(30),
- HFA_hoofdfunctie_naar_aantal varchar(30)
- );
- INSERT INTO bagactueel.pand_compleet(
- identificatie,
- pandstatus,
- bouwjaar,
- geovlak,
- gemeentenaam,
- woonplaatsnaam,
- provincienaam,
- adres,
- OTO_oppervlakte_totaal,
- OWO_oppervlakte_woonfunctie,
- OBI_oppervlakte_bijeenkomstfunctie,
- OCE_oppervlakte_celfunctie,
- OGZ_oppervlakte_gezondheidszorgfunctie,
- OIN_oppervlakte_industriefunctie,
- OKA_oppervlakte_kantoorfunctie,
- OLO_oppervlakte_logiesfunctie,
- OOW_oppervlakte_onderwijsfunctie,
- OSP_oppervlakte_sportfunctie,
- OWI_oppervlakte_winkelfunctie,
- OOV_oppervlakte_overige,
- ATO_aantal_totaal,
- AWO_aantal_woonfunctie,
- ABI_aantal_bijeenkomstfunctie,
- ACE_aantal_celfunctie,
- AGZ_aantal_gezondheidszorgfunctie,
- AIN_aantal_industriefunctie,
- AKA_aantal_kantoorfunctie,
- ALO_aantal_logiesfunctie,
- AOW_aantal_onderwijsfunctie,
- ASP_aantal_sportfunctie,
- AWI_aantal_winkelfunctie,
- AOV_aantal_overige,
- HFO_hoofdfunctie_naar_oppervlakte,
- HFA_hoofdfunctie_naar_aantal
- ) SELECT
- P.identificatie,
- P.pandstatus,
- P.bouwjaar,
- P.geovlak,
- A.gemeentenaam,
- A.woonplaatsnaam,
- A.provincienaam,
- A.adres,
- oppervlakte_totaal,
- oppervlakte_woonfunctie,
- oppervlakte_bijeenkomstfunctie,
- oppervlakte_celfunctie,
- oppervlakte_gezondheidszorgfunctie,
- oppervlakte_industriefunctie,
- oppervlakte_kantoorfunctie,
- oppervlakte_logiesfunctie,
- oppervlakte_onderwijsfunctie,
- oppervlakte_sportfunctie,
- oppervlakte_winkelfunctie,
- oppervlakte_overige,
- aantal_totaal,
- aantal_woonfunctie,
- aantal_bijeenkomstfunctie,
- aantal_celfunctie,
- aantal_gezondheidszorgfunctie,
- aantal_industriefunctie,
- aantal_kantoorfunctie,
- aantal_logiesfunctie,
- aantal_onderwijsfunctie,
- aantal_sportfunctie,
- aantal_winkelfunctie,
- aantal_overige,
- CASE WHEN GREATEST(oppervlakte_woonfunctie, oppervlakte_bijeenkomstfunctie, oppervlakte_celfunctie, oppervlakte_gezondheidszorgfunctie, oppervlakte_industriefunctie, oppervlakte_kantoorfunctie, oppervlakte_logiesfunctie, oppervlakte_onderwijsfunctie, oppervlakte_sportfunctie, oppervlakte_winkelfunctie, oppervlakte_overige) = oppervlakte_woonfunctie THEN 'woonfunctie'
- WHEN GREATEST(oppervlakte_woonfunctie, oppervlakte_bijeenkomstfunctie, oppervlakte_celfunctie, oppervlakte_gezondheidszorgfunctie, oppervlakte_industriefunctie, oppervlakte_kantoorfunctie, oppervlakte_logiesfunctie, oppervlakte_onderwijsfunctie, oppervlakte_sportfunctie, oppervlakte_winkelfunctie, oppervlakte_overige) = oppervlakte_bijeenkomstfunctie THEN 'bijeenkomstfunctie'
- WHEN GREATEST(oppervlakte_woonfunctie, oppervlakte_bijeenkomstfunctie, oppervlakte_celfunctie, oppervlakte_gezondheidszorgfunctie, oppervlakte_industriefunctie, oppervlakte_kantoorfunctie, oppervlakte_logiesfunctie, oppervlakte_onderwijsfunctie, oppervlakte_sportfunctie, oppervlakte_winkelfunctie, oppervlakte_overige) = oppervlakte_celfunctie THEN 'celfunctie'
- WHEN GREATEST(oppervlakte_woonfunctie, oppervlakte_bijeenkomstfunctie, oppervlakte_celfunctie, oppervlakte_gezondheidszorgfunctie, oppervlakte_industriefunctie, oppervlakte_kantoorfunctie, oppervlakte_logiesfunctie, oppervlakte_onderwijsfunctie, oppervlakte_sportfunctie, oppervlakte_winkelfunctie, oppervlakte_overige) = oppervlakte_gezondheidszorgfunctie THEN 'gezondheidszorgfunctie'
- WHEN GREATEST(oppervlakte_woonfunctie, oppervlakte_bijeenkomstfunctie, oppervlakte_celfunctie, oppervlakte_gezondheidszorgfunctie, oppervlakte_industriefunctie, oppervlakte_kantoorfunctie, oppervlakte_logiesfunctie, oppervlakte_onderwijsfunctie, oppervlakte_sportfunctie, oppervlakte_winkelfunctie, oppervlakte_overige) = oppervlakte_industriefunctie THEN 'industriefunctie'
- WHEN GREATEST(oppervlakte_woonfunctie, oppervlakte_bijeenkomstfunctie, oppervlakte_celfunctie, oppervlakte_gezondheidszorgfunctie, oppervlakte_industriefunctie, oppervlakte_kantoorfunctie, oppervlakte_logiesfunctie, oppervlakte_onderwijsfunctie, oppervlakte_sportfunctie, oppervlakte_winkelfunctie, oppervlakte_overige) = oppervlakte_kantoorfunctie THEN 'kantoorfunctie'
- WHEN GREATEST(oppervlakte_woonfunctie, oppervlakte_bijeenkomstfunctie, oppervlakte_celfunctie, oppervlakte_gezondheidszorgfunctie, oppervlakte_industriefunctie, oppervlakte_kantoorfunctie, oppervlakte_logiesfunctie, oppervlakte_onderwijsfunctie, oppervlakte_sportfunctie, oppervlakte_winkelfunctie, oppervlakte_overige) = oppervlakte_logiesfunctie THEN 'logiesfunctie'
- WHEN GREATEST(oppervlakte_woonfunctie, oppervlakte_bijeenkomstfunctie, oppervlakte_celfunctie, oppervlakte_gezondheidszorgfunctie, oppervlakte_industriefunctie, oppervlakte_kantoorfunctie, oppervlakte_logiesfunctie, oppervlakte_onderwijsfunctie, oppervlakte_sportfunctie, oppervlakte_winkelfunctie, oppervlakte_overige) = oppervlakte_onderwijsfunctie THEN 'onderwijsfunctie'
- WHEN GREATEST(oppervlakte_woonfunctie, oppervlakte_bijeenkomstfunctie, oppervlakte_celfunctie, oppervlakte_gezondheidszorgfunctie, oppervlakte_industriefunctie, oppervlakte_kantoorfunctie, oppervlakte_logiesfunctie, oppervlakte_onderwijsfunctie, oppervlakte_sportfunctie, oppervlakte_winkelfunctie, oppervlakte_overige) = oppervlakte_sportfunctie THEN 'sportfunctie'
- WHEN GREATEST(oppervlakte_woonfunctie, oppervlakte_bijeenkomstfunctie, oppervlakte_celfunctie, oppervlakte_gezondheidszorgfunctie, oppervlakte_industriefunctie, oppervlakte_kantoorfunctie, oppervlakte_logiesfunctie, oppervlakte_onderwijsfunctie, oppervlakte_sportfunctie, oppervlakte_winkelfunctie, oppervlakte_overige) = oppervlakte_winkelfunctie THEN 'winkelfunctie'
- WHEN GREATEST(oppervlakte_woonfunctie, oppervlakte_bijeenkomstfunctie, oppervlakte_celfunctie, oppervlakte_gezondheidszorgfunctie, oppervlakte_industriefunctie, oppervlakte_kantoorfunctie, oppervlakte_logiesfunctie, oppervlakte_onderwijsfunctie, oppervlakte_sportfunctie, oppervlakte_winkelfunctie, oppervlakte_overige) = oppervlakte_overige THEN 'overige gebruiksfunctie'
- ELSE NULL
- END,
- CASE WHEN GREATEST(aantal_woonfunctie, aantal_bijeenkomstfunctie, aantal_celfunctie, aantal_gezondheidszorgfunctie, aantal_industriefunctie, aantal_kantoorfunctie, aantal_logiesfunctie, aantal_onderwijsfunctie, aantal_sportfunctie, aantal_winkelfunctie, aantal_overige) = aantal_woonfunctie THEN 'woonfunctie'
- WHEN GREATEST(aantal_woonfunctie, aantal_bijeenkomstfunctie, aantal_celfunctie, aantal_gezondheidszorgfunctie, aantal_industriefunctie, aantal_kantoorfunctie, aantal_logiesfunctie, aantal_onderwijsfunctie, aantal_sportfunctie, aantal_winkelfunctie, aantal_overige) = aantal_bijeenkomstfunctie THEN 'bijeenkomstfunctie'
- WHEN GREATEST(aantal_woonfunctie, aantal_bijeenkomstfunctie, aantal_celfunctie, aantal_gezondheidszorgfunctie, aantal_industriefunctie, aantal_kantoorfunctie, aantal_logiesfunctie, aantal_onderwijsfunctie, aantal_sportfunctie, aantal_winkelfunctie, aantal_overige) = aantal_celfunctie THEN 'celfunctie'
- WHEN GREATEST(aantal_woonfunctie, aantal_bijeenkomstfunctie, aantal_celfunctie, aantal_gezondheidszorgfunctie, aantal_industriefunctie, aantal_kantoorfunctie, aantal_logiesfunctie, aantal_onderwijsfunctie, aantal_sportfunctie, aantal_winkelfunctie, aantal_overige) = aantal_gezondheidszorgfunctie THEN 'gezondheidszorgfunctie'
- WHEN GREATEST(aantal_woonfunctie, aantal_bijeenkomstfunctie, aantal_celfunctie, aantal_gezondheidszorgfunctie, aantal_industriefunctie, aantal_kantoorfunctie, aantal_logiesfunctie, aantal_onderwijsfunctie, aantal_sportfunctie, aantal_winkelfunctie, aantal_overige) = aantal_industriefunctie THEN 'industriefunctie'
- WHEN GREATEST(aantal_woonfunctie, aantal_bijeenkomstfunctie, aantal_celfunctie, aantal_gezondheidszorgfunctie, aantal_industriefunctie, aantal_kantoorfunctie, aantal_logiesfunctie, aantal_onderwijsfunctie, aantal_sportfunctie, aantal_winkelfunctie, aantal_overige) = aantal_kantoorfunctie THEN 'kantoorfunctie'
- WHEN GREATEST(aantal_woonfunctie, aantal_bijeenkomstfunctie, aantal_celfunctie, aantal_gezondheidszorgfunctie, aantal_industriefunctie, aantal_kantoorfunctie, aantal_logiesfunctie, aantal_onderwijsfunctie, aantal_sportfunctie, aantal_winkelfunctie, aantal_overige) = aantal_logiesfunctie THEN 'logiesfunctie'
- WHEN GREATEST(aantal_woonfunctie, aantal_bijeenkomstfunctie, aantal_celfunctie, aantal_gezondheidszorgfunctie, aantal_industriefunctie, aantal_kantoorfunctie, aantal_logiesfunctie, aantal_onderwijsfunctie, aantal_sportfunctie, aantal_winkelfunctie, aantal_overige) = aantal_onderwijsfunctie THEN 'onderwijsfunctie'
- WHEN GREATEST(aantal_woonfunctie, aantal_bijeenkomstfunctie, aantal_celfunctie, aantal_gezondheidszorgfunctie, aantal_industriefunctie, aantal_kantoorfunctie, aantal_logiesfunctie, aantal_onderwijsfunctie, aantal_sportfunctie, aantal_winkelfunctie, aantal_overige) = aantal_sportfunctie THEN 'sportfunctie'
- WHEN GREATEST(aantal_woonfunctie, aantal_bijeenkomstfunctie, aantal_celfunctie, aantal_gezondheidszorgfunctie, aantal_industriefunctie, aantal_kantoorfunctie, aantal_logiesfunctie, aantal_onderwijsfunctie, aantal_sportfunctie, aantal_winkelfunctie, aantal_overige) = aantal_winkelfunctie THEN 'winkelfunctie'
- WHEN GREATEST(aantal_woonfunctie, aantal_bijeenkomstfunctie, aantal_celfunctie, aantal_gezondheidszorgfunctie, aantal_industriefunctie, aantal_kantoorfunctie, aantal_logiesfunctie, aantal_onderwijsfunctie, aantal_sportfunctie, aantal_winkelfunctie, aantal_overige) = aantal_overige THEN 'overige gebruiksfunctie'
- ELSE NULL
- END
- FROM bagactueel.pandactueelbestaand P
- LEFT JOIN bagactueel.pand_adres A
- ON P.identificatie = A.identificatie
- LEFT JOIN bagactueel.pand_oppervlakte_sum PO
- ON P.identificatie = PO.identificatie;
- /* Maak indexen op de pand_compleet tabel om opzoeken sneller te maken */
- CREATE INDEX pand_compleet_gemeentenaam ON bagactueel.pand_compleet (gemeentenaam);
- CREATE INDEX pand_compleet_woonplaatsnaam ON bagactueel.pand_compleet (woonplaatsnaam);
- CREATE INDEX pand_compleet_provincienaam ON bagactueel.pand_compleet (provincienaam);
- CREATE INDEX pand_compleet_geovlak ON bagactueel.pand_compleet USING GIST(geovlak);
- /* Maak tabel met woonplaats-geovlak en bijbehorende woonplaatsnaam, gemeentenaam en provincienaam */
- CREATE MATERIALIZED VIEW bagactueel.wp_gem_prov AS
- SELECT bagactueel.woonplaatsactueelbestaand.gid, bagactueel.provincie.provincienaam, bagactueel.gemeente.gemeentenaam, bagactueel.woonplaatsactueelbestaand.woonplaatsnaam, bagactueel.woonplaatsactueelbestaand.geovlak
- FROM bagactueel.provincie_gemeenteactueelbestaand
- JOIN bagactueel.gemeente_woonplaatsactueelbestaand
- ON bagactueel.provincie_gemeenteactueelbestaand.gemeentecode = bagactueel.gemeente_woonplaatsactueelbestaand.gemeentecode
- JOIN bagactueel.provincie ON bagactueel.provincie_gemeenteactueelbestaand.provinciecode = bagactueel.provincie.provinciecode
- JOIN bagactueel.gemeente ON bagactueel.provincie_gemeenteactueelbestaand.gemeentecode = bagactueel.gemeente.gemeentecode
- JOIN bagactueel.woonplaatsactueelbestaand ON
- bagactueel.gemeente_woonplaatsactueelbestaand.woonplaatscode = bagactueel.woonplaatsactueelbestaand.identificatie;
- CREATE INDEX wp_gem_prov_geovlak ON bagactueel.wp_gem_prov USING GIST(geovlak);
- /* Voeg woonplaats, gemeente en provincie toe aan alle ~3908287 ongelabelde panden */
- UPDATE bagactueel.pand_compleet P
- SET woonplaatsnaam = WGP.woonplaatsnaam,
- gemeentenaam = WGP.gemeentenaam,
- provincienaam = WGP.provincienaam
- FROM bagactueel.wp_gem_prov WGP
- WHERE ST_Intersects(WGP.geovlak, P.geovlak)
- AND P.woonplaatsnaam IS NULL;
- /* Ruim ongebruikte tabellen op */
- DROP MATERIALIZED VIEW bagactueel.pand_adres;
- DROP MATERIALIZED VIEW bagactueel.pand_oppervlakte_sum;
- DROP TABLE bagactueel.pand_oppervlakte;
- DROP TABLE bagactueel.temp_verblijfsobject_oppervlakte;
|