Pro své mapy pro Garmin používám už ořezané státy od Geofabriku, je to jednodušší. Ale pro další projekty potřebuju občas vyříznout z exportu Openstreetmap dat nějaký jiný polygon. V průběhu experimentů s různými aplikacemi jsem zjistil, že to trvá různým nástrojům různě dlouho a to i několikanásobně. Tak jsem si řekl, že je srovnám a že by se to třeba mohlo hodit i někomu jinému.
Prostředí
Postarší AMD FX-8320E, tedy čtyři jádra, osm virtuálních, 3,2 GHz. 32 GB RAM.
Na hardware běží Windows 10 Home, počítač jsem se snažil během testu moc nevytěžovat jinými programy, ale žádné laboratorní podmínky to nebyly. Většina aplikací stejně neuměla vytížit víc, než dvě jádra.
Testované Aplikace
- Osmosis 0.48.3
- Osmium 1.16.0: Spouštěno v Minicondě.
- Osmconvert 0.8.10 64bit
Postup
Z Geofabriku jsem stáhnul data Evropy ve formátu PBF a polygon hranic Česka. Data Evropy jsem pak pomocí testovaných programů ořezával podle polygonu a pomocí příkazu Measure-Command měřil dobu běhu. Všechny programy jsem spouštěl se základním nastavením.
Výsledky
Software | Čas [h:mm:ss] | Výsledná velikost [kB] | Čas oproti Osmosis |
---|---|---|---|
Osmosis | 1:16:32,516 | 823 930 | 100 % |
Osmosis + sort | 1:39:59,008 | 824 214* | 130,6 % |
Osmium | 0:15:46,708 | 831 785 | 20,6 % |
Osmconvert | 00:20:16,298 | 1 029 963 | 26,5 % |
*Velikost není 100% porovnatelná, šlo o novější pbf soubor s Evropou
Závěry
- Že je asi nejznámější software, Osmosis, pomalejší, jsem ze zkušenosti věděl. Ale že mu to bude trvat čtyřikrát až pětkrát déle, než konkurenci, jsem tedy nečekal.
- Osmium poměrně překvapilo, tak nějak jsem automaticky čekal, že Python -> pomalost. Ale v Pythonu je jen wrapper pro C++ knihovnu libosmium, která tady vítězí na plné čáře.
- Osmconvert je trochu podezřelý, na Wiki jsou odkazy na stažení přes nějaký zkracovač adres, kde si stáhnete .exe soubor… Ale pokud se nebojíte, je to jedna binárka, která dělá, co má a nemusíte řešit nastavení Pythonu, virtualizační prostředí, nebo zvláštní syntaxi Osmosis.
- Osmconvert vygeneroval skoro o čtvrtinu větší soubor než ostatní dva programy. Čím to je, jsem neřešil.
- Není pbf jako pbf. Česko vyřezávám pro použití v knihovně Geodesk (verze 0.2.0).
- Export z Osmium funguje bez problémů.
- Při konverzi exportu z Osmconvert dostávám hromadu chyb o cestách bez uzlů a relacích, co nejdou zkonvertovat a celá konverze je o dost pomalejší, výsledný soubor má ale stejnou velikost, jako ten z Osmia a s Geodeskem funguje. Proto byl nejspíš ten soubor o tolik větší.
- Export z Osmosis vyhodí chybu hned po startu, Cannot invoke „com.clarisma.common.pbf.PbfBuffer.pos()“ because „buf“ is null. Zkusil jsem použít –sort, ale chybu Gol vypisuje stejnou.