* Pliki IMG, a MapSource
   Jak bumerang powraca na różnych grupach dyskusyjnych problem wpinania mapek IMG do programu MapSource. Pomimo, że parę osób opublikowało ogólne zasady jak to uczynić ciągle pojawiają się te same wątpliwości.
   Spróbuję zatem ponownie wyjaśnić pewne zagadnienia związane z tą tematyką.
   Na początek trochę teorii. Otóż używając programu regedit bez trudu możemy zauważyć, że produkty mapowe w MapSource mogą występować w grupie Products lub Families.

Regedit: "wpięcie" zestawu map do MapSource polega na dokonaniu odpowiednich wpisów do rejestru Windows pokazujących lokalizację plików mapy (Loc) pliku TDB (Tdb) i tzw. "poglądówki" (Bmap). Przy czym informacje te mogą być zapisane zarówno w kluczu Products, jak też Families:

0053.jpg (97457 bytes)

   W obu przypadkach do zainstalowania produktu mapowego w MapSource są potrzebne odpowiednie pliki:
  • *.TDB
  • "poglądówka" (preview) .IMG

- oba generowane przez program Staszka Kozickiego: cgpsmapper. Jak widać i w przypadku Products i w przypadku Families potrzebne są pliki TDB i (preview).IMG. Na czym zatem polega różnica ? Odpowiedź: na funkcjonalności na poziomie MapSource (PC). Otóż produkty starszego typu, np. niezbyt skomplikowane mapki freewarowe (UMP) można śmiało wpiąć jako Products. Produkty bardziej zaawansowane, a zwłaszcza mapy zawierające dane do routingu - wpięte jako Products nie zapewnią routowalności na poziomie MapSource. Tego typu mapy lepiej wpinać jako Families. Dodatkowo zwracam uwagę, że produkty Families są zawsze jednoznacznie rozróżniane przez odbiornik. Zatem mamy ułatwione zarządzanie mapami (można je grupowo właczać i wyłączać). W przypadku map z rodziny Products mapy często "lądują" w odbiorniku w jednej grupie.

   Niestety ......................
   Freewarowym cgpsmapperem (przynajamniej takie są moje doświadczenia) nie można wygenerować prawidłowych plików TDB i (preview).IMG dla rodziny Families. Dokładniej: nie ma możliwości wygenerowania prawidłowych plików TDB/(preview).IMG dla mapek z routingiem - routing nie zadziała na poziomie MapSource. Zatem userzy wersji free cgpsmappera zmuszeni są do generowania plików dla grupy Products - nawet jeżeli są to mapki routowalne (wystąpi brak routingu na poziomie MapSource), bądź do korzystania z MapCenter2.
   Jak wspomniałem  - w obu przypadkach (Products lub Families) w celu wpięcia produktu mapowego do MapSource niezbędne jest posiadanie plików konfiguracyjnych TDB i (preview).IMG Pliki te w obu przypadkach generujemy za pomocą cgpsmappera z poziomu wiersza poleceń komendą:
cgpsmapper pv pv.txt
   Plik pv.txt ma inną postać dla Products i inną dla Families. Ponieważ jednak wygenerowanie prawidłowych plików dla families nie jest możlwie freewarowym cgpsmapperem ograniczę się do przykładów związanych z Products.
   Oto przykładowy plik dla map Products:
[Map]
FileName=Ulubione_1
MapVersion=100
ProductCode=141
Levels=2
Level0=16
Level1=14
Zoom0=5
Zoom1=6
MapSourceName=Ulubione_1
MapSetName=Ulubione_1
CDSetName=Ulubione_1
[End-Map]
[Files]
img=00000001.img

............

