Jag använder ofta OSM via OpenLayers-tillägget i QGIS som bakgrundskarta, men då blir utseendet som någon annan bestämt, och just nu så verkar det vara lite problem med tillägget så det är bra med alternativ. Då kan man hämta hem shapefiler genererade från OSM via exempelvis http://download.geofabrik.de.
Dessa är direkt användbara i exempelvis QGIS, men saknar en del data som normalt finns i OSM. Vill man ha allt så får man i stället använda exempelvis XML-formatet *.osm.
.osm går att ladda hem över begränsade områden direkt från QGIS, eller så kan man hämta data för ett helt land från geofabrik.de (samma länk som tidigare).
Den lilla nätta 382 MB stora filen blir dryga 5 GB när den packas upp, men vi är inte färdiga än.
I QGIS används tillägget för Open Street Map för att göra om *.osm filen till en SpatiaLite databas. Det blir lite effektivare så databasen landar på ca 2 GB.
Nja, riktigt klart är det inte än. Nu skall topologin exporteras också.
När man laddar ”taggar” från databasen så börjar man förstå att man inte får alla data när man laddar hem shapefilerna. Här gäller det att vara selektiv och bara ta med det man tror att man behöver. Om man inte väljer något så importeras bara punkter med ett ID, vilket är helt omöjligt att hantera mer än som ”här är en punkt som betyder något” (se ”trick” längre ner).
Om man däremot väljer allt så kommer det att bli problem åt andra hållet. Lägg märke till att det i fallet med bilden ovan endast är punkter som importeras och vill man ha med linjer och ytor så får man köra om proceduren för dessa.
Punkterna utökar databasen med ca 200 MB, linjer runt 300 MB och ytor ca 600 MB. Totalt blir därför databasen lite drygt 3 GB.
När jag lägger in dessa punkter, linjer och ytor som röda symboler i bakgrunden, och de shapefiler som går att ladda hem från samma källa ovanpå, så ser man ganska snabbt vilka data som nu helt plötsligt blivit tillgängliga.
Vad har vi då för nytta av dessa nya data? Det beror på vilka ”taggar” som valdes vid importen av topologier. Många av dessa röda objekt är ”obskyra” taggar eller saknar helt taggar vilket gör dem väldigt svåra att identifiera, men det finns ett trick.
Skapa en ”Action” (kommando) av typen ”open/öppna” för varje lager där linjer och ytor får kommandot:
http://www.openstreetmap.org/way/[% "id" %]
och punkter kommandot:
http://www.openstreetmap.org/node/[% "id" %]
Nu går det att markera respektive lager, använda objektkommandoverktyget, och få upp ett resultat i webbläsaren som beskriver det aktuella objektet.
I exemplet ovan så går det att hitta massor med information om objektet som inte går att få tag på via det vanliga gränssnittet. Jag kan dessutom notera att det är taggar som börjar med ”lst” som används, så jag kan därför göra en ny import av topologier där jag väljer ut dessa, om det är det jag är intresserad av.
Tänk på att du kan behöva välja rätt objektkommando manuellt (drop-down vid knappen) första gången du skall använda verktyget.
Nu går det att söka reda på den information som man saknar, importera med nya taggar, för att slutligen exportera utvalda objekt till nya lager. Dessa kan sparas i shape eller det format som du önskar.
Vill du göra ändringar i några av dessa lager så skall du naturligtvis göra dessa i Open Street Map och inte i shapefilerna. Detta betyder också att du behöver skapa en rutin eller metod för att ersätta dina lager med nya uppdaterade sådana. Detta går säkert att göra via skript eller egna insticksprogram, men så länge man är noggrann med dokumentationen så blir det inte så många steg om man gör arbetet manuellt.
- Ladda hem och packa upp *.osm filen.
- Skapa SpatiaLite databasen.
- Skapa topologier för de önskade taggarna.
- Välj ut objekt och exportera till lager
(ersätt de gamla).
Lycka till!