Basisregistratie Grootschalige Topografie/Kleinschalig OSM bijwerken obv BGT

From OpenStreetMap Wiki
Jump to navigation Jump to search

Inleiding

Er wordt momenteel al veel gebruik gemaakt van de BGT als bron voor edits in OSM. Zo is er WMS beschikbaar in JOSM om relatief snel zaken over te tekenen. Daarnaast zijn er zijn ook al projecten geweest om iets meer gestructureerd gegevens over te nemen zonder handmatig geometriene over te tekenen zoal deze : BGT in OSM en Overzicht van BGT imports en semi-imports in OpenStreetMap .

Het is technisch mogelijk een groot deel van de BGT om te zetten naar .osm bestanden. Bijvoorbeeld voor een dorp, wijk of een relatief kleine bounding box. Met zo'n bestand is het voor ervaren JOSM gebruikers mogelijk om oude OSM data te vervangen door deze BGT data en/of OSM bij te werken. Deze pagina gaat vooralsnog over de systematiek om te komen tot deze .osm bestanden en welke keuzes daarin tot nu toe gemaakt zijn. Het is een test waarvan de praktijk nog moet uitwijzen of en hoe dit het best gerealiseerd kan worden.

Het doel

Doel van dit project is het faciliteren van OSM verbeteringen o.b.v. BGT. Dit gebeurt middels het maken en uitleveren van .osm bestanden bestaande uit een deel van de BGT vlak polygonen. Zo'n bestand kan door een JOSM mapper die locaal bekend is gebruikt worden om OSM bij te werken. Welke gegevens uit zo'n bestand gebruikt worden is aan de mapper. Het betreft het faciliteren van OSM verbeteringen o.b.v. BGT door (min of meer) kant en klare aansluitende polygonen met OSM-tagging aan te bieden in plaats van de nu toegepaste handmatig overtekenen of handmatig aanpassen van BGT-data.

Het proces

Het proces bestaat grofweg uit 2 delen.

  1. Het maken en distribueren van .osm bestanden.
  2. Het verwerken van een .osm bestand in JOSM en uploaden naar OSM.

Deel1

links


Deel2

links


De input

Als input wordt een maandelijks ververste postgis database gebruikt die wordt verstrekt door Geotoko

Vlakken waar we o.a. naar gaan kijken (om vlakdekkend te worden) zijn :

  1. begroeidterreindeel_vlak
  2. onbegroeidterreindeel_vlak
  3. ondersteunendwaterdeel_vlak
  4. ondersteunendwegdeel_vlak
  5. scheiding_vlak (deels)
  6. vegetatieobject_vlak (deels)
  7. waterdeel_vlak
  8. wegdeel_vlak
  9. pand_vlak (kan later weg ivm BAG)
  10. kunstwerk_vlak
  11. overbruggingsdeel_vlak

Tooling

Middels een postgis script is een deel van de BGT vlakken (polygonen) gemapt naar OSM (multi) polygonen waarbij de geometrie versimpeld wordt maar de topologie behouden blijft. Alle niet-vlakken BGT (dus losse punten en lijnen) worden voorlopig buiten beschouwing gelaten. Er wordt geprobeerd om op niveau 0 vlakdekkend te zijn waardoor er geen overlap of gaten ontstaan. Vlakken sluiten in BGT goed aan en dat willen we in OSM ook zou behouden rekening houdend met een omzetting van RD (EPSG 28992) naar WGS84 en op 7 decimalen afgeronde coordinaten. Voor een aantal vlakken worden extra handelingen uitgevoerd waardoor polygonen worden samengevoegd. Dit o.a. om versnippering tegen te gaan. Momenteel wordt er 1 lang sql script gebruikt om te komen tot 1 tabel met de gewenste geometrie en OSM tags van een beperkt te selecteren gebied. Dit script kan t.z.t. b.v. via Github beschikbaar worden gesteld maar is nu nog in ontwikkeling. Verder wordt er gebruik gemaakt van ogr2osm (conversie postgis naar osm formaat) en python (textueel aanpassen .osm tekstbestand). Ook JOSM wordt gebruikt voor o.a. controle (validatie) maar ook om uiteindelijk de update OSM/BGT te kunnen verwerken.

