Zdarma offline mapy pro Android

Tvorba vlastní mapy

Vytvořit si vlastní offline mapu není kupodivu tak těžké, jak by se mohlo na první pohled jevit. Pokud vám tedy nebudou vyhovovat existující mapy, můžete si například před dovolenou vytvořit vlastní mapu pro konkrétní oblast.

Potřebný software

Pro vytvoření základní mapy budete potřebovat následující software:

Důležité: Ne všechny kombinace Osmosis a MapsForge jsou kompatibilní. Aktuální stabilní verze MapsForge byla v době psaní článku 0.5.1, která běží bez problémů s Osmosis 0.41 (verze ke stažení).

Staženou Javu si nainstalujte, program Osmosis si rozbalte do vámi zvoleného adresáře a v něm do podadresáře bin/plugins nakopírujte stažený plugin MapsForge. Podadresář plugins obvykle neexistuje, proto jej v dané cestě před nakopírováním vytvořte.

Získání zdrojových dat z OpenStreetMap

Nejjednodušší je stáhnout si zdrojová data pro konkrétní stát. Na odkazovaném webu jsou k dispozici data prakticky pro všechny státy a to jak v binárním formátu PBF, tak v OSM XML. Pokud si chcete stáhnout zdrojová data pro specifickou oblast, podívejte se do OpenStreetMap Wiki.

Nás bude každopádně zajímat zdroj dat v PBF. Stáhněte si tedy data pro příslušný stát. Například Česku republiku (580 MB).

Vygenerování mapy

V podadresáři bin u programu Osmosis spusťte:

osmosis --rb file=czech_republic.osm.pbf 
--mapfile-writer file=czech_republic.osm.map type=hd

Parametr --rb říká, že vstupem bude formát PBF (pro OSM XML je parametr --rx), následuje cesta ke zdrojovému souboru. Obdobně je pak definována cesta k výstupnímu souboru .map. Poslední parametr udává, že paměť bude swapována na disk. U větších map je to praticky nutnost.

Toť vše. Nyní si jen v závislosti na velikosti mapy a rychlosti vašeho PC počkáte. U mě trvá vytvoření mapy České republiky přibližně 3 hodiny.

Konfigurace mapy

Výše uvedený postup vytvoří mapu dle výchozího nastavení, což většině z vás bude stačit. Někteří z vás však budou moci chtít zahrnout do mapy i další prvky mapy, které ve výchozím nastavení zahrnovány nejsou (z různých důvodů, např. pro přehlednost). V mém případě mi chyběly drobné sakrální památky v krajině.

Cesta vede přes XML konfiguraci. Na webu naleznete tu výchozí, takže nejjednodušší je si ji stáhnout a upravit. Pravidla pro upravování jsou vcelku jednoduchá. Jde jen o definice, které body a cesty se mají zahrnout a při jakém přiblížení mapy se mají zobrazit. Pokud vám v mapě něco chybí, můžete si to do souboru přidat.

Následující pravidla zahrnou do mapy některé informační cedule pro turisty:

<pois>
  <osm-tag key="information" value="guidepost" zoom-appear="13" />
  <osm-tag key="information" value="map" zoom-appear="13" />
</pois>

Popis možných prvků mapy naleznete v OpenStreetMap Wiki.

Nyní jen zbývá soubor s upravenými pravidly zahrnout do generování, což učiníme přidáním parametru tag-conf-file:

osmosis --rb file=czech_republic.osm.pbf 
--mapfile-writer file=czech_republic.osm.map type=hd
tag-conf-file=tag-mapping.xml

Přidání vrstevnic

Vrstevnice v mapě jsou užitečné zejména pro turisty. Následující popis vychází z návodu ve fóru Locusu. Vrstevnice jsou generovány na základě dat z projektu Shuttle Radar Topography Mission (SRTM), s kterými umí řada nástrojů pracovat.

Data ze SRTM do podoby, v jaké je potřebujeme, získáme pomocí nástroje Phyghtmap. Jak název napovídá, jedná se o program v Pythonu a postup jeho instalace je trochu delší. Osobně jsem instaloval ve Windows.

Výsledné generování dat vrstevnic může vypadat následujícím způsobem:

c:\python27\Scripts\phyghtmap.exe --polygon=czech_republic.poly 
-o czech_republic --pbf -j 2 -s 20 -c 200,100 --start-node-id=20000000000 
--start-way-id=10000000000 --write-timestamp --max-nodes-per-tile=0

Jednotlivé parametry jsou vysvětleny na manuálové stránce. Za zmínku stojí parametr --polygon, v rámci kterého se definuje oblast, pro jakou se mají vrstevnice vytvořit. Polygony jednotlivých států naleznete u dat jednotlivých států na Geofabrik.de. Parametrem --area však můžete zvolit libovolnou oblast.

Výsledkem výše uvedeného příkazu je .pbf soubor s vrstevnicemi. Soubor stačí vygenerovat jednou, vrstevnice se často nemění :) Nyní je potřeba spojit aktuální data OpenStreetMap s vygenerovaným souborem s vrstevnicemi.

osmosis --rb file="czech_republic.osm.pbf" --sort-0.6 --rb 
czech_republic_srtm3.osm.pbf --sort-0.6 --merge --wb czech_republic_merge.pbf

Soubor czech_republic_srtm3.osm.pbf zde představuje data s vrstevnicemi. Souboczech_republic_merge.pbf je ten výsledný. Nyní je již jen potřeba MapsForge říci, že má soubory s vrstevnicemi zahrnout do výsledného .map, což učiníme pomocí XML konfigurace, kterou jsem popisoval výšel. Do XML souboru stačí přidat:

<ways>
  <osm-tag key="contour_ext" value="elevation_minor" 
	  zoom-appear="12" force-polygon-line="true" />
  <osm-tag key="contour_ext" value="elevation_medium" 
	  zoom-appear="12" force-polygon-line="true" />
  <osm-tag key="contour_ext" value="elevation_major" 
	  zoom-appear="12" force-polygon-line="true" />
  <osm-tag key="ele" value="100" zoom-appear="14" />
  <osm-tag key="ele" value="200" zoom-appear="14" />
  <osm-tag key="ele" value="300" zoom-appear="14" />
  <osm-tag key="ele" value="400" zoom-appear="14" />
  <osm-tag key="ele" value="500" zoom-appear="14" />
  <osm-tag key="ele" value="600" zoom-appear="14" />
  <osm-tag key="ele" value="700" zoom-appear="14" />
  <osm-tag key="ele" value="800" zoom-appear="14" />
  <osm-tag key="ele" value="900" zoom-appear="14" />
  <osm-tag key="ele" value="1000" zoom-appear="14" />
  <osm-tag key="ele" value="1100" zoom-appear="14" />
  <osm-tag key="ele" value="1200" zoom-appear="14" />
  <osm-tag key="ele" value="1300" zoom-appear="14" />
  <osm-tag key="ele" value="1400" zoom-appear="14" />
  <osm-tag key="ele" value="1500" zoom-appear="14" />
  <osm-tag key="ele" value="1600" zoom-appear="14" />
  <osm-tag key="ele" value="1700" zoom-appear="14" />
  <osm-tag key="ele" value="1800" zoom-appear="14" />
  <osm-tag key="ele" value="1900" zoom-appear="14" />
  <osm-tag key="ele" value="2000" zoom-appear="14" />
  <osm-tag key="ele" value="2100" zoom-appear="14" />
  <osm-tag key="ele" value="2200" zoom-appear="14" />
  <osm-tag key="ele" value="2300" zoom-appear="14" />
  <osm-tag key="ele" value="2400" zoom-appear="14" />
  <osm-tag key="ele" value="2500" zoom-appear="14" />
  <osm-tag key="ele" value="2600" zoom-appear="14" />
  <osm-tag key="ele" value="2700" zoom-appear="14" />
  <osm-tag key="ele" value="2800" zoom-appear="14" />
  <osm-tag key="ele" value="2900" zoom-appear="14" />
  <osm-tag key="ele" value="3000" zoom-appear="14" />
  <osm-tag key="ele" value="3100" zoom-appear="14" />
  <osm-tag key="ele" value="3200" zoom-appear="14" />
  <osm-tag key="ele" value="3300" zoom-appear="14" />
  <osm-tag key="ele" value="3400" zoom-appear="14" />
  <osm-tag key="ele" value="3500" zoom-appear="14" />
  <osm-tag key="ele" value="3600" zoom-appear="14" />
  <osm-tag key="ele" value="3700" zoom-appear="14" />
  <osm-tag key="ele" value="3800" zoom-appear="14" />
  <osm-tag key="ele" value="3900" zoom-appear="14" />
  <osm-tag key="ele" value="4000" zoom-appear="14" />
  <osm-tag key="ele" value="4100" zoom-appear="14" />
  <osm-tag key="ele" value="4200" zoom-appear="14" />
  <osm-tag key="ele" value="4300" zoom-appear="14" />
  <osm-tag key="ele" value="4400" zoom-appear="14" />
  <osm-tag key="ele" value="4500" zoom-appear="14" />
  <osm-tag key="ele" value="4600" zoom-appear="14" />
  <osm-tag key="ele" value="4700" zoom-appear="14" />
  <osm-tag key="ele" value="4800" zoom-appear="14" />
  <osm-tag key="ele" value="4900" zoom-appear="14" />
  <osm-tag key="ele" value="5000" zoom-appear="14" />
</ways>

Lze přidat i další výšky nad 5000 metrů :). Pokud si chcete usnadnit práci, můžete si stáhnout předpřipravené soubor s vrstevnicemi pro Českou republiku (18 MB) a Slovensko (21 MB).

Poslední krok, který nyní zbývá, je spuštění generování mapy s upravenou konfigurací podle postupu výše.