Pasidaryk pats Locus Map

Posted: 2021-08-15 in Pezalai
Žymos:, ,

Locus Map – žemėlapių programėlė Android platformai su satelitine Garmin programėle. Aš ja naudojuosi jau labai seniai. Gal ne nuo pat pradžių, kai tik atsirado, bet pakankamai.

Locus Map yra unikali daugybe atžvilgių. Aš kažkada seniai jau esu apie ją rašęs. Man svarbiausia buvo tai, kad galėjau į telefoną išsisaugoti palydovinius žemėlapius naudojimui be ryšio, keliavimui į užsienį ir panašiai. Taip pat galima naudoti su MapsForge žemėlapiais, generuojamais iš Open Street Map. Programėlė turi netgi sportinį modulį, aš pats su ja pradėjau savo bėgiojimo epopėją.

Geriausi offline žemėlapiai visgi yra tų pačių gamintojų LoMaps, kartu su POI rinkiniais LoPoints. Aš visada nusiperku atnaujinimą, kai tik jis pasirodo, kapeikas ten kainuoja. Bet va, bėda ta, kad ne taip dažnai atnaujina tuos žemėlapius. Kažkiek pasikrapštęs nusprendžiau pasigilinti ir susikurti savo įrankyną žemėlapių generavimui.

Apskritai susigeneruoti tinkamą žemėlapį gan paprasta. Reikia parsitempti kasnakt atnaujinamą PBF failą iš GeoFabrik ir perleisti per Osmosis su MapsForge įskiepiu.

Bet: pačių gamintojų LoMaps yra patobulinti: juose įvairūs valkiojimosi ir mynimo maršrutai yra išryškinti skirtingomis spalvomis. Jei pats susigeneruoji žemėlapį – to nėra. Gan greitai pasikapstęs su JOSM redaktoriumi atradau, kaip tuos maršrutus galima nuspalvinti. Dar forume paklausiau, vienas iš Locus Map kūrėjų mielai pasidalino savo įžvalgomis ir patirtimi – atviri jie žmonės, nelaiko užsispaudę. Ir pradėjau dėliotis utėles.

Svarbiausi dalykai, kuriuos sužinojau iš Locus Map programuotojų:

  • Jie kiekvienam maršrutui, kurį nori nuspalvinti, sukuria kelio kopiją ir jam uždeda papildomus atributus
  • Jie oscmc:color atributą suskaldo į tris atskirus
  • Viso to reikia, nes jų naudojamas MapsForge variklis nemoka dirbti su visais OSM navarotais.

MapsForge yra OSM žemėlapių variklis mobiliesiems įrenginiams: labai kompaktiškas, spartus ir palaiko paprastai aprašomas XML temas su SVG piešinukais. Locus Map programuotojai, aišku, tą variklį yra savaip patobulinę ir Locus Map temos kitiems MapsForge produktams netinka. Tačiau ne atvirkščiai!

Taigi aš pradėjau nagrinėtis, ko reikia, kad galėčiau susigeneruoti pilnavertį LocusMap žemėlapį pats ir dar pasipildyti savais norais/pageidavimais.

Ilgiausiai terliojausi su turistinių maršrutų spalvinimu ir dubliavimu. Perėjau kelias stadijas: nuo pilno Lietuvos PBF failo kėlimo į atmintį ir analizavimo iki PyOSM srautinio, kuris baisiai greitas ir nelabai daug atminties suėda.

Su maršrutais yra esmė tame, kad jie OSM žemėlapiuose aprašomi ryšiais (relations). T.y. jei kelio segmentas priklauso kokiam nors pažintiniam takui, jis priskiriamas to tako ryšiui. MapsForge variklis ryšių nesupranta ir negali nuspalvinti kelio, priklausančio kokiam nors ryšiui. Tačiau gali nuspalvinti kelią pagal tai, ar jam uždėtas koks nors papildomas atributas. Tad taip ir daroma: skenuoji žemėlapį ir ieškai ryšių, juos išsisaugai. Antru užėjimu skenuoji žemėlapį ieškodamas kelių ir jei jie priklauso kažkuriam ryšiui, iš to ryšio visus atributus perkopijuoji keliui ir sukuri naują kelio kopiją. Tada MapsForge temai galima užduoti to kelio spalvinimą: liniją, punktyrą ar dar kažką. Plius galima užduoti spalvinimo poslinkį nuo originalaus kelio, tada matomas ir pats kelias, ir linija šalia jo.

