Pasivaikščiojimo informacija OsmAnd

Pasivaikščiojus po įdomesnio landšafto vietas, tarkim po „Karoliniškių kraštovaizdžio draustinį“:

Karoliniškių kraštovaizdžio draustinis

labai vaizdžiai informaciją apie greičio ir aukščio pasikeitimus rodo OsmAnd:

OsmAnd pėdsako informacija

Matome ne tik įprastą informaciją: kelią žemėlapyje, nueitą atstumą ir trukmę, bet ir greičio bei aukščio kitimus kelionės metu. Ypatingai pedantiškiems ar asmeninės informacijos saugotojams OsmAnd leidžia netgi redaguoti savo pėdsakus (ištrinti, pakeisti, pridėti taškus).

Kad veiktų šitas gėris, reikia įgalinti įskiepį „Įrašyti savo keliones“. Tada pagrindiniame žemėlapio ekrane atsiras mygtukas, leidžiantis pradėti, baigti pėdsakų įrašymą. Vėliau, duomenų skydelio maršrutų skiltyje parinkę kurį nors įrašytą pėdsaką, matysite aukščiau pateiktą vaizdelį.

Jei įgalinsite įskiepį „OSM redagavimas“, tai prie maršrutų veiksmų atsiras parinktis „Eksportuoti“, kuri jūsų pėdsaką įkels į OpenStreetMap pėdsakų bazę, todėl vėliau šį pėdsaką galės naudoti visi žemėlapio redaguotojai, braižydami naujus ar tikslindami esamus takus. Lietuvoje dar yra pažintinių takų, kurie pažymėti tik kaip taškai, t.y. kurių keliai nežinomi 😉

Share

Nuoroda į žemėlapio vietą

Žemėlapius naudojame ne tik tam, kad patys sužinotume daugiau. Žemėlapiais dažnai norime ir draugams perduoti vienokią ar kitokią žinutę. Gal parodyti kokią nors vietovę, gal pakviesti susitikimui į konkrečia stovyklavietę, kavinę ar teatrą. Žinoma galima papasakoti žodžiais, kaip nusigauti į stovyklavietę, ar parašyti kavinės adresą, bet, naudojant openmap.lt žemėlapius, yra ir paprastesnis būdas.

Dinaminis url

Kai jūs naršote po openmap.lt žemėlapį, žemėlapio „adresas“ (url) atrodo daugmaž taip:

openmap.lt/#m/18/54.68047/25.2955/0/26

Kaip matote, po svetainės pavadinimo „openmap.lt“ yra raidelė ir grupė skaičiukų. Neaiškinsiu detaliai, ką reiškia kiekvienas konkretus skaičius (kas labai norės – tikrai patys išsiaiškins), tiesiog užteks pasakyti, kad šiuose skaičiuose yra užkoduota:

  • Įjungtas žemėlapio sluoksnis (paprastas žemėlapis, ortofotografija, mišrus žemėlapis)
  • Mastelis
  • Koordinatės
  • Žemėlapio pasukimas ir pakreipimas (jei nesuprantate, ką tai reiškia – žemėlapyje laikykite dešinį pelės mygtuką ir tempkite pelę)

Taigi užkoduota visa informacija apie tai, ką jūs matote žemėlapyje. Ir kas svarbiausia, šitas url pats pasikeičia, kai tik jūs ką nors padarote su žemėlapiu: pakeičiate sluoksnius, mastelį, pastumiate žemėlapį. Tai reikalinga tam, kad jūs galėtumėte labai nesunkiai vaizdeliu, kurį matote jūs, pasidalinti su savo draugais. Taigi, norėdami draugams persiųsti žemėlapio vaizdą, tiesiog persiųskite jiems adreso juostos turinį. Mobilioje chrome naršyklėje viskas dar paprasčiau – galite tiesiog parinkti meniu „Bendrinti“ ir taip perduoti reikiamą nuorodą jums patogiausiu būdu: paštu, pranešimu ar pan.:

Bendrinimas Chrome naršyklėje

Tokią nuorodą paspaudusiam žmogui bus atvertas tas pats žemėlapis, toje pačioje vietoje, su tais pačiais sluoksniais, kaip ir jums. Taigi drąsiai galite rašyti draugams „man labai patinka šitas parkas, nes…“ ir siųsti tiesiog nuorodą į žemėlapį.

Nuorodą į konkrečią lankytiną vietą

Žemėlapyje jūs galite pažymėti konkrečią lankytiną vietą:

Lankytina vieta žemėlapyje

