Nokia E51 + QSTARZ BT-Q1200 + TrekBuddy aneb turistická navigace na koleně

O GPS navigaci jsem začal uvažovat minulý rok na jaře, když jsme s Evou bloudili v lese a v polích na okraji Kokořínského dolu a snažili se najít vyhlídku na hrad. Sice jsme uspěli, ale díky zbytečnému bloudění jsme měli bahno až za ušima.

Moc se mi nechtělo do klasické turistické navigace - byla by to další věc, kterou bych s sebou musel tahat. Do baťohu s fotákem by se vešla, ale stejně... No a potom taky ty mapy, pro Garminy je k dispozici snad jen Czech Topo, jedná se o vektorovou mapu. Obvzlášť hnusnou vektorovou mapu. Viz recenze na mobilmanii. Já vím, je to povrchní argument, ale prostě si nemůžu pomoct! ;) Mapy jsou svého druhu umělecká díla, na která je radost pohledět. Na Czech Topo se podle mně nedá koukat.

Alternativou je Tournavigator, jenže to běží na WinCE a takové zařízení mi nesmí přes práh. Jo, jsem linuxový fanatik...

Takže na trhu zůstaly už jen SmartMaps. Ty chodí na WinCE, PalmOS a Symbian S60. V práci jsem nafasoval E51, na které S60 běží... přiznávám, že kdybych o téhle možnosti věděl, tak bych si je nejspíš koupil a teď bych neměl o čem psát. ;) Turistické mapy celé ČR v měřítku 1:25000 za 2000Kč mi připadají jako velmi dobrá nabídka.

Protože mi ale kamarád Polish před objevením SmartMaps ukázal TrekBuddyho, tak jsem strávil desítky hodin koumáním, jak do svého mobilu nacpat co nejvíc map. Plody svého snažení zde nemohu uveřejnit, a tak se pochlubím alespoň nástroji, které jsem si vytvořil. Skripy merge.pl a TBcutter.pl jsou docela odladěné a snad snesou použití i uživateli neprogramátory. Ostatní uvedené skripty bez drobných úprav nejspíš nepůjdou použít, ale uvádím je, protože si myslím, že přece jen pomoci mohou.

Složení nakouskované mapy - merge.pl

Skript merge.pl slouží ke zpětnému složení nakouskované mapy. To se může hodit při převodu z formátu TrekBuddy do OziExplorer. Já si to napsal, když jsem chtěl optimalizovat mapy 1:25 000. Použití je jednoduché:

$ merge.pl -d <adresar> [-q 10-100]
-d udává jméno adresáře, který má skript zpracovat, musí obsahovat adresář set s kousky mapy. -q udává kvalitu komprese, 10 uloží mapu velkou 4000x3000 bodů za 5 sec, ale soubor bude velký 10MB. Zatímco 100 (nejlepší komprese) bude potřebovat 30 sec a soubor bude mít jen 7MB.

Protože jednotlivé kousky mapy mohou mít úplně jinou barevnou paletu, tak má výstupní soubor 8bit na barevnou složku nikoliv indexovanou paletu, může tedy být o slušný kus větší než prostý součet velikostí skládaných kousků.

Nakouskování mapy - TBcutter.pl

V TB fóru je k dispozici pyTBcutter, má ale pro mě závažné chyby: 1) dělá redukci barev zvlášť na každém jednom uříznutém kousku (je to neštastné, protože pak je každý kousek kapku jinak barevný) 2) všechny kousky musí mít stejně dlouhou barevnou paletu, což není nezbytné 3) nepoužívá maximální možnou kvalitu PNG komprese, to sice zdržuje, ale maximální MicroSD karta, co se zatím dá koupit, je jen 8GB. Neumím Python, a proto jsem to nedokázal uspokojivě upravit. Takže jsem si napsal vlastní verzi v Perlu - TBcutter.pl.

Použití:

Usage: TBcutter.pl [options] -f <filename>

Posible options:
  -f  filename to work on
  -n  sugested and minimum title size (512)
  -m  maximum title size (1024)
  -c  colormap (undef)
  -q  quality (100)
