Kaip sukurti Garmin žemėlapį I

Atviro žemėlapio duomenys visiems laisvai prieinami, su jais daryti galima bet ką. Tai reiškia galima ir pasidaryti savo Garmin žemėlapį. Garmin žemėlapį sukurti galima galybe skirtingų būdų, yra labai daug galimybių ir metodų, todėl parašysiu seriją straipsnių, po žingsnį rodant kaip padaryti vieną ar kitą dalyką, pradedant nuo paties paprasčiausio Garmin žemėlapio sukūrimo, iki sudėtingo žemėlapio su savais objektais ir savu atvaizdavimo stiliumi (sava simbolika).

Žemėlapio duomenys

Visų pirma mums reikės duomenų. Yra daug variantų, kaip ir iš kur gauti duomenis, čia paminėsiu tik vieną – patį paprasčiausią. Naudokite http://download.geofabrik.de/. Ten rasite visų žemynų, šalių, regionų duomenis.

Visiems tolimesniems bandymams naudosime Lietuvos duomenis, kuriuos parsisiųsti galima iš čia: http://download.geofabrik.de/europe/lithuania.html.

Mus domina pbf failas lithuania-latest.osm.pbf.

Programinė įranga

Žemėlapį kursime naudodami atviro kodo programinę įrangą mkgmap (MaKe Garmin MAP).
Svetainė: http://www.mkgmap.org.uk.

Atsisiųskite paskutinę versiją (failas mkgmap-r1234.zip, kur 1234 – versijos numeris). Išpakuokite naujame aplanke. Turėtumėte gauti tokius failus/aplankus:

  • doc
  • examples
  • lib
  • LICENCE
  • README
  • mkgmap.jar

Patikrinkite, ar gerai atsisiuntė programa ir ar veikia java. Įvykdykite tokią komandą:

java -jar mkgmap.jar --version

Turėtumėte gauti kažką panašaus į šitą:

Time started: Sun Jul 16 16:22:57 EEST 2017
3973

T.y. paleidimo laikas ir mkgmap versijos numeris. Jei paleisti nepavyko – patikrinktie, ar veikia java.

Paprasčiausias žemėlapio kūrimas

Pabandykime paprasčiausią žemėlapio kūrimo komandą:

java -jar mkgmap.jar --input-file=lithuania-latest.osm.pbf

Gauname tokį atsakymą:

SEVERE (MapFailedException): lithuania-latest.osm.pbf:
(thrown in BufferedImgFileWriter.ensureSize()) There is not
enough room in a single garmin map for all the input data.
The .osm file should be split into smaller pieces first.

Garmin žemėlapio formatas turi apribojimą, kokio dydžio gali būti vienas žemėlapio „gabalas“ (nesigilinkime detaliau, kas tas „gabalas“), t.y. kiek informacijos galima sukišti į vieną žemėlapio dalį. Jei bandytume sukurti žemėlapį mažesniam regionui (tarkim tik Vilniui, arba kokiai dar mažesnei už Lietuvą šaliai), tai šios komandos užtektų. Dabar gi mums teks duomenis padalinti į gabalus.

Duomenų dalinimas į gabalus

Dalinimui naudosime programą splitter, kurią galite atsisiųsti iš tos pačios mkgmap svetainės: http://www.mkgmap.org.uk/download/splitter.html.

Padalinimui nurodysime tik pradinį duomenų failą ir maksimalų taškų skaičių – 3,2 milijono. Nesigilinkime, kodėl šis skaičius toks, ar kitoks 🙂

java -jar splitter.jar --max-nodes=3200000 lithuania-latest.osm.pbf

Šis dalintojas sukurs tiek žemėlapio duomenų failų, kiek reikia. Šio įrašo rašymo metu Lietuvai sukuriami keturi failai:

  • 63240001.osm.pbf
  • 63240002.osm.pbf
  • 63240003.osm.pbf
  • 63240004.osm.pbf

Dabar mums reikia pakartoti žemėlapio kūrimą, nurodant visus keturis failus.

Žemėlapio kūrimas iš kelių šaltinio kaladėlių

Mums reikia papildyti anksčiau naudotą mkgmap paleidimą kelių įvesties failų nurodymu (rašykite vienoje eilutėje)

java -jar mkgmap.jar --input-file=63240001.osm.pbf
--input-file=63240002.osm.pbf
--input-file=63240003.osm.pbf
--input-file=63240004.osm.pbf
--gmapsupp

Atkreipkite dėmesį, kad gale pridėta dar papildoma parinktis –gmapsupp – ji nurodo, kad iš visų šių keturių duomenų failų reikės sukurti vieną gmapsupp failą. Paleidžiame:

Time started: Sun Jul 16 21:01:03 EEST 2017
Number of MapFailedExceptions: 0
Number of ExitExceptions: 0
Time finished: Sun Jul 16 21:02:41 EEST 2017
Total time taken: 97612ms

Na ir turėtų būti atsiradęs failas gmapsupp.img – tai žemėlapis, kurį galite įsikelti į savo Garmin GPSR įrenginį:

Paprasto Garmin žemėlapio vaizdas įrenginyje

Tai tiek pirmam kartui. Šis žemėlapis neturi adresų paieškos galimybės, niekaip neįtakota, kokie objektai pateko/nepateko į žemėlapį ir panaudotas standartinis Garmino vaizdavimo stilius. Kaip šiuos dalykus valdyti, bus rašoma vėliau.

Share

6 thoughts on “Kaip sukurti Garmin žemėlapį I

  1. Kartą į metus ar pan. prieš keliones darausi žemėlapį savo Garminui. Domina ir OSM, ir SRTM sluoksniai. Dažnos problemos su splitter/mkgmap yra, kad neužtenka atminties, o-Xmx2048m nepadeda. Kyla ir kitokių klausimų, problemų. Labai mėgčiau, jei šis straipsniukas pradedantiesiems tęstųsi ir pažengusiems 🙂 Dėkui už jūsų darbą!

    • O operacinė 64 ar 32 bitų?
      Kuriai konkrečiai programai pritrūksta atminties, splitter ar mkgmap? Su kuriuo sluoksniu, OSM ar SRTM?

  2. 64bitų, tai pasididinu, kad beveik visą atmintį skirtų Java VM. Dabar tiksliai nepamenu, bet lygtais su SRTM problema būdavo. Ir visokių kitokių niuansų atsiranda. Pvz. jei abu (ir OSM, ir SRTM) pasidarai su mkgmap, o į vieną gmapsupp.img apjungi su gmt.exe, tai vieno jų nerodo. Ilgai kaltinau gmt.exe. Bet kartą atradau, kad problema tame, jog pagal nutylęjimą abiejų žemėlapių FID yra 6324 ir tuomet 64230001.??? „pofailo” (failo esančio gmapsupp.img viduje) vardas dubliuojasi ir vienas jų būna nepasiekiamas. Todėl vienam žemėlapiui būtinai reikia nurodyti –family-id=??? raktą. Ir kitų problemyčių vis iškyla, kur Google nebūtinai duoda atsakymą.
    Pvz., paskutinio savaitgalio. http://www.geoportal.lt/map/vsat/ puslayje rodoma Valstybės sienos apsaugos zona. Norėčiau ją įsikelti į Garmin žemėlapį, kad važinėjant dviračiu nepažeisti (ne visur matomi ženklai). Kaip tą padaryti? Pradėjau nuo bandymo gauti jo koordinates, o ne vaizdą, keičiant URL užklausoje &format=image į pvz. &format=json, bet nepavyko atspėti 🙂 Po to kiltų klausimas, kaip susikurti naują žymėjimą Garmino žemėlapyje ir pan. Žodžiu, klausimų spektras platus ir būna, kad trūksta bendraminčių.

    • Dėl VSAT duomenų. Reikia eiti į geoportal.lt, registruotis ir tada atsisiųsti duomenis ESRI shape formatu. Atsisiųstus konvertuoti į mkgmap suprantamą formatą (nebandžiau, bet teoriškai daryčiau taip: atsidaryčiau atsisiųstus shape failus su JOSM įdieges shape failų palaikymo priedą, ir įrašyčiau su „saveAs“ kaip .osm).

      Artimiausios dalys planuojamos tokios:
      1. Adresų indeksas
      2. Duomenų filtravimas (kokius osm objektus dėti/nedėti į žemėlapį, kokias priskirti savybes ir pan.) tai, kas mkgmap vadinama „style file“
      3. Sava simbolizacija (savo parinkti kelių storiai, spalvos, šablonai, poligonų ar piktogramų paišymas ir pan.), tai, kas mkgmap ir kitur vaidnama „type file“

  3. Sveiki,

    Gal galėtumėte pasidalinti komanda, kaip sugeneruoti IMG failą su lietuviškais rašmenimis? Kiek bandau – gaunasi didžiosiomis raidėmis angliškai…

    • Patikrinau garmin.openmap.lt instrukcijas, tai vienintelis skirtumas darant lietuviškus žemėlapius yra pridėtas argumentas:
      code-page: 1257

Komentuoti: Mindaugas Atšaukti atsakymą

El. pašto adresas nebus skelbiamas. Būtini laukeliai pažymėti *