Srovnání rychlosti programů pro ořezání Openstreetmap dat podle polygonu

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

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
Osmosis1:16:32,516823 930100 %
Osmosis + sort1:39:59,008824 214*130,6 %
Osmium0:15:46,708831 78520,6 %
Osmconvert00:20:16,2981 029 96326,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.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *