Vektorinis žemėlapis

Džiugu pranešti, kad atnaujintas openmap.lt pradėjo naudoti vektorinius žemėlapius. Mano žiniomis, tai pirmas Lietuvoje padarytas vektorinis žemėlapis (kitas yra Google žemėlapis, bet jis ne Lietuvoje padarytas).

Sakysite, kad techninės detalės, niekam neįdomu? Ne. Štai kelios paprastam naudotojui matomos vektorinio žemėlapio savybės, kurių nebuvo ir negalėjo būti anksčiau naudotuose rastriniuose („kaladėliniuose“) žemėlapiuose.

Žemėlapio pasukimas

Nors šiais laikais įprasta žemėlapį orientuoti taip, kad viršuje būtų šiaurė (beje, istoriškai taip buvo ne visada: viduramžiais viršuje buvo pietūs, dar anksčiau viršuje buvo rytai). Vektorinį žemėlapį galima pasukti kaip norime, ir visos etiketės (gatvių, lankytinų vietų ir pan. pavadinimai) bus atitinkamai perpaišytos, nebus aukštyn kojomis parašyto teksto:

Kam to reikia? Dažnai žmonės mėgsta žemėlapį pasukti savo žiūrėjimo kryptimi. Jei tarkim aš stoviu prie Gedimino paminklo Katedros aikštėje ir noriu eiti link Rotušės, tai norėsiu taip pasukti žemėlapį, kad Rotušė būtų „virš“ Katedros aikštės. Taip pat galima padaryti, kad žemėlapis automatiškai sukinėtųsi pagal judėjimo kryptį (kaip tai daroma GPSR įrenginiuose).

Žemėlapio pakreipimas

Žemėlapį taip pat galima pakreipti, taip sudarant erdvinio vaizdo įspūdį:

Pasukti ir pakreipti žemėlapį galite dešiniu pelės mygtuku arba dviem pirštais tapšno-įrenginiuose.

Žemėlapis yra interaktyvus

Galima spausti ant žemėlapyje rodomų lankytinų vietų, bus rodoma papildoma informacija, tokia kaip darbo laikas, svetainė, nuotrauka ir pan.

Ortofotografinis sluoksnis

Šiame žemėlapyje yra ir Nacionalinės Žemės Tarnybos ortofotografinis ORT10LT sluoksnis. Tai nėra vektorinės technologijos nuopelnas tiesiogiai, bet su vektoriniu žemėlapiu yra daug paprasčiau padaryti, kad ant ortofotografinio žemėlapio būtų rodomi kelių, upių pavadinimai ir pan.

Kitos techninės naujovės

Taipogi yra eilė naujovių labiau techninėmis detalėmis besidomintiems. Tarkim vektorinio žemėlapio atveju, serveris grąžina tik objektų formas. Kaip braižomas žemėlapis (kokie objektai braižomi, kokie nebraižomi, kokios naudojamos spalvos, kelių storiai, piktogramos lankytinoms vietoms ir panašiai) yra valdoma paprastu json failu žemėlapį rodančioje svetainėje. Tai reiškia, kad dabar, net neatlikdami sudėtingų veiksmų, tokių kaip savo duombazės kūrimas, osm duomenų įkėlimas ir atnaujinimas ir pan. jūs galite susikurti savo žemėlapį tiesiog įvairiais vizualaus redagavimo įrankiais pakoregavę stiliaus json failą pagal savo poreikius (gal išmesti sau neįdomius objektus, gal spalvas pritaikyti prie savo svetainės spalvų schemos ir pan.).

Pakreipus žemėlapį galima pridėti 3D žemėlapį tiesiog panaudojus pastatų aukščio informaciją.

Ir dar daug daug kitų naujų galimybių, apie kurias bus rašoma vėliau 🙂

Share

2017 – piliakalnių metai

2017 metai paskelbti piliakalnių metais. Tikriausiai visi žinome bent keliasdešimt piliakalnių, bet tikrai ne visi žino, kad Lietuvoje žinomų/atrastų/patvirtintų piliakalnių yra beveik 900! Visus juos rasti galite Lietuvos lankytinų vietų žemėlapyje http://places.openmap.lt/.

Lietuvos piliakalniai

Mano šiandienos žiniomis, daugiau piliakalnių turi tik Didžioji Britanija (~2000). Kai kurie piliakalniai yra sutvarkyti, padaryti privažiavimai, laiptai. Kiti gi lieka „paslėpti“ po medžiais ar krūmais, tokius rasti galima tik naudojantis žemėlapiu.

Atvirame žemėlapyje piliakalnių informacija buvo suvesta naudojant archeologų svetainės piliakalniai.lt duomenis. Šioje svetainėje rasite ir detalesnį dr. Gintauto Zabielos piliakalnių, jų tipų, raidos ir tyrimo istorijos aprašymą.

Piliakalnių sąrašas pastoviai pildomas atradus naujus piliakalnius. Taip taip, piliakalnių sąrašas auga! Atrandami nauji piliakalniai! Gal ir jūs rasite kokį naują piliakalnį? 🙂

Kadangi places.openmap.lt duomenis ima iš OpenStreetMap, tai visus piliakalnius rasite ir iš OpenStreetMap duomenų daromuose Garmin žemėlapiuose, ir įvairiose programėlėse išmaniesiems įrenginiams.

Įdomių atradimų piliakalnių metais!

Share

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

Klaidos Baltijos jūros regione

Yra eilė priemonių, ieškančių žymėjimo klaidų OpenStreetMap žemėlapyje. Kai kurios klaidos yra kritinės – tarkim transporto vektorių susikirtime nėra taško, dėl ko neveikia arba neteisingai veikia maršrutizavimas. Kitos klaidos ne tokios rimtos – tarkim reikalavimas, kad visi kelių vektoriai turėtų įvestą maksimalų greitį (net jei maksimalus greitis toje atkarpoje „standartinis“).

Gerą taisyklių rinkinį turi rimtesnysis OSM redaktorius JOSM. Klaidų ieško ir tokie projektai kaip Osmosis, Keepright ir eilė kitų. Kai kurių Lietuvai specifinių klaidų mes ieškome patys. Žodžiu klaidų aibių yra daug. Kadangi Keepright yra seniausias iš šiuo metu vis dar aktyvių klaidų aptikimo projektų, tai apsistokime ties juo.

Paimkime Keepright klaidų rinkinį ir pažiūrėkime, kaip jis atrodo vizualiai. Keepright klaidas teikia stačiakampiais gabalais. Imkime tiek gabalų, kad būtų pilnai uždengtas Lietuvos plotas. Išimkime klaidas, kurios nėra kritinės, bet kurių prisiskaičiuoja labai daug – maksimalaus greičio reikalavimą ir reikalavimą, kad kiekvienas „track“ tipo keliukas turėtų dar ir kokybės žymą (tracktype). Taigi imame visas klaidas išskyrus minėtų dviejų tipų. Kiekviena klaida vaizduojama tašku. Ką gauname? Štai ką:

klaidos_aplink_baltija

Iš pradžių galvojau ant šio vaizdelio uždėti ir Lietuvos plotą orientacijai, bet… panašu, kad nelabai reikia…? 😉

P.S. Apatiniame kairiame kampe balta, nes tiesiog nebuvo imtas Keepright stačiakampis su Vakarinės Lenkijos ploto klaidomis.

Share