Prie lankytinos vietos yra „Tiesioginė nuoroda“. Tokią nuorodą gavę žmonės atsidarys ne tik tą patį žemėlapį toje pačioje vietoje, bet dar ir bus atverta tos pačios lankytinos vietos informacija.

Beje, kai atidarote lankytiną vietą, tai url irgi pasikeičia, taigi siųsti galite nebūtinai „Tiesioginę nuorodą“, o ir url turinį (pvz. su Android Chrome funkcija „Bendrinti“)!

Tai puikiai tinka, kai norite pakviesti draugus šnektelėti į kavinę ar aludę, paskutiniu atveju galite net siųsti nuorodą į uždraustąjį žemėlapį! 😉

Share

Lietuvos upių baseinai

Atvirąjį žemėlapį galima naudoti ne tik lankytinų vietų ar kelio iki jų paieškai. Atvirojo žemėlapio duomenis galima naudoti ir darant įvairius skaičiavimus. Pabandykime paskaičiuoti Lietuvos upių baseinus.

Skaičiavimui imsime upių ir upeliukų duomenis, tada nurodysime upių žemupius, nuo kurių reikės „lipti“ aukštyn upe, užeinant į visus intakus. Skaičiuojant „grynus“ baseinus, Lietuvoje gausime gan neįdomų vaizdelį – ~80% Lietuvos užima Nemuno baseinas. Todėl paskaičiuosime ir kelis Nemuno intakų baseinus: Neries, Šventosios, Nevėžio ir Merkio. Tada jau gauname spalvingesni/įdomesnį rezultatą:

Upių baseinai

Skaičiavimas

Skaičiavimui naudojama PostGIS funkcija st_touches, randanti objektus, kurie liečia nurodytą objektą, ir senas geras „bangos“ principas, paprastai taikomas trumpiausio kelio iš labirinto paieškai.

Galima pastebėti, kad jei imtume ir kanalus, tai Ventos-Dubysos kanalo pagalba Nemunas „užgrobtų“ ir Ventą, na arba atvirkščiai 🙂 Na, bet kanalų mes neimame, nes skaičiuojame tik natūralius vandens kelius, taigi du skirtingi baseinai niekaip negali susijungti.

Probleminės vietos – už Lietuvos ribų išeinančios upės: Šventoji (ta kuri į Nemuną įteka), Mūša, Nemunėlis ir kitos. Galimi du sprendimo variantai:

  1. Tarkime nuo Mūšos (einant upe aukštyn) dar Latvijos pusėje atsiskiria daug kitų upių, kurios prasideda Lietuvoje. Galime visas tokias Mūšos baseino upes „surinkti“ ties Lietuvos siena ir iš karto priskirti Mūsos baseinui (darant „standartinį“ skaičiavimą upės baseiną pradedame nuo vienos atkarpos, o Mūšos atveju pradėsime nuo kelių atkarpų).
  2. Šventoji į Nemuną įteka iš Karaliaučiaus pusės, nors prasideda Lietuvoje. Galima atskirai atsisiųsti Šventosios atkarpos Karaliaučiuje duomenis ir juos rankiniu būdu susidėti į duombazę, kad atstatytume pilną upės trajektoriją (daroma prielaida, kad skaičiuojame naudodami tik Lietuvos duomenis)

Kam viso to reikia?

Toks skaičiavimas vizualizuoja kur yra kokie baseinai. Tada mes galime geriau įsivaizduoti, kad būdami 80% Lietuvos teritorijos, į upę paleidę žaislinį laivelį, jį vėliau sutiksime Rusnėje (žinoma jei jis stebuklingai peršoks visas užtvankas).

Kitas dalykas, taip mes patikriname OpenStreetMap duomenis. Jei kažkokios upės kelių atkarpos lieka nepriskirtos jokiam baseinui – reiškia yra duomenų klaidų. Gal griovys neteisingai pažymėtas kaip upeliukas, gal trūksta kažkokios upės atkarpos, gal nėra nupaišytas vandens kelias per vandens telkinius (ežerus, tvenkinius). Vizualiai klaidos atrodo taip:

Upių baseinų klaidos

Kelias per ežerus ir tvenkinius? Kam? Ogi tam, kad vėliau būtų galima daryti maršrutizavimą upėmis. Netolimuose planuose yra upių žemėlapis, kuriame būtų galima skaičiuoti baidarių, laivų, plaustų ar kokių kitų neskęstančių plaukimo priemonių maršrutą. Tam reikia, kad upių duomenys būtų teisingi, kaip kelių duomenys.

Išeities failai

