Script voor vergelijken datasets wandelknooppunten

In topic https://forum.openstreetmap.org/viewtopic.php?id=63093 had ik aangegeven dat ik wel interesse had in een script maken voor de import van wandel/fietsknooppunten. Intussen ben ik in overleg geweest met Peter Elderson en heb ik een script geproduceerd dat twee datasets met wandelknooppunten kan vergelijken. Dit kan het een stuk makkelijker maken om OSM up-to-date te houden met externe datasets. We mogen de dataset van de routedatabank gebruiken voor OSM.

Het script werkt door alle punten van de externe dataset (routedatabank) op te zoeken in OSM en te kijken hoe ver ze van elkaar af liggen. Op basis van die afstand worden ze gekwalificeerd als Great, Good, Poor en non-match. Hieronder zie je de resultaten voor

Nodes analyzed (external): 1386
Nodes analyzed (OSM): 1386
Great matches (<1m): 583
Good matches: (1-10m): 729
Poor matches: (10-100m): 60
Non matches: (>100m)): 14

Het script exporteert alle punten naar geojson formaat, zodat ze te openen zijn in JOSM. Het script is al uitgeprobeerd op de regio groningen. De resultaten zijn te downloaden op results.zip.

Dit script is vooral een tool wat kan helpen bij de handmatige import van de knooppunten. Er zijn nog geen plannen om het automatisch in te zetten. Ik hoor graag feedback van hoe het script vebeterd kan worden. Ook zijn suggesties welkom van andere datasets die met OSM vergeleken kunnen worden.

EDIT: Het script is te vinden op https://github.com/fwsmit/osm-knooppunten. Hier staan ook instructies voor hoe je het moet runnen (al kun je dus de resultaten van de huidige versie al hierboven downloaden.

FF denken…

Dan mis je volgens mij de punten in OSM die niet (meer) in de Routedatabank staan: dat zijn opgeheven knooppunten.

Ik heb nog een vraag:

? Hoe behandel je dubbele matches? Het zal best vaak voorkomen dat de Routedatabank 1 knooppunt geeft, maar dat dat in OSM meerdere malen voorkomt (split Node). Of 2 in RB maar 4 in OSM. Die OSM-Nodes kunnen verschillende afstanden hebben tot de Routedatabank Node, van 1 tot enkele honderden meters.

Tot noch toe had ik er niks mee gedaan. Maar dat was niet lastig om toe te voegen. Nu houdt het script bij hoeveel (en welke) matches elke node heeft. De resultaten staan hieronder:

Dataset routedatabank:
Nodes with 0 matches: 14
Nodes with 1 matches: 1372

Dataset OSM:
Nodes with 0 matches: 19
Nodes with 1 matches: 1364
Nodes with 2 matches: 4
Nodes with >2 matches: 0

Als je dit op fietsknooppunten loslaat dan lopen de dubbele matches gauw op! Ik neem aan dat dit over any match gaat, dus tot 100m afstand.

Nee, dit gaat over matches tot 100 meter. Als het meer dan 100 meter is wordt het beschouwd als een non match. (eerder was dit tot 100 km, maar dit was een bug).

Tip: kies even een vrijesoftwarelicentie voor het script. Dat maakt het mogelijk voor anderen om er aan bij te dragen en houdt het script ook in de toekomst bruikbaar voor de gemeenschap.

Even afstand nemend van de techniek, welke situaties willen we detekteren?
Ik denk:

  • Toevoeging nieuw knooppunt
  • Verwijdering niet meer bestaand knooppunt
  • Verplaatsing over korte afstand (tot 100m)
  • Verplaatsing over lange afstand (>100m)
  • Verandering knooppuntnummer

Eigenlijk ook: toevoeging / verwijdering route naar bestaand knooppunt, maar dat zie je niet in het knooppuntenbestand. Meestal zal het gepaard gaan met een van de bovenstaande gevallen.

Gedaan. Er zit nu een MIT licensie op.

Volgens mij ben je een bestand vergeten te mee committen :wink:

Ja, nu is het wel gelukt :open_mouth: