Mapas Garmin no formato “NT”

1. Introdução

Faz já algum tempo que a Garmin introduziu na sua cartografia comercial um novo formato de ficheiros para armazenar os mapas, conhecidos pela sigla “NT” (New Technology).

Este formato tem o nome de GMP ou “globalmapper package” e destinou-se a substituir o antigo formato IMG, instituído no Mapsource, desde a “clássica” versão 6.13.7.

O primeiro produto comercial disponibilizado no novo formato foi o “CityNavigator NT 2009”. A partir da versão 6.15.x do Mapsource (corria o ano de 2010), o fabricante anunciou em todos os seus fóruns que o desenvolvimento e comercialização de cartografia, bem como das suas ferramentas de planeamento e navegação (à altura o Mapsource, que viria posteriormente a ser descontinuado, e o Basecamp) seriam concentrados no formato GMP, não obstante a manutenção de retro compatibilidade com o formato IMG.

Ainda que não específica, é contemporânea destes novos mapas a possibilidade de utilização de códigos com um comprimento de 3 bytes para especificar os objetos a representar num mapa.

2. Características

Os mapas GMP apresentam duas características em particular que os diferenciam substancialmente do antigo formato IMG:

  1. São suportados de modo uniforme e consistente em ambientes MS Windows  e MAC OS, sem necessidade de conversões adicionais ;
  2. Dispensam a criação de chaves e entradas de registo no sistema operativo, como é o caso da base de dados MS Windows Registry.

