diff --git a/bgt/README b/bgt/README deleted file mode 100644 index 844f808c..00000000 --- a/bgt/README +++ /dev/null @@ -1,13 +0,0 @@ -NLExtract/BGT - Extractie en visualisatie van BGT / IMGeo - -Algemeen --------- -NLExtract/BGT bevat tools om de BGT / IMGeo geleverd door het Kadaster (GML) om te zetten naar hanteerbare formaten, -zoals PostGIS. - -Documentatie vind je op: http://nlextract.readthedocs.org - -Belangrijke wijzigingen ------------------------ -* 23-12-2015: initiële versie, maakt gebruik van Stetl ETL, zie map "etl". -* 01-03-2018: BgtExtract omgebouwd naar OGR-only versie, zonder XSLT. diff --git a/bgt/README.md b/bgt/README.md new file mode 100644 index 00000000..53b94ae2 --- /dev/null +++ b/bgt/README.md @@ -0,0 +1,14 @@ +# NLExtract/BGT - Extractie en visualisatie van BGT / IMGeo + +## Algemeen + +NLExtract/BGT bevat tools om de BGT / IMGeo geleverd door het Kadaster (GML) om te zetten naar hanteerbare formaten, +zoals PostGIS. + +Documentatie vind je op: https://nlextract.readthedocs.org + +## Belangrijke wijzigingen + +* 23-12-2015: eerste versie, maakt gebruik van Stetl ETL, zie map "etl". +* 01-03-2018: ETL omgebouwd naar OGR-only versie, zonder XSLT. +* 17-11-2023: BGT Lean SQL script toegevoegd diff --git a/bgt/etl/README b/bgt/etl/README.md similarity index 54% rename from bgt/etl/README rename to bgt/etl/README.md index 57209bf1..fdd4ec37 100644 --- a/bgt/etl/README +++ b/bgt/etl/README.md @@ -1,4 +1,5 @@ -BGT / IMGeo inlezen met Stetl (www.stetl.org) ETL framework. +# BGT / IMGeo inlezen met Stetl (www.stetl.org) ETL framework. + door: Just van den Broecke en Frank Steggink Deze map bevat de ETL configuratie en commando om via Stetl @@ -10,19 +11,18 @@ Om gebruik te maken van Stetl moet de externe GitHub submodule externals/stetl aanwezig zijn. Bij het klonen van de GitHub komt Stetl als volgt mee: -git clone --recursive https://github.com/nlextract/NLExtract.git +`git clone --recursive https://github.com/nlextract/NLExtract.git` Stetl komt dan mee, hoeft niet apart geinstalleerd, alleen de Stetl-dependencies. Dependencies Stetl installeren: -http://www.stetl.org/en/latest/install.html +https://www.stetl.org/en/latest/install.html -Meer over Stetl: http://stetl.org +Meer over Stetl: https://stetl.org -Downloaden GML --------------- +## Downloaden GML -Met het hulpscript download-bgt.sh kan de BGT eerst gedownload worden naar een doelmap. -Windows: download-bgt.cmd +Met het hulpscript `download-bgt.sh ` kan de hele BGT eerst gedownload worden naar een doelbestand. +Windows: `download-bgt.cmd ` TODO NB, soms zijn de gedownloade files 0 bytes. Oorzaak is vreemd HTTPS probleem PDOK vermoedelijk. Dit is ondervangen door het downloaden met wget in een loop uit te voeren en vervolgens met unzip de inhoud te controleren. @@ -32,36 +32,33 @@ PATH environment variabele staan. wget: https://eternallybored.org/misc/wget/ unzip: http://gnuwin32.sourceforge.net/packages/unzip.htm -Commando --------- +## Commando -./etl-imgeo.sh -Windows: etl-imgeo.cmd +`./etl.sh` +Windows: `etl.cmd ` Gebruikt default opties (database params etc) uit options/default.args. Stetl configuratie, hoeft niet gewijzigd, alleen indien bijv andere output gewenst: -conf/etl-imgeo.cfg +`conf/etl-imgeo-v2.1.1.cfg` -Opties/argumenten ------------------ +## Opties/argumenten Een aantal opties kunnen op 2 manieren vervangen worden: -1- Impliciet: Overrule default opties (database params etc) met een eigen lokale file gebaseerd op -lokale hostnaam: options/.args - -2- Expliciet op command line via ./etl-imgeo.sh .args - etl-imgeo.cmd .args +* Impliciet: Overrule [default opties](options/default.args) (database params etc) met een eigen lokale file gebaseerd op lokale hostnaam: `options/.args` +* Expliciet op command line via `./etl.sh .args` of (Win) `etl.cmd .args` Indien methode 2 gebruikt wordt, prevaleert deze boven 1 en de default opties! -Database mapping ----------------- -gfs/imgeo-v2.1.1.gfs is de GDAL/OGR "GFS Template" en bepaalt de mapping van GML elementen/attributen +## Database mapping + +[gfs/imgeo-v2.1.1.gfs](gfs/imgeo-v2.1.1.gfs) is de GDAL/OGR "GFS Template" en bepaalt de mapping van GML elementen/attributen naar PostGIS kolom(namen). Maak eventueel een eigen GFS file en specificeer deze in je -options/.args: bijv gfs_template=gfs/mijnbgk.gfs +`options/.args`: bijv `gfs_template=gfs/mijnbgk.gfs` + +## BGT Lean -TODO ----- -* GUI +Om een compactere BGT te krijgen kan na bovenstaande handmatig +het script [bgt-lean.sql](sql/bgt-lean.sql) gedraaid worden met bijv `psql`. +Deze zal de complete BGT in schema `latest` omzetten naar een 'lean' versie in eigen schema `bgt_lean`. diff --git a/bgt/etl/cached-download.sh b/bgt/etl/cached-download.sh old mode 100644 new mode 100755 diff --git a/bgt/etl/download-bgt.sh b/bgt/etl/download-bgt.sh old mode 100644 new mode 100755 index fac5a8b4..a6af9ef6 --- a/bgt/etl/download-bgt.sh +++ b/bgt/etl/download-bgt.sh @@ -1,62 +1,16 @@ #!/bin/bash +# Download hele BGT, 2023 versie. +# Author: Just van den Broecke -# See https://www.pdok.nl/nl/producten/pdok-downloads/download-basisregistratie-grootschalige-topografie -today=`date +"%d-%m-%Y"` - -# ID's van 32x32 km gebieden om de BGT te downloaden. Let op, de ID's mogen geen voorloopnullen bevatten. -blocks="39 45 48 50 51 54 55 56 57 58 59 60 61 62 63 74 75 96 97 98 99 104 105 106 107 110 111 145 148 149 150 151 156 157 158 159 180 181 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 224 225 228 229 230" - -# 64x64 aggregaatlevel 5 -# https://downloads.pdok.nl/service/extract.zip?extractname=bgt&extractset=citygml&excludedtypes=plaatsbepalingspunt&history=true&tiles=%7B%22layers%22%3A%5B%7B%22aggregateLevel%22%3A5%2C%22codes%22%3A%5B13%5D%7D%5D%7D -blocks="0 1 4 5 16 17 2 3 6 7 18 19 8 9 12 13 24 25 10 11 14 15 26 27 32 33 36 37 48 49 34 35 38 39 50 51" -#bbox=[-36000, 264000, 28000, 328000] 0 -#bbox=[28000, 264000, 92000, 328000] 1 -#bbox=[92000, 264000, 156000, 328000] 4 -#bbox=[156000, 264000, 220000, 328000] 5 -#bbox=[220000, 264000, 284000, 328000] 16 -#bbox=[284000, 264000, 348000, 328000] 17 -#bbox=[-36000, 328000, 28000, 392000] 2 -#bbox=[28000, 328000, 92000, 392000] 3 -#bbox=[92000, 328000, 156000, 392000] 6 -#bbox=[156000, 328000, 220000, 392000] 7 -#bbox=[220000, 328000, 284000, 392000] 18 -#bbox=[284000, 328000, 348000, 392000] 19 -#bbox=[-36000, 392000, 28000, 456000] 8 -#bbox=[28000, 392000, 92000, 456000] 9 -#bbox=[92000, 392000, 156000, 456000] 12 -#bbox=[156000, 392000, 220000, 456000] 13 -#bbox=[220000, 392000, 284000, 456000] 24 -#bbox=[284000, 392000, 348000, 456000] 25 -#bbox=[-36000, 456000, 28000, 520000] 10 -#bbox=[28000, 456000, 92000, 520000] 11 -#bbox=[92000, 456000, 156000, 520000] 14 -#bbox=[156000, 456000, 220000, 520000] 15 -#bbox=[220000, 456000, 284000, 520000] 26 -#bbox=[284000, 456000, 348000, 520000] 27 -#bbox=[-36000, 520000, 28000, 584000] 32 -#bbox=[28000, 520000, 92000, 584000] 33 -#bbox=[92000, 520000, 156000, 584000] 36 -#bbox=[156000, 520000, 220000, 584000] 37 -#bbox=[220000, 520000, 284000, 584000] 48 -#bbox=[284000, 520000, 348000, 584000] 49 -#bbox=[-36000, 584000, 28000, 648000] 34 -#bbox=[28000, 584000, 92000, 648000] 35 -#bbox=[92000, 584000, 156000, 648000] 38 -#bbox=[156000, 584000, 220000, 648000] 39 -#bbox=[220000, 584000, 284000, 648000] 50 -#bbox=[284000, 584000, 348000, 648000] 51 -# 0 1 4 5 16 17 2 3 6 7 18 19 8 9 12 13 24 25 10 11 14 15 26 27 32 33 36 37 48 49 34 35 38 39 50 51 - +BGT_URL="https://api.pdok.nl/lv/bgt/download/v1_0/full/predefined/bgt-citygml-nl-nopbp.zip" DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -[ -z "$1" ] && pushd leveringen/latest || pushd $1 -for block in ${blocks} -do - echo "Downloading BGT-blok ${block} ..." - block_url="https://downloads.pdok.nl/service/extract.zip?extractname=bgt&extractset=citygml&excludedtypes=plaatsbepalingspunt&history=true&tiles=%7B%22layers%22%3A%5B%7B%22aggregateLevel%22%3A4%2C%22codes%22%3A%5B${block}%5D%7D%5D%7D&enddate=${today}" +TARGET_FILE=$1 +TARGET_FILE="${TARGET_FILE:=bgt-citygml-nl.zip}" + +echo "START Downloading Full BGT to ${TARGET_FILE}..." - bash ${DIR}/robust-download.sh ${block_url} bgt_${block}.zip -done +bash ${DIR}/robust-download.sh ${BGT_URL} ${TARGET_FILE} -popd +echo "END Downloading Full BGT to ${TARGET_FILE}" diff --git a/bgt/etl/etl.sh b/bgt/etl/etl.sh index 38cb33ae..991c009e 100755 --- a/bgt/etl/etl.sh +++ b/bgt/etl/etl.sh @@ -9,7 +9,8 @@ # DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" -pushd $DIR >/dev/null + +pushd $DIR || exit 1 NLX_HOME=../.. @@ -41,4 +42,4 @@ host_options_file=options/`hostname`.args # python $STETL_HOME/stetl/main.py -c conf/etl-imgeo-v2.1.1.cfg -a "$pg_options temp_dir=temp max_features=$max_features gml_files=$gml_files $multi $spatial_extent" python $STETL_HOME/stetl/main.py -c conf/etl-imgeo-v2.1.1.cfg -a $options_file -popd >/dev/null +popd || exit 1 diff --git a/bgt/etl/robust-download.sh b/bgt/etl/robust-download.sh old mode 100644 new mode 100755 diff --git a/bgt/etl/sql/bgt-lean.sql b/bgt/etl/sql/bgt-lean.sql new file mode 100644 index 00000000..9b400457 --- /dev/null +++ b/bgt/etl/sql/bgt-lean.sql @@ -0,0 +1,1258 @@ +-- +-- Make a lean BGT in new schema. +-- - only actual+existing objects (actueelbestaand) +-- - only tables, no views +-- - one geometry per table +-- - only Simple geometries, no Curve/Surface like +-- - remove all obsolete columns +-- +-- Author: Just van den Broecke - 2022 + +-- Assume bgt is loaded in 'bgt_full' schema +DROP SCHEMA IF EXISTS bgt_lean CASCADE; +CREATE SCHEMA bgt_lean; + + +-- -- +-- -- BAK +-- -- + +BEGIN; +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.bak_cols CASCADE; +CREATE VIEW bgt_lean.bak_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_type, + plus_type +FROM latest.bakactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.bak_punt CASCADE; +CREATE TABLE bgt_lean.bak_punt AS +SELECT + a.*, + b.geometrie_punt +FROM bgt_lean.bak_cols a, latest.bakactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_punt is not null AND ST_IsValid(b.geometrie_punt); +CREATE INDEX bak_punt_geometrie_punt_geom_idx ON bgt_lean.bak_punt USING gist(geometrie_punt); +-- CREATE INDEX bak_punt_lokaalid_idx ON bgt_lean.bak_punt USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.bak_punt ADD CONSTRAINT bak_punt_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.bak_cols; +COMMIT; + +-- -- +-- -- BEGROEIDTERREINDEEL +-- -- + +BEGIN; +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.begroeidterreindeel_cols CASCADE; +CREATE VIEW bgt_lean.begroeidterreindeel_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_fysiekvoorkomen, + plus_fysiekvoorkomen, + begroeidterreindeeloptalud +FROM latest.begroeidterreindeelactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.begroeidterreindeel_vlak CASCADE; +CREATE TABLE bgt_lean.begroeidterreindeel_vlak AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_vlak))::geometry(Polygon, 28992) as geometrie_vlak +FROM bgt_lean.begroeidterreindeel_cols a, latest.begroeidterreindeelactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_vlak is not null AND ST_IsValid(b.geometrie_vlak); +CREATE INDEX begroeidterreindeel_vlak_geometrie_vlak_geom_idx ON bgt_lean.begroeidterreindeel_vlak USING gist(geometrie_vlak); +-- CREATE INDEX begroeidterreindeel_vlak_lokaalid_idx ON bgt_lean.begroeidterreindeel_vlak USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.begroeidterreindeel_vlak ADD CONSTRAINT begroeidterreindeel_vlak_pkey PRIMARY KEY (ogc_fid); + + +DROP TABLE IF EXISTS bgt_lean.begroeidterreindeel_kruinlijn CASCADE; +CREATE TABLE bgt_lean.begroeidterreindeel_kruinlijn AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(geometrie_kruinlijn))::geometry(LineString, 28992) as geometrie_kruinlijn +FROM bgt_lean.begroeidterreindeel_cols a, latest.begroeidterreindeelactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_kruinlijn is not null AND ST_IsValid(b.geometrie_kruinlijn); +CREATE INDEX begroeidterreindeel_kruinlijn_geometrie_kruinlijn_geom_idx ON bgt_lean.begroeidterreindeel_kruinlijn USING gist(geometrie_kruinlijn); +-- CREATE INDEX begroeidterreindeel_kruinlijn_lokaalid_idx ON bgt_lean.begroeidterreindeel_kruinlijn USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.begroeidterreindeel_kruinlijn ADD CONSTRAINT begroeidterreindeel_kruinlijn_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.begroeidterreindeel_cols; +COMMIT; + +-- -- +-- -- BORD +-- -- + +BEGIN; +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.bord_cols CASCADE; +CREATE VIEW bgt_lean.bord_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_type, + plus_type +FROM latest.bordactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.bord_punt CASCADE; +CREATE TABLE bgt_lean.bord_punt AS +SELECT + a.*, + b.geometrie_punt +FROM bgt_lean.bord_cols a, latest.bordactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_punt is not null AND ST_IsValid(b.geometrie_punt); +CREATE INDEX bord_punt_geometrie_punt_geom_idx ON bgt_lean.bord_punt USING gist(geometrie_punt); +-- CREATE INDEX bord_punt_lokaalid_idx ON bgt_lean.bord_punt USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.bord_punt ADD CONSTRAINT bord_punt_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.bord_cols; +COMMIT; + +-- +-- BUURT +-- +BEGIN; + +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.buurt_cols CASCADE; +CREATE VIEW bgt_lean.buurt_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + naam +FROM latest.buurtactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.buurt_vlak CASCADE; +CREATE TABLE bgt_lean.buurt_vlak AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_vlak))::geometry(MultiPolygon, 28992) as geometrie_multivlak +FROM bgt_lean.buurt_cols a, latest.buurtactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_vlak is not null AND ST_IsValid(b.geometrie_vlak); +CREATE INDEX buurt_vlak_geometrie_multivlak_geom_idx ON bgt_lean.buurt_vlak USING gist(geometrie_multivlak); +-- CREATE INDEX buurt_vlak_lokaalid_idx ON bgt_lean.buurt_vlak USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.buurt_vlak ADD CONSTRAINT buurt_vlak_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.buurt_cols; +COMMIT; + +-- +-- FUNCTIONEELGEBIED +-- +BEGIN; + +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.functioneelgebied_cols CASCADE; +CREATE VIEW bgt_lean.functioneelgebied_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_type, + plus_type, + naam +FROM latest.functioneelgebiedactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.functioneelgebied_vlak CASCADE; +CREATE TABLE bgt_lean.functioneelgebied_vlak AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_vlak))::geometry(Polygon, 28992) as geometrie_vlak +FROM bgt_lean.functioneelgebied_cols a, latest.functioneelgebiedactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_vlak is not null AND ST_IsValid(b.geometrie_vlak); +CREATE INDEX functioneelgebied_vlak_geometrie_vlak_geom_idx ON bgt_lean.functioneelgebied_vlak USING gist(geometrie_vlak); +-- CREATE INDEX functioneelgebied_vlak_lokaalid_idx ON bgt_lean.functioneelgebied_vlak USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.functioneelgebied_vlak ADD CONSTRAINT functioneelgebied_vlak_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.functioneelgebied_cols; +COMMIT; + +-- +-- GEBOUWINSTALLATIE +-- +BEGIN; + +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.gebouwinstallatie_cols CASCADE; +CREATE VIEW bgt_lean.gebouwinstallatie_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_type, + plus_type +FROM latest.gebouwinstallatieactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.gebouwinstallatie_vlak CASCADE; +CREATE TABLE bgt_lean.gebouwinstallatie_vlak AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_vlak))::geometry(Polygon, 28992) as geometrie_vlak +FROM bgt_lean.gebouwinstallatie_cols a, latest.gebouwinstallatieactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_vlak is not null AND ST_IsValid(b.geometrie_vlak); +CREATE INDEX gebouwinstallatie_vlak_geometrie_vlak_geom_idx ON bgt_lean.gebouwinstallatie_vlak USING gist(geometrie_vlak); +-- CREATE INDEX gebouwinstallatie_vlak_lokaalid_idx ON bgt_lean.gebouwinstallatie_vlak USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.gebouwinstallatie_vlak ADD CONSTRAINT gebouwinstallatie_vlak_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.gebouwinstallatie_cols; +COMMIT; + +-- -- +-- -- INSTALLATIE +-- -- + +BEGIN; +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.installatie_cols CASCADE; +CREATE VIEW bgt_lean.installatie_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_type, + plus_type +FROM latest.installatieactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.installatie_punt CASCADE; +CREATE TABLE bgt_lean.installatie_punt AS +SELECT + a.*, + b.geometrie_punt +FROM bgt_lean.installatie_cols a, latest.installatieactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_punt is not null AND ST_IsValid(b.geometrie_punt); +CREATE INDEX installatie_punt_geometrie_punt_geom_idx ON bgt_lean.installatie_punt USING gist(geometrie_punt); +-- CREATE INDEX installatie_punt_lokaalid_idx ON bgt_lean.installatie_punt USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.installatie_punt ADD CONSTRAINT installatie_punt_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.installatie_cols; +COMMIT; + +-- -- +-- -- KAST +-- -- + +BEGIN; +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.kast_cols CASCADE; +CREATE VIEW bgt_lean.kast_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_type, + plus_type +FROM latest.kastactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.kast_punt CASCADE; +CREATE TABLE bgt_lean.kast_punt AS +SELECT + a.*, + b.geometrie_punt +FROM bgt_lean.kast_cols a, latest.kastactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_punt is not null AND ST_IsValid(b.geometrie_punt); +CREATE INDEX kast_punt_geometrie_punt_geom_idx ON bgt_lean.kast_punt USING gist(geometrie_punt); +-- CREATE INDEX kast_punt_lokaalid_idx ON bgt_lean.kast_punt USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.kast_punt ADD CONSTRAINT kast_punt_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.kast_cols; +COMMIT; + + +-- +-- KUNSTWERKDEEL +-- +BEGIN; + +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.kunstwerkdeel_cols CASCADE; +CREATE VIEW bgt_lean.kunstwerkdeel_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_type, + plus_type +FROM latest.kunstwerkdeelactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.kunstwerkdeel_multipunt CASCADE; +CREATE TABLE bgt_lean.kunstwerkdeel_multipunt AS +SELECT + a.*, + b.geometrie_multipunt +FROM bgt_lean.kunstwerkdeel_cols a, latest.kunstwerkdeelactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_multipunt is not null AND ST_IsValid(b.geometrie_multipunt); +CREATE INDEX kunstwerkdeel_multipunt_geometrie_multipunt_geom_idx ON bgt_lean.kunstwerkdeel_multipunt USING gist(geometrie_multipunt); +-- CREATE INDEX kunstwerkdeel_multipunt_lokaalid_idx ON bgt_lean.kunstwerkdeel_multipunt USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.kunstwerkdeel_multipunt ADD CONSTRAINT kunstwerkdeel_multipunt_pkey PRIMARY KEY (ogc_fid); + +DROP TABLE IF EXISTS bgt_lean.kunstwerkdeel_multivlak CASCADE; +CREATE TABLE bgt_lean.kunstwerkdeel_multivlak AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_multivlak))::geometry(MultiPolygon, 28992) as geometrie_multivlak +FROM bgt_lean.kunstwerkdeel_cols a, latest.kunstwerkdeelactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_multivlak is not null AND ST_IsValid(b.geometrie_multivlak); +CREATE INDEX kunstwerkdeel_multivlak_geometrie_multivlak_geom_idx ON bgt_lean.kunstwerkdeel_multivlak USING gist(geometrie_multivlak); +-- CREATE INDEX kunstwerkdeel_multivlak_lokaalid_idx ON bgt_lean.kunstwerkdeel_multivlak USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.kunstwerkdeel_multivlak ADD CONSTRAINT kunstwerkdeel_multivlak_pkey PRIMARY KEY (ogc_fid); + +DROP TABLE IF EXISTS bgt_lean.kunstwerkdeel_vlak CASCADE; +CREATE TABLE bgt_lean.kunstwerkdeel_vlak AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_vlak))::geometry(Polygon, 28992) as geometrie_vlak +FROM bgt_lean.kunstwerkdeel_cols a, latest.kunstwerkdeelactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_vlak is not null AND ST_IsValid(b.geometrie_vlak); +CREATE INDEX kunstwerkdeel_vlak_geometrie_vlak_geom_idx ON bgt_lean.kunstwerkdeel_vlak USING gist(geometrie_vlak); +-- CREATE INDEX kunstwerkdeel_vlak_lokaalid_idx ON bgt_lean.kunstwerkdeel_vlak USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.kunstwerkdeel_vlak ADD CONSTRAINT kunstwerkdeel_vlak_pkey PRIMARY KEY (ogc_fid); + + +DROP TABLE IF EXISTS bgt_lean.kunstwerkdeel_lijn CASCADE; +CREATE TABLE bgt_lean.kunstwerkdeel_lijn AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(geometrie_lijn))::geometry(LineString, 28992) as geometrie_lijn +FROM bgt_lean.kunstwerkdeel_cols a, latest.kunstwerkdeelactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_lijn is not null AND ST_IsValid(b.geometrie_lijn); +CREATE INDEX kunstwerkdeel_lijn_geometrie_lijn_geom_idx ON bgt_lean.kunstwerkdeel_lijn USING gist(geometrie_lijn); +-- CREATE INDEX kunstwerkdeel_lijn_lokaalid_idx ON bgt_lean.kunstwerkdeel_lijn USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.kunstwerkdeel_lijn ADD CONSTRAINT kunstwerkdeel_lijn_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.kunstwerkdeel_cols; +COMMIT; + + +-- -- +-- -- MAST +-- -- + +BEGIN; +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.mast_cols CASCADE; +CREATE VIEW bgt_lean.mast_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_type, + plus_type +FROM latest.mastactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.mast_punt CASCADE; +CREATE TABLE bgt_lean.mast_punt AS +SELECT + a.*, + b.geometrie_punt +FROM bgt_lean.mast_cols a, latest.mastactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_punt is not null AND ST_IsValid(b.geometrie_punt); +CREATE INDEX mast_punt_geometrie_punt_geom_idx ON bgt_lean.mast_punt USING gist(geometrie_punt); +-- CREATE INDEX mast_punt_lokaalid_idx ON bgt_lean.mast_punt USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.mast_punt ADD CONSTRAINT mast_punt_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.mast_cols; +COMMIT; + +-- -- +-- -- ONBEGROEIDTERREINDEEL +-- -- + +BEGIN; +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.onbegroeidterreindeel_cols CASCADE; +CREATE VIEW bgt_lean.onbegroeidterreindeel_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_fysiekvoorkomen, + plus_fysiekvoorkomen, + onbegroeidterreindeeloptalud +FROM latest.onbegroeidterreindeelactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.onbegroeidterreindeel_vlak CASCADE; +CREATE TABLE bgt_lean.onbegroeidterreindeel_vlak AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_vlak))::geometry(Polygon, 28992) as geometrie_vlak +FROM bgt_lean.onbegroeidterreindeel_cols a, latest.onbegroeidterreindeelactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_vlak is not null AND ST_IsValid(b.geometrie_vlak); +CREATE INDEX onbegroeidterreindeel_vlak_geometrie_vlak_geom_idx ON bgt_lean.onbegroeidterreindeel_vlak USING gist(geometrie_vlak); +-- CREATE INDEX onbegroeidterreindeel_vlak_lokaalid_idx ON bgt_lean.onbegroeidterreindeel_vlak USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.onbegroeidterreindeel_vlak ADD CONSTRAINT onbegroeidterreindeel_vlak_pkey PRIMARY KEY (ogc_fid); + + +DROP TABLE IF EXISTS bgt_lean.onbegroeidterreindeel_kruinlijn CASCADE; +CREATE TABLE bgt_lean.onbegroeidterreindeel_kruinlijn AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(geometrie_kruinlijn))::geometry(LineString, 28992) as geometrie_kruinlijn +FROM bgt_lean.onbegroeidterreindeel_cols a, latest.onbegroeidterreindeelactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_kruinlijn is not null AND ST_IsValid(b.geometrie_kruinlijn); +CREATE INDEX onbegroeidterreindeel_kruinlijn_geometrie_kruinlijn_geom_idx ON bgt_lean.onbegroeidterreindeel_kruinlijn USING gist(geometrie_kruinlijn); +-- CREATE INDEX onbegroeidterreindeel_kruinlijn_lokaalid_idx ON bgt_lean.onbegroeidterreindeel_kruinlijn USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.onbegroeidterreindeel_kruinlijn ADD CONSTRAINT onbegroeidterreindeel_kruinlijn_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.onbegroeidterreindeel_cols; +COMMIT; + + +-- +-- ONDERSTEUNENDWATERDEEL +-- +BEGIN; + +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.ondersteunendwaterdeel_cols CASCADE; +CREATE VIEW bgt_lean.ondersteunendwaterdeel_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_type, + plus_type +FROM latest.ondersteunendwaterdeelactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.ondersteunendwaterdeel_vlak CASCADE; +CREATE TABLE bgt_lean.ondersteunendwaterdeel_vlak AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_vlak))::geometry(Polygon, 28992) as geometrie_vlak +FROM bgt_lean.ondersteunendwaterdeel_cols a, latest.ondersteunendwaterdeelactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_vlak is not null AND ST_IsValid(b.geometrie_vlak); +CREATE INDEX ondersteunendwaterdeel_vlak_geometrie_vlak_geom_idx ON bgt_lean.ondersteunendwaterdeel_vlak USING gist(geometrie_vlak); +-- CREATE INDEX ondersteunendwaterdeel_vlak_lokaalid_idx ON bgt_lean.ondersteunendwaterdeel_vlak USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.ondersteunendwaterdeel_vlak ADD CONSTRAINT ondersteunendwaterdeel_vlak_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.ondersteunendwaterdeel_cols; +COMMIT; + +-- +-- ONDERSTEUNENDWEGDEEL +-- +BEGIN; + +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.ondersteunendwegdeel_cols CASCADE; +CREATE VIEW bgt_lean.ondersteunendwegdeel_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_functie, + plus_functie, + bgt_fysiekvoorkomen, + plus_fysiekvoorkomen, + ondersteunendwegdeeloptalud +FROM latest.ondersteunendwegdeelactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.ondersteunendwegdeel_vlak CASCADE; +CREATE TABLE bgt_lean.ondersteunendwegdeel_vlak AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_vlak))::geometry(Polygon, 28992) as geometrie_vlak +FROM bgt_lean.ondersteunendwegdeel_cols a, latest.ondersteunendwegdeelactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_vlak is not null AND ST_IsValid(b.geometrie_vlak); +CREATE INDEX ondersteunendwegdeel_vlak_geometrie_vlak_geom_idx ON bgt_lean.ondersteunendwegdeel_vlak USING gist(geometrie_vlak); +-- CREATE INDEX ondersteunendwegdeel_vlak_lokaalid_idx ON bgt_lean.ondersteunendwegdeel_vlak USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.ondersteunendwegdeel_vlak ADD CONSTRAINT ondersteunendwegdeel_vlak_pkey PRIMARY KEY (ogc_fid); + + +DROP TABLE IF EXISTS bgt_lean.ondersteunendwegdeel_kruinlijn CASCADE; +CREATE TABLE bgt_lean.ondersteunendwegdeel_kruinlijn AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(geometrie_kruinlijn))::geometry(LineString, 28992) as geometrie_kruinlijn +FROM bgt_lean.ondersteunendwegdeel_cols a, latest.ondersteunendwegdeelactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_kruinlijn is not null AND ST_IsValid(b.geometrie_kruinlijn); +CREATE INDEX ondersteunendwegdeel_kruinlijn_geometrie_kruinlijn_geom_idx ON bgt_lean.ondersteunendwegdeel_kruinlijn USING gist(geometrie_kruinlijn); +-- CREATE INDEX ondersteunendwegdeel_kruinlijn_lokaalid_idx ON bgt_lean.ondersteunendwegdeel_kruinlijn USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.ondersteunendwegdeel_kruinlijn ADD CONSTRAINT ondersteunendwegdeel_kruinlijn_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.ondersteunendwegdeel_cols; +COMMIT; + +-- +-- OPENBARERUIMTE +-- +BEGIN; + +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.openbareruimte_cols CASCADE; +CREATE VIEW bgt_lean.openbareruimte_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + naam +FROM latest.openbareruimteactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.openbareruimte_multivlak CASCADE; +CREATE TABLE bgt_lean.openbareruimte_multivlak AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_vlak))::geometry(MultiPolygon, 28992) as geometrie_multivlak +FROM bgt_lean.openbareruimte_cols a, latest.openbareruimteactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_vlak is not null AND ST_IsValid(b.geometrie_vlak); +CREATE INDEX openbareruimte_multivlak_geometrie_multivlak_geom_idx ON bgt_lean.openbareruimte_multivlak USING gist(geometrie_multivlak); +-- CREATE INDEX openbareruimte_multivlak_lokaalid_idx ON bgt_lean.openbareruimte_multivlak USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.openbareruimte_multivlak ADD CONSTRAINT openbareruimte_multivlak_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.openbareruimte_cols; +COMMIT; + + +-- -- +-- -- OPENBARERUIMTELABEL +-- -- + +BEGIN; +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.openbareruimtelabel_cols CASCADE; +CREATE VIEW bgt_lean.openbareruimtelabel_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + identificatiebagopr, + tekst, + hoek, + openbareruimtetype +FROM latest.openbareruimtelabelactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.openbareruimtelabel_punt CASCADE; +CREATE TABLE bgt_lean.openbareruimtelabel_punt AS +SELECT + a.*, + b.geometrie_punt +FROM bgt_lean.openbareruimtelabel_cols a, latest.openbareruimtelabelactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_punt is not null AND ST_IsValid(b.geometrie_punt); +CREATE INDEX openbareruimtelabel_punt_geometrie_punt_geom_idx ON bgt_lean.openbareruimtelabel_punt USING gist(geometrie_punt); +-- CREATE INDEX openbareruimtelabel_punt_lokaalid_idx ON bgt_lean.openbareruimtelabel_punt USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.openbareruimtelabel_punt ADD CONSTRAINT openbareruimtelabel_punt_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.openbareruimtelabel_cols; +COMMIT; + + +-- +-- OVERBRUGGINGSDEEL +-- +BEGIN; + +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.overbruggingsdeel_cols CASCADE; +CREATE VIEW bgt_lean.overbruggingsdeel_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + typeoverbruggingsdeel, + hoortbijtypeoverbrugging, + overbruggingisbeweegbaar +FROM latest.overbruggingsdeelactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.overbruggingsdeel_vlak CASCADE; +CREATE TABLE bgt_lean.overbruggingsdeel_vlak AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_vlak))::geometry(Polygon, 28992) as geometrie_vlak +FROM bgt_lean.overbruggingsdeel_cols a, latest.overbruggingsdeelactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_vlak is not null AND ST_IsValid(b.geometrie_vlak); +CREATE INDEX overbruggingsdeel_vlak_geometrie_vlak_geom_idx ON bgt_lean.overbruggingsdeel_vlak USING gist(geometrie_vlak); +-- CREATE INDEX overbruggingsdeel_vlak_lokaalid_idx ON bgt_lean.overbruggingsdeel_vlak USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.overbruggingsdeel_vlak ADD CONSTRAINT overbruggingsdeel_vlak_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.overbruggingsdeel_cols; +COMMIT; + + +-- +-- OVERIGBOUWWERK +-- +BEGIN; + +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.overigbouwwerk_cols CASCADE; +CREATE VIEW bgt_lean.overigbouwwerk_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_type, + plus_type + +FROM latest.overigbouwwerkactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.overigbouwwerk_multivlak CASCADE; +CREATE TABLE bgt_lean.overigbouwwerk_multivlak AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_vlak))::geometry(MultiPolygon, 28992) as geometrie_multivlak +FROM bgt_lean.overigbouwwerk_cols a, latest.overigbouwwerkactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_vlak is not null AND ST_IsValid(b.geometrie_vlak); +CREATE INDEX overigbouwwerk_multivlak_geometrie_multivlak_geom_idx ON bgt_lean.overigbouwwerk_multivlak USING gist(geometrie_multivlak); +-- CREATE INDEX overigbouwwerk_multivlak_lokaalid_idx ON bgt_lean.overigbouwwerk_multivlak USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.overigbouwwerk_multivlak ADD CONSTRAINT overigbouwwerk_multivlak_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.overigbouwwerk_cols; +COMMIT; + +-- +-- OVERIGESCHEIDING +-- +BEGIN; + +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.overigescheiding_cols CASCADE; +CREATE VIEW bgt_lean.overigescheiding_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + plus_type +FROM latest.overigescheidingactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.overigescheiding_vlak CASCADE; +CREATE TABLE bgt_lean.overigescheiding_vlak AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_vlak))::geometry(Polygon, 28992) as geometrie_vlak +FROM bgt_lean.overigescheiding_cols a, latest.overigescheidingactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_vlak is not null AND ST_IsValid(b.geometrie_vlak); +CREATE INDEX overigescheiding_vlak_geometrie_vlak_geom_idx ON bgt_lean.overigescheiding_vlak USING gist(geometrie_vlak); +-- CREATE INDEX overigescheiding_vlak_lokaalid_idx ON bgt_lean.overigescheiding_vlak USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.overigescheiding_vlak ADD CONSTRAINT overigescheiding_vlak_pkey PRIMARY KEY (ogc_fid); + + +DROP TABLE IF EXISTS bgt_lean.overigescheiding_lijn CASCADE; +CREATE TABLE bgt_lean.overigescheiding_lijn AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(geometrie_lijn))::geometry(LineString, 28992) as geometrie_lijn +FROM bgt_lean.overigescheiding_cols a, latest.overigescheidingactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_lijn is not null AND ST_IsValid(b.geometrie_lijn); +CREATE INDEX overigescheiding_lijn_geometrie_lijn_geom_idx ON bgt_lean.overigescheiding_lijn USING gist(geometrie_lijn); +-- CREATE INDEX overigescheiding_lijn_lokaalid_idx ON bgt_lean.overigescheiding_lijn USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.overigescheiding_lijn ADD CONSTRAINT overigescheiding_lijn_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.overigescheiding_cols; + +COMMIT; +-- -- +-- -- PAAL +-- -- + +BEGIN; +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.paal_cols CASCADE; +CREATE VIEW bgt_lean.paal_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_type, + plus_type, + hectometeraanduiding +FROM latest.paalactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.paal_punt CASCADE; +CREATE TABLE bgt_lean.paal_punt AS +SELECT + a.*, + b.geometrie_punt +FROM bgt_lean.paal_cols a, latest.paalactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_punt is not null AND ST_IsValid(b.geometrie_punt); +CREATE INDEX paal_punt_geometrie_punt_geom_idx ON bgt_lean.paal_punt USING gist(geometrie_punt); +-- CREATE INDEX paal_punt_lokaalid_idx ON bgt_lean.paal_punt USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.paal_punt ADD CONSTRAINT paal_punt_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.paal_cols; +COMMIT; + +-- +-- PAND +-- +BEGIN; + +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.pand_cols CASCADE; +CREATE VIEW bgt_lean.pand_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + identificatiebagpnd + +FROM latest.pandactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.pand_multivlak CASCADE; +CREATE TABLE bgt_lean.pand_multivlak AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_vlak))::geometry(MultiPolygon, 28992) as geometrie_multivlak +FROM bgt_lean.pand_cols a, latest.pandactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_vlak is not null AND ST_IsValid(b.geometrie_vlak); +CREATE INDEX pand_multivlak_geometrie_multivlak_geom_idx ON bgt_lean.pand_multivlak USING gist(geometrie_multivlak); +-- CREATE INDEX pand_multivlak_lokaalid_idx ON bgt_lean.pand_multivlak USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.pand_multivlak ADD CONSTRAINT pand_multivlak_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.pand_cols; +COMMIT; + +-- -- +-- -- PAND_NUMMERAANDUIDING +-- -- + +BEGIN; +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.pand_nummeraanduiding_cols CASCADE; +CREATE VIEW bgt_lean.pand_nummeraanduiding_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + identificatiebagpnd, + nummeraanduidingtekst, + nummeraanduidinghoek, + identificatiebagvbolaagstehuisnummer, + identificatiebagvbohoogstehuisnummer +FROM latest.pand_nummeraanduidingactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.pand_nummeraanduiding_punt CASCADE; +CREATE TABLE bgt_lean.pand_nummeraanduiding_punt AS +SELECT + a.*, + b.geometrie_nummeraanduiding as geometrie_punt +FROM bgt_lean.pand_nummeraanduiding_cols a, latest.pand_nummeraanduidingactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_nummeraanduiding is not null AND ST_IsValid(b.geometrie_nummeraanduiding); +CREATE INDEX pand_nummeraanduiding_punt_geometrie_punt_geom_idx ON bgt_lean.pand_nummeraanduiding_punt USING gist(geometrie_punt); +-- CREATE INDEX pand_nummeraanduiding_punt_lokaalid_idx ON bgt_lean.pand_nummeraanduiding_punt USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.pand_nummeraanduiding_punt ADD CONSTRAINT pand_nummeraanduiding_punt_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.pand_nummeraanduiding_cols; +COMMIT; + +-- -- +-- -- PUT +-- -- + +BEGIN; +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.put_cols CASCADE; +CREATE VIEW bgt_lean.put_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_type, + plus_type +FROM latest.putactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.put_punt CASCADE; +CREATE TABLE bgt_lean.put_punt AS +SELECT + a.*, + b.geometrie_punt +FROM bgt_lean.put_cols a, latest.putactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_punt is not null AND ST_IsValid(b.geometrie_punt); +CREATE INDEX put_punt_geometrie_punt_geom_idx ON bgt_lean.put_punt USING gist(geometrie_punt); +-- CREATE INDEX put_punt_lokaalid_idx ON bgt_lean.put_punt USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.put_punt ADD CONSTRAINT put_punt_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.put_cols; +COMMIT; + + +-- +-- SCHEIDING +-- + +BEGIN; +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.scheiding_cols CASCADE; +CREATE VIEW bgt_lean.scheiding_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_type, + plus_type +FROM latest.scheidingactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.scheiding_vlak CASCADE; +CREATE TABLE bgt_lean.scheiding_vlak AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_vlak))::geometry(Polygon, 28992) as geometrie_vlak +FROM bgt_lean.scheiding_cols a, latest.scheidingactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_vlak is not null AND ST_IsValid(b.geometrie_vlak); +CREATE INDEX scheiding_vlak_geometrie_vlak_geom_idx ON bgt_lean.scheiding_vlak USING gist(geometrie_vlak); +-- CREATE INDEX scheiding_vlak_lokaalid_idx ON bgt_lean.scheiding_vlak USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.scheiding_vlak ADD CONSTRAINT scheiding_vlak_pkey PRIMARY KEY (ogc_fid); + + +DROP TABLE IF EXISTS bgt_lean.scheiding_lijn CASCADE; +CREATE TABLE bgt_lean.scheiding_lijn AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(geometrie_lijn))::geometry(LineString, 28992) as geometrie_lijn +FROM bgt_lean.scheiding_cols a, latest.scheidingactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_lijn is not null AND ST_IsValid(b.geometrie_lijn); +CREATE INDEX scheiding_lijn_geometrie_lijn_geom_idx ON bgt_lean.scheiding_lijn USING gist(geometrie_lijn); +-- CREATE INDEX scheiding_lijn_lokaalid_idx ON bgt_lean.scheiding_lijn USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.scheiding_lijn ADD CONSTRAINT scheiding_lijn_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.scheiding_cols; +COMMIT; + + +-- +-- SENSOR +-- + +BEGIN; +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.sensor_cols CASCADE; +CREATE VIEW bgt_lean.sensor_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_type, + plus_type +FROM latest.sensoractueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.sensor_lijn CASCADE; +CREATE TABLE bgt_lean.sensor_lijn AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_lijn))::geometry(LineString, 28992) as geometrie_lijn +FROM bgt_lean.sensor_cols a, latest.sensoractueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_lijn is not null AND ST_IsValid(b.geometrie_lijn); +CREATE INDEX sensor_lijn_geometrie_lijn_geom_idx ON bgt_lean.sensor_lijn USING gist(geometrie_lijn); +-- CREATE INDEX sensor_lijn_lokaalid_idx ON bgt_lean.sensor_lijn USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.sensor_lijn ADD CONSTRAINT sensor_lijn_pkey PRIMARY KEY (ogc_fid); + + +DROP TABLE IF EXISTS bgt_lean.sensor_punt CASCADE; +CREATE TABLE bgt_lean.sensor_punt AS +SELECT + a.*, + b.geometrie_punt +FROM bgt_lean.sensor_cols a, latest.sensoractueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_punt is not null AND ST_IsValid(b.geometrie_punt); +CREATE INDEX sensor_punt_geometrie_punt_geom_idx ON bgt_lean.sensor_punt USING gist(geometrie_punt); +-- CREATE INDEX sensor_punt_lokaalid_idx ON bgt_lean.sensor_punt USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.sensor_punt ADD CONSTRAINT sensor_punt_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.sensor_cols; +COMMIT; + + +-- +-- SPOOR +-- + +BEGIN; +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.spoor_cols CASCADE; +CREATE VIEW bgt_lean.spoor_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_functie, + plus_functie +FROM latest.spooractueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.spoor_lijn CASCADE; +CREATE TABLE bgt_lean.spoor_lijn AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_lijn))::geometry(LineString, 28992) as geometrie_lijn +FROM bgt_lean.spoor_cols a, latest.spooractueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_lijn is not null AND ST_IsValid(b.geometrie_lijn); +CREATE INDEX spoor_lijn_geometrie_lijn_geom_idx ON bgt_lean.spoor_lijn USING gist(geometrie_lijn); +-- CREATE INDEX spoor_lijn_lokaalid_idx ON bgt_lean.spoor_lijn USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.spoor_lijn ADD CONSTRAINT spoor_lijn_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.spoor_cols; +COMMIT; + +-- +-- STADSDEEL +-- +BEGIN; + +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.stadsdeel_cols CASCADE; +CREATE VIEW bgt_lean.stadsdeel_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + naam +FROM latest.stadsdeelactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.stadsdeel_vlak CASCADE; +CREATE TABLE bgt_lean.stadsdeel_vlak AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_vlak))::geometry(MultiPolygon, 28992) as geometrie_multivlak +FROM bgt_lean.stadsdeel_cols a, latest.stadsdeelactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_vlak is not null AND ST_IsValid(b.geometrie_vlak); +CREATE INDEX stadsdeel_vlak_geometrie_multivlak_geom_idx ON bgt_lean.stadsdeel_vlak USING gist(geometrie_multivlak); +-- CREATE INDEX stadsdeel_vlak_lokaalid_idx ON bgt_lean.stadsdeel_vlak USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.stadsdeel_vlak ADD CONSTRAINT stadsdeel_vlak_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.stadsdeel_cols; +COMMIT; + + +-- -- +-- -- STRAATMEUBILAIR +-- -- + +BEGIN; +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.straatmeubilair_cols CASCADE; +CREATE VIEW bgt_lean.straatmeubilair_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_type, + plus_type +FROM latest.straatmeubilairactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.straatmeubilair_punt CASCADE; +CREATE TABLE bgt_lean.straatmeubilair_punt AS +SELECT + a.*, + b.geometrie_punt +FROM bgt_lean.straatmeubilair_cols a, latest.straatmeubilairactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_punt is not null AND ST_IsValid(b.geometrie_punt); +CREATE INDEX straatmeubilair_punt_geometrie_punt_geom_idx ON bgt_lean.straatmeubilair_punt USING gist(geometrie_punt); +-- CREATE INDEX straatmeubilair_punt_lokaalid_idx ON bgt_lean.straatmeubilair_punt USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.straatmeubilair_punt ADD CONSTRAINT straatmeubilair_punt_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.straatmeubilair_cols; +COMMIT; + + +-- +-- TUNNELDEEL +-- + +BEGIN; +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.tunneldeel_cols CASCADE; +CREATE VIEW bgt_lean.tunneldeel_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging +FROM latest.tunneldeelactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.tunneldeel_vlak CASCADE; +CREATE TABLE bgt_lean.tunneldeel_vlak AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_vlak))::geometry(Polygon, 28992) as geometrie_vlak +FROM bgt_lean.tunneldeel_cols a, latest.tunneldeelactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_vlak is not null AND ST_IsValid(b.geometrie_vlak); +CREATE INDEX tunneldeel_vlak_geometrie_vlak_geom_idx ON bgt_lean.tunneldeel_vlak USING gist(geometrie_vlak); +-- CREATE INDEX tunneldeel_vlak_lokaalid_idx ON bgt_lean.tunneldeel_vlak USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.tunneldeel_vlak ADD CONSTRAINT tunneldeel_vlak_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.tunneldeel_cols; +COMMIT; + +-- +-- VEGETATIEOBJECT +-- + +BEGIN; +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.vegetatieobject_cols CASCADE; +CREATE VIEW bgt_lean.vegetatieobject_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_type, + plus_type +FROM latest.vegetatieobjectactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.vegetatieobject_lijn CASCADE; +CREATE TABLE bgt_lean.vegetatieobject_lijn AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(geometrie_lijn))::geometry(LineString, 28992) as geometrie_lijn +FROM bgt_lean.vegetatieobject_cols a, latest.vegetatieobjectactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_lijn is not null AND ST_IsValid(b.geometrie_lijn); +CREATE INDEX vegetatieobject_lijn_geometrie_lijn_geom_idx ON bgt_lean.vegetatieobject_lijn USING gist(geometrie_lijn); +-- CREATE INDEX vegetatieobject_lijn_lokaalid_idx ON bgt_lean.vegetatieobject_lijn USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.vegetatieobject_lijn ADD CONSTRAINT vegetatieobject_lijn_pkey PRIMARY KEY (ogc_fid); + +DROP TABLE IF EXISTS bgt_lean.vegetatieobject_punt CASCADE; +CREATE TABLE bgt_lean.vegetatieobject_punt AS +SELECT + a.*, + b.geometrie_punt +FROM bgt_lean.vegetatieobject_cols a, latest.vegetatieobjectactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_punt is not null AND ST_IsValid(b.geometrie_punt); +CREATE INDEX vegetatieobject_punt_geometrie_punt_geom_idx ON bgt_lean.vegetatieobject_punt USING gist(geometrie_punt); +-- CREATE INDEX vegetatieobject_punt_lokaalid_idx ON bgt_lean.vegetatieobject_punt USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.vegetatieobject_punt ADD CONSTRAINT vegetatieobject_punt_pkey PRIMARY KEY (ogc_fid); + +DROP TABLE IF EXISTS bgt_lean.vegetatieobject_vlak CASCADE; +CREATE TABLE bgt_lean.vegetatieobject_vlak AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_vlak))::geometry(Polygon, 28992) as geometrie_vlak +FROM bgt_lean.vegetatieobject_cols a, latest.vegetatieobjectactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_vlak is not null AND ST_IsValid(b.geometrie_vlak); +CREATE INDEX vegetatieobject_vlak_geometrie_vlak_geom_idx ON bgt_lean.vegetatieobject_vlak USING gist(geometrie_vlak); +-- CREATE INDEX vegetatieobject_vlak_lokaalid_idx ON bgt_lean.vegetatieobject_vlak USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.vegetatieobject_vlak ADD CONSTRAINT vegetatieobject_vlak_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.vegetatieobject_cols; +COMMIT; + +-- +-- WATERDEEL +-- + +BEGIN; +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.waterdeel_cols CASCADE; +CREATE VIEW bgt_lean.waterdeel_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_type, + plus_type +FROM latest.waterdeelactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.waterdeel_vlak CASCADE; +CREATE TABLE bgt_lean.waterdeel_vlak AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_vlak))::geometry(Polygon, 28992) as geometrie_vlak +FROM bgt_lean.waterdeel_cols a, latest.waterdeelactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_vlak is not null AND ST_IsValid(b.geometrie_vlak); +CREATE INDEX waterdeel_vlak_geometrie_vlak_geom_idx ON bgt_lean.waterdeel_vlak USING gist(geometrie_vlak); +-- CREATE INDEX waterdeel_vlak_lokaalid_idx ON bgt_lean.waterdeel_vlak USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.waterdeel_vlak ADD CONSTRAINT waterdeel_vlak_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.waterdeel_cols; +COMMIT; + +-- +-- WATERINRICHTINGSELEMENT +-- + +BEGIN; +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.waterinrichtingselement_cols CASCADE; +CREATE VIEW bgt_lean.waterinrichtingselement_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_type, + plus_type +FROM latest.waterinrichtingselementactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.waterinrichtingselement_lijn CASCADE; +CREATE TABLE bgt_lean.waterinrichtingselement_lijn AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(geometrie_lijn))::geometry(LineString, 28992) as geometrie_lijn +FROM bgt_lean.waterinrichtingselement_cols a, latest.waterinrichtingselementactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_lijn is not null AND ST_IsValid(b.geometrie_lijn); +CREATE INDEX waterinrichtingselement_lijn_geometrie_lijn_geom_idx ON bgt_lean.waterinrichtingselement_lijn USING gist(geometrie_lijn); +-- CREATE INDEX waterinrichtingselement_lijn_lokaalid_idx ON bgt_lean.waterinrichtingselement_lijn USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.waterinrichtingselement_lijn ADD CONSTRAINT waterinrichtingselement_lijn_pkey PRIMARY KEY (ogc_fid); + +DROP TABLE IF EXISTS bgt_lean.waterinrichtingselement_punt CASCADE; +CREATE TABLE bgt_lean.waterinrichtingselement_punt AS +SELECT + a.*, + b.geometrie_punt +FROM bgt_lean.waterinrichtingselement_cols a, latest.waterinrichtingselementactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_punt is not null AND ST_IsValid(b.geometrie_punt); +CREATE INDEX waterinrichtingselement_punt_geometrie_punt_geom_idx ON bgt_lean.waterinrichtingselement_punt USING gist(geometrie_punt); +-- CREATE INDEX waterinrichtingselement_punt_lokaalid_idx ON bgt_lean.waterinrichtingselement_punt USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.waterinrichtingselement_punt ADD CONSTRAINT waterinrichtingselement_punt_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.waterinrichtingselement_cols; +COMMIT; + + +-- +-- WATERSCHAP +-- +BEGIN; + +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.waterschap_cols CASCADE; +CREATE VIEW bgt_lean.waterschap_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + naam +FROM latest.waterschapactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.waterschap_vlak CASCADE; +CREATE TABLE bgt_lean.waterschap_vlak AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_vlak))::geometry(MultiPolygon, 28992) as geometrie_multivlak +FROM bgt_lean.waterschap_cols a, latest.waterschapactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_vlak is not null AND ST_IsValid(b.geometrie_vlak); +CREATE INDEX waterschap_vlak_geometrie_multivlak_geom_idx ON bgt_lean.waterschap_vlak USING gist(geometrie_multivlak); +-- CREATE INDEX waterschap_vlak_lokaalid_idx ON bgt_lean.waterschap_vlak USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.waterschap_vlak ADD CONSTRAINT waterschap_vlak_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.waterschap_cols; +COMMIT; + +-- +-- WEGDEEL +-- + +BEGIN; +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.wegdeel_cols CASCADE; +CREATE VIEW bgt_lean.wegdeel_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_functie, + plus_functie, + bgt_fysiekvoorkomen, + plus_fysiekvoorkomen, + wegdeeloptalud +FROM latest.wegdeelactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.wegdeel_vlak CASCADE; +CREATE TABLE bgt_lean.wegdeel_vlak AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_vlak))::geometry(Polygon, 28992) as geometrie_vlak +FROM bgt_lean.wegdeel_cols a, latest.wegdeelactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_vlak is not null AND ST_IsValid(b.geometrie_vlak); +CREATE INDEX wegdeel_vlak_geometrie_vlak_geom_idx ON bgt_lean.wegdeel_vlak USING gist(geometrie_vlak); +-- CREATE INDEX wegdeel_vlak_lokaalid_idx ON bgt_lean.wegdeel_vlak USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.wegdeel_vlak ADD CONSTRAINT wegdeel_vlak_pkey PRIMARY KEY (ogc_fid); + + +DROP TABLE IF EXISTS bgt_lean.wegdeel_kruinlijn CASCADE; +CREATE TABLE bgt_lean.wegdeel_kruinlijn AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(geometrie_kruinlijn))::geometry(LineString, 28992) as geometrie_kruinlijn +FROM bgt_lean.wegdeel_cols a, latest.wegdeelactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_kruinlijn is not null AND ST_IsValid(b.geometrie_kruinlijn); +CREATE INDEX wegdeel_kruinlijn_geometrie_kruinlijn_geom_idx ON bgt_lean.wegdeel_kruinlijn USING gist(geometrie_kruinlijn); +-- CREATE INDEX wegdeel_kruinlijn_lokaalid_idx ON bgt_lean.wegdeel_kruinlijn USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.wegdeel_kruinlijn ADD CONSTRAINT wegdeel_kruinlijn_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.wegdeel_cols; +COMMIT; + +-- +-- WEGINRICHTINGSELEMENT +-- + +BEGIN; +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.weginrichtingselement_cols CASCADE; +CREATE VIEW bgt_lean.weginrichtingselement_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + bgt_type, + plus_type +FROM latest.weginrichtingselementactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.weginrichtingselement_lijn CASCADE; +CREATE TABLE bgt_lean.weginrichtingselement_lijn AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(geometrie_lijn))::geometry(LineString, 28992) as geometrie_lijn +FROM bgt_lean.weginrichtingselement_cols a, latest.weginrichtingselementactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_lijn is not null AND ST_IsValid(b.geometrie_lijn); +CREATE INDEX weginrichtingselement_lijn_geometrie_lijn_geom_idx ON bgt_lean.weginrichtingselement_lijn USING gist(geometrie_lijn); +-- CREATE INDEX weginrichtingselement_lijn_lokaalid_idx ON bgt_lean.weginrichtingselement_lijn USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.weginrichtingselement_lijn ADD CONSTRAINT weginrichtingselement_lijn_pkey PRIMARY KEY (ogc_fid); + +DROP TABLE IF EXISTS bgt_lean.weginrichtingselement_punt CASCADE; +CREATE TABLE bgt_lean.weginrichtingselement_punt AS +SELECT + a.*, + b.geometrie_punt +FROM bgt_lean.weginrichtingselement_cols a, latest.weginrichtingselementactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_punt is not null AND ST_IsValid(b.geometrie_punt); +CREATE INDEX weginrichtingselement_punt_geometrie_punt_geom_idx ON bgt_lean.weginrichtingselement_punt USING gist(geometrie_punt); +-- CREATE INDEX weginrichtingselement_punt_lokaalid_idx ON bgt_lean.weginrichtingselement_punt USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.weginrichtingselement_punt ADD CONSTRAINT weginrichtingselement_punt_pkey PRIMARY KEY (ogc_fid); + +DROP TABLE IF EXISTS bgt_lean.weginrichtingselement_vlak CASCADE; +CREATE TABLE bgt_lean.weginrichtingselement_vlak AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_vlak))::geometry(Polygon, 28992) as geometrie_vlak +FROM bgt_lean.weginrichtingselement_cols a, latest.weginrichtingselementactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_vlak is not null AND ST_IsValid(b.geometrie_vlak); +CREATE INDEX weginrichtingselement_vlak_geometrie_vlak_geom_idx ON bgt_lean.weginrichtingselement_vlak USING gist(geometrie_vlak); +-- CREATE INDEX weginrichtingselement_vlak_lokaalid_idx ON bgt_lean.weginrichtingselement_vlak USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.weginrichtingselement_vlak ADD CONSTRAINT weginrichtingselement_vlak_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.weginrichtingselement_cols; +COMMIT; + +-- +-- WIJK +-- +BEGIN; + +-- Helper VIEW to select columns for final tables once +DROP VIEW IF EXISTS bgt_lean.wijk_cols CASCADE; +CREATE VIEW bgt_lean.wijk_cols AS +SELECT + ogc_fid, + lokaalid, + relatievehoogteligging, + naam +FROM latest.wijkactueelbestaand; + +DROP TABLE IF EXISTS bgt_lean.wijk_vlak CASCADE; +CREATE TABLE bgt_lean.wijk_vlak AS +SELECT + a.*, + ST_MakeValid(ST_CurveToLine(b.geometrie_vlak))::geometry(MultiPolygon, 28992) as geometrie_multivlak +FROM bgt_lean.wijk_cols a, latest.wijkactueelbestaand b +WHERE a.ogc_fid = b.ogc_fid AND b.geometrie_vlak is not null AND ST_IsValid(b.geometrie_vlak); +CREATE INDEX wijk_vlak_geometrie_multivlak_geom_idx ON bgt_lean.wijk_vlak USING gist(geometrie_multivlak); +-- CREATE INDEX wijk_vlak_lokaalid_idx ON bgt_lean.wijk_vlak USING btree (lokaalid); +ALTER TABLE ONLY bgt_lean.wijk_vlak ADD CONSTRAINT wijk_vlak_pkey PRIMARY KEY (ogc_fid); + +DROP VIEW bgt_lean.wijk_cols; +COMMIT; diff --git a/doc/source/bgtextract.rst b/doc/source/bgtextract.rst index 785e14be..3ef644d5 100644 --- a/doc/source/bgtextract.rst +++ b/doc/source/bgtextract.rst @@ -10,11 +10,9 @@ heten kortweg ``Bgt-extract`` of soms ``NLExtract-BGT``. NB: als je alleen interesse hebt om een PostGIS versie van de laatste BGT te hebben, kun je deze ook (betaald) downloaden als PostGIS dumpfile via de link https://geotoko.nl/. - De dump file (``.dump`` bestand) kun je direct inlezen in PostGIS, bijv met ``PGAdminIII``. + De 'full' dump file (``.dump`` bestand) of 'BGT Lean' dump kun je dan direct inlezen in PostGIS, bijv met ``PGAdmin``. Dan hoef je alle zaken hieronder niet uit te voeren :-). -Om gespecialiseerde extracties bijv naar andere databases zoals Oracle te doen, neem contact op -met het NLExtract-team, zie "Ondersteuning": http://www.nlextract.nl/issues. Handleiding BGT-extract ======================= @@ -22,16 +20,23 @@ Handleiding BGT-extract Algemeen -------- -Bgt-extract is onderdeel van de NLExtract tools voor het inlezen en verrijken van de Basisregistratie Grootschalige Topografie (BGT). Deze open dataset bestaat uit een aantal GML-bestanden en wordt (voorlopig) ingelezen in een PostgreSQL/PostGIS database. +Bgt-extract is onderdeel van de NLExtract tools voor het inlezen en verrijken van de Basisregistratie Grootschalige Topografie (BGT). +Deze open dataset bestaat uit een aantal GML-bestanden en wordt (voorlopig) ingelezen in een PostgreSQL/PostGIS database. -Er zijn 41 typen BGT-objecten (featureklassen). Iedere featureklasse heeft een groot aantal attributen en meestal ook meerdere geometrie-attributen. De BGT is gebaseerd op CityGML. Hierdoor biedt het datamodel ruimte voor toekomstige uitbreiding, bijv. de toevoeging van 3D-geometrie. Zie voor de beschrijving van de structuur en verdere bijzonderheden voor de GML-bestandsindeling de documentatie op `BGTweb `_. +Er zijn 41 typen BGT-objecten (featureklassen). Iedere featureklasse heeft een groot aantal attributen en meestal ook meerdere geometrie-attributen. +De BGT is gebaseerd op CityGML. Hierdoor biedt het datamodel ruimte voor toekomstige uitbreiding, bijv. de toevoeging van 3D-geometrie. +Zie voor de beschrijving van de structuur en verdere bijzonderheden voor de GML-bestandsindeling de documentatie op `BGTweb `_. BGT downloaden -------------- -De brondata van de BGT in GML kun je via `PDOK Download Basisregistratie Grootschalige Topografie `_ downloaden. Voor NLExtract zijn reeds downloadscripts gemaakt, voor zowel Linux als Windows. +De brondata van de BGT in GML kun je via `PDOK Download Basisregistratie Grootschalige Topografie `_ downloaden. +Voor NLExtract zijn reeds downloadscripts gemaakt, voor zowel Linux als Windows. -De BGT wordt via PDOK geleverd in ZIP-bestanden. Het is mogelijk om zowel een landelijk bestand als deelbestanden te downloaden. De laatste zijn opgedeeld in een grid van 2x2, 4x4, 8x8, 16x16, 32x32 en 64x64 km. Omdat de PDOK-download wel eens hapert, wordt aanbevolen om de 64x64 km-extracten te downloaden via een downloadscript van NLExtract. Het is mogelijk om de BGT via PDOK-services te downloaden, bijv. via WFS. Het inlezen van deze gegevens via NLExtract wordt niet ondersteund. +De BGT wordt via PDOK geleverd in ZIP-bestanden. Het is mogelijk om zowel een landelijk bestand als deelbestanden te downloaden. +De laatste zijn opgedeeld in een grid van 2x2, 4x4, 8x8, 16x16, 32x32 en 64x64 km. +Omdat de PDOK-download wel eens hapert, wordt aanbevolen om de 64x64 km-extracten te downloaden via een downloadscript van NLExtract. +Het is mogelijk om de BGT via PDOK-services te downloaden, bijv. via WFS. Het inlezen van deze gegevens via NLExtract wordt niet ondersteund. De BGT is beschikbaar in meerdere varianten: @@ -52,16 +57,25 @@ Vind altijd de laatste versie op: https://github.com/nlextract/NLExtract/release Omdat NLExtract voortdurend in ontwikkeling is, kun je ook de actuele broncode, een `snapshot`, downloaden en op dezelfde manier gebruiken als een versie: -- snapshot via git: git clone http://github.com/opengeogroep/NLExtract.git +- snapshot via git: git clone https://github.com/opengeogroep/NLExtract.git - snapshot als .zip: https://github.com/nlextract/NLExtract/archive/master.zip Ontwerp ------- In eerste instantie wordt de GML geconverteerd en geladen naar PostGIS. Dit gebeurt met de GDAL/OGR tool -ogr2ogr. Echter, het feit dat er meerdere geometrieën per object kunnen voorkomen, maakt dit lastiger. De meeste objecten bevatten zowel een LoD 0-geometrie als een 2D-geometrie. Sommige objecten bevatten tevens een kruinlijn-geometrie. De BGT bevat geen attributen met multipliciteit, d.w.z. meerdere voorkomens van een attribuut. +ogr2ogr. Echter, het feit dat er meerdere geometrieën per object kunnen voorkomen, maakt dit lastiger. De meeste objecten bevatten zowel een LoD 0-geometrie als een 2D-geometrie. Sommige objecten bevatten tevens een kruinlijn-geometrie. +De BGT bevat geen attributen met multipliciteit, d.w.z. meerdere voorkomens van een attribuut. Om het eerste probleem op te lossen worden middels een XSLT script (etl/xsl/imgeo-split_v2.1.1.xsl) de GML-elementen uitgesplitst naar geometrie, zodat ieder element een enkele geometrie bevat. Bijvoorbeeld het TrafficArea-element (Wegdeel) wordt opgesplitst naar TrafficArea_2D en TrafficArea_kruinlijn. Vervolgens wordt via ogr2ogr dit uitgesplitste GML bestand in PostGIS geladen. Hierbij vindt ook de uiteindelijke vertaling van de in CityGML gedefinieerde objecten, zoals TrafficArea, naar het Nederlands plaats, zoals Wegdeel. Zie verder :doc:`stetl-framework` voor de werking van Bgt-extract. + +BGT Lean +-------- + +Zie issue https://github.com/nlextract/NLExtract/issues/362. +Hiermee is een compacte/handzamere PostGIS versie van BGT uit de 'full' PostGIS versie aan te maken. +Dit kan handmatig na het inlezen in PostGIS gedaan worden met `psql`. +