Osmosis OSM adatok szűrése - tesztek
Osmosis és az térképadatok beszerzése
- Az Osmosis telepítése
- Hungary.osm letöltése (van teljes Európa is.)
- Utána az Osmosis leírása alapján kitaláljuk, hogy milyen adatok kellenek.
Teszt 1: Szűrés Osmosissal egy nagy méretarányú országtérképhez
Az olvashatóság kedvéért több sorba tördelve:
osmosis --read-xml file="hungary-latest.osm"
--way-key-value keyValueList="highway.tertiary,highway.tertiary_link,highway.secondary,highway.secondary_link,highway.primary,highway.primary_link,highway.motorway,highway.motorway_link,highway.trunk,highway.trunk_link,landuse.residential"
--used-node
--tf reject-nodes highway=bus_stop
--tf reject-nodes public_transport=platform,stop_position
--tf reject-nodes railway=tram_stop,station
--write-xml file="ways2.osm"
Azaz: olvasandó fájl megadása, szűrő parancsok, írandó fájl megadása.
A szűrő parancsok alapja a "--way-key-value" (és néhány kapcsolódó társa) amivel az alapot adhatjuk meg a kimeneti fájlnak, azaz: minden egyéb eldobásra kerül - szóval ezzel óvatosan!
A másodlagos szűrés a "--tag-filter" (--tf) "reject" és "accept" parancsok amivel a megmaradt adatokból eldobhatunk vagy megtarthatunk dolgokat. (A szűrők egymásra hatását és precedenciáját még nem tanulmányoztam.)
Ez a konkrét példa megtartja:
- autópályák, autóutak
- első, másod és harmadrendű utakat, OSM terminológiával értve!
- települések körvonalait és "place" pontjait
- bizonyos hulladékokat: a fentebbi szűrés megtartja azokat a pontokat, amelyek valamilyen kapcsolatok részei, ezért szűrtem ki a számtalan buszmegállót (azok a busz útvonal kapcsolat részei) és de pár egyéb dolog bent marad így is ugyanebből az okból.
A kimeneti fájl a fentebbi példából: ways2.zip (c) OpenStreetMap és közreműködői, ODbL
Hibája, hogy a kapcsolatokkal megadott településhatárok hiányoznak. Egy pontosított változat NaTToMitól, köszi!
#!/bin/sh bin/osmosis --read-pbf hungary-latest.osm.pbf --tf accept-ways highway=tertiary,tertiary_link,secondary,secondary_link,primary,primary_link,motorway,motorway_link,trunk,trunk_link --tf accept-relations highway=tertiary,tertiary_link,secondary,secondary_link,primary,primary_link,motorway,motorway_link,trunk,trunk_link --tf reject-nodes highway=bus_stop --tf reject-nodes public_transport=platform,stop_position --tf reject-nodes railway=tram_stop,station --used-node outPipe.0=roads --read-pbf hungary-latest.osm.pbf --tf accept-ways landuse=residential --tf accept-relations landuse=residential --used-node outPipe.0=places --merge inPipe.0=roads inPipe.1=places --write-xml ways-accept-relations.osm
Kimenete: ways-accept-relations.osm.zip
Az eredmény felhasználása
Mapertive-be betöltve készíthetünk nyomtatható térképet. A fentebbi fájlt futólag betöltöttem, eredménye:
További információk
További szűrési és egyéb hasznos OSM szkriptek, beleértve a fentebbi térkép tökéletesítését és egy új "barlang" nevű projektet amiben a renderelést a TileMill végzi:
A barlang könyvtárban lévő README leírja a pontos lépéseket.
Ha neked is vannak hasznos OSM-hez kapcsolódó szkriptjeid, írj NaTToMinak SVN elérésért.