Este desaparecimento de mapas baseados em registo, significa desde logo que a instalação e gestão dos mesmos (como seja a definição da localização de um mapa, a sua limpeza ou até alteração de detalhes, caso do ficheiro TYP) a partir de ferramentas como o MapSetToolkit e o cGPSMapper (http://www.cgpsmapper.com/buy.htm),em combinação com o anterior, deixam de fazer sentido.

O MapSetToolkit (desenvolvido por Cypherman e disponível a partir da hiperligação https://sites.google.com/site/cypherman1/home), é, lembramos, uma ferramenta de interface gráfico para instalação de mapas compilados em formato IMG: instala os ficheiros relevantes para o Mapsource/Basecamp na localização definida pelo utilizador, atualiza o registo e o ID do mapa.

 

 

Com base na informação inserida pelo utilizador é, na prática, gerado um ficheiro PV para o mapa compilado e utilizado para a sua instalação. Um exemplo da estrutura interna deste tipo de informação pode ser encontrado no ficheiro test_pv.txt, o qual se encontra na pasta Test_Map, sob o local de instalação do cGPSmapper:

 

Os ficheiros de um mapa compilado no formato IMG utilizados pelo MapSetToolkit durante o processo de instalação são os seguintes:

  1. <número inteiro de 8 dígitos>.IMG (ficheiro gerado a partir de um compilador como o cGPSMapper e editável a partir do GPSMapEdit, que contém o mapa detalhado);
  2. <nome do mapset ou mapa>.IMG (ficheiro igualmente editável pelo GPSMapEdit e que contém uma imagem geral, de pré-visualização, do mapa);
  3. < nome do mapset ou mapa >.IDX (Índice dos ficheiros constituintes do mapset ou mapa);
  4. < nome do mapset ou mapa >.MDX (composto por uma tabela de correspondência entre o nome dos ficheiros IMG, constituídos por um número, e o MapID, o qual representa o ID ou número da área detalhada no mapa);
  5. < nome do mapset ou mapa >.TDB (repositório com informação sobre os ficheiros individuais .img que compõem o mapset ou mapa:trata-se, pois, de um índice utilizado pelo MapSource/Basecamp para decidirem qual o segmento de mapa a carregar);
  6. < nome do mapset ou mapa >.TYP (ficheiro que contém definições ou parametrizações específicas quanto ao modo de representar os objetos no mapa, substituindo assim o modo de visualização por omissão do recetor GPS ou do Mapsource/Basecamp);
  7. < nome do mapset ou mapa >_MDR.IMG (índice para pesquisa de objetos no mapa, como os pontos de interesse).

Já o ficheiro < nome do mapset ou mapa >.REG, o qual contém as chaves a instalar no registo do sistema, é ignorado pelo MapSetToolkit, pois, o mesmo procede ao registo direto a partir de informação inserida diretamente pelo utilizador no seu interface gráfico.

Os mapas GMP, por seu lado, são lidos pelo Mapsource (versão 6.15.x ou superior)/Basecamp, a partir de uma localização específica normalizada na unidade periférica de armazenamento (um disco rígido, por exemplo).

Ao nível da sua estrutura interna, a informação constituinte de um mapa é agrupada sob um ficheiro GMP, e que passa a conter de modo comprimido as entradas para os ficheiros “clássicos” e conhecidos até agora.

Não é mais possível movê-los para outra unidade ou ajustar manualmente as suas definições como fazíamos até aqui, quer recorrendo ao MapSetToolkit ou simplesmente ao editor de registo disponibilizado pelo próprio sistema operativo (regedit.exe).

O utilizador, caso pretenda instalar um mapa no formato GMP em localização diferente da definida por omissão (e que podemos assim considerar como “desnormalizada”) deverá antes recorrer a uma ferramenta de “terceiros”: o JaVaWa GMTK (disponível em www.javawa.nl/gmtk_en.html).

Na eventualidade dos mapas se encontrarem bloqueados e conterem um FID com o valor igual ou superior a 2200 (algo que podemos averiguar através da ferramenta GMapTool, disponível www.gmaptool.eu, para os mapas em formato IMG, ou acedendo diretamente ao ficheiro de configuração em XML, “info.xml”, e mais especificamente no elemento <ID/>), aqueles só poderão ser utilizados corretamente no Mapsource/Basecamp e nos dispositivos GPS através de um código de desbloqueio e, em simultâneo, da obtenção de um ficheiro de autenticação “.GMA”, gerado diretamente a partir do portal web da Garmin durante a operação de registo.

Como consequência, o “famoso” gerador de chaves (Garmin KeyGen), que combinava os dados provenientes s do FID do mapa com o ID do recetor GPS, e permitia ao utilizador obter um código de desbloqueio já não é suficiente. Um mapa no formato GMP para ser desbloqueado definitivamente necessita agora que a pasta .gmap, ou mais corretamente o objeto contentor do mapa seja ela própria “quebrada”: uma alternativa muito referenciada nos fóruns passa pela utilização do  ficheiro “UnLock MapSource.exe”, o qual deverá ser copiado para a pasta .gmap (pasta do mapa a desbloquear) e executar. Se existirem problemas, então executar como administrador (selecionar o ficheiro, premir o botão direito do rato e selecionar o comando executar como administrador no menu contextual).

3. Instalação e localização.

Os mapas GMP são instalados numa pasta específica com a extensão .gmap e cuja localização (se bem que definida por omissão) pode variar de acordo com a versão do sistema operativo.

Em MS Windows as localizações são as seguintes:

  • MS Windows XP
    %APPDATA%\GARMIN\Maps\*.gmap\Ou
    %ALLUSERSPROFILE%\Application Data\GARMIN\Maps\*.gmap\
  • MS Windows Vista / 7 ou 8
    %APPDATA%\GARMIN\Maps\*.gmap\Ou
    %ALLUSERSPROFILE%\GARMIN\Maps\*.gmap\

As entradas %APPDATA% e %ALLUSERSPROFILE% correspondem a variáveis de ambiente do sistema operativo e apontam para pastas físicas, normalmente ocultas. Para lhes aceder o utilizador terá necessariamente que alterar as opções de visualização das pastas no Explorador do Windows.

Em termos físicos, as localizações são então as seguintes:

  • MS Windows XP
    C:\Documents and Settings\All Users\Application Data\GARMIN\Maps\*.gmap\
  • MS Windows Vista / 7 ou 8
    C:\ProgramData\GARMIN\Maps\*.gmap\

A vantagem é grande, já que a pasta .gmap comporta-se como um objeto (esta é mesmo a aceção correta para Mac OS), contendo internamente a totalidade da informação necessária à representação do mapa através de um aplicação como o Mapsource/Basecamp. Assim, para um novo mapa ser visualizado no Mapsource/Basecamp basta copiar a pasta .gmap para o caminho definido por omissão.

A pasta com extensão .gmap recebe o nome do mapa e internamente decompõe-se também ela de uma forma normalizada. Para o ilustrar tomemos como exemplo o mapa “City Navigator Europe NT 2011.30”:

 

Na tabela que se segue encontramos a descrição de alguns dos ficheiros mais relevantes:

.MDX Índice que descreve a relação entre mapas regionais
.TYP Informação para a representação gráfica dos elementos constituintes do mapa
.MDR Índice pesquisável pelo utilizador de pontos de interesse, endereços
.TDB Ficheiro índice utilizado pelo Basecamp/Mapsource para selecionar e carregar (em termos de visualização) os mapas detalhe
.NOD Informação de roteamento
.SRT Tabela de pesquisa que organiza o código de caracteres do mapa e define a sua sequência de colação
.GMP Representa uma área coberta pelos mapas detalhe (ficheiros .IMG). A sua designação tem o seguinte formato: IXXXXXXX.GMP, onde XXXXXXX representa um valor hexadecimal. Concentra no seu interior informação de copyright, bem como informação que encontramos nos ficheiros .TRE, .LBL, .NET e .NOD
Pasta Logos Pasta Logos Referência ao acordo de licenciamento.
EULA_XXX.txt Um ficheiro por língua e cuja referência é a seguinte:EULA_<sigla internacional da língua>.txt
.DEM Se o mapa permitir a representação tridimensional da superfície, então existirão ficheiros .DEM. Trata-se de uma representação digital contínua do terreno que inclui as variações de altitude.

 

4. Noções sobre a criação de mapas vetoriais

Criar um mapa vetorial para ser carregado num receptor GPS pode ser comparado com o processo clássico de programação: escrever o mapa utilizando uma sintaxe própria e, finalmente, compilá-lo. Também aqui existem ferramentas que geram ou ajudam a gerar através de interfaces gráficos o código-fonte. Este código utiliza um formato que é conhecido como PFM (Polski Format) ou “formato polaco”.

O formato polaco é um formato baseado em texto, utilizado para armazenar informação sobre um mapa em computador. Como tal, não pode ser transferido directamente para os receptores GPS. Os ficheiros escritos neste formato têm a extensão .mp. Internamente, estes ficheiros encontram-se estruturados em secções, cuja lista apresentamos a seguir:

 

Tipo de Secção Secção
Cabeçalho [IMG ID]
Declarações  [COUNTRIES]
[REGIONS]
[CITIES]
[CHART INFO]
Declarações avançadas  [DICTIONARY]
[BACKGROUND]
[HIGHWAYS]
[ZIPCODES]
[DEFINITIONS]
Objectos [POI]
[POLYLINE]
[POLYGON]
[PLT]
[WPT]
[DBX]
[SHP]
[FILE]
[RGN10]
[RGN20]
[RGN40]
[RGN80]

 

Section Type Identifier(s)

Um mapa vectorial é constituído por quatro grandes tipos de objectos:

  • POIs (points of interest) ou pontos de interesse, como restaurantes, hotéis, parques de campismo ou bombas de combustível;
  • Pontos (objectos não indexados, como os edifícios);
  • Linhas (polylines) ou objectos lineares como as estradas, trilhos; e
  • Polígonos, ou objectos de área como os lagos, as florestas.

 

Em objectos não dimensionais, como são os pontos de interesse (POIs) e os pontos, apenas temos que definir os seguintes atributos: nome, tipo e par de coordenadas (latitude, longitude). Já os objectos dimensionais (linhas e polígonos) necessitam, para além dos atributos nome e tipo, dos pares de coordenadas de todos os vértices que os constituem.

Outro dado importante no mapa é aquele relacionado com a definição dos níveis de ampliação e, associado a estes, da exibição de mais ou menos detalhe. Assim, a selecção de objectos apropriada à visualização dependerá do nível de ampliação (zoom), pelo que a exibição de edifícios individualizados, de estradas secundárias ou de trilhos apenas se justifica em grandes níveis de ampliação. À medida que diminuímos o tamanho (zoom out), a exibição de tais objectos torna-se inapropriada, podendo apenas mostrar as estradas principais ou os grandes cursos de água, sob pena de tornar o mapa ilegível. Através dos níveis é possível então configurar no mapa a visibilidade e o aspeto dos objetos. No formato PFM o desenho /representação gráfica do objeto é independente por nível. Assim, se se pretende que um objeto seja representado em múltiplos níveis de ampliação, o mesmo deve ser definido em cada nível, a começar do 0 (nível mais detalhado), duplicando-o.

Quando procedemos a operações de aumento ou diminuição do tamanho do mapa, aparece no Mapsource como no receptor de GPS informação sobre a escala corrente (por exemplo 1 km). Tal escala, que corresponde a um nível de ampliação, não existe quando estamos a construir o mapa utilizando a sintaxe PFM. Os níveis de ampliação são antes definidos e identificados através de valores numéricos, designados de Hardware Zoom Level, cujo intervalo oscila entre 1 (o menos detalhado) e 24 (o mais detalhado). Nesta ordem crescente, a transição de um número para aquele que imediatamente se lhe segue corresponde ao duplicar do nível de ampliação. A correspondência entre os designados de Hardware Zoom Level e as escalas pode ser visto na tabela que se segue:

 

Hardware Zoom Level

Escala métrica

12

500km a 800km

13

200km a 300km

14

80km a 120km

15

50km

16

20km a 30km

17

12km

18

5km

19

3km

20

2km

21

800m a 1,2km

22

500m

23

200m

24

Até 120m

 

Os níveis de ampliação entre 1 e 11 não são listados, na medida em que o nível 12 corresponde àquele que menos detalhe (zoomed out) pode ser representado num receptor GPS da Garmin.

 

Num mapa podem ser definidos vários níveis de ampliação, sendo o máximo de 10. Através da sintaxe PFM, os níveis de ampliação são especificados na secção [IMG ID], indicando o Hardware Zoom Level. Esta relação entre os níveis de ampliação especificados no mapa e os níveis de ampliação designados de Hardware Zoom Level pode ser visto imagem que se segue:

 

Segundo a sintaxe PFM, este mapa de Marrocos seria descrito da seguinte forma:

 [IMG ID]
Levels=2
Level0=13
Level1=12

 

Assim, temos que o nível de ampliação 0 do mapa corresponde ao Hardware Zoom Level de 13 e o nível 1 ao 12. Ainda neste exemplo, o nível de ampliação mais elevado do mapa (Level1 ou 1) corresponde ao nível de ampliação em que o mapa substitui a cartografia base do receptor GPS.

Preparar o mapa, fornecendo-lhe então os objectos e respectivos atributos que o constituem é um processo demorado e laborioso que pode ser atingido de várias formas (a maior parte das vezes combinadas): escrevendo o código num editor de texto, gerando-o visualmente através de ferramentas como o GPSMapEdit, importando objectos do tipo pontos de passagem (waypoints) e trajectos (tracks) a partir de ferramentas como o OziExplorer ou o Basecamp/Mapsource.

Terminado o mapa, temos que compilá-lo através de aplicações como o cGPSmapper. O resultado final é disponibilizado através de um ficheiro de extensão .img. Esta trata-se da extensão “clássica” para representar mapas compilados, otimizados do ponto d recursos (memória/espaço) e prontos a carregar no receptor GPS ou no Basecamp/Mapsource através de ferramentas como o Sendmap ou o MapSetToolkit.

A ferramenta GMapTool (http://www.gmaptool.eu/en) permite criar mapas NT, mas a partir dos mapas IMG convencionais. Pressupõe carregar o mapa no GMapTool de modo a reagrupá-lo sob uma pasta .GMP.

Para tal, o utilizador deve primeiro aceder ao separador “Options” do GMapTool e marcar a opção “Experimental options”. Depois, aceder ao separador “Join” e marcar a opção “Convert to quasi-NT format”.

O criador da ferramenta designa o formato como “quasi-NT” na medida em que não comprime a informação (formato proprietário da GARMIN).

Por precaução, deveremos sempre deixar marcada a opção “Don’t create MPS subfile” uma vez que o ficheiro MPS apenas deve ser incluído em ficheiros contentores de mapas, caso do GMAPSUPP.IMG, e se se pretende que os mapas IMG sejam listados de modo individualizado no recetor GPS.

 

5. Ficheiros TDB

A aplicação Mapsource organiza e gere os conjuntos de mapas como “produtos”. Cada “produto” ou mapset é constituído por um mapa de alto nível para pré-visualização (preview map), por mapas de detalhe (que depois podem ser selecionados individualmente através da “Ferramenta de Mapa” e carregados no recetor GPS), por um ficheiro .TDB e, opcionalmente, por um ficheiro TYP.

Um ficheiro TDB é no essencial um repositório com informação sobre os ficheiros individuais .img ou .gmp que compõem o mapset. Este ficheiro é lido pelas aplicações Basecamp/Mapsource, as quisl utiliza a informação para exibir a informação do mapa assim como descarregar os ficheiros .img/.gmp para o recetor GPS.

Os ficheiros TDB utilizam uma estrutura interna simples do tipo “flat file” que compreende quatro secções:

 

Cabeçalho

Copyright

Overview

Detalhe

 

A primeira das secções armazena o Product ID, a versão em que é produzido o ficheiro TDB e as designações do mapa: Map series name e Map family name.

A segunda secção armazena informação sobre os direitos de autor.

Já a terceira secção descreve o mapa de alto nível utilizado pelas aplicações Basecamp/Mapsource para pré-visualização (preview map). Trata-se de um mapa de baixa resolução que serve de referência aos mapas detalhados. Este mapa é formado por um conjunto de objetos do tipo polígono, conhecidos como “áreas de definição”, que correspondem aos mapas detalhados.

Finalmente a secção Detalhe armazena a descrição de cada um dos mapas detalhados que constituem o mapset.

 

6. Ficheiros TYP

Um ficheiro TYP contém definições ou parametrizações específicas quanto ao modo de representar os objectos no mapa, substituindo assim o modo de visualização por omissão do receptor GPS ou do Mapsource. Este tipo de ficheiros começa normalmente por ser criado como um ficheiro de texto, também ele estruturado internamente em secções, onde são definidas as formas de representação dos vários tipos de objectos do mapa:

 

Secção Descrição
[_ID] Define o FID (Family ID) que associa o TYP ao mapa, bem como o ProductCode que deve conter o valor 1 e o CodePage (conjunto de caracteres em utilização e que normalmente assume o valor 1252 – Europa Ocidental). É exemplo: [_id]ProductCode=1FID=888CodePage=1252[End]
[_drawOrder] Esta secção contém indicações para a representação de todos os objectos do tipo polígono contidos no mapa e não apenas aqueles que queremos parametrizar. Trata-se de uma secção obrigatória e que deverá listar todos os polígonos, mesmo que mais tarde não alteremos a sua apresentação gráfica, sob pena dos mesmos não serem representados no mapa.
[_point] Secção que permite redefinir o aspecto gráfico (no máximo de 24 x 24 pixéis e 254 cores) associado aos objectos do tipo POI, bem como o nome. Para tal é utilizado o formato XPM, o qual pode ser obtido através de ferramentas gráficas como :

  • ·         A ferramenta img2typ, permite a verificação e extração dos símbolos (objectos do tipo linha, polígono e ponto) de um mapa Garmin já compilado (.img). Encontra-se disponível em http://pinns.co.uk/osm/img2typ.html
  • ·         O TYPViewer  é um editor/visualizador de ficheiros TYP. Suporta como fonte ficheiros TYP compilados (formato .typ) ou ficheiros TYP em texto. Permite ao utilizador visualizar os símbolos (pontos, linhas e polígonos), bem como os códigos ASCII (formato XPM) que lhe estão associados.
  • ·         A ferramenta TypWiz diminui drasticamente a barreira de criação e edição dos ficheiros TYP e consideramo-la mesmo das melhores do ponto de vista das funcionalidades disponibilizadas e ergonomia. Apesar de se encontrar ainda numa versão beta (0.771) é já bastante estável. Pode ser descarregada a partir da seguinte hiperligação: http://pinns.co.uk/osm/ostyp.html
[_line] Secção que permite redefinir o aspecto gráfico associado aos objectos do tipo linha (polyline), quer especificando os atributos cor e espessura, quer definindo uma imagem para a representação através do formato XPM.
[_polygon] Secção que permite redefinir o aspecto gráfico associado aos objectos do tipo polígono (quadrados com o máximo de 32 x 32 pixéis e 2 cores, representados quando necessário em mosaico). Também neste caso o formato utilizado é o XPM.

 

O ficheiro de texto pode depois ser compilado, utilizando directamente a aplicação cGPSmapper e especificando na linha de comando o argumento typ (por exemplo “cGPSmapper.exe typ MeuTYP.txt”) ou indirectamente, recorrendo ao interface gráfico proporcionado pela aplicação MapSetToolKit.

 

O que é o formato XPM?

X Pixmap ou XPM é um formato gráfico utilizado nos sistemas Windows. Foi desenvolvido em 1989 por Daniel Dardailler e Colas Nahaboo no Centro de Investigação da Bull.

Destina-se primordialmente à criação de ícones e suporta transparência da cor.

Um exemplo de como um símbolo gráfico (polígono) é representado em XPM pode ser visto a seguir:

img_typ

A sua representação gráfica pode ser vista a seguir: