Download OpenStreetMap met FME

Een van de problemen die kleeft aan het verkrijgen van OpenStreetmap data is dat het niet mogelijk is om data voor een groter gebied te downloaden, met uitzondering van de downloads per land die door bv. GeoFabrik en Cloudmade worden aangeboden. Aangezien zij niet het volledige datamodel aanbieden heb ik besloten een oplossing te zoeken via FME.

Dit is uiteindelijk een combinatie van 3 FME workbenches geworden:
osm_manager.fmw beheert het hele proces, hier worden de parameters ingesteld. Dit zijn de bounding-box coordinaten voor het gebied wat gedownload moet worden en een zogenaamde 'chunk size'. Aangezien de XAPI beperkt is in het aantal objecten wat geleverd wordt bleek het nodig het gebied op te knippen in kleinere stukken. De grootte van deze stukken is gedeeltelijk afhankelijk van hoe 'vol' het gebied is. In de praktijk lijkt het er op dat 0.05 (graden) een redelijk veilige standaardwaarde is. De manager start vervolgens een tweede workbench voor ieder deel apart via een WorkspaceRunner

Deze workbench, osm_fetcher.fmw, zorgt voor het downloaden. Hiervoor wordt een HTTPFetcher gebruikt die met url's gevoed wordt en tekstbestanden wegschrijft (ruwe OSM XML data). Als dat gebeurd is wordt de controle weer overgedragen aan de manager die vervolgens de derde workbench start: osm_writer.fmw. Deze leest alle .osm bestanden, combineert ze, clipt ze naar de eerder opgegeven coordinaten en schrijft het resultaat weg als Shapefiles.

Aangezien de OSM XAPI geen clip uitvoert moet de osm_writer workbench ook dubbele objecten verwijderen. Het voordeel hiervan is echter wel dat er geen artefacten van het tiling proces achterblijven.

Mogelijke verbetering zijn o.a. het herprojecteren van de output (standaard wordt WGS84 gebruikt) en eventueel parameters om de output naar een andere directory te sturen (nu worden alle .osm bestanden in de zelfde directory als de workbench gezet en de shapefiles in een subdirectory daarvan).

De workbenches kunnen hier gedownload worden. Na het uitpakken kunt u osm_manager.fmw openen in de FME workbench, de parameters instellen en het proces starten.