Juostinis upių žemėlapis

Mikalojaus Kristupo Radvilos 1613 metų žemėlapis

Dauguma žino ar bent jau kada nors viena akimi yra matę Mikalojaus Kristupo Radvilos 1613 metų žemėlapį „Magni Ducatus Lithuaniae, et Regionum Adiacentium exacta Descriptio“. Šiame žemėlapyje yra ir įdomūs dviejų upių žemėlapiai:

Upių žemėlapiai

Šie upių žemėlapiai skirti grynai plaukiojimui upėmis. Plaukiant upe svarbu žinoti, kas yra upės kairėje ar dešinėje pusėje, koks miestas yra už kokio kito miesto, salos, vingiai ir pan. Stambaus mastelio detalės, tokios kaip tiksli kryptis, kuria upė teka viename ar kitame taške, čia nevaizduojamos, nes jos plaukiant upe nesvarbios. Neatvaizduodami tikslios krypties, laimime galimybę visą upės vagą sudėti į naudojimui patogią ilgą vertikalią juostą – daug mažesniame plote telpa net ir ilgos upės. Taipogi nevaizduojami toli nuo upės esantys kelionei upe nesvarbūs objektai.

Savas juostinis upių žemėlapis

Toks žemėlapis būtų patogus ir šiandieniniams vandens keliautojams, pavyzdžiui plaukiantiems baidarėmis ar plaustais. Juk ne visi drąsūs vežtis elektroninius prietaisus, kurie gali įkristi į vandenį (nors elektroniniai prietaisai turėtų savo pranašumų, pavyzdžiui galima būtų naudoti specialiai upėms skirtą GPS įrenginių žemėlapį). Įprastiniai popieriniai žemėlapiai kaip ir tiktų navigacijai upėmis, bet jie nėra tam specialiai pritaikyti, todėl nėra idealiai patogūs. Ką jeigu sukurti savo juostinį upių žemėlapį naudojant atvirus OpenStreetMap duomenis? Bandžiau ieškoti internete informacijos apie tokius žemėlapius, bet nepavyko rasti absoliučiai nieko. Gali būti, kad tiesiog nežinojau teisingo termino, bet taip pat gali būti, kad nelabai kas ir domėjosi šia tema.

Taigi, po daugiau nei metų norėjimo, pribrendo laikas prisėsti ir pabandyti pasidaryti tokį žemėlapį. Žemiau aprašysiu pagrindines užduotis ir pastebėjimus.

Užduotis

Taigi užduotis yra žemėlapio duomenis transformuoti (iškraipyti) taip, kad upė tekėtų daugmaž tiesiai, bet tuo pačiu neprarandant mažų detalių – posūkių, jų krypčių. Tokiu būdu transformuotą žemėlapį galima būtų atspausdinti ant patogiai siauros, bet labai ilgos juostos, sulankstytos armonikėle (baidarėje nėra labai patogu išsilankstyti didelį standartinį žemėlapį).

Imkime puikią Lietuvos upę dar puikesniu pavadinimu Ūla. Ūlos vaga yra vingiuota tiek žiūrint stambiame, tiek ir žiūrint smulkiame mastelyje – puikiai tinka bandymams. Pabandykime ištiesinti stambaus mastelio posūkius. Tam mes nubraižysime tolydžią kreivę, einančią daugmaž pagal Ūlos tekėjimą, tik kad ta kreivė turėtų kiek galima mažesnius „posūkius“ (kad kiek galima mažiau reikėtų kraipyti pradinius duomenis). Tarkime gavome tokią (raudonai pavaizduotą) kreivę:

Dabar mums reikia pasirašyti transformaciją, kuri realias koordinates pakeistų į naujas taip, kad raudona linija būtų tiesi ir vertikali.

Transformacija

Paprasčiausias variantas, kaip turint tašką p gauti jo koordinates naujoje „koordinačių sistemoje“, – x koordinatę skaičiuoti kaip taško p nuotolį nuo centro (raudonosios) linijos, t.y. trumpiausią įmanomą atstumą iki centro linijos. O y koordinatę – kaip atstumą centro linija nuo centro linijos pradžios iki taško centro linijoje, kuris yra arčiausiai taškui p.

Taip gauname koordinačių transformacijos funkciją. Dabar belieka norimų vaizduoti objektų visų viršūnių koordinates transformuoti naudojant šią funkciją. Transformavę Ūlos centro liniją, gauname tokį vaizdelį:

Centre matome vertikalią linija – tai mūsų ankstesniame vaizdelyje esanti „raudonoji linija“. Ir greta matome Ūlą, iškraipytą pagal šią „centro liniją“. Kaip matome, Ūla ištiesinta stambių posūkių atžvilgiu, bet neprarasti smulkūs posūkiai. T.y. žiūrėdami tokį žemėlapį mes matysime, kada bus posūkis į kairę, kada į dešinę (galėsime orientuotis), bet visą Ūlos žemėlapį vis tiek bus galima atspausdinti ant ilgo siauro popieriaus, kurį sulanksčius armonikėle bus labai patogu naudoti baidarėje.