Uitgangspunten

  1. Er zal geen (semi) automatische update strategie worden uitgedacht. We zien BGT als een losse bron zoals er velen zijn. Het initiatief om later (b.v. als BGT weer gewijzigd is) OSM weer bij te werken komt vanuit de community en vervolgens kan er dan weer met een nieuw .osm bestand worden bijgewerkt.
  2. Niet alle attributen uit BGT zullen worden gemapt naar OSM attributen omdat deze te vaak wijzigen. Voorbeeld: Voor wegdeel_vlak ("area:highway" , landuse=highway) gaan we geen rekening houden met fysiekvoorkomen (in osm termen "surface" dus bv asfalt, straatstenen etc.) omdat het te onderhoudsgevoelig is en surface tags al op lijnelementen gemapt kunnen worden.
  3. De geometrie wordt versimpeld omdat BGT super gedetalleerd is en lang niet alle BGT-nodes iets toevoegen aan de geometrie.
  4. Aansluitende vlakken blijven ook in OSM aansluitend (zelfde nodes)
  5. We willen zo min mogelijk multipolygonen want dat is lastig te onderhouden in OSM. Dat is helaas wel een lastige uitdaging.
  6. Maak de geometrie niet heel groot want OSM kent een maximum van 2000 nodes per polygoon want anders moet er een multipolygoon van worden gemaakt.
  7. Vlakken met verschillende waarde van de Relatieve hoogteligging worden niet samengevoegd.
  8. Het lokaalid (=BGT ID) wordt niet opgenomen in osm als referentie omdat er BGT vlakken samengevoegd gaan worden. Wellicht wel opnemen indien niet samengevoegd.
  9. OSM NL wordt vwb panden voorzien vanuit de BAG. Dat betekent dat we panden uit BGT niet in het .osm bestand gaan opnemen. Maar omdat BGT panden vaak zorgen voor gaten in m.n. ongebegroeidterreindeel moeten we deze gaten verwijderen uit deze grote vlakken. Dat heeft als bijkomend voordelen dat er minder multipolygonen in het .osm bestand komen.
  10. Relatievehoogteligging alleen meenemen als osm key "layer" daar waar een polygoon overlapt met een andere polygoon met een afwijkende relatievehoogteligging

Uitdagingen

Eerste update proces

Als het al lukt om goede .osm bestanden te maken hoe gaan we dan te werk om OSM bij te werken? Dit proces dient goed uitgedacht te worden omdat het hoe dan ook veel handwerk zal zijn en dat dus fouten snel gemaakt zullen worden. De .osm bestanden zullen door JOSM gevalideerd moete worden maar dat is uiteraard niet de enige check. Voordat je upload naar OSM doe je een handmatige check op de data die je vervangt en bij twijfel vergelijk je de geschiedenis van elementen om een beeld te krijgen welke het meest actueel is, vergelijk indien nodig met andere bronnen en/of neem contact op met de voorgaande mapper.

BGT is geometrisch gedetailleerd

BGT is geometrisch erg gedetailleerd. Dat kan OMS niet aan en dus moet er versimpeld worden. Oplossing: postgis functie "ST_CoverageSimplify"

Aansluitende vlakken verbonden

Alle aangrenzende vlakken moeten met nodes aan elkaar verbonden zijn. Bij versimpelen moet dat ook zo blijven. Vaak hebben aansluitende vlakken een verschillende waarde voor relatievehoogteligging. bv ondersteunend waterdeel -1 en aansluitende begroeid terreindeel 0.

OSM WGS84 7 decimalen

OSM is WGS84 met 7 decimalen voor lat en lon. Dat lijkt te verwezenlijken met ogr2osm

Aangrenzende vlakken van zelfde type samenvoegen

Voorbeeld: Bij een kruising zijn voorsorteer wegvlakken aparte geometrien. Dat willen we niet in OSM (lijkt mij) en dus moeten deze samengevoegd worden. Gevolg hiervan is per definitie dat BGT_id (lolaakid) verloren gaat en dat update vanuit BGT onmogelijk wordt. Alternatief zou kunnen zijn om lolaakidwel mee te nemen maar dan een concat van de samengevoegde elementen op te nemen.Een ander ongewenst gevolg kan het ontstaan van veel multpolygonen zijn met inners. Dat is ook ongewenst.

