Programátoři z pekel zde za šat a stravu programují čipová pseuda. Nyní s favicon!

MapGeneral 0.256 (alpha)

Opět se pouštím na tenký led plovoucí nad nejistými vodami softwarové tvorby. Důvod je i tentokrát jednoduchý: jediný generátor offline map pro Locus, který umí používat podklady z nejmenovaného nejlepšího českého mapového serveru, je určen pro MS Windows. Tento (pseudo)systém sice ve VirtualBoxu provozuju, ale nedělá mi to nějakou obzvláštní radost a pokud bude o důvod méně ošoupávat procesor a paměť jeho nepřátelskými instrukcemi, bude to jedině dobře. A proto v polovině července vznikl MapGeneral.

MapGeneral logo

MapGeneral je konzolový prográmek psaný v Perlu, který umí stáhnout mapové dílky turistických map z jmenovaného nejmenovaného serveru a vytvořit z nich .tar použitelný v androidí aplikaci Locus. Konzolová podstata má tu zásadní výhodu, že mohu pustit generování na virtuálním serveru a díky jeho rychlému připojení jsou i poměrně velké oblasti staženy za několik málo minut. Nehodlám tedy ani do budoucna vytvářet žádné GUI, musíte se s tím smířit.

Použití je snadné:

./mapgeneral.pl "parametr1" "parametr2" parametr3 parametr4 parametr5

kde:

  • parametr1 – URL levého spodního rohu oblasti, kterou chcete stahovat
  • parametr2 – URL pravého horního rohu oblasti, kterou chcete stahovat
  • parametr3 – typ mapy, seznam podporovaných typů najdete níže
  • parametr4 – zoom (přiblížení) mapy; z URL je to číslo za parametrem z=
  • parametr5 – jméno výsledného archivu bez přípony

URL levého spodního a pravého horního rohu by mělo vypadat zhruba nějak takto: http://www.mapy.cz/#x=13.416047&y=49.754452&z=15. Pro skript jsou podstatné parametry x= a y=, ostatní by se (pokud jsem dobře napsal patřičný regexp) mělo ignorovat. Uvozovky okolo těchto dvou parametrů silně doporučuji, zejména ampersand vám bash zblbne tak dokonale, že se výsledku nedočkáte.

Typ mapy je některý z následujících:

  • turist – čístá turistická mapa bez vyznačených turistických a cyklostezek
  • turist_trail – turistická mapa s turistickými stezkami
  • turist_bike – turistická mapa s cyklostezkami
  • turist_trail_bike – turistická mapa s turistickými a cyklostezkami

Tyto čtyři typy jsem odzkoušel a u mě fungují. Pokud byste chtěli generovat mapu nikoliv turistickou, ale obecnou, můžete zkusit typ base-n (musíte vytvořit stejnojmenný podadresář v adresáři MapGeneralu). U tohoto typu ale nemám představu, jak bude fungovat – měl by, ale nemusí. Teď nastává čas na trochu teoretického vysvětlení:
Turistické mapy na onom nejmenovaném serveru několik měsíců fungují jinak, než ostatní typy mapy. Původně bylo třeba skládat základní typ mapy (obecná, turistická, letecká) a průhlednými vrstvami obsahujícími s turistické a jiné stezky. Nové a podrobnější turistické mapy jsou ovšem již vyrenderované včetně stezek přímo od autorů. U obecné a letecké je třeba pomocí udělátoru pro práci s grafikou skládat na sebe několik obrázku, tak to dělá například windowsový MapGen od Aleše Povalače, jehož zdroják mi byl cennou inspirací. U turistických map jsem ale ověřil, že to je zbytečné mrhání procesorovým časem a proto se MapGeneral zaměřuje na ně. Kdo potřebuje vidět turistické stezky na obecné mapě, musí se poohlédnout jinde.

Parametr zoom má smysl do hodnoty 16 včetně, bližší přiblížení v prohlížeči vrací letecké snímky a nemá tak smysl s ním operovat při tvorbě turistické mapy. Předchozí verze podkladů na nejmenovaném serveru končila na úrovni 13 a celá ČR v tomto přiblížení zabírá několik GB, což dává tušit v jakých dimenzích se budou pohybovat mapy s vyšším číslem.

Posledním parametrem je jméno, které dostane výsledný tar, příponu neuvádějte.

Jeden příklad, který je lepší než tisíc slov. Následující příkaz vygeneruje mapu zhruba od Proseka po Dřevčice, včetně cyklistických a turistických tras, se zoomem 15 a výsledek se bude jmenovat praha19.tar:

./mapgeneral.pl "http://www.mapy.cz/#x=14.505407&y=50.116779&z=13" "http://www.mapy.cz/#x=14.628182&y=50.186274&z=13" turist_trail_bike 15 praha19

Mapové dílky se stahují do adresáře pojmenovaného podle typu mapy a odsud se pak přesouvají patřičně přejmenované do adresáře set. Zatímco stahovací adresáře skript nikdy nemaže, adresář set se vyprazdňuje při každém spuštění. To mj. znamená, že jednou stažené dílky se už nemusí stahovat znovu – pokud byste to chtěli z nějakého důvodu vynutit, smažte obsah odpovídajícího adresáře.

MapGeneral ke své činnosti potřebuje tar, perl a perlové moduly Geo::Coordinates::UTM, WWW::Mechanize a File::Copy, které byste měli najít v repozitořích své oblíbené distribuce nebo v Comprehensive Perl Archive Network. Závislost na File::Copy bude pravděpodobně odstraněna hned v příští (beta) verzi, protože každý Unix tak nějak obsahuje příkaz cp a je škoda jej nepoužít. Archiv stačí rozbalit, překontrolovat, že všechny podadresáře mají práva pro zápis od aktuálního uživatele a že mapgeneral.pl je spustitelný.

To co si můžete stáhnout o několik řádků níže, je alfa verze. Na mém počítači dělá v podstatě vše, co jsem chtěl. Nabízím vám ji s vírou, že pomůže i vám. Mohou se ale stát nepředvídatelné věci: nemusí dělat vůbec nic, můžete přijít o data, chcípnou vám akvarijní rybičky nebo zvadne fíkus. Varoval jsem vás.

MapGeneral ve verzi 0.256 najdete zde. Hodně štěstí a předem děkuji za každou odezvu.