Aplinkiniai objektai

Panaudoję tą pačią transformacijos funkciją, gauname ir aplinkinius objektus – Ūlos krantus, kelius, miškus, pievas, miestus, pastatus ir t.t. ir pan. Kadangi visi jie yra iškraipyti pagal mūsų nusibrėžtą raudonąją liniją, tai aplinkinių objektų geometrija irgi neatitiks realybės. Žinoma iškraipymas labiausiai matomas ten, kur „raudonoji linija“ sukasi, ir kur ji sukasi labiausiai. Štai palyginkime objektus ties Kriokšliu (viena iš dviejų vietų, kur „raudonoji linija“ keičia kryptį labiausiai). Kaip viskas atrodo „realioje“ projekcijoje:

O štai kaip atrodo iškreiptoje pagal „raudonąją liniją“ projekcijoje:

Kaip matome, visi objektai matomi. Ūlos vingių esmė išlikusi. Bet tarkim Tilto gatvė, kuri realybėje yra daugmaž tiesi – išsikreipė. Pastatai irgi pakraipyti. Bet bendrai paėmus vaizdelis tikrai neblogas – galima susiorientuoti, kur yra kas.

Kas toliau?

Pradiniai pažaidimai būtų tokie. Galutiniame žemėlapyje bus pridėta ir plaukimo informacija iš upese.lt (įlipimo/išlipimo, pavojingos vietos, intakai), lankytini objektai aplink upę ir pan.

Tokius juostinius žemėlapius daryti galima nebūtinai vandenininkams. Galima žemėlapį kraipyti pagal dviračių ar automobilių kelią, ar bet ką kitą.

Dabar reikia gražiai sudėlioti kodą, išrankioti kai kuriuos ekstremumus ir… paruošti juostinį žemėlapį bandomajam spausdinimui. Kai tik tai bus padaryta – parašysiu dar. (atnaujinimas: pirma bandomoji versija jau atspausdinta)

Jei kas turite informacijos apie tokius „juostinius žemėlapius“ – būtinai pasidalinkite. Malonaus, įdomaus ir saugaus plaukiojimo!

Share

Spalvinimo žemėlapio kūrimas (video)

Prieš kiek daugiau nei metus rašiau apie spalvinimo žemėlapių kūrimą naudojant Atvirojo žemėlapio duomenis ir atviro kodo programinę įrangą QGIS. Po kiek laiko komentaruose atsirado prašymas įdėti papildomą spalvinimo žemėlapį. Na nėra sunku jį sukurti, tai įdėjau. Bet tuo pačiu pagalvojau, kad gi užtrunka tai kelias minutes. Visa programinė įranga ir duomenys nemokami ir tikrai nereikalauja kažkokių ypatingai sudėtingų technologinių žinių. Tai ta proga sugalvojau pabandyti sukurti vaizdo medžiagą, kaip kuriamas toks spalvinimo žemėlapis. Tai panaudojęs kdenlive video apdorojimo programą ir https://liepa.rastija.lt/Ieškotuvas/Teksto-sintezatorius lietuviško balso sintezatorių sukūriau žemiau pateikiamą pirmą blyną.
Laukiu komentarų, pastabų, pasiūlymų. Per daug nemuškite, visgi pirmas bandymas 🙂

Share

Lietuvos upių žemėlapis

Jau įpusėjo vasara, visi stengiamės ištrūkti į gamtą, kas dviračiu pasivažinėti, kas pasivaikščioti, o kas ir baidarėmis ar kokiu kitu vandens transportu paplaukioti. Plaukiant baidare visada anksčiau ar vėliau kyla klausimas „kiek dar liko“? Atsakyti paprastai būna sunku, nes net žinant, kur tu esi (tarkim, prie gyvenvietės X) ir kur planuoji išlipti (tarkim, prie tilto gyvenvietėje Y) yra labai sunku pasakyti, kokį atstumą dar reikia plaukti (t.y. koks atstumas upės vektoriumi).

Open street map turi upių vektorius, iš upese.lt galima gauti informaciją apie pavojingas vietas, baidarių įkėlimo/iškėlimo vietas. Garmin žemėlapius kurti irgi mokame (garmin, nes kol kas jo patikimumas, atsparumas vandeniui, smūgiams ir pan. stipriai lenkia išmaniuosius mūsų draugus). Tad, kaip ir reikia tik prisėsti ir padaryti 🙂

Tai ir prisėdau prie bandomojo varianto. Kaip bandomąją upę dėl vienokių ar kitokių priežasčių pasirinkau Ūlą. Patikslinau Open Street Map informaciją apie Ūlą, sudėjau taškus iš upese.lt ir sugeneravau Garmin žemėlapį, kuriame maršrutas braižomas vandens keliais (upėmis ir upeliais).

Upės maršrutas