Jei kas norite pabandyti patys paskaičiuoti upių baseinus, ar turite minčių, ką dar galima padaryti su tokiais skaičiavimais, susiimportuokite Lietuvos duomenis į PostgreSQL su PostGIS ir tada naudokite šiuos skriptus:

  • table.sql – pagrindinė lentelė, kurioje laikomi upių segmentų duomenys
  • sesupe.sql – Šešupės duomenys (realiai einant upe aukštyn Šešupė Lietuvoje „pasirodo“ viename taške, tai šis importas nėra būtinas, tiesiog išbandytas principas)
  • excess.sql – pertekliniai segmentai (palei sieną arba kai kurie oficialiai neregistruoti „upeliukai“, nesusijungiantys su bendru upių tinklu)
  • touch.sql – vieno bangos žingsnio skaičiavimo funkcija
  • process.sql – pagrindinė upių baseino skaičiavimo funkcija
  • upiu_baseinai.qgs – QGIS projektas rezultatų peržiūrai

Paleidimas:

psql gis < table.sql
psql gis < touch.sql
psql gis < excess.sql
psql gis < sesupe.sql
psql gis < process.sql

Ir tada QGIS’e atsidarote projekto failą upiu_baseinai.qgs. Projekte tikimasi, kad db yra localhost su standartiniu prievadu (portu) ir naudotoju gis be slaptažodžio. Jei pas jus kitokie nustatymai – pataisykite .qgs projekto failą rankomis (tai paprastas xml failas).

Tai teik su vandeniu, o algoritmą panaudosime ir kitiems tikslams… 🙂

Share

Lietuvos pažintiniai takai

Lietuvoje yra virš šimto pažintinių takų. Informacija apie juos buvo renkama OpenStreetMap nuo pat projekto atsiradimo pradžios. Nes tuo metu (prieš 13 metų) praktiškai nebuvo kito pasirinkimo (neskaitant dedikuotų GIS sprendimų). Kalbant apie pažintinius takus, mums įdomi tiek taškinė informacija (kurią paprasta rodyti žemėlapyje, „į kurią“ galima naviguoti ir pan.), tai paprastai bus pažintinio tako pradžios taškas (ar taškai, kai pradžių yra kelios). Na ir įdomi pati trasa (maršrutas), nes kai jis nubraižytas žemėlapyje, mes galime geriau suprasti, ką pamatysime eidami konkrečiu taku.

Maršrutų informacija yra pakankamai sudėtingas dalykas, todėl nėra taip jau ir trivialu pamatyti pažintinių takų informaciją, nors būdų tikrai yra daug. Žemiau pateiksiu kelis variantus skirtingiems taikymams/įrenginiams.

Interneto svetainės

Galite naudoti http://hikebikemap.org/. Joje įsijungę „Lonvia Hiking Routes“ matysite pažintinių takų maršrutus (ten pat galite įsijungti ir dviračių maršrutų rodymą).

Lietuvoje galite naudoti https://places.openmap.lt svetainę. Joje yra galimybė matyti pažintinius takus kaip taškus žemėlapyje, tai patogu ieškant pažintinių takų Lietuvoje:

Bet galite ir gauti tiesiog sąrašą visų pažintinių takų: https://places.openmap.lt/pazintiniai-takai/

Na ir detalią pažintinio tako informaciją:

Mobilioji programėlė

Mobiliuose aparatuose (telefonuose, planšetėse), kai norite viską turėti nenaudojant interneto, kaip visada nepralenkiama yra OsmAnd programėlė, tik žmonės dažnai nežino/neranda reikiamo funkcionalumo, kurio OsmAnd labaaaai jau daug.

Taigi. Einame į meniu „Konfigūruoti žemėlapį“, ir ten pačioje pabaigoje randam punktą „Maršrutai“:

Tada žiūrime skiltį „Padengimas žygių simboliais“:

Čia galite pasirinkti jums priimtinesnį pėsčiųjų maršrutų vaizdavimą (arba jį išjungti). Ir viskas, tada žemėlapyje matysite paryškintus pažintinius takus:

Duomenys

O dabar truputis techninės informacijos tiems, kas ne tik naudoja OpenStreetMap informaciją, bet ją pildo/taiso.

Pažintinių takų tašką žymime maršruto pradžioje kaip paprastą tourism=attraction, tik pridedame papildomą žymą attraction:type=hiking_route. Toliau standartiškai name, website, description, image, distance žymos.

Pats maršrutas – keliai, sujungti į ryšį, turintį tokias žymas:

  • type=route
  • route=hiking
  • network=lwn
  • name=**** pavadinimas, lygiai toks pats, kaip ir aukščiau minėtame tourism=attraction taške ****
  • distance=5

Štai ir viskas. Gero vaikščiojimo! 🙂

Share

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