Voorverwerken BGT voor import in OSM

Ik ben de laatste tijd bezig geweest om de BGT voor te verwerken tot een dataset die importeerbaar is in OSM. Ik wil gewoon eens delen wat er allemaal bij komt kijken om de BGT voorverwerkt te krijgen. Mochten jullie vragen of feedback hebben dan hoor ik dat graag.

Misschien als eerste, Ik laat die voorverwerkte laag in JOSM in. Vervolgens controleer en kopieer ik ieder vlak handmatig voordat ik de geometrie overkopieer naar de OSM laag. Daar pas ik het waar nodig ook nog aan. Ik gebruik het nu dus om mijn mapwerk te ondersteunen en ik importeer niet blind zeg maar.

Nu naar de BGT. De BGT heeft verschillende lagen (zoals panden, begroeidterreindeel, waterdeel, ondersteunend waterdeel etc). Ik ben gewoon al die lagen een voor een gaan toevoegen aan het model. Een deel van de gegevens kunnen gewoon qua attributen gemapt worden. Bijv begroeidterreindeel grasland overiglanduse=grass + landcover=grass. Bij de bossen geeft de BGT mooi aan of het naaldbomen, loofbomen of een mix zijn. Naar koppel ik dan bijv de tags natural=wood, landcover=trees, leaf_type=*, leaf_cycle=*.

In onderstaande tabel heb ik een aantal van die simpele mappings gezet.

BGT laag BGT fysiekvoorkomen Plus fysiekvoorkomen BGT Type BGT plus type OSM tags
Begroeidterreindeel grasland overig - - - landuse=grass + landcover=grass
Begroeidterreindeel gemengd bos - - - natural=wood + leaf_type=mixed
Begroeidterreindeel loofbos - - - natural=wood + leaf_type=broadleaved + leaf_cycle=decidious
Begroeidterreindeel naaldbos - - - natural=wood + leaf_type=needleleaved + leaf_cycle=evergreen
Begroeidterreindeel groenvoorziening bosplantsoen - - natural=wood
Begroeidterreindeel fruitteelt - - - landuse=orchard
Begroeidterreindeel struiken - - - natural=scrub
Begroeidterreindeel groenvoorziening heesters OF waardeOnbekend OF bodembedekkers - - natural=shrubbery
Begroeidterreindeel boomteelt - - - landuse=plant_nursery
Begroeidterreindeel zand - - - natural=sand + landcover=sand
Begroeidterreindeel groenvoorziening gras- en kruidachtigen - - landuse=grass + landcover=grass
Begroeidterreindeel moeras - - - natural=wetland + wetland=swamp
Waterdeel - - alles - natural=water
Waterdeel - - waterloop sloot natural=water +water=ditch
Waterdeel - - waterloop greppel, droge sloot natural=water +water=ditch + intermittent=yes
Wegdeel - - parkeervlak - amenity=parking + parking=street_side
Wegdeel - - spoorbaan - landuse=railway

Overige aandachtspunten
1. Landbouw
De landbouw vlakken zijn in de BGT vaak niet goed geclassificeerd. Daarom heb ik de BRP gewaspercelen gepakt en deze met de BGT landbouw vlakken gecombineerd. Ik hou dan de grens van de BGT aan (anders sluiten mijn andere vlakken niet meer aan) maar ik deel die landbouw vlakken dan op volgens de BRP.

2. Ondersteunend waterdeel
De BGT tekent overal oevers. Wat ik eerst doe ik kijken of een oever aan een stuk struikgewas of bos aansluit. Dan neem ik die landuse of natural waarde over. DIt om te voorkomen dat er een rare grasstrook naast waterlopen in bijvoorbeeld bossen komt. De rest classificeer ik als gras (voor nu)

3. Puntdichtheid BGT
De BGT heeft soms een erg dichte puntdichtheid in de BGT zitten. Ik gooi er een simplificeer algorithme overheen die de punten gaat uitdunnen met een minimale impact op de geometrie. Deze stap duurt net zo lang om uit te rekenen als alle voorgaande stappen omdat dit algorithme dit wel erg goed doet.