Probeer inners te voorkomen indien er wordt samengevoegd.

Door samenvoegen kunnen er multipolygonen ontstaan (1 outer met 1 of meerdere inners) maar dat willen we voorkomen. Hier proberen we een oplossing voor te vinden.

Panden en andere structures

In OSM staan reeds BAG panden dus BGT panden gaan we niet opnemen in een .osm bestand. Panden liggen veelal in onbegroeid terreindeel en zijn daar zelfs "uitgesneden" waardoor veel onbegroeid terreindelen multipolygonen zijn. Beter is het om het onbegroeid terreindeel zo aan te passen dat het oppervlak wordt uitgebreid met aangrenzend pand maar dat is wel een uitdaging. Naast pand gaat dit ook op voor de overiges "structures" zoals 'overigbouwwerk', 'scheiding','kunstwerkdeel', en 'overbruggingsdeel'. Dat lijkt inmiddels aardig gelukt.

OSM panden aansluiten op nodes BGT

Als de BGT vlakken zijn ingevoerd dan is het goed dat (indien het aansluit bij BGT vlakken) de nodes van beiden ook netjes samengevoegd worden.

Welke BGT attributen naar OSM

Welke attributen uit BGT nemen we mee naar OSM (en hoe worden deze naar OSM "gemapt" ). Het lijkt erop dat de volgende kenmerken van belang zijn:

De naam van de tabel

  1. bgt_type
  2. plus_type
  3. bgt_fysiekvoorkomen
  4. plus_fysiekvoorkomen
  5. bgt_functie
  6. plus_functie
  7. relatievehoogteligging

Relatievehoogteligging (OSM level/layer)

dit attribuut is vergelijkbaar met layer in OSM. Wanneer en hoe gaan we dat mappen naar layer?

Fouten in BGT

De BGT is verre van volmaakt. Dat betekent dat je onherroepelijk tegen fouten aan gaan lopen waar je iets mee wilt. Uiteraard kun je voorkomen dat BGT fouten worden over genomen in OSM door e.e.a. aan te passen voordat je OSM bijwerkt maar beter is het om ook een melding te maken bij verbeter de kaart zodat bij een volgende update er juiste data gebruikt kan worden.

Maken, uitleveren en testen van .osm bestanden

Momenteel worden deze op de laptop van PeeWee32 gemaakt maar indien het proces straks werkbaar is gebleken moeten we kijken of dit beter geborgd kan worden. Ook voor het uitleveren moet bedacht worden hoe we dat gaan doen. Dit allemaal uiteraard afhankelijk van de werkbaarheid en de vraag naar deze bestanden. We gaan dit wel ondervinden. Vooralsnog kan er kleinschalig via dropbox/drive etc. e.e.a. uitgeleverd worden. Een alternatief is het uitleveren op de DEV server van osm. Hiervoor is het nodig dat je een account aanmaakt. Verstandig is een herkenbare user_Id te gebruiken met je normale ID aangevuld met een bv '_Test' zodat herkenbaar is welke user achter dat account hangt. Het voordeel van de DEV server is dat je ongestraft kun experimenteren met het update proces. Zie ook:

https://master.apis.dev.openstreetmap.org


Om goed te testen kun je op de DEV server kijken of er data staat op het voor jou interresante gebied. Kans isgroot dat er niets staat maar daar kun je wat aan doen. Je kunt met JOSM zoals je gewend bent data ophalen van de productie server. Die data kun je vervolgens uploaden naar de DEV server (nadat je de server connectie in JOSM hebt aangepast). Daarna kun met experimenteren met het aangeleverde .osm bestand om te ervaren wat er nodig is om OSM bij te werken.

De achtergrondkaart van de DEV server is van productie data dus let daar maar niet te veel op. Het is meer voor de orientatie maar er staat in werkelijkheid heel weinig testdata op die server. Met JOSM kun je een connectie maken door in de preferences bij OSM server deze url in te typen bij "OSM Server URL:" https://master.apis.dev.openstreetmap.org/api


