Oefenen met R en FME: over fietsnetwerken en fietsknooppunten. Deel 1

Hoeveel fietsknooppunten zijn er per provincie en hoeveel kilometers aan fietsknooppuntnetwerken en wat als je deze afzet tegen de oppervlakte van elke provincie? En wat als je niet het hele oppervlak, maar alleen het landelijke gebied als uitgangspunt neemt, want wie fietst er nu recreatief door een grote stad? Genoeg vragen om met FME en R aan de slag te gaan. Bij wijze van oefening. Wat bracht het op: de data natuurlijk, maar vooral heel veel plezier en kennis over en ervaring met de software.Stappenplan

1. Stel de vragen op die je beantwoord wilt zien
2. Verzamel de data
3. Bewerk de data
4. Genereer de output
5. Trek je conclusies

Tools

FME is spatiale ETL software bedoeld voor conversie, bewerking, selectie, transformatie van honderden verschillende bronformaten naar evenzovele resultaatformaten. R is opensource software voor het verwerken en – bv. grafisch – weergeven van statistische, maar ook spatiale data. RStudio is een GUI voor R. Wel zo gemakkelijk.

De vragen
  • Hoeveel fietsknooppunten zijn er per provincie?
  • Hoeveel (kilo)meters aan fietsknooppuntnetwerken zijn er, ook weer per provincie?
  • Wat is het gemiddeld aantal fietsknooppunten per km2 per provincie
  • Wat is het gemiddeld aantal (kilo)meters aan fietsknooppunten per km2, per provincie
  • Hoeveel café’s en restaurants zijn gelegen binnen 25 meter van een fietsknoopuntenlijn-weg, dus zeg maar gelegen áán die weg? Per provincie weer.
  • Wat is het gemiddeld aantal horeca gelegenheden per (kilo)meters aan knooppuntnetwerken, per provincie
  • Tenslotte, alle voorgaande vragen, maar dan hanteren we niet de hele (land)oppervlakte van elke provincie,  maar halen we de grote steden eruit, want we beschouwen recreatief fietsen als fietsen door lándelijk Nederland.

Het zijn geen vragen waarvan de antwoorden de wereld zal schokken, maar uitdagend genoeg om aan de slag te gaan!

Verzamel de data

De gebruikte bronnen:

  • Voor 1) fietsknooppunten en -netwerken  en 2) de horeca gebruikte ik de Openstreetmap (OSM) data van februari 2016. Alle data is met osm2pgsql geconverteerd en ingeladen in een Postgresql 9.3/Postgis 2.1.7-datbase
Voor de provincies heb ik gebruikt
  • de Gemeentegrenzen zonder water van Imergis uit 2015
  • Gemeenten alfabetisch per provincie 2015 van het CBS
  • Top10NL-Plaats_kern (zeg maar de bebouwde kommen) van Imergis, datum onbekend, maar vermoedelijk 2016
    Met dank aan Jan-Willem van Aalst van Imergis.
Bewerk de data

Een shapefile met de provinciegrenzen leverde een probleem op. Deze bevat o.a. ook de binnenmeren van Zeeland, het IJsselmeer van Flevoland en wat dies meer zij. Daar valt moeilijk op te fietsen, dus moeten we de landoppervlaktes hebben. Gek genoeg kan ik geen shapefiles vinden met de landoppervlaktegrenzen per provincie. Maar FME komt te hulp, samen met de gemeentegrenzen voor de contouren. Rivieren en meren laten we maar even voor wat het is.

Hieronder afbeeldingen van:

– de provinciegrenzen met water
– de gemeentegrenzen zonder water

– de workflow, daarin worden

  • via een AreaOnAreaOverlayer de beide kaarten met elkaar gemengd, zodat de provincienamen als attribuut bij de gemeentes ingevoegd worden
  • en een Tester filtert features met als overlap count attribute = 2, hetgeen betekent dat de feature een echte overlap is
  • de features met een Dissolver gehergroepeerd volgens provincienaam en binnenlijnen worden opgelost,
  • en daarna met een Aggregator volgens provincienaam weer samengevoegd

– en het resultaat: de provinciegrenzen zonder water.

Een tweede kaart met provinciegrenzen maar zonder grote steden, moeten we maken voor de laatste serie vragen. De workflow is nu iets complexer

Als uitgangspunt gebruiken we de zojuist aangemaakte provinciekaart, met als 2e reader de shapefile met bebouwde kernen (Top10NL-Plaats_kern). Zie hieronder de workflow, de omschrijving en het resultaat:

  • In de 2e Reader halen we eerst donutholes eruit. Die verstoren de selectie
  • Daarna testen we ook nog op oppervlakte door een Areacalculator en een Tester die zoekt op gebieden met een oppervlakte boven een bepaalde waarde. Die waarde is gebaseerd op mijn eigen indruk welke dorpjes nog wel als landelijk worden ervaren en welke niet meer.
  • Vervolgens worden de overgebleven gebieden geclipt met een Clipper – als het ware gesneden uit de provinciekaart, gedeaggregeerd en weer geaggregeerd, middels een Deaggregator en Aggregator.
  • De eerlijkheid gebiedt te zeggen dat er in FME wat waarschuwingen opkwamen, die op enkele fouten bij het deaggregeren en aggregeren wezen. Voor zover ik weet betroffen deze kleine gebieden, die weinig tot geen invloed hebben op de data. Voor mij zou het te lang duren om de onvolkomenheden eerst op te lossen. Dat komt hierna!
Genereer de output

De output bestaat uit tweetal csv bestanden met getallen over fietsknooppunten, fietsknooppuntnetwerken en horeca langs de weg. Dat is weer met een FME workflow gedaan.

In R worden de getallen met een kaart gecombineerd tot een grafische weergave.

Maar de output, dat is iets voor een volgend deel..