4. Niet geclassificeerde vlakken
De BGT is vlakdekkend. Er zijn dus ook vlakken die gewoon niet volgens het OSM model geclassificeerd kunnen worden, zeker niet als vlak (soms wel als lijn). Dit resulteert soms in gaten in je vlakken (met multipolygonen als gevolg). Bij mijn handmatige imports verwijder ik die weer. Maar dit automatisch oplossen is lastig goed te doen).

Sommige vlakken heb ik wel geclassificeerd maar die zijn twijfelachtige in sommige situaties. BIjvoorbeeld bij bgt_fysiekvoorkomen=groenvoorziening + Plus_fysiekvoorkomen=WaardeOnbekend OF bodembedekkers is me opgevallen dat ik dergelijke vlakken vaak als natural=shrubbery of zelfs als natural=wood zou mappen. Het model koppelt er nu natural=shrubbery aan maar dit is dus een van de gevallen waar handmatige interpretatie nodig is.

5. BGT geometrie fouten

Daarnaast bevast de BGT geregeld geometrie fouten. Op onderstaande afbeelding gemaakt in JOSM zie je dat er tussen de grasvlakken kleine gaten zaten. Toen ik alle grasvlakken heb samengevoegd was deze multipolygoon het resultaat. In het script heb ik dit nu opgelost door vlakken met een oppervlakte < 0,5m2 te verwijderen. Maar goed, dat lost niet alles op
image

Daarnaast moet ik voor ik de BGT exporeer eerst een fix geometries er over heen gooien. Dan gaat die geometrie fouten zoals self intersects verwijderen.

6. BAG panden vs BGT panden
De BGT bevat ook panden alleen die matchen niet altijd met de BAG. Bij de imports die ik nu dus heb gedaan heb ik geregeld de geometrie van de BGT moeten aanpassen zodat die niet overlappen met de BAG panden die bij ons leidend zijn.

7. Residential landuse vlakken
Ik doe geregeld het landgebruik ook gedetailleerd mappen. Wat ik heb gedaan is de BGT onbegroeidterreindeel > erf + de BGT panden gepakt en die geometries samengevoegd. Dan krijg je bijvoorbeeld onderstaande. Bovenstaand punt 6 is van toepassing dus soms zijn aanpassingen maar dit geeft wel een mooie aanzet, zeker ook in buitengebieden. Ik heb nog niet de moeite genoemen om deze vlakken op te knippen naar gebruik (nu krijgen alle vlakken gewoon landuse=residential.

8. Parkeervakken
De BGT slaat ook parkeerplaatsen op. Alleen, er is maar 1 optie voor de BGT om een parkeervlak aan te geven. Die optie wordt gebruikt gebruik, voor wat wij in OSM zouden taggen als grote parkeerplaatsen, street_side parking en parking_spaces. Voor nu heb ik gewoon gezegd, alle parkeervlakken zijn amenity=parking + parking=street_side. Mogelijk dat ik in de toekomst obv grote van het vlak een ander voorstel kan doen of iets street_side parking is of een individuele parkeerplaats.

9. Importeren
Zoals al gezegd, ik gebruik dit bestand om mijn map werkzaamheden te ondersteunen. Er is ook wel vaker gesproken over grootschalige BGT imports. Ik moet zeggen, daar komt veel bij kijken. Het beste kun je dan een gebied (met 3dShapes) het beste leeggooien en de BGT importeren. Maar, met wat handmatige interpretatie kan het wel prima ondersteunen bij het updaten van een gebied.

Daarnaast, is het ook nog het principe van geschiedenis behouden. Als het 3dShapes zijn dan geef ik in dit geval niet om de geschiedenis. In andere gevallen probeer ik de geschiedenis te behouden.

Daarnaast kan het zijn dan een gegeven vlak al gedetaileerder is gemapt (qua attributen). Dan moet je ook handmatig dingen oplossen om het harde werk toch te behouden maar de geometrie te updaten.

10. Overig
Ik heb het model in QGIS gemaakt (met Python). Het zijn vooral een hoop tools achter elkaar plaatsen die velden berekenen, met uitzondering van bovenstaande punten.

Hieronder wat voorbeelden van changesets waar ik de BGT als importbron heb gebruikt:

9 posts - 5 participants

Read full topic


Ce sujet de discussion accompagne la publication sur https://community.openstreetmap.org/t/voorverwerken-bgt-voor-import-in-osm/105109