Tada susidūriau su problema, kad jei kelio segmentas priklauso dviračių ir pėsčiųjų maršrutams, tie maršrutai susilieja. O originaliuose žemėlapiuose linijos eina skirtingomis kelio pusėmis. Poslinkis nurodytas tas pats. Tada supratau, kad Locus Map programuotojai gudrauja: jeigu kelias priklauso dviems maršrutams, kuriamos dvi kopijos, bet viena iš jų padaroma kitos krypties. Taip, OSM žemėlapiuose visos linijos turi piešimo kryptį, nesvarbu, ar ten kelias pvz. vienpusis ar ne. Tiesiog pačios linijos turi kryptį.

Pasidariau dviračių maršrutų krypties keitimą ir viskas susitvarkė. Dar pasigudrinau ir jeigu du pėsčiųjų maršrutai eina tuo pačiu keliu, kad vieną kelio kopiją apsuktų. Irgi visai gerai:

LocusMap spalvoti maršrutai | Darau, blė

Dar Locus Map turi specifinį POI žymėjimą. Ir jeigu POI yra atskiroje LoPoints duomenų bazėje, tuos POI žemėlapyje galima pabaksnoti ir apie juos informacijos gauti.

Radau internetuose įrankėlį būtent šitos LoPoints duombazės atnaujinimui.

Turiu tam tikrą fetišą pakelės kryžiams 😀 Dalis jų yra OSM žemėlapiuose, bet Locus Map jų nerodydavo. Tačiau pasitobulinau LoPoints atnaujinimą, kad kryželiai žemėlapyje atsirastų. Aš pats prisidedu prie OSM redagavimo, papaišau miško keliukus, jei kažkokius randu, kryželius ar koplytstulpius sužymiu. Ir atitinkamai norisi tą naują info turėti kišenėje.

Papildomai dar padariau Locus Map temos ir konvertavimo skripto pakeitimų, kad žemėlapiuose būtų matomos miškų proskynos. Šitą pakeitimą pasubmitinau patiems LocusMap programuotojams ir jie jį priėmė! JĖĖĖĖ! Dalis Locus Map yra OpenSource ir šį tą galima ten pakeisti norint. Tad labai džiaugiuosi prie šitos programėlės prisidėjęs dar ir tokiu būdu.

Šituos eksperimentus pradėjau dar su Locus Map Pro programėle, kurią buvo galima įsigyti už vienkartinį mokestį ir papildomai įsigyti žemėlapių. Norint, kad veiktų ir nuosavas žemėlapis, ir POI duombazė, reikėdavo perrašyti originalius failus. Bet dabartinė Locus Map 4 programėlė, kuri yra nemokama, tačiau su abonentiniu mokesčiu papildomoms paslaugoms, šitos problemos nebeturi. Užtenka tik atnaujiną POI duombazę perrašyti, o tuos POI rodo ant visų žemėlapių. Tas yra gerai.

Dar iš senų laikų turiu Lietuva 4×4 pavadintą žemėlapį Garmin įrenginiams. Tai visokie miškų keliukai ir keliukais tapusios proskynos. Neįsivaizduoju, nei kas to žemėlapio gamintojas, nei kokia jo kilmė. Internetuose beveik nieko apie jį neradau. Žemėlapį gavau pirkdamas tuo metu dar vadinamą delninuką HTC Artemis, kuriame buvo ir Garmin navigavimo programėlė bei šis žemėlapiukas. Jame nieko nėra išskyrus miškų keliukų vektorius. Jį užsidedu kaip perdangą ant Locus Map žemėlapio ir gaunu gan detalų Lietuvos žemėlapį. Tik tie miškų keliukai turi tokią savybę, kad jie labai nebūtinai sutampa su žemėlapiais 😀

Šiaip jau man pavyko pasiekti visai neblogą žemėlapių generavimosi variantą. Ko dar trūksta iki laimės – tai SRTM kontūrų linijų. Bet šitas reikalas pakeliui.

Jei patys naudojate Locus Map ir norite žemėlapius „pasihakinti“ pagal save, galite pasinaudoti mano utėlėmis (skaitykite ten pridėtą aprašymą):

https://github.com/darauble/Locus-Map-DIY

Šiandienai tiek. Kitą kartą papasakosiu, kaip iš OSM generuotis žemėlapius Garmin įrenginiams.

Parašykite komentarą

Įveskite savo duomenis žemiau arba prisijunkite per socialinį tinklą:

WordPress.com Logo

Jūs komentuojate naudodamiesi savo WordPress.com paskyra. Atsijungti /  Pakeisti )

Google photo

Jūs komentuojate naudodamiesi savo Google paskyra. Atsijungti /  Pakeisti )

Twitter picture

Jūs komentuojate naudodamiesi savo Twitter paskyra. Atsijungti /  Pakeisti )

Facebook photo

Jūs komentuojate naudodamiesi savo Facebook paskyra. Atsijungti /  Pakeisti )

Connecting to %s

Brukalų kiekiui sumažinti šis tinklalapis naudoja Akismet. Sužinokite, kaip apdorojami Jūsų komentarų duomenys.