Vandens telkinių etiketės (I etapas)

Jau buvo nemažai galvota ir rašyta apie vandens telkinių etiketes. Iš pradžių buvo svarstytas variantas tiesiog skaičiuoti centro liniją, bet taip gali būti rasta vieta etiketei, kur tekstas fiziškai netelpa (pavyzdžiui siauroje vandens telkinio vietoje), taipogi vien centro linijos skaičiavimas nenurodo, kokio dydžio šriftą galima naudoti. Stambiame mastelyje vandens telkinių etikečių reikia daugiau, kad būtų didesnė tikimybė matomoje žemėlapio dalyje matyti ir ežero ar tvenkinio pavadinimą. Taigi reikėjo kitokio sprendimo, kurio bendras principas buvo aprašytas atskirame įraše. Šiame įraše bus aprašytas praktinis etikečių skaičiavimo įgyvendinimas. Tiksliau jo pirma dalis.

Sunkiausia dalis yra sudėlioti etiketes sudėtingos geometrijos poligonuose, t.y. telkiniuose, turinčiuose ne vienos ištisos „dešrelės“, o sudėtingesnes formas: X, Y, E ar tiesiog vizualiai kai kuriuose masteliuose turinčius kelias atskiras dalis. Ir sunkiausia yra ne sugalvoti algoritmą, o iš principo aprašyti, kaip kada kur ir kiek turi būti etikečių. Taigi pagrindiniai klausimai yra kartografiniai, o ne programavimo.

Sausio pradžioje buvo gauta daug naudingų patarimų ir pasiūlymų iš Lietuvos kartografų. Dauguma jų buvo būtent apie sudėtingesnes etiketes (sudėtingos formos vandens telkiniams), tai pirmame etape patarimų panaudota nedaug, bet jų labai prireiks II etape.

Pirmame etape sukurtas algoritmas, skaičiuojantis etiketes paprastesnės formos ežerams. Absoliuti dauguma ežerų yra būtent tokie, ir dabartinis algoritmas dažniausiai duoda visai neblogą rezultatą.

I etapo rezultatai

Etiketės gali būti braižomos arba taške (horizontaliai), arba palei liniją. Kiekviena etiketė turi ir būtent jai paskaičiuotą šrifto dydį ir tarpą tarp raidžių. Etiketės skaičiuojamos kiekvienam masteliui atskirai. Vienas mastelis vienam telkiniui gali turėti vieną ar daugiau etikečių (paprastai stambiuose masteliuose, kur vienu metu matoma tik dalis ežero ar tvenkinio).

Skaičiavimas vyksta kiekvienam telkiniui atskirai. Pradedama nuo stambiausio mastelio. Patikrinama, ar vandens telkinyje telpa pavadinimas dideliu šriftu ir gal net keliose vietose. Jei taip – tam masteliui sukuriama viena ar daugiau
tokių stambių etikečių.

Kai didelės etiketės nebetelpa, bandoma skaičiuoti pagal formą išlenktas etiketes. Pradžioje bandoma sukurti didelę etiketę (30pt dydžio), jei tokia netelpa – bandoma kurti mažesnę etiketę. Bandoma tol, kol arba randama etiketės pozicija, arba nustatoma, kad net mažiausiam parinktam šrifto dydžiui etiketė netelpa.

Pagal ežero formą nubraižyta etiketė

https://topo.openmap.lt/#t/13/55.04815/25.55899/0/0/

Jei etiketės linija yra ilga, tai ji dalinama į dalis, kad vandens telkinys turėtų daugiau nei vieną etiketę ir žemėlapyje vaizduojant skirtingas telkinio dalis padidėtų tikimybė, kad bus rodoma ir etiketė.

Priklausomai nuo to, kokio ilgio gavosi etiketei skirta linija ir koks yra vandens telkinio pavadinimas, paskaičiuojama, kokie bus tarpai tarp raidžių.

Kai etiketės linija trumpa, tarp raidžių paliekami mažesni tarpai.

https://topo.openmap.lt/#t/14/55.30602/25.5749/0/0/

Jei ežeras per mažas, kad jame tilptų pagal formą išlankstyta etiketė, bet jis pakankamai didelis konkrečiame mastelyje – braižoma taškinė (horizontali) etiketė.