zie ook: Sandbox for editing

OSM data vervangen

Er moet nog en best-practice worden opgesteld over hoe deze data aan OSM kan worden toegevoegd. Dat betekent naast toevoegen ook dat er polygonen verwijderd zullen moeten worden. Logischerwijs wordt er per een bounding box (of andere poygoon) gewerkt zodat het behapbaar blijft.

Welke OSM data zou vervangen (kunnen) worden?

Middels een overpass-query is er op te vragen wat er evenueel vervangen zou kunnen worden. Bv deze.

BGT attributen mappen naar OSM key/value( tags)

De conversie van de BGT geometrie naar een OSM geometrie is al een uitdaging op zich maar daarnaast moeten er ook BGT attributen naar OSM gemapt worden. Het zal een uitdaging worden om alle OSM-ers op 1 lijn te krijgen maar dat is ook niet 100% nodig. Het .osm bestand wordt immers door een lokaal bekende mapper gebruikt om OSM aan te passen en deze kan in die stap voor een groot deel nog zijn eigen keuze maken. Het zal ook voorkomen dat BGT niet 1 op 1 te mappen is naar OSM tags. In die gevallen zal er een extra key met waarde worden meegegeven waarmee een mapper in JOSM zelf kan bepalen wat er ermee wil doen. Voorbeeld:

Als een begroeid terreindeel alleen de waarde "groenvoorziening" heeft ... wat wordt dat dan in OSM? In die gevallen krijgt zo'n polygoon een extra key (bgt_attention) met een beschrijvende waarde zodat hier in JOSM op gezocht en aangepast kan worden. Daarnaast krijgen alle polygonen een tag "BGT_tags" waarin de waardes staan van de BGT attributen: tabel, bgt_functie , plus_functie , bgt_fysiekvoorkomen , plus_fysiekvoorkomen , bgt_type , plus_type. Dit is voor de mapper als controle toegevoegd maar de tags "bgt_attention" en "BGT_tags" dienen uiteraard allen verwijderd te worden voordat er naar OSM wordt geupload.

Begroeidterreindeel

bgt_fysiekvoorkomen plus_fysiekvoorkomen BGT_attention landuse landcover natural leaf_type leaf_cycle wetland
groenvoorziening gras- en kruidachtigen grass grass
groenvoorziening heesters shrubbery
groenvoorziening waardeOnbekend v shrubbery
grasland overig waardeOnbekend grass grass
grasland agrarisch waardeOnbekend grass grass
groenvoorziening bodembedekkers shrubbery
groenvoorziening planten flowerbed
groenvoorziening bosplantsoen trees
loofbos waardeOnbekend trees wood broadleaved deciduous
bouwland waardeOnbekend farmland
houtwal waardeOnbekend wood
struiken waardeOnbekend scrub
gemengd bos waardeOnbekend trees wood mixed
groenvoorziening struikrozen flowerbed
naaldbos waardeOnbekend trees wood needleleaved evergreen
rietland waardeOnbekend reedbed
heide waardeOnbekend heath
boomteelt waardeOnbekend plant_nursery
loofbos griend en hakhout trees wood broadleaved deciduous
fruitteelt waardeOnbekend orchard
kwelder waardeOnbekend wetland saltmarsh
duin waardeOnbekend dune
moeras waardeOnbekend wetland swamp
bouwland akkerbouw farmland
bouwland vollegrondsteelt farmland
duin open duinvegetatie dune
bouwland braakliggend farmland
duin gesloten duinvegetatie dune
fruitteelt hoogstam boomgaarden orchard
fruitteelt laagstam boomgaarden orchard
fruitteelt klein fruit orchard
bouwland bollenteelt farmland
fruitteelt wijngaarden orchard

Wegdeel

