De QGIS BGT plugin

Jan-Willem van Aalst schreef een mooi stukje over het gebruik van de BGT in QGIS met als voorbeeld weer een van zijn bekende prachtige kaarten. Hiervoor is het wel nodig om de complete BGT in Postgis te laden. Dat is misschien een beetje overkill als je geïnteresseerd bent in pakweg 1 gemeente.

Zou QGIS ook op een makkelijker manier overweg kunnen met de BGT? Laten we als proef eens van de BGT download site (https://www.pdok.nl/nl/producten/pdok-downloads/download-basisregistratie-grootschalige-topografie) een deel van de BGT downloaden (hier de gemeente Bodegraven-Reeuwijk):

selection_268

Als resultaat krijg je een zipfile met flink wat gml-bestanden. Deze kun je vanuit de verkenner zo in QGIS slepen en het resultaat is (na soms flink wachten) een stuk of 30 kaartlagen en een niet zo mooi opgemaakt kaartbeeld:

selection_272

Een kenner ziet direct dat er iets mis is gegaan. De BGT is vlakdekkend, en de getoonde kaart niet!

Om te begrijpen waar dit probleem vandaan komt is het nodig iets meer te weten van gml. De Nederlandse overheid heeft ervoor gekozen om de open standaard gml te gebruiken voor het uitwissel van geo-informatie. Gml is daarbij inderdaad een standaard en geen bestandsformaat! De standaard is zeer rijk en staat een hele mooie objectgerichte modellering toe waarbij objecten zowel een punt-, een lijn- als een vlakgeometrie hebben. Maar zulke objecten zijn natuurlijk wel moeilijk te gebruiken in de meeste GIS-programma’s die net zoals QGIS graag punten, lijnen en vlakken in aparte kaartlagen zetten.

Als voorbeeld zien we hier de panden (bgt_pand.gml) die zowel een puntlocatie als een vlak aan zich hebben:selection_270

Indien we dan in de gml gaan kijken (dat kan, het is een gewoon tekstbestand), dan zien we dat zo’n pand een imgeo:geometrie2dGrondvlak attribuut heeft, en een imgeo:nummeraanduidingreeks.

In het bgt_vegetatieobject.gml zien we zelfs punten, lijnen en vlakken:

selection_269

Er zijn hier meerdere objecten zichtbaar, twee punten boven op elkaar (de sterren), een lijn (rood gestippeld) en een vlak (groen).

Het gebruik van de identify tool leert dat het vlak, de lijn en een van de punten een “haag” betreft. Het andere punt betreft een boom.

Bij het inlezen van dit soort bestanden waarbij bij sommige objecten wel, en bij andere objecten niet meerdere typen geometrieen zijn opgenomen wordt het voor de onderliggend software die het bestand in moet lezen moeilijk te bepalen wat ingelezen moet worden. Zo krijg je al gauw de nummeraanduidingreeks van de panden terwijl je QGIS vraagt de vlakken in te lezen.

Gelukkig is de software niet al te moeilijk ervan te overtuigen om de juiste dingen in te lezen. Bij FOSS4GNL (28 juni 2017) werd door mij al een plugin aangekondigd die dat zou regelen. De BGT import plugin staat inmiddels bij de QGIS plugins en regelt het inlezen door een klein bestandje aan te maken waarin precies staat waar de geometrie elementen in het gml bestand zitten. QGIS gebruikt dat vervolgens om het gml bestand goed in te lezen.

selection_271

Indien je een BGT bestand importeert met de plugin, dan maakt de plugin een kopie (of een symlink als dat kan) van het gml bestand, met de toevoeging _P, _V, _L in de bestandsnaam voor punten, lijnen en vlakken respectievelijk. Vervolgens wordt naast elk _X.gml bestand een _X.gfs bestand geplaatst op basis waarvan QGIS op de juiste manier de punten, lijnen of vlakken kan inlezen. Je hebt de plugin daarna dus niet meer nodig om zo’n _X.gml bestand goed in te lezen!

Als voorbeeld de bgt_pand.gml direct ingelezen met QGIS (er zijn alleen punten ingelezen):

selection_275

En met gebruik van de plugin (zowel de punten als de vlakken zijn ingelezen):

selection_276

Overigens is het voor de snelheid belangrijk om alleen die geometrie typen aan te vinken die daadwerkelijk in het gml bestand zitten. Anders moet de plugin de hele gml uitpluizen op zoek naar een geometrie type dat er niet is. Dat kan lang duren!

Met behulp van de plugin is het gebruik van de BGT gml bestanden niet zo moeilijk meer en hoef je niet over te gaan tot het gebruik van Postgis en/ of NL-extract.

Wel is het jammer dat je niet zomaar de prachtige visualisatie van Jan-Willem van Aalst kunt gebruiken. Nu maar hopen dat iemand een mooie visualisatie maakt (en deelt!)voor de bestanden die je rechtstreeks met de BGT import plugin inleest.

35 thoughts on “De QGIS BGT plugin”

  1. Handig die plugin bedankt. Ik heb nog wel een andere vraag: Ik wil dit vervolgens omzetten naar dxf om de pdok in te lezen in microstation maar het exporteren lukt me niet. De DXF kan microstation niet inlezen. Wat doe ik verkeerd?

    1. Tja, .dxf is geen open standaard, met alle problemen van dien. Middels veel ‘reverse engineering’ moeten ontwikkelaars proberen de boel aan elkaar te knutselen. Dat gaat niet altijd goed.

      Mijn ervaringen zijn het best via ogr2ogr. Je zou kunnen proberen bijv. de _V.gml bestanden mbv ogr2ogr om te zetten naar .dxf. Eerst vanuit Qgis de laag opslaan als een shapefile, en daarna mbv ogr2ogr converteren naar .dxf is ook een kansrijke optie.

  2. Beste Marco,

    Hartelijk dank voor de plugin, deze is erg handig. Kan het zijn dat er bij de ‘scheiding’ iets mis gaat? In het gebied wat ik aan het testen ben is er een polygoon van een geluidsscherm (vlak), met daarin een hartlijn (lijn). De GML wordt netjes gesplitst in _L en _V alleen het lijnen-bestand (_L) geeft zowel de omtrek van de polygoon als de hartlijn, terwijl ik hier alleen de hartlijn zou verwachten.

    Alvast bedankt voor de reactie!

    1. Gerbert,
      Er kan natuurlijk altijd iets misgaan. Maar dan zou het mis moeten gaan in ogr, de bibliotheek die in QGIS alle vectordata inleest. En ogr is wel erg goed …

      Weet je zeker dat in het lijnen bestand zowel een vlak als een lijn zit? Is het niet de omtrek (begrenzing) zowel als de hartlijn. Dat zouden in beide gevallen lijnen zijn, en technisch klopt het dan. Of dat ook is wat je wilt weet ik niet.

      1. Beste Marco,

        Er lijken twee dingen mis te gaan:
        – Op sommige plekken is er inderdaad zowel een omtreklijn als een hartlijn aanwezig. Dat zit dus gewoon in de BGT zelf. Volgens mij heeft de bronhouder dat niet goed gedaan, maar daar kan de plugin niets aan doen.

        – Maar met de bestanden zelf lijkt ook iets niet goed te gaan. In QGIS splitst de plugin de bestanden netjes naar _L en _V, maar ik gebruik deze bestanden om ze in te lezen in een ander softwarepakket. Daar wordt ook onderscheid gemaakt in lijnen en vlakken. Maar als ik het vlakken bestand in dat pakket inlees, worden er veel meer vlakken geladen dan in QGIS (op plekken waar in QGIS alleen een lijn aanwezig is). Als ik het vlakken bestand uit QGIS exporteer naar shape en die vervolgens in mijn softwarepakket inlaadt, gaat het wel goed. Kan het zijn dat er op dit punt toch een foutje in de GML zit? Voor andere BGT lagen gaat het namelijk wel goed.

        1. Beste Gerbert,

          De plugin verandert aan de .gml bestanden niets. De enige reden dat er een _L en een _V gemaakt wordt is dat er dan een _L.gfs of _V.gfs bestand naast gezet kan worden. In de .gfs bestanden wordt door de plugin de info geschreven die door ogr gebruikt wordt om de gml goed in QGIS in te lezen.

          Blijkbaar gebruikt jouw andere software-pakket geen ogr om de gml in te lezen. Dan werkt het dus niet. De plugin is dan ook bedoeld om de gml bestanden in QGIS in te lezen …

  3. Vanaf qgis 3 (nu nog 2.99) zal de gmlAS plugin voor qgis beschikbaar komen. Daarmee wordt het mogelijk om volledige application schema’s zoals BGT te openen in QGIS.

    De werking van gmlAS is gebaseerd op het automatisch aanmaken van een relationele database (postgres of sqlite) op basis van het xml schema document. Vervolgens wordt de GML ingelezen in de aangemaakte tabellen. Als gebruiker kun je vervolgens bepaalde tabellen als lagen aan de qgis view toevoegen en objecten bekijken en zelfs bewerken. Later kun je het bestand weer als een GML exporteren.

    Een interessante feature die ik wil noemen is de mogelijkheid om tabellen die na import toch geen data zouden gaan bevatten niet aangemaakt worden. Door de geneste structuur van veel application schemas is de hoeveelheid aangemaakte tabellen doorgaans erg groot. Hiermee houdt je dat een beetje in de perken.

    Je kunt meer lezen op
    https://github.com/BRGM/gml_application_schema_toolbox

    1. Beste Paul,

      Vandaag eens uitgeprobeerd hoe dat werkt met een stukje bgt en dan de pandenlaag.

      De wizard neemt je mooi mee door het proces. Na lang wachten (logisch) worden en netjes tabellen en lagen in het QGIS project gezet.

      Helaas zit de attribuutinformatie niet direct gekoppeld aan de geometrie. Het lijkt me logisch dat de attributen er dmv id’s en koppelingen eraan gekoppeld moeten worden. Helaas valt het niet mee om in het woud van tabellen de juiste koppeling aan te maken.

      Is het een idee als je eens beschrijft hoe je middels deze plugin op een bruikbare wijze de bgt kunt inlezen?

      1. Ha Marco, dank voor je PM, ik was deze post uit het oog verloren. Je reactie is een veelgehoord commentaar op de GML-AS plugin. Ik was zelf nog niet in de gelegenheid geweest om dit verder uit te zoeken. Heb vanavond wat onderzoek gedaan. Ik ben verder geen BGT expert, maar ik moet zeggen dat die opsplitsing in een 20-tal featuretypes die wel groot aantal klasses delen (uit citygml) geen optimale use case voor GMLAS is (je zou op zijn minst meerdere files tegelijk willen kunnen importeren). Voordat je alles op je scherm hebt moet je flink wat klikken. Een paar opmerkingen:
        – Op https://downloads.pdok.nl/embed.html kun je kiezen tussen GML en STUF. Ik ken de achtergrond van dat STUF formaat niet, het heeft niet eens een referentie naar een schema definitie.
        – Vreemd dat de GML’s op https://downloads.pdok.nl/embed.html geen srs informatie in zich dragen.
        – Als je postgis gebruikt als tijdelijk opslag formaat dan probeert de plugin wel degelijk links tussen tabellen op te slaan, echter om een bepaalde reden mislukt dit voor de BGT data. Dan zit er niks anders op dan handmatig een link te leggen tussen label en label-positie (wel leuk dat ze zelfs een draaiingshoek voor het label vastleggen).
        – PDOK biedt nu ook een beta WFS aan van de BGT. Het betreft echter een ‘platgeslagen’ WFS, dus niet volgens het imgeo model. Vreemd aan deze WFS is dat GMLAS een foutmelding geeft als je in 1 keer meerdere featuretypes probeert te laden.

  4. Beste,

    Ik gebruik de plugin om snel en makkelijk referentiekaartjes te maken. Nu staat er in de GML heel mooi huisnummers en straatnamen met een aanvullend veld ‘hoek’ erbij. Het lijkt er alleen op dat de plugin deze waardes niet goed leest, in ieder geval de huisnummers en hoek waardes komen er niet goed uit. Ik krijg getallen tussen haakjes zoals (1:22).

    Is er ergens een mogelijkheid om deze waardes wel goed in te lezen? Als ik de GML lees staan ze er wel gewoon in.

    Alvast bedankt!

    1. Beste Douwe,

      De plugin leest de gml bestanden niet in, maar helpt QGIS om de gml bestanden goed in te lezen door te vertellen waar welke informatie staat met betrekking tot de geometrie.

      Het probleem waar jij tegenaanloopt is een interessante. In de BGT is het zo ingeregeld dat sommige attributen meer dan 1 keer voor kunnen komen. Bijvoorbeeld bij tekst en hoek is dit het geval.

      Zodra QGIS merkt dat een attribuut meerdere keren voorkomt plaatst QGIS alle waarden in 1 kolom volgens de volgende systematiek:
      (aantal waarden:1e waarde, 2e waarde, 3e waarde, …).

      In jouw voorbeeld staat er dan (1:22) als er bij dat object maar 1 waarde is. Maar als je zoekt zul je ook objecten vinden met meer waarden. En dan staat er bijvoorbeeld: in het veld tekst de volgende waarde: (2:20,10-14).
      Dit betekent dat er dan twee nummeraanduidingsreeksen zijn; 1 met de waarde 20 en een met de waarde 10-14. In dat geval zijn er ook twee waarden in het veld hoek.

      Dat QGIS alle waarden in 1 veld plaats is misschien niet handig, maar er is ook niet echt een goed alternatief. Het alternatief om elke waarde in een aparte kolom te zetten gaat mis op het moment dat een attribuut vaak voor komt, of wanneer er veel meervoudig voorkomende attributen zijn. er ontstaan dan veel te veel kolommen.

      In jouw geval zou je ertoe over kunnen gaan om alleen de eerste waarde te gebruiken voor het labelen. Als je een slimme expressie gebruikt om te labellen, dan gaat dat wel lukken.

      Indien je hulp nodig hebt voor het opstellen van zo’n expressie kun je het altijd hier laten weten. Er is dan vast wel iemand die een voorbeeldje voor je heeft of in elkaar knutselt.

      Groet, MArco

      1. Hallo Marco,

        Bedankt voor je reactie, dit verduidelijkt mijn probleem. Het is mij met FME gelukt om de waardes eruit te halen.

        Ik heb echter nog een tweede vraag, het attribuut ‘hoek’ kent in veel gevallen meer dan één waarde. Ik verwacht er hier eigenlijk maar één. Heb jij hier wellicht een verklaring voor?

        Groeten, Douwe

        1. Beste Douwe,

          Het is mij niet zo duidelijk waarom je FME nodig hebt om de waardes eruit te halen. QGIS kan dat ook prima.

          Hoek kan meerdere waardes hebben indien er ook meerdere waardes voor de tekst zijn. Zo kan elke tekst met een andere hoek op de kaart worden gezet.

          Groet, MArco

          1. Beste Marco

            Ik ben nieuw met Qgis maar ben positief verrast wat er allemaal met deze opengis mogelijk is.
            Hierboven geef je aan dat je huisnummers (nar) met qgis
            kunt ontsluiten.
            Wil jij aangeven hoe je deze actie moet uitvoeren ?

            gr. Tim

          2. Beste Tim,

            Je vraag is erg algemeen. Wellicht kun je deze wat preciezer stellen?

            Vriendelijke groet, MArco

          3. Beste Marco,

            Bedankt voor je antwoord. FME is zeker niet per se nodig maar ik kan er makkelijker de waardes uithalen dan dat ik met QGIS kan.

            Groeten, Douwe

  5. Beste Douwe,

    Je reactie was voor mij inspiratie om een nieuwe post te maken. Jouw probleem komt namelijk best vaak voor wanneer je een gml hebt ingelezen.

    Wellicht heb jij er ook iets aan.

    Vriendelijke groet, MArco

  6. Ik ben erg benieuwd naar de mogelijkheden om de BGT te presenteren maar kan helaas de plugin niet vinden.
    Ik werk met QGIS 3.2

    1. Beste Jan,

      De plugin werkt onder QGIS 2.x.

      Eventueel kun je wel de bestanden eerst 1 keer inlezen met behulp van QGIS2.x.
      Daarna kun je de _P, _L, _V bestanden gewoon direct toevoegen aan QGIS 3.x. (Zie ook de help)

      MArco

  7. Beste Marco,

    Ik ben vrij nieuw met Qgis.
    Nu heb ik een bepaalt stukje kaart gedownload via PDOK.
    en heb nu de laatste dagen er last van dat alle lagen goed geladen worden op de laag BGT_Pand na.
    Hij laad hem wel in als een laag maar laad hem niet zien.
    wat kan ik hieraan doen ?

    Mvg

    1. Beste Joep,

      Tja, dat kan ik zo op afstand moeilijk beoordelen.
      Laad je wel de juiste laag? Dus die eindigend op _V.gml, _L.gml of _P.gml?

      Vriendelijke groet, MArco

      1. Beste Marco,

        Ik zal vanaf het begin vertellen wat ik doe.
        Ik download eerst via de PDOK site het geselecteerd stukje kaart.
        Dan open ik Qgis en ga ik met de BGT import naar het juiste mapje en laad allen bestanden in.
        Hierna komen pas de door u genoemde bestanden: _v.gml _l.gml en _p.gml tevoorschijn. dus die zijn dan gok ik nog niet ingeladen.
        Voorheen ( max week geleden ) kreeg ik dan elke laag perfect te zien en dus tot ong 3 werkdagen terug laat Qgis sommige lagen niet meer in de kaart zien.
        Ben na een beetje puzzelen wel achter gekomen dat ik ze tevoorschijn kan krijgen, als volgt:
        open eigenschappen van bijv. laag BGT_pand, tab algemeen en dan onder Ruimtelijk referentie systeem moet ik dan CRS selecteren en dan amersfoort aanklikken.
        Hierna verschijnen de vlakken/de laag wel weer in de kaart.

        hoop dat je zo genoeg info hebt.

        mvg Joep

        1. Beste Marco,

          Hier nog wat extra info.
          bij het inladen van alleen bgt_pand_v.gml
          krijg ik de foutmelding:
          ongedefineerd standaard naar CRS EPSG:4326 – WGS84.

          gok dat het hierop fout gaat.

          Mvg Joep

        2. Beste Joep,

          Als ik je goed begrijp heb je zelf de oorzaak gevonden.: het CRS moet ingesteld worden op “amersfoort” (EPSG:28992).

          Dat dit soms wel en soms niet expliciet moet worden aangegeven komt doordat het crs dat QGIS aanneemt standaard onder meer afhangt van het crs van de eerste laag die je aan je QGIS project toevoegt.

          Onder het menu Settings -> Options -> Crs (of in het NL Extra -> Opties (instellingen?) -> Crs) kun je instellen hoe QGIS zich gedraagt. Default voor projecten “EPSG:28992″ (amersfoort) en bij nieuwe laag dan instellen “Project Crs” vind ik in de praktijk het prettigste werken.

          Vriendelijke groet, MArco

          1. Beste Marco,

            Bedankt voor de snelle hulp,
            het werkt weer zoals voorheen,
            wat een stuk sneller gaat.

            Mvg Joep

  8. Hi,
    De BGT heeft in de openbare_ruimte_label-, en de panden- laag een attribuut “tekst” en “hoek”. Welke geoprocessing tool in QGIS (of een andere applicatie) is in staat de waardes voor “hoek” zodanig te interpreteren dat de labels correct op de kaart verschijnen?
    Ik wil namelijk de gml bestanden inclusief een laag met labels (voor straatnamen, en huisnummers) omzetten naar CAD.

    1. Ha Charlaine,

      De BGT Import plugin in QGIS gaat er goed mee om indien je het eerste tabblad gebruikt.
      Eerst worden de labels uitgesplitst zodat er steeds maar 1 label en 1 hoek is.

      Eventueel kun je dan nog de field calculator gebruiken om de notaties als {1: 27.23} in het veld voor de hoek om te zetten naar 27.23.

      Daarna exporteren naar DXF.

      groet, MArco

      1. Hi Marco

        Bedankt voor je uitleg, maar ik weet niet zo goed wat je bedoeld met “het 1e tabblad”. Als ik de BGT Import plugin gebruik zie ik namelijk gewoon maar 1 schermpje/tabblad, en niet meer mogelijkheid op andere tabbladen. Ik mis dus de uitsplitsing van de labels.
        De plugin is in staat de data in te lezen, dat gaat allemaal prima. Maar als ik de gewenste datalagen converteer naar CAD, worden er lege bestanden aangemaakt voor bijvoorbeeld de openbare ruimte label laag omdat ik ergens een tussenstapje mis.

  9. Beste Marco,

    ik ben op moment bezig in Qgis 3.4.1 Madeira.
    ik heb Qgis zelf de BGT bestanden laten downloaden in invoegen,
    nu worden er in Qgis onder de laag wegdeel ook fietspad en voetpad gevoegd.
    is er ook een mogelijkheid dat als ik van Qgis naar DXF wil exporteren dat ook deze sublagen onder hun eigen naam komen ?
    als ik ze nu wil exporteren vallen ze onder de naam wegdeel.
    en hierdoor word het nogal lastig om in autocad deze lagen te verdelen kwa kleur/hatch.

    Mvg Joep

  10. Beste Joep,

    Als je eerst de fietspaden selecteert, en dan de laag exporteert kun je aangeven dat je alleen de geselecteerde objecten wilt exporteren.

    Je hebt dan een fietspaden-laag.

    Groet, MArco

  11. Hee Marco,

    ik snap niet helemaal wat je bedoelt, in het lagen venster aan de linker zijde staat er een vinkje in voetpad/fietspad maar zodra ik op exporteren naar DXF druk, zie ik daar alleen nog maar wegdeel aangevinkt staan in het nieuwe venster dat opent en alle andere sublagen die onder wegdeel vallen zie ik niet meer.

    Mvg

Laat een reactie achter bij aleks Reactie annuleren

Je e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

De volgende HTML tags en attributen zijn toegestaan: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>