-
Notifications
You must be signed in to change notification settings - Fork 0
[NL] LV BAG 2.0 converteren
(This page is in Dutch because it describes using xml-to-postgres
to convert an open dataset from the Dutch central government.)
xml-to-postgres
kan gebruikt worden om de volledige BAG 2.0 Extract te importeren in PostgreSQL. Dit extract wordt sinds november 2021 kosteloos aangeboden door het Kadaster via deze link. Download hiervoor eerst de benodigde xml-to-postgres
configuratiebestanden in deze ZIP. Deze voorbeeld-configuraties beperken de import op een paar vlakken: historische records worden weggelaten (d.w.z. records met een 'Historie:eindGeldigheid') en records met een niet-actieve status (bijv. 'Pand gesloopt' of 'Naamgeving ingetrokken'). Deze filters kunnen eenvoudig worden aangepast via de 'incl' en 'excl' opties in de YAML-bestanden. Verder maken deze voorbeeld-configuraties gebruik van de 'conv: gml-to-ewkb' functie om de geometriën in de BAG gelijk in te lezen als PostGIS geometries. Het is mijn indruk dat dit voor de LV-BAG correct werkt, maar het gebruik van deze functie blijft voor eigen risico. Lees vooral ook deze uitleg en disclaimer over GML-conversie.
Hieronder een voorbeeld om de BAG Extract gescript te importeren:
#!/bin/sh
echo "Download BAG Extract..."
wget https://service.pdok.nl/kadaster/adressen/atom/v1_0/downloads/lvbag-extract-nl.zip || exit
echo "Unzip..."
unzip lvbag-extract-nl.zip 9999PND*.zip 9999VBO*.zip 9999NUM*.zip 9999WPL*.zip || exit
echo "Process PND..."
unzip -p 9999PND*.zip | xml-to-postgres bag-pand.yaml
echo "Process VBO..."
unzip -p 9999VBO*.zip | xml-to-postgres bag-verblijfsobject.yaml
echo "Process NUM..."
unzip -p 9999NUM*.zip | xml-to-postgres bag-nummeraanduiding.yaml
echo "Process WPL..."
unzip -p 9999WPL*.zip | xml-to-postgres bag-woonplaats.yaml
Dit script gebruikt streaming ZIP input en pakt de bron-XML dus nooit helemaal uit. Piek schijfruimte-gebruik hiermee is 14GB (12 als je tussentijds lvbag-extract-nl.zip verwijdert).
Op een redelijk snelle server (Intel Xeon E-2236 CPU @ 3.40GHz) draait deze voorbeeld-conversie in zo'n 16 minuten. De hoeveelheid RAM is niet relevant; het gebruik blijft onder de 10MB. Aantal cores is ook niet relevant, want xml-to-postgres
is vooralsnog single-threaded. Dit laatste zal nog wel eens veranderen, maar er is niet veel gelegenheid voor parallellisme omdat de XML lineair verwerkt wordt.