Wegdeel is een bijzondere omdat het momenteel in OSM niet altijd heel gebruikelijk is om wegdelen als polygoon te mappen. Wel is gebruik van deze tag groeiende (maart 2025:  ca 350.000 stuks) en wordt deze ondersteund door veelgebruikte toepassingen zoals OSMand en OpenfietsMap. Deze polygonen dienen dan ook zeker niet als vervanging van de highway als lijn element maar als een evt. aanvulling daarop. Wegdeel krijgt (net als ondersteunend wegdeel) standaard de tag landuse=highway. Daarnaast krijgt een wegdeel ook de key "area:highway" . (bv "area:highway"= residential). De waardes daarvan zijn niet altijd uit BGT af te leiden maar van een aantal typen wegdeel is dat wel af te leiden. Daar waar het uit BGT is af te leiden heb ik hieronder een tabelletje gemaakt. Daar waar dat niet te doen is worden de huidige OSM highway lijnen vergeleken met de BGT wegdelen en middels een script een keuze gemaakt. Daar zou nog goed op getest moeten worden maar het is aan de mapper om te bepalen of de juiste keuze gemaakt zijn. De ervaring leert dat m.n in het buitengebied BGT nog wel eens steken laat vallen.

BGT kent ook een "surface" tagenhanger in de vorm van fysiekvoorkomen. Vooralsnog wordt die niet gebruikt om een OSM surface tag van te maken omdat wereldwijd de surfacte tag als op het highway line element geplaatst wordt.

Omdat we nu met polygonen werken zullen we bij kruisingen altijd uitgaan van het attributen die de BGT heeft toegewezen op dat kruisingsvlak. Dus als een fietspad een hoofdweg kruist dan zal het kruisingsvlak altijd de attributen van de hoofdweg krijgen. Dat is arbitrair maar er moeten nu eenmaal keuzes gemaakt worden.

bgt_functie “area:highway” BGT_attention
baan voor vliegverkeer runway
fietspad cycleway
parkeervlak service
rijbaan autosnelweg highway
rijbaan autoweg trunk
ruiterpad bridleway
verkeerseiland traffic_island
voetgangersgebied pedestrian
voetpad footway
woonerf living_street
inrit driveway
OV-baan busway
overweg ? v
spoorbaan ? v
voetpad op trap steps

De volgende BGT_functies zijn niet 1 op 1 te mappen op "area:highway" en worden in het sql script afgeleid van de OSM highway lijnen.

rijbaan locale weg

rijbaan regionale weg

Ondersteunend wegdeel