img=00005555.img
[End-Files]

   Zwracam uwagę na kilka rzeczy:
  • Nazwy mapek w MapSource (zadeklarowane w pliku PV.TXT w sekcji [Files]) muszą mieć składnię: XXXXXXXX.IMG, gdzie XXXXXXXX oznacza 8-śmio cyfrową wielkość liczbową. Wszelkie nazwy stosowane przez niektórych userów SendMapa typu: "WJM.IMG", "Okolice Poznania.IMG" są błędne i na pewno nie pozwolą na zarządzanie tymi mapami z poziomu MapSource,
  • Deklaracja Zoom dla pliku preview.IMG

    Levels=2
    Level0=16
    Level1=14
    Zoom0=5
    Zoom1=6

    nie musi być zgodna z deklaracją Zoom w mapce/mapkach szczegółowych.

  • Chcesz uniknąć bałaganu ? Nie wpinaj pojedyńczych map !!! Przecież nic nie stoi na przeszkodzie, aby mapy różnych autorów wpiąć np. jako zestaw: "Ulubione_1". Nawet, jeżeli docelowo chcesz dodać inną mapkę do MapSource dołącz ją do swojego zestawu "Ulubione_1" tzn. przygotuj nowy zestaw "Ulubione_1" - nowy MapSet - z tymi samymi parametrami jak poprzednio - powiększony o nową mapkę.
  • Wartość Product Code musi być wartością unikatową. Ładując do MapSource swoje zestawy pamiętaj o tym. Pamiętaj też, że ładując przypadkowe zestawy pobrane z sieci możesz trafić na dwa identyczne Product Code. Wówczas MapSource ma prawo odmówić pracy.
   W konsekwencji wykonania polecenia cgpsmapper pv pv.txt powinniśmy uzyskać odpowiednie pliki TDB i preview.IMG (tu o nazwach: Ulubione_1.TDB Ulubione_1.IMG) Jednocześnie cgpsmapper wygeneruje plik "reg", który można zaimportować do rejestru Windows. Wpis do rejestru wskazuje na lokalizację plików TDB, preview.IMG oraz na lokalizację mapek szczegółowych - plików IMG, zatem zastosowanie pliku "reg" jest możliwe wyłącznie wówczas, gdy mapki oraz pliki konfiguracyjne umieścimy w katalogu domyślnym stosowanym przez cgpsmappera.  Ponieważ ja stosuję inny katalog domyślny - nie używam pliku "reg" wygenerowanego przez cgpsmappera, lecz generuję swój własny plik "reg" - o czym dalej.
------------------
   Teraz przedstawię w punktach - oraz pokażę na przykładzie w jaki sposób ja wpinam mapki do MapSource (jako Products)
  • Tworzę katalag (folder), w którym chcę zlokalizować mapki. U mnie jest to zawsze: C:\Garmin\"coś_tam". Przy czym - dla porządku na dysku - stosuję zasadę, zgodności nazwy zestawu mapek ze ścieżką dostępu. Zatem np. dla zestawu o nazwie "Zestaw1" będzie to katalog: C:\Garmin\Zestaw1
  • Wgrywam do katalogu jw. wszystkie mapki szczegółowe, które chcę wpiąć do MapSource
  • Wgrywam do katalagu jw. freewarowego cgpsmappera
  • Tworzę odpowiedni plik pv.txt, w którym deklaruję:
[Map]
FileName=Zestaw_1
MapVersion=100
ProductCode=141
Levels=2
Level0=16
Level1=14
Zoom0=5
Zoom1=6
MapSourceName=Zestaw_1
MapSetName=Zestaw_1
CDSetName=Zestaw_1
[End-Map]
[Files]

............

[End-Files]

gdzie w sekcji Files znajdują się nazwy poszczególnych mapek. Przy okazji ponownie przypominam o wpisie ProductCode, który powinien być unikatowy - różny dla różnych zestawów.
  • wykonuję polecenie cgpsmapper pv pv.txt
  • dokonuję odpowiednich wpisów do rejestru.
Cały ten proces mam częściowo zautomatyzowany:
 PRZYKŁAD 
  • Pobrałem z MapCenter, kilka mapek które chciałem wpiąć jako Zestaw1 (tu dla przykładu mapki: 5512001.img i 55140001.img)
  • Utworzyłem katalog c:\Garmin\Zestaw_1 do którego skopiowałem:
  1. Wybrane mapki
  2. Proste narzędzie: tdb-img.exe automatyzujące cały proces
  3. c-free.exe (pod taką nazwą używam freewarową wersję cgpsmappera autorstwa Staszka Kozickiego)

0010.jpg (35028 bytes)

  • Kliknięciem na TDB-IMG uruchomiłem programik, który zapytał mnie o dwa parametry:

