Tvorba vektorových map ve formátu Garmin IMG


DŮLEŽITÉ UPOZORNĚNÍ: autor tohoto textu ani autoři programů nenesou žádnou odpovědnost za škody způsobené používáním vytvořených vektorových map v GPS přijímačích společnosti Garmin. Tento text ani žádnou jeho část nelze spojovat se společností Garmin Ltd. ani s jejími představiteli.




Programové prostředky

K vytvoření vlastní vektorové mapy ve formátu Garmin IMG budete potřebovat :

Balík programů GpsMapper je dostupný na http://www.cgpsmapper.com.

Kompilátor cGpsMapper existuje ve třech verzích:

Dalším velmi užitečným programem je OziExplorer, který umožňuje pohodlnou práci s trasami (tracks) a body (waypoints). Soubory v Ozi formátu (PLT, WPT) je možno importovat do již vytvořených IMG souborů a nebo z nich pomocí programu cGpsMapper vytvářet nové mapy.




Jak vytvořit mapu

1. Základem je zkalibrovaná mapa do OziExploreru.

2. Na zkalibrované mapě vytvoříme trasy (tracks) a body (waypoints), případně můžeme použít trasy a body stažené z GPS. Z tras se ve vektorové mapě vytváří linie (RgnType=0x40) a plochy (RgnType=0x80), z bodů potom POI (RgnType=0x10) a symboly (RgnType=0x20). Pokud těmto číslům nerozumíte, přečtěte si stručný popis formátu vektorových map Garmin IMG.

Poznámka: v GPS přijímačích, které nepodporují zobrazování map ale umožňují nahrávat POI, je možné používat mapy zbavené objektů Rgn typu 0x20, 0x40 a 0x80.

3. Vytvořili jsme si soubory s trasami (PLT) a body (WPT), např.

silnice_e50.plt
silnice_55.plt
ulice_letecka.plt
maly_les.plt
POI_parkoviste.wpt
POI_restaurace.wpt
symbol_telefon.wpt

4. Vytvoříme si zdrojový soubor pro kompilaci, např. moje_mapa.txt. Tento soubor se skládá z jednotlivých sekcí, které jsou odděleny identifikátorem v hranatých závorkách.

Nejdříve definujeme základní parametry mapy v sekci [IMG ID]:

[IMG ID]                                                                       
ID=04307845
Name=Moje mapa, CZE
Datum=W84
BlockSize=512
PreProcess=N
TreSize=6000
TreMargin=0
RgnLimit=1024
POIIndex=Y
POINumberFirst=N
POIZipFirst=N
Elevation=m
Levels=4
Level0=24
Level1=21
Level2=19
Level3=18
Zoom0=0
Zoom1=1
Zoom2=2
Zoom3=3
[END-IMG ID]
   

ID = identifikátor mapy . Pro detailní mapy musí být tento identifikátor složen z osmi číslic (případně může být i hexdecimální, ale musí začínat znakem "I") a musí být jedinečný. Identifikátor se vytváří tak, že první tři čísla udávají mapové dílo a zbylých pět číslic je pořadové číslo mapy v rámci díla. Číselné řady některých mapových produktů najdete v tabulce 1. (v tomto příkladě je použit identifikátor mapy části České Republiky z produktu Mapsource WorldMap)
Name = název mapy, pod jakým bude v seznamu v GPS. V názvu, ani v jakémkoliv jiném parametru či objektu, nepoužívejte zásadně české znaky. GPS tyto znaky interpretuje chybně a mapa může být nepoužitelná (i GPS).
Datum = datum mapy, standardně WGS84. cGpsMapper ale podporuje dalších 222 datumů (včetně S-42)
BlockSize = velikost bloku dat:
512 - standardně
1024 - pokud je mapa po kompilaci větší než 1MB
2048 - pokud je mapa po kompilaci větší než 2MB
PreProcess = způsob kompilace mapy:
F - plná optimalizace kompilátorem (standardně)
G - částečná optimalizace
N - bez optimalizace
TreSize = maximální velikost regionu (v bodech). Větší hodnota znamená, že nově vytvářený region bude větší, ale sníží se rychlost vykreslování mapy v GPS. Menší hodnota znamená, že je nutno vytvořit více regionů. Doporučená hodnota je 6000 - 10000.
TreMargin = okraj přidaný k nové mapě (ve stupních). Doporučuje se nechat hodnotu 0.
RgnLimit = omezení počtu objektů v regionu. Hodnota může být v rozmezí 50 - 1024. Doporučená hodnota je 700. Tento parametr může ovlivňovat rychlost vykreslování mapy v GPS.
POIIndex = indexování bodů POI (funguje pouze u Shareware a FULL verze cGpsMapperu)
Y - všechny body typu Rgn 0x10 budou při kompilaci indexované. Toto umožní vyhledávání POI v GPS pomocí tlačítka FIND.
N - POI nebudou indexované a je nutné zadat doplňující informace (např. ulici)
POINumberFirst = parametry POI:
Y - nejprve číslo domu a poté název ulice
N - nejprve ulice a poté číslo domu
POIZipFirst = parametry POI:
Y - nejprve PSČ a poté název ulice
Elevation = jednotky výšky a hloubky:
m - metry
f - stopy
Levels = počet vrstev mapy
LevelX = přesnost jednotlivých vrstev mapy - podrobnosti viz. tabulka 2. Level0 je nejpodrobnější mapa, Level4 (v tomto příkladě) je poslední vrstva mapy a musí být prázdná. V tabulce 3 je ukázka nastavení přesnosti u některých mapových produktu Garmin Mapsource.
ZoomX = nastavení zobrazení pro jednotlivé mapové vrstvy. Tento parametr je nutný pouze pro mapy integrované do MapSource. Aby bylo zobrazení funkční, musí být hodnoty uspořádány vzestupně.

