OSM-dataimport på vindskydd i Sverige
Datakällor
.
Jag stötte på en karta med flera markerade vindskydd, ofta med utförliga kommentarer. Jag beslutade att importera de saknade noderna in i Openstreetmap.
Karta: https://www.google.com/maps/d/u/0/viewer?mid=1doLXXvokOtiMzthVz0SLFjEPmD4. Facebook-gruppen: https://www.facebook.com/groups/vindskyddinorden/
Databearbetning
Först behöver man “utvinna” informationen och konvertera den till en format som OSM kan tolka.
Men att importera noder betyder framförallt att jämföra dem med de befintliga noder så att inte skapa onödiga dubbletter. Processen kallas för “conflation”. Därför behöver man också gamla informationen tillgängligt.
Nytt datalager
- Exportera punkter från Google-kartor som KML-filer. Om det ger komprimerade KMZ-filer behöver man eventuellt dekomprimera dem.
- Konvertera KML via gpsbabel till OSM-formatet. Processen sparar koordinater, kommentarer och namn på samtliga noder.
Befintligt datalager
- Hämta
sweden-latest.pbf
skapad av Geofabrik https://download.geofabrik.de/europe/sweden.html. - Filtrera vindskydd och stugor geofabrik_to_shelters.sh.
Lämna bara noder (och vägar förvandlades till noder) som matchar yttrycket
--keep-nodes-ways="amenity=shelter or shelter_type= or tourism=chalet or tourism=wilderness_hut"
.
Conflation
Två noder anses vara identiska om dem ligger för nära till varandra. En sådan heuristisk strategi tillåter lösa de flesta dubbletterna om distanströskeln är noggrant vald.
Algoritmen ser ut såhär.
- För varje punkt från det nya skicket och varje punkt från det befintliga skicket mäta distans mellan dem. Om distansen är mindre än tröskelvärdet, besluta att noderna är dubbletter.
- För de överlevde nya noderna, sanera etiketter “name” och “note”, sedan lägg till nya väsentliga etiketter (som “amenity=shelter”, “source=*” och dylika).
Det obekraftade-lagret krävde mer manuellt arbete eftersom befintliga namn och anmärkningar oftast var generiska. Jag lade också “fixme”-etikett för dem.
Se skriptet för detaljer: https://github.com/grigory-rechistov/nmd-osm-tools/blob/master/conflate-nodes.py.
Resultat
Jag har lagt till några hundra tidigare saknade vindskydd på Sveriges område. OSM-datafilen: osm.gz.