0011.jpg (23770 bytes)

  • Reszta procesu przebiegła automatycznie. TDB-IMG:
  1. przejrzał zawartość katalogu (folderu) i zebrał informację o znajdujących się tam plikach img
  2. wygenerował odpowiedni plik pv.txt
  3. wykonał polecenie: c-free pv pv.txt
  4. usunął plik "reg" genereowany przez cgpsmappera
  5. wygenerował odpowiedni plik "reg" wg moich upodobań
  • W efekcie działania TDB-IMG na dysku pojawiły się następujące pliki:

0012.jpg (37930 bytes)

     * Plik PV.TXT (teraz już zbędny) o zawartości:
[Map]
FileName=Zestaw_1
MapVersion=100
ProductCode=141
Levels=2
Level0=16
Level1=14
Zoom0=5
Zoom1=6
MapSourceName=Zestaw_1
MapSetName=Zestaw_1
CDSetName=Zestaw_1
[End-Map]
[Files]
img=55120001.img
img=55140001.img
[End-Files]
         * Plik Zestaw_1.IMG (mapka preview - poglądowa)
         * Plik Zestaw_1.TDB (plik konfiguracyjny dla MapSource)
         * Plik Zestaw_1.REG wskazujący lokalizację mapek oraz plików konfiguracyjnych o               zawartości:
REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Garmin\MapSource\Products\Zestaw_1]
"LOC"="C:\\Garmin\\Zestaw_1\\"
"BMAP"="C:\\Garmin\\Zestaw_1\\Zestaw_1.img"
"TDB"="C:\\Garmin\\Zestaw_1\\Zestaw_1.tdb"
  • uruchomiłem regedita (START -> Uruchom)

0013.jpg (25781 bytes)

  • wykonałem import pliku Zestaw_1.reg:

0014.jpg (56993 bytes)

  • w wyniku czego, w rejestrze windows znalazły się wpisy:

0015.jpg (79939 bytes)

  • uruchomiłem MapSource i ... jest

0016.jpg (115706 bytes)

 UWAGA 
  • Część mapek dostępnych w sieci poza błędnymi (z punktu widzenia MapSource) nazwami (przypominam składnię: xxxxxxxx.img) posiada inne błędy, które powodują, że wpięcie ich do MapSource będzie niemożliwe, bądź samo wpięcie owszem zostanie dokonane, ale mapki nie będzie można wysłać do odbiornika.
  • Opisana przeze mnie procedura nie pozwala na wpięcie mapek komercyjnych zwłaszcza mapek kodowanych lub opatrzonych copyrightem garmina.
  • Modyfikując swój Zestaw_1 (ponowne uruchomienie TDB-IMG) usuń plik Zestaw_1.IMG, ponieważ programik TDB-IMG uzna ten plik za mapkę i zupełnie niepotrzebnie dopisze go do pliku pv.txt, co może spowodować zawieszenie się MapSource. W przypadku modyfikacji zestawu użyj w programiku TDB-IMG tej samej nazwy zestawu i tego samego ProductCode.
-----------------------
    Inną metodą wspomagającą proces wpinania mapek jest zastosowanie programu: MapSetToolKit, który (podobnie jak TDB-IMG) jest swojego rodzaju nakładką na cgpsmappera. MapSetToolKit pozwala wpiąć mapki również jako Families, niemniej jednak routing na poziomie MapSource i tak będzie niemożliwy.
   Zaletą MapSetToolKita jest fakt, że zarówno przy instalacji zestawów, jak też przy ich odinstalowywaniu (gdzie jest konieczne usuwanie wpisów w rejestrze Windows) nie musimy korzystać z regedita.
    Na koniec taki kwiatek:

0017.jpg (21922 bytes)

   Taki komunikat przy wysyłaniu map MapSourcem nie oznacza, że mamy uszkodzony odbiornik. Oznacza, że odpowiedzialny za zarządzenie jakimś zestawem mapowym plik TDB jest wadliwy. Przyczyny tego zjawiska mogą być różne. Może to być np. niezgodność mapek IMG z mapkami użytymi podczas generowania pliku TDB. Taki komunikat może się także ukazać w sytuacji gdy wygenerowaliśmy plik TDB dla mapek wadliwych z punktu widzenia MapSource czy niektórych mapek komercyjnych.
----------------------
LR XII 2006