Dále následuje sekce [FILE], ve které se definují textové soubory s popisy jednotlivých objektů. Tyto popisy je možné samozřejmě zadat i v definičním souboru, ale následná úprava by byla dost nepřehledná. Takto si definujeme pro každý typ objektů samostatný soubor a ten potom upravujeme.

[FILE]                                                                         
Name=poi.txt
Name=symboly.txt
Name=cesty.txt
Name=plochy.txt
[END-FILE]
   

5. Nyní vytvoříme soubory definované v sekci [FILE].

Jednotlivé prvky mapy můžeme popisovat dvěma způsoby:
Výhodnější je používat objekty z WPT a PLT souborů (pohodlně upravujeme v OziExploreru), při definici objektu v sekci [RGNxx] musímě zadat zeměpisné souřadnice.

Soubor bodů zájmu POI : poi.txt

[WPT]                                                                          
Type=0x2A00
RgnType=0x10
File0=poi_restaurace.wpt
[END-WPT]

[RGN10]
Type=0x2F0B
Label=PARKOVISTE
Origin0=(49.04726,17.43185)
[END-RGN10]
   

Type = typ POI (body zájmu - Point of Interest) - viz. tabulka 4. Pokud použijeme WPT soubor, budou pro názvy POI použity popisy bodů z WPT souboru (nepoužívat češtinu!), jinak definujeme název parametrem Label. Pouze u POI s hexadecimálním kódem v rozsahu 2a00 - 30ff lze zadávat do detailních .IMG souborů další doplňující informace: název, číslo popisné, ulici, město, směrovací číslo, telefonní číslo. K tomu je ale nutná FULL verze cGpsMapperu.
RgnType = pro všechny body zájmu POI musí být 0x10
File = soubor typu WPT. Číslo za "File" udává vrstvu, ve které budou POI zobrazeny (např. File0=..). POI by měly být pouze ve vrstvě 0.
Label = název POI. V názvech objektů (POI, symboly, linie i plochy) je možno používat kódy, které upravují zobrazení objektu v závislosti na zvětšení/zmenšení mapy - viz. tabulka 10.
Origin = zeměpisné souřadnice POI. Číslo za "Origin" udává vrstvu, ve které bude POI zobrazen.

Soubor symbolů : symboly.txt

[WPT]                                                                          
Type=0x51
RgnType=0x20
File0=symbol_telefon.wpt
[END-WPT]

[RGN20]
Type=0x43
Label=PUJCOVNA LODI
Origin0=(49.01739,17.42702)
[END-RGN20]
   

Type = typ symbolu - viz. tabulka 5. Pokud použijeme WPT soubor, budou pro názvy symbolů použity popisy bodů z WPT souboru.
RgnType = pro všechny symboly musí být 0x20
File = soubor typu WPT
Label = název symbolu
Origin = zeměpisné souřadnice symbolu. Číslo za "Origin" udává vrstvu, ve které bude symbol zobrazen.

Soubor silnic, ulic a železnic: cesty.txt

[PLT]                                                                          
Type=0x02
RgnType=0x40
Label=~[0x2d]e50
Levels=2
File0=silnice_e50.plt
[END-PLT]

[PLT]
Type=0x06
RgnType=0x40
Label=Letecka
DirIndicator=1
Levels=0
File0=ulice_letecka.plt
[END-PLT]

[RGN40]
Type=0x14
Label=340 BRNO-UH
Data2=(49.05052,17.46277),(49.05258,17.46346),(49.05327,17.46346)
[END-RGN40]
   

Type = typ linie - viz. tabulka 6
RgnType = pro všechny linie musí být 0x40
Label = název linie. Před název silnice/dálnice je možno zadat kód (v ukázce je to ~[0x2d]), který bude na mapě nahrazen grafickým symbolem - viz. tabulka 7.
DirIndicator = pokud je hodnota 1, ukáže GPS na křižovatce směr cesty (platí pouze pro ulice)
Levels = nejvyšší vrstva, ve které bude linie zobrazena
File = soubor typu PLT
Data = zeměpisné souřadnice bodů trasy. Číslo za "Data" udává vrstvu, ve které bude linie zobrazena.

Soubor ploch: plochy.txt

[PLT]                                                                          
Type=0x50
RgnType=0x80
Label=koprivniky
Levels=1
File0=maly_les.plt
[END-PLT]

[RGN80]
Type=0x19
Label=FOTBALOVE HRISTE
Data0=(49.04876,17.48367),(49.04795,17.48343),(49.04857,17.48215),(49.04915,17.48225)
[END-RGN80]
   

Type = typ plochy - viz. tabulka 8
RgnType = pro všechny plochy musí být 0x80
Label = název plochy
Levels = nejvyšší vrstva, ve které bude plocha zobrazena
File = soubor typu PLT
Data = zeměpisné souřadnice definující plochu. Číslo za "Data" udává vrstvu, ve které bude plocha zobrazena.

6. Zdrojové soubory máme hotové, takže můžeme přikročit ke kompilaci mapy. K tomu slouží program cGpsMapper, který se spouští v příkazové řádce:

Spustíme kompilaci a počkáme na vytvoření IMG souboru:

Pokud vše proběhlo v pořádku, je kompilace ukončena hlášením "File : 04307845.img is written".

7. Mapa je hotová, nyní stačí nahrát vytvořenou mapu do Garmin GPS. K tomu použijeme program sendmap, který stejně jako cGpsMapper běží v příkazové řádce:

Upozornění! Nahráním vytvořené mapy do GPS vymažete všechny mapy, které byly v GPS uloženy (kromě základní mapy, samozřejmě, ta je uložena v paměti ROM).




NAVRCHOLU.cz