Pastebėtina, kad etiketės skaičiuojamos atskirai kiekvienam vandens telkiniui, atskirai kiekvienam masteliui. Taigi viename mastelyje greta vienas kito gali būti ežerai su skirtingo šrifto dydžio ir skirtingų tarpų tarp raidžių etiketėmis.

Skirtingo šrifto dydžio, skirtingų tarpų tarp raidžių ir net skirtingo tipo etiketės (Želvykščio ežero etiketė horizontali).

https://topo.openmap.lt/#t/14/55.3109/25.55123/0/0/

Net ir tokie pirmo etapo rezultatai nėra baigti, nes skaičiavime dalyvauja apie dešimt koeficientų, nuo kurių priklauso tiek teksto parametrai, tiek linijos geometrija, atstumas iki kranto ir kokio dydžio vidiniai objektai (salos, iškyšuliai) yra ignoruojami. Dauguma šių parametrų yra susiję tarpusavyje, todėl pareguliavus vieną tenka reguliuoti ir kitus. Šio teksto rašymo metu topo.openmap.lt žemėlapyje matomas gal 30 iteracijos rezultatas, bet net ir dabar naršant po žemėlapį randamos probleminės vietos, kurios sprendžiamos ir toliau keičiant koeficientų reikšmes.

Etiketės skirtos žemėlapiui, kuris gali būti pasukamas, todėl skaičiuojant etikečių linijas nebuvo teikiamas pirmumas gauti horizontalią etiketę.

Taipogi gali pasirodyti, kad sudėtingesnes etiketes galima būtų tiesiog nubraižyti rankomis ir vėliau naudoti, juk vandens telkinių geometrija keičiasi ypatingai retai. Bet tai jau būtų per daug paprasta, todėl viską stengiamasi padaryti išskirtinai tik algoritmo pagalba. Papildoma nauda – kai skaičiuoja algoritmas, visada aišku, kodėl konkreti etiketė buvo paskaičiuota taip, o ne kitaip, t.y. visada galima aiškiai pasakyti, kokiais kriterijais buvo vadovaujamasi.

Vienintelė vieta, kur buvo pritaikyti specifiniai veiksmai, tai Kuršių marios, kurių geometrija buvo apkarpyta pagal Lietuvos sienas, kad etiketė būtų Lietuvos viduje.

Kurių marių geometrija buvo apkarpyta, kad etiketės pozicija būtų paskaičiuota Lietuvoje.

https://topo.openmap.lt/#t/10/55.41769/21.19452/0/0/

Tai tiek apie pirmą etapą. Detalesnis techninis etikečių skaičiavimo algoritmo aprašymas (pastoviai kintantis) yra atviro žemėlapio githubo wikyje. Ten pat rasite ir etikečių skaičiavimo kodą. Viskas parašyta naudojant atviras technologijas – PostgreSQL+PostGIS – kad kiek galima daugiau projektų galėtų pasinaudoti rezultatais. Etikečių braižymo informacija greitai turėtų atsirasti ir Lietuvos OpenStreetMap shape duomenų svetainėje, kad norintys galėtų panaudoti tokias etiketes kurdami savo žemėlapius su QGIS ar kita GIS programine įranga.

Cartocon 2018

Vyto Markevičiaus nuotr.

Lietuvoje nėra gausu profesinių renginių ir įvykių kartografų ir GIS specialistų bendruomenei. Ilgą laiką tai buvo Hnit-Baltic kasmet rengiama Lietuvos ESRI vartotojų konferencija, na, iš dalies dar galima būtų paminėti kasmetinę Lietuvos Matininkų Asociacijos (LMA) konferenciją, tačiau vienoje orientuojamasi  į vieno gamintojo technologijas, o kitoje į tikslius ir turto matavimus.

Urtės Antanavičiūtės nuotr.

2018 metai buvo dar liūdnesni, nes ESRI vartotojų konferencija pakilo į aukštenį lygį ir išėjo už Lietuvos ribų.
Lietuvos Kartografų Draugijos metų pradžioje planuota šiuolaikinių kartografijos ir GIS mokslo ir technologijų konferencija teikė daug vilčių. Ir štai – 2018 lapkričio 30 d. tai įvyko. Cartocon 2018 buvo ne tik lyg tyro oro gurkšnis, bet pranoko net ir turėtus lūkesčius ir štai kodėl!