Kaip matome, maršrutizavimas veikia, atstumas skaičiuojamas. Gaila nepavyksta gražiai padaryti laiko skaičiavimo (gal dėl Garmin žemėlapių apribojimų, gal dėl mano žinių trūkumo). Bet tikriausiai ir prasmės nėra, retas kas plaukia nuo taško A iki taško B pastoviai irkluodamas, nesustodamas pailsėti, pasigėrėti aplinka, surinkti šiukšlių ar išlipti į krantą „ekstra reikalams“. O ir skirtingų žmonių ir vandens transporto priemonių plaukimo greitis labaaaai skiriasi. Tai tarkim, kad šiam etapui tas planuojamas laikas ir nesvarbus.

Užtat gauname ir informaciją apie pavojingas vietas (raudonas šauktukas) ar patogias vietas baidarių įkėlimui/iškėlimui (mėlyna rodyklė).

Zervynos

Na ir skardžiai ar šiaip smėlėtos vietos palei upę matosi:

Skardžiai

Dabar belieka pabandyti praktikoje, sutvarkyti kitas populiarias upes ir turėtume puikų daiktą. Tik tokį žemėlapį dariau pirmą kartą, nežinau jokių alternatyvių upių žemėlapių, tai gali būti, kad dar yra daug dalykų, kuriuos galima būtų pakeisti ar pridėti į šį žemėlapį. Taigi, vandens mėgėjai, pabandykite ir pakomentuokite!

Bandomąjį žemėlapį galite atsisiųsti iš čia: http://dev.openmap.lt/garmin/upes/

Tuo pačiu gavosi ir Ūlos vandens žemėlapis (http://dev.openmap.lt/ula/), bet tai jau visai kita istorija.

Linksmo ir malonaus plaukiojimo!

Share

Popieriniai žemėlapiai

Vienas iš atvirų duomenų pranašumų yra tas, kad juos galima naudoti bet kokiems tikslams – nereikia nieko klausti leidimo, derinti ar tuo labiau mokėti kokius nors mokesčius. Štai todėl turint atviro žemėlapio duomenis mes galime atsispausdinti norimos vietovės, norimo mastelio žemėlapį su norimais duomenimis. T.y. galime imti tik atviro žemėlapio duomenis, bet galime uždėti ir savo asmeninius sukurtus duomenis – gimtadienio žygio maršrutą, kelią svečiams į iškylą, boružėlių populiacijos duomenis ir t.t.

Pavyzdžiui sugalvojam atsispausdinti dviračių žemėlapį. Tada pasiimame OpenStreetMap duomenis shape failais ir susikeliame į QGIS. QGIS – atviro kodo visiškai nemokama programinė įranga, veikianti visose pagrindinėse operacinėse sistemose. Tada į žemėlapį susikrauname norimus sluoksnius, juos spalviname, žymime kaip tik širdis geidžia. Nerašau detaliau, nes apie tai jau buvo rašyta ankstesniuose įrašuose (žiūrėkite nuorodas). Dabar tik noriu parodyti, ką galima gauti. Vienas iš variantų – norimą žemėlapį padalinti gabalais, atsispausdinti ant A4 ar A3 lapų (priklausomai nuo to, kokį spausdintuvą galima panaudoti šiam reikalui) ir prisiminus vaikystę (ar pasitelkus vaikus) susiklijavus gauti visai neblogą žemėlapį:

popierinis_zemelapis_n

Toks spausdinto žemėlapio būdas gali būti ir tam, kad nereikėtų spaustuvės paslaugų (pigiau) ir tam, kad tiesiog pasitikrinti, koks bus galutinis rezultatas: ar įskaitomas tekstas, ar aiškūs simboliai ir pan. Taipogi galima leisti ar net skatinti, kad žemėlapio skaitovai imtų rašymo priemones ir žymėtų gal klaidas, gal sau svarbius objektus ar pan. – gaunasi erdvinė pastabų lenta, kurią labai nesunku atspausdinti iš naujo.

Žinoma tokį žemėlapį galima atsispausdinti ir spaustuvėje. Čia svarbu arba žemėlapį daryti vektorinį (nenaudoti permatomumo, šešėlių ir kitų savybių, kurios į vektorinį formatą nelabai susikelia), arba kurti žemėlapį su pakankamai aukštu taškų skaičiumi (DPI), tarkim 300-400. Tada gauname žemėlapį, kuris yra analogiškas komercinių kompanijų gaminamiems žemėlapiams:

popierinis_zemelapis_s

Nuotraukoje ant A0 lapo atspausdintas žemėlapis, bet artimiausiuose planuose yra jį atsispausdinti ir plačiajuoste spauda 🙂

Galimybės gi neribotos. Galima spausdinti labai didelius žemėlapius ir klijuoti ant sienos, galima spausdinti marškinėlius, skareles. Galima žemėlapį atsispausdinti ant medžiagos ir turėti labai originaliai atrodantį ir lankstymo ar net drėgmės nebijantį žemėlapį, kurį galima tiesiog susiglamžyti ir į kuprinės kišenę įsidėti. Žodžiu kai turime atvirus duomenis ir atvirą programinę įrangą, vienintelis ribojantis faktorius yra jūsų fantazija!

Share