bgt_fysiekvoorkomen plus_fysiekvoorkomen bgt_functie plus_functie bgt_attention “area:highway” landuse landcover
groenvoorziening gras- en kruidachtigen berm waardeOnbekend verge highway grass
groenvoorziening waardeOnbekend berm waardeOnbekend verge highway
half verhard grasklinkers berm waardeOnbekend verge highway
onverhard waardeOnbekend berm waardeOnbekend verge highway
open verharding betonstraatstenen verkeerseiland waardeOnbekend traffic_island highway
open verharding waardeOnbekend berm waardeOnbekend verge highway
open verharding waardeOnbekend verkeerseiland waardeOnbekend traffic_island highway
open verharding betonstraatstenen berm waardeOnbekend verge highway
gesloten verharding cementbeton berm waardeOnbekend verge highway
gesloten verharding cementbeton verkeerseiland waardeOnbekend traffic_island highway
open verharding beton element berm waardeOnbekend verge highway
gesloten verharding waardeOnbekend berm waardeOnbekend verge highway
gesloten verharding asfalt berm waardeOnbekend verge highway
half verhard waardeOnbekend berm waardeOnbekend verge highway
groenvoorziening heesters berm waardeOnbekend verge highway shrubbery
half verhard grind berm waardeOnbekend verge highway
gesloten verharding waardeOnbekend verkeerseiland waardeOnbekend traffic_island highway
open verharding beton element verkeerseiland waardeOnbekend traffic_island highway
open verharding tegels verkeerseiland waardeOnbekend traffic_island highway
groenvoorziening bosplantsoen berm waardeOnbekend verge highway trees
open verharding tegels berm waardeOnbekend verge highway
gesloten verharding asfalt verkeerseiland waardeOnbekend traffic_island highway
open verharding gebakken klinkers verkeerseiland waardeOnbekend traffic_island highway
open verharding gebakken klinkers berm waardeOnbekend verge highway
half verhard puin berm waardeOnbekend verge highway
onverhard zand berm waardeOnbekend verge highway sand
groenvoorziening planten berm waardeOnbekend verge highway flowerbed
groenvoorziening gras- en kruidachtigen verkeerseiland waardeOnbekend traffic_island highway grass
groenvoorziening bodembedekkers berm waardeOnbekend verge highway
groenvoorziening waardeOnbekend verkeerseiland waardeOnbekend traffic_island highway
open verharding sierbestrating berm waardeOnbekend verge highway
open verharding sierbestrating verkeerseiland waardeOnbekend traffic_island highway
groenvoorziening struikrozen berm waardeOnbekend verge highway flowerbed
half verhard gravel berm waardeOnbekend verge highway
groenvoorziening heesters verkeerseiland waardeOnbekend traffic_island highway shrubbery
groenvoorziening planten verkeerseiland waardeOnbekend traffic_island highway flowerbed
half verhard waardeOnbekend verkeerseiland waardeOnbekend traffic_island highway
onverhard waardeOnbekend verkeerseiland waardeOnbekend traffic_island highway
groenvoorziening bodembedekkers verkeerseiland waardeOnbekend traffic_island highway
half verhard grasklinkers verkeerseiland waardeOnbekend traffic_island highway
half verhard grind verkeerseiland waardeOnbekend traffic_island highway
onverhard zand verkeerseiland waardeOnbekend traffic_island highway sand
half verhard gravel verkeerseiland waardeOnbekend traffic_island highway
half verhard schelpen berm waardeOnbekend verge highway
onverhard boomschors berm waardeOnbekend verge highway
half verhard puin verkeerseiland waardeOnbekend traffic_island highway
groenvoorziening struikrozen verkeerseiland waardeOnbekend traffic_island highway flowerbed
groenvoorziening bosplantsoen verkeerseiland waardeOnbekend traffic_island highway trees
half verhard schelpen verkeerseiland waardeOnbekend traffic_island highway
onverhard boomschors verkeerseiland waardeOnbekend traffic_island highway

Waterdeel

bgt_type plus_type natural water intermittent
waterloop sloot water ditch
waterloop waardeOnbekend water
greppel, droge sloot waardeOnbekend water ditch yes
watervlakte meer, plas, ven, vijver water lake
watervlakte waardeOnbekend water
waterloop kanaal water canal
waterloop beek water stream
waterloop gracht water canal
waterloop rivier water river
zee waardeOnbekend water ?
watervlakte haven water ?
waterloop bron water ?

Ondersteunend waterdeel

bgt_type plus_type landuse slope
oever, slootkant geenWaarde grass yes
slik geenWaarde grass yes

Onbegroeid terreindeel

Voor een groot deel van onbegroeid terreindeel is uit de BGT niet vast te stellen wat de functie is. Daarnaast is het de vraag of het zinvol is om de OSM surface key te gebruiken omdat dit erg veel onderhoud gaat opleveren waarvan het de vraag is of het gaat gebeuren. Hier moet een afweging gemaakt worden waarbij er gekeken moet worden naar het nut voor OSM, de gevolgen voor het onderhoudsproces en de juistheid van BGT t.a.v. deze waardes.

bgt_fysiekvoorkomen plus_fysiekvoorkomen bgt_attention landuse landcover natural
erf waardeOnbekend residential
open verharding waardeOnbekend v
gesloten verharding waardeOnbekend v
onverhard waardeOnbekend v
onverhard zand v
gesloten verharding cementbeton v
open verharding tegels v
zand waardeOnbekend v
open verharding betonstraatstenen v
open verharding beton element v
half verhard waardeOnbekend v
gesloten verharding kunststof v
half verhard grind v
half verhard grasklinkers v
gesloten verharding asfalt v
open verharding gebakken klinkers v
open verharding sierbestrating v
half verhard gravel v
onverhard boomschors v
half verhard puin v
half verhard schelpen v
zand strand en strandwal sand sand
zand zandverstuiving sand sand