Toliau skaityti „Cartocon 2018“

Vandens telkinių etiketės

Prieš daugiau nei pusmetį buvo rašyta apie vieną iš variantų, kaip skaičiuoti vandens telkinių etikečių pozicijas. Tąkart aprašytas metodas gan paprastas, bet yra dvi problemos, kurių centro linijos sprendimas nesprendžia: etikečių šrifto dydis ir tarpai tarp raidžių. Centro linija gali puikiai praeiti pro siauriausią ežero vietą ir parinkti ją etiketei, kai kur nors toliau nuo centro yra platesnė ežero dalis, tinkama etiketei su didesniu šriftu.

Gerą mintį davė pagal OpenStreetMap duomenis kuriamo OpenTopoMap kūrėjai. Jie ežerų etiketėms sugalvojo naudoti „stačiakampių metodą“. Jie irgi pradėjo nuo centro linijų skaičiavimų, bet visgi pasirinko kvadratų metodą. Tai puikus variantas ir, nors OpenTopoMap jį panaudojo tik etiketės pozicijos paieškai, jį galima pritaikyti ir šrifto dydžio bei tarpo tarp raidžių nustatymui. Toliau skaityti „Vandens telkinių etiketės“

Pastatų generalizavimas

Yra daug pastatų generalizavimo operacijų, daug operacijų parametrų parinkimo variantų, daug operacijų atlikimo sekų variantų. Kol kas nepastebėjau, kad kas nors būtų radęs vieną teisingą variantą, tinkantį visoms situacijoms: skirtingiems masteliams ir skirtingo tankio ir/ar geometrijos pastatams (pvz. tankiai užstatytiems senamiesčiams, retai užstatytiems sodams ir dar rečiau užstatytoms laukų sodyboms).

Aprašysiu bandymus parinkti tinkamus parametrus generalizuojant pastatus 12 masteliui (kur 1 taško plotis yra ~40m). Tikiuosi, kad radus parametrų reikšmes (o tikriausiai ir patvarkius pačią generalizavimo seką), bus galima atitinkamai išdėlioti generalizaciją ir stambesniems masteliams. Toliau skaityti „Pastatų generalizavimas“

Reljefas (Bergštrichai #1)

Pirmas iš kelių įrašų apie automatizuotą bergštrichų kūrimą. Pradžiai trumpa apžvalgėlė apie reljefo vaizdavimą, istoriją, metodus ir apie bergštrichus (lietuviškai – kalnabrūkšniai).

Reljefas – žemės, ar kitų planetų, paviršiaus nelygumų, formų (sausumos ir vandens telkinių dugno) visuma. Reljefas įvairus savo formomis, kontūrais, formų dydžiu, kilme, amžiumi, raida. Pagal mastą reljefą galima skirstyti į: visos planetos (žemynai, vandenynų duburiai), megareljefą (kalnų sistemos, lygumos), makroreljefą (kalnai, slėniai), mezoreljefą (kalvos, skardžiai, raguvos), mikroreljefą (duobės, išgraužos), nanoreljefą (skruzdėlynai, kurmiarausiai). Reljefo elementai gali būti teigiami – kalvos ir neigiami – įdubos.

Toliau skaityti „Reljefas (Bergštrichai #1)“

100 žemėlapių Lietuvai

Realaus gyventojų tankio žemėlapio pavyzdys (Marius)

Lietuvos šimtmečio proga Lietuvos Kartografų Draugija skelbia puikią iniciatyvą – 100 žemėlapių apie Lietuvą.

Ne mažiau kaip 100 vertingų žemėlapių. Įdomių, linksmų, rimtų, gražių, naujų, senų, prasmingų ar beprotiškų, pačių įvairiausių žemėlapių, apie Lietuvą, jos istoriją, praeities, dabarties ar ateities įvykius, reiškinius, vizijas ar kitus dalykus. Toliau skaityti „100 žemėlapių Lietuvai“