-f jméno souboru který se naseká na kousky, výstup bude v adresáři se jménem podle souboru (snad bez cesty a bez přípony) -n-m určují minimální a maximální velikost mapového segmentu, program se snaží najít takové hodnoty aby byly všechny segmenty stejně velké a zbytečně se neplýtvalo clustery paměťové karty na různé nudličky. Mám vyzkoušeno, že E51 zvládne segmenty velké 1000^2 bodů, většina před-připravených map používá 300x400bodů, takže jsou asi telefony s menší pamětí. -q kvalita komprese viz merge.pl. -c barevná paleta - je důležitá aby všechny kousky mapy používaly stejnou barevnou paletu. Vytvořit ji můžete tak, že vezmete dílky, které obsahují všechny objekty, které se na mapách vyskytují, spojíte je do jednoho obrázku a na ten pak poštvete příkaz convert slepenec.png +dither -colors <cislo> -unique-colors colormap.png. cislo je počet barev výsledné palety, experimentujte bez -unique-colors, až najdete nejnižší hodnotu, pro kterou bude výsledný obrázek pro Váš vkus ještě přijatelný. Pak přidejte přepínač -unique-colors a vygenerujte si finální barevnou paletu - obrázek s tolika pixely, kolik je barev ve Vaší paletě.

Převod OziExplorer souborů ozfx2/3 do PNG

Nepřišel jsem na to, jak na Linuxu udělat z ozfx2/3 PNG, takže jsem použil ozf2img.exe. Případně lze použít DeMapper, ale ten mi hodně často segfaultuje.

Optimalizace PNG

Udělejte malý pokus, stáhněte si jeden mapový segment z google maps do svého oblíbeného bitmapového editoru. Uložte ho a porovnejte velikosti. Dost možná bude ta "Vaše" verze větší. Trik je v tom, že kompresní algoritmus PNG je velice komplikovaný a různým nastavením lze získat různě velké výstupy. Bohužel pro různé typy obrázků se hodí různá nastavení. OptiPNG je program který, hrubou silou vyzkouší větší možství variant. Na některých mapách jsem ušetřil až 20% a to se hodí!

Google maps zoom 8 až 16

google-z14-example.pngGooglí mapy každý zná, nijak nenadchnou, ale účel náhledových map splní. Zoom 16 se jmény ulic se pro navigaci ve městě také docela hodí.

Snadno použitelný nástroj pro Linux jsem nenašel, a tak jsem sáhl po aplikaci googleak. Připravil jsem si sním několik zoomů map:

  0.4 MB   01 - google z08
  2.2 MB   02 - google z10 
 40   MB   03 - google z12
121   MB   04 - google z14
538   MB   07 - google z16

Zoom 16 se mi podařilo zredukovat z 825MB na 538MB pomocí snížení počtu barev a také spojením 4 segmentů do jednoho, čímž se zlepšilo využití paměťové karty.

1:50 0000 - Turistické + Cyklo Shocart mapy

50k-example.png To jsou mapy, které známe z mapy.cz. Jsou poměrně přesné a detailní, chybí parkoviště a turistické rozcestníky. Oproti mapám KČT, které používám v papírovém vydání, mají zase lépe vyznačené vyhlídky - dá se na nich poznat, jestli se jedná o kruhový nebo jen částečný výhled. Jsou ke stažení rovnou pro TrekBuddy a zaberou 506MB.

Podkladová barva je občas kapku divná, nejspíš důsledek nepovedené redukce počtu barev. Bohužel s tím nejde nic udělat. Leda stáhnout znova z mapy.cz, to by neměl být zase až takový problém, ale nevadí mi to dost na to, abych se tím zabýval.

1:25 000

25k-example.png Vektorově a relativně ošklivě vypadající mapy. O zdroji nic nevím, jen že se semtam objeví v mapě "Published by CENIA (c) MO ČR". Jsou ke stažení pro TrekBuddyho. Distribuovaný balíček bohužel opět hodně utrpěll nepovedenou redukcí počtu barev. Základní barva je občas dost do fialova a lesy mají spoustu podivných odstínů zelené až tyrkysové.

Tahle mapa si mě získala přes svou ošklivost množstvím a přesností zaměření lesních a polních cest. Otestoval jsem ji od Šumavy přes Kladno až k Ralsku a sedí opravdu výborně.

Kvůli tomu jsem do ní investoval poměrně dost času a napsal si skript na rekonstrukci barev. Vypsání všech odstínů zelené zabralo asi úplně nejvíc času. Bohužel není poznat rozdíl mezi běžným lesem a NPR, případně I. zonami národních parků, a také mám pochybnosti o tom, že lze rozlišit louky od polí - netuším, jestli to vůbec ve zdrojových datech bylo. Také by se mohla hodit finální barevná paleta.

Výsledný produkt publikovat nebudu, ale výše uvedené informace by mohly pomoci případným zájemcům při pokusu o svou vlastní verzi. Závěrem uvedu, že jsem takto zredukoval velikost map z 782MB na 633MB (v případě tarované mapy z 725MB na 602MB).

1:10 000 - ZM10

10k-40procent-example-cut.pngA na konec opravdová lahůdka! Základní mapa (ZM10) z webu geoportal.cenia.cz, je ke stažení pro OziExplorer. Celé to má zhruba 11GB, což je na 8GB MicroSD kartu až moc. ;) Zkusil jsem ale mapy zmenšit na 40%, čitelnost zůstala zachována (krom jmen ulic), porovnejte 100%40%. U zmenšené verze jsem záměrně nedoostřoval, aby se soubory nezvětšovaly. Podařilo se mi mapy zdrcnout na 4.5GB, což je pořád hodně. Na vině je to, že některé plochy jsou vyplněny rastrem, který jde jen obtížně komprimovat. Ale hlavní je, že se mi to vešlo do mobilu! :)

Chodit se podle téhle mapy moc nedá. Dolní hrana displaye mobilu představuje zhruba 500m, ale velmi se mi tahle mapa osvedčila při rozhodování na rozcestích, která nejsou zakreslena na předchozích dvou mapách a také při posuzování možnosti průchodu skalami, cestičky jsou na ní snad opravdu všechny.

Pokud by ty mapy někdo chtěl stahovat z RapidShare, tak se mu bude hodit skript na kontrolu stažení všech listů (těch RARů je fakt hodně). Dál bude potřebovat skript na zmenšení mapových segmentů, jejich nařezání pro TrekBuddyho a také na přepočet kalibračních souborů. Hodit se bude taky barevná paleta. Skripty jsou jaké jsou, bez toho, abyste uměli aspoň trochu perl, je asi nezvládnete použít.

Slepá mapa 1:10 000

10k-slepa.pngKrom turistické navigace používám TrekBuddyho i k hledání geokešek. Ty jsem obvykle hledal za použití kompasu, ten ale určuje sever podle pohybu a když hledám v místě s horším signálem tak se naprosto zmateně točí a honí mě na úplně špatnou stranu.

Napadlo mě, že by se hledalo mnohem lépe když by TrekBuddy uměl zvětšit mapu, bohužel neumí a tak jsem si nahrál ZM10 v originálním rozlišení - to je brutálně velké. Sežralo to na kartě 7.5GB. Hledá se stím ale nádherně! Viz screenshot.

Dumal jsem nad nějakým řešením pro sestru, ta používá K750i kam jde vložit jen 2GB karta. TAR je bohužel dosti neefektivní formát a i pro symbolické linky použije minimálně 512B, viz volba --blocking-factor. Řešení je ale v tmi, jednoduchým trikem jsem dosáhl toho, že tar obsahuje jen jeden mapový segmet a tak je malý. Celá slepá mapa má jenom 62MB. Jak to vypadá při hledání vidíte na obrázku vlevo, máte-li zájem, můžete si tuto slepou mapu stáhnout - 2.2MB.

Příklad tmi souboru:

block 0: 01-37.map
block 9: set/01-37_0_0.png
block 9: set/01-37_0_330.png
block 9: set/01-37_0_660.png
block 9: set/01-37_0_990.png
...

Závěr

Díky TrekBuddymu je celkem snadno možné si vytvořit dobře použitelnou turistickou navigaci za minimální peníz. Mobil má každý a BT GPS moduly jsou relativně levné. S mapami samotnými je to kapku složitější...