Atvirasis Vilnius

Vilniuje išrinktas naujas meras, atsinaujino taryba ir administracijos aparatas. Ir ši valdžia nuo pat pirmų dienų imasi spręsti atvirų duomenų klausimą. Klausimą, kuris ilgą laiko buvo kaip tabu. Gerai pamenu, kaip prieš porą metų teko bendrauti su savivaldybės ir „Vilniaus plano“ darbuotojais dėl bendradarbiavimo su OSM bendruomene. Tie susitikimai nebuvo tokia jau paprasti, o rezultato pasiekti nepavyko. Savivaldybės duomenys, jei ir buvo publikuojami, tai tik labai atkaklių asmenų dėka. Šiandien situacija keičiasi kardinaliai.

Nežinau ar buvo specialiai tam kviestas, ar kažkaip išrinktas, bet atvirų duomenų klausimo ėmėsi spręsti portalo freedata.lt įkūrėjas Povilas Poderskis. Netrukus Povilas pradėjo dalintis soc. tinkluose ir opendata.lt portale savo įspūdžiais iš savivaldybės. Dar po kurio laiko Vilniaus susikūrė savo github.com paskyrą. WOW! Čia tai bent šuolis – nuo visiško tabu iki pačios populiariausios atviro kodo platformos.

Ir nuo pat pirmos dienos github.com/vilnius atsirado tokių duomenų, kaip reklamos plotai, darželinų sąrašai, žemės nuomos sutartys, mažos vertės pirkimai ir net spausdintuvų naudojimas pačioje savivaldybėje. Yra ir geografinių duomenų – 2015 metų bendrasis planas. Tiesa, duomenų rinkinys skurdokas, bet iniciatyva puiki.

Ir tai dar ne viskas. Povilas iš tiesų pasistengė ir per tokį trumpą laiką paleido savivaldybės atvirų geografinių duomenų portalą! Pagaliau atsirado pilnavertis daiktas, su paieška ir duomenų peržiūra tiek žemėlapyje, tiek duomenų lentelėse. Pačių duomenų dar nedaug, reikia turėti omeny, kad tai tik pradžia (tikiuosi), bet iniciatyva puiki, tikrai 🙂

Ir tai dar ne viskas 🙂 Pasirodo, greitu metu atsiras dar vienas dviračių žemėlapis bikes.vilnius.lt. Kolkas šis puslapis neveikia ir sunku pasakyti, kuo jis bus geresnis už eilę kitų dviračių žemėlapių. Neaišku, ar bus galimybė panaudoti duomenis, kaip jie atrodys lyginant su OSM.

Taipogi Povilui pavyko atrasti dar vieną savivaldybės iniciatyvą. Šį kart tai kapinių žemėlapis cemety.lt. Sistema leidžia peržiūrėti kapų poligonus kapinių teritorijoje, vykdyti paiešką pagal vardą arba gimimo/mirties metus. Žemėlapio bazinis sluoksnis – standartinis OSM. Viskas būtų gerai, bet yra tik vienos kapinės ir kažin ar atsiras daugiau.

Naujienų daug ir paminėjau ne visas. Plačiau iš paties Povilo galima pasiskaityti pinigų kartoje. Nauji vėjai savivaldybėje pradėjo daug gerų iniciatyvų. Atvirų duomenų srityje, vos per porą mėnesių buvo padaryta daugiau, nei per pastaruosius 5 metus. Jei taip ir toliau, tai po metų-kitų Vilnius taps pavyzdine savivaldybe. Belieka palinkėti, kad šios iniciatyvos neišblėstų, o naujasis meras su komanda ir toliau taip ryžtingai imtųsi reikalingų darbų.

Share

ORT10LT klasteris

Kaip žinot, šiais metais gavome oficialų leidimą naudoti ORT10LT ortografines nuotraukas žemėlapių kūrimui. Buvo super, įvyko didžiulis proveržis bendraujant su valstybinėm institucijomis, gautos puikios kokybės nuotraukos, bet jos teikiamos ne itin patogiu servisu ir lėtai. Buvo nuspręsta paleisti proxy servisą, kuris automatiškai konvertuotų į reikiamą failų struktūrą ir pagreitintų veikimą. Bet šis serveris pareikalavo resursų(~100GB 2013 liepą), kuriuos turėti duomenų centre kainuoja, gal ir nedaug, bet suma vis dėl to susidaro. Poreikis bėgant laikui vis auga.

Po poros nesėkmingų bandymų susitvarkyti su tokiais duomenų kiekiais, buvo nuspręsta ieškoti pilnai decentralizuotos platformos ORT10LT paveikslų saugojimui. Turint klasterį, visi norintys ir galintys galėtų prisijungti prie jo ir tokiu būdu panaudoti savo asmeninius kompiuterius bendram reikalui. Tokia platforma buvo pasirinktas Riak ir jis pateisino savo vardą. Šiandien veikia 4 mazgai, kiekvienas iš jų saugo ~40GB duomenų. Tokiu būdu pasiskirsto tiek duomenų tūris, tiek ir jų srautas. Kuo daugiau mazgų, tuo mažiau reikia resursų iš kiekvienio iš jų. Iš esmės Riak veikia P2P principu ir klasteryje nėra nei vieno centrinio mazgo. Vienam mazgui sustojus, jo darbą automatiškai perima ir tęsia likusieji. Taigi, Riak leidžia paprastai turėti net ir labai didelę duomenų saugyklą. Problema kaip ir išspręsta, belieka tik rast savanorių, kurie galėtų ir norėtų panaudoti dalį savo asmeninių kompiuterinių resursų bendram tikslui.

Ką prarasiu, kokie reikalavimai? – pirmieji klausimai, ateinantys į galvą svarstant tokią galimybę. Atsakymas paprastas – prarasit ~50GB kieto disko vietos, 512MB operatyvinės atminties ir truputi duomenų srauto. Na o Jūsų kompiuteris/serveris turėtų būti bent dvigubai talpesnis, kad klasterio mazgas neužgoštų kitos veiklos.

Kam ir kokia iš to nauda? Naudą gaus visi, kas naudoja ORT10LT OSM vystyme. Juk kuo daugiau klasterio mazgų, tuo labiau pasiskirsto duomenys ir jų srautas, tuo mažesnė tikimybė sutrikdyti klasterio veikimą vienam iš mazgų „nulūžus“, tuo labiau išlošia OSM bendruomenė. Nei aš, nei kas nors kitas, jokios asmeninės naudos iš šio klasterio neturės. Klasteris naudojamas išskirtinai tik ORT10LT paveikslams.

Taigi, jei nusprendėte prisidėti, tai padaryti galim dviem būdais:

Antrasis būdas sunkesnis, ypač jei nenaudojate Debian šeimos operacinės sistemos, todėl pradžiai rekomenduočiau naudoti pirmąjį būdą. Kilus klausimams visada galima kreiptis į mane, Ramūną, arba Tomą asmeniškai arba per talk-lt.

Share

OSM duomenų įkėlimas į QGIS

OpenStreetMap duomenys yra atviri, tai reiškia kad bet kas gali juos naudoti nieko neklausdamas ir neprašydamas. Iš pradinių duomenų sugeneruotus internetinius žemėlapius galime pasižiūrėti naršyklėse, galime atsisiųsti GPSR įrenginiams paruoštus žemėlapius ir pan. O kas, jei mes norime pasiimti pradinę vektorinę informaciją ir pabandyti daryti kažką savo? Pavyzdžiui padaryti duomenų analizę arba sukurti spausdinamą žemėlapį, pagal savo skonį ir poreikius sudėliojus objektus ir jų savybes? Vienas iš būdų tą padaryti – įsikelti OSM duomenis į GIS duomenis apdorojančią programa QGIS.

Kas yra QGIS?

QGIS yra atviro kodo, nemokama priemonė darbui su geografiniais duomenimis. Ji veikia visose pagrindinėse operacinėse sistemose. Šią programą galite parsisiųsti iš QGIS svetainės.

OSM duomenys

Į QGIS duomenis galima atsisiųsti tiesiai iš OSM duomenų bazės, galima atidaryti kokiu nors OSM redaktoriumi įrašytą duomenų failą .osm ir pan. Bet vienas patogesnių būdų yra atidaryti „shape“ failus. „Shape“ formatą prieš daug metų sugalvojo kompanija ESRI ir šis formatas yra de facto standartas GIS bendruomenėje. Taigi šiame įraše ir pasirinkome būtent „shape“ failų variantą.

Bet kurios pasaulio šalies/regiono shape failus galite atsisiųsti iš geofabrik.de (atnaujinama kasdien). Pavyzdžiui Lietuvos duomenis rasite čia: http://download.geofabrik.de/europe/lithuania.html

Arba galite siųstis Lietuvos duomenis ir iš čia: http://shapes.openmap.lt/

Duomenų įkėlimas į QGIS

Taigi, jūs jau įsidiegėte QGIS programą ir atsisiuntėte shape failus (įrašėte juos į vieną aplanką). Paleidę QGIS naujame projekte spauskite mygtuką „Pridėti vektorinį sluoksnį“ naujo_vektorinio_sluoksnio_mygtukas

Atsidariusiame dialoge palikite nuostatą „Failas“ ir parinkite vieną iš shape failų, pavyzdžiui vandens plotų informaciją – „vanduo_p.shp“:

shape_failo_parinkimas

Pridėjus naują sluoksnį, QGIS parinks atsitiktinę spalvą visų sluoksnio duomenų rodymui. Mažai tikėtina, kad vandens sluoksniui bus pataikyta parinkti mėlyną spalvą, tai jums reikės padaryti patiems. Spauskite dešinį pelės mygtuką ant naujo sluoksnio įrašo ir kontekstiniame meniu parinkite punktą „Savybės“:

sluoksnio_savybiu_meniu

Atsidariusiame dialoge nueikite į skiltį „Stilius“ ir ten parinkite jums tinkančia spalvą šio sluoksnio vaizdavimui:

sluoksnio_savybes

Štai jūsų žemėlapis jau turi šiek tiek informacijos ir jūs išmokote keisti žemėlapyje rodomų objektų savybes.

Bet ne visiems skirtingiems objektų tipams yra kuriami atskiri shape failai. Tarkim žemės naudojimo shape faile yra informaciją apie miškus, pievas, gyvenamąsias, komercines ir industrines zonas. Kad skirtingoms to paties shape failo objektų grupėms galėtumėte nurodyti skirtingus paišymo stilius, jums reikia naudoti stilių apibrėžimo tipą „pagal taisykles“:

stilius_pagal_taisykles

Jame galite nurodyti kiek tik norite skirtingų taisyklių, išrenkančių objektus iš shape failo ir tada kiekvienai išrinktai grupei nurodyti skirtingas vaizdavimo taisykles. Kaip matote aukščiau pateiktoje iliustracijoje, atskiros vaizdavimo taisyklės yra sukurtos miškams, pievoms bei skirtingoms miestų zonoms. Naujos taisyklės kuriamos paspaudus mygtuką su pliuso ženklu:

taisykles_savybes

Čia svarbūs laukai yra šie:

  • Etiketė – nurodykite, kaip reikėtų pavadinti šios taisyklės atrinktus objektus. Tai bus naudinga vėliau, kai norėsite įjungti/išjungti šių duomenų vaizdavimą žemėlapyje arba jei kursite sutartinių ženklų sąrašą žemėlapiui.
  • Filtras – nurodoma, kokia SQL sąlyga reikia parinkti savybes iš shape failo. Tarkime „zeme.shp“ faile prie visų plotų yra laukas „landuse“, pagal kurio reikšmes galima nustatyti, kas tai per žemė. Jei landuse=’forest’ – tai bus miškas, jei landuse=’residential’ – gyvenamoji zona.
  • Simbolis – šioje skiltyje nurodykite, kaip reikia vaizduoti šios taisyklės atrinktus geografinius objektus (geoobjektus).

Jei geoobjektai turi pavadinimus (pavyzdžiui keliai), galite nurodyti, kad paišant žemėlapį būtų parodytos ir reikšmės iš lauko „name“:

etikeciu_savybes

Yra dar labai daug skirtingų savybių ir funkcijų, kurias galite naudoti. Tiesiog palandžiokite po savybių dialogus. Galų gale turėtumėte gauti žemėlapį, panašų į šitą:

zemelapis

Taigi, duomenų įkėlimas į QGIS baigtas. Kituose įrašuose parašysiu, ką įdomaus ir naudingo galima padaryti su tokiais geografiniais duomenimis.

Share

Lankytinų vietų informacijos įvedimas

Šiame skyriuje parašysiu apie tai, kaip galima įvesti (arba atnaujinti) informaciją apie lankytinas vietas, t.y. muziejus, kavines, mokyklas ar pan. Kas jau kas, o lankytinų vietų įvedimas yra labai paprastas. Atviram žemėlapiui lankytinų vietų labiausiai trūksta, nes be vietinių žinių labai sunku stebėti kavinių ar parduotuvių atsiradimą, o dar sunkiau – išnykimą. Bet apie viską iš eilės…

Lankytinų vietų žymėjimo būdai

Lankytinas vietas atvirame žemėlapyje galima žymėti dviem būdais: kaip tašką arba kaip plotą.

Žymėjimas tašku

Galima esamame (anksčiau nupaišytame) pastate padėti vieną tašką, pažymintį, tarkime, kavinę dideliame pastate. Tai paprasčiausias žymėjimo būdas, nes nereikia paišyti pastato geometrijos (formos). Paprastai lankytinos vietos taškais žymimos tada, kai žymimas objektas neužima viso pastato. Pavyzdžiui jei yra didelis gyvenamasis daugiabutis ir viename jo krašte yra kirpykla, tai kirpyklą žymėsime ne ant pastato, o kaip tašką tame pastate, nes visas pastatas juk nėra kirpykla.

Žymint lankytiną vietą tašku reikia patikrinti, ar jūsų įvedama informacija dar nėra pažymėta ant pastato (nes tokiu atveju įvedus tą pačią informaciją dar ir kaip tašką, turėtume dubliuotą informaciją, o tai jau žymėjimo klaida).

Žymėjimas plotu

Galima visą pastatą pažymėti kaip lankytiną vietą. Pavyzdžiui, degalinės paprastai būna atskiri pastatai. Tokiu atveju degalinės žymas dėsime ne kaip atskirą tašką, o kaip plotą – pastatą.

Visgi, jei tame pačiame pastate yra daug lankytinų vietų ir negalima išskirti vienos – pagrindinės – reikėtų pagalvoti apie žymėjimą tašku.

Jei neapsisprendžiate, kuriuo būdu pažymėti lankytiną vietą, nes abu variantai tinka, – rinkitės žymėjimą plotu – tai daugiau informacijos duodantis (t.y. naudingesnis) variantas.

Informacijos OSM keitimas

Taigi, prisiregistravę prie atviro žemėlapio, galite įvesti (ar papildyti) lankytinų vietų informaciją. Norėdami tą padaryti, žemėlapyje susiraskite vietą, kurioje yra įvedamas objektas. Pasistenkite maksimaliai priartinti vaizdą, kad įjungus redagavimo režimą nepasimestumėte tarp daugybės rodomų geoobjektų. Tada iš meniu „Keisti“ parinkite redaktorių „iD“:

keisti_su_id

Redaktoriuje bus įkelti jūsų parinkto ploto objektai. Taškiniai objektai rodomi kaip lašeliai ir prie jų rodoma tik viena funkcija – „naikinti“:

pazymetas_taskas

Šioje iliustracijoje matote taškais pažymėtus Čili kaimą, knygyną ir banko skyrius.

Objektai gali būti pažymėti ir kaip pastatai, pavyzdžiui ši benzino kolonėlė:

pazymetas_pastatas

Šiuo atveju išskirtas ne taškas, o visas pastatas ir galimų funkcijų jau daugiau nei viena.

Lankytinos vietos įvedimas

Visų pirmą jums reikia pasirinkti esamą objektą (tašką ar plotą) arba sukurkti naują (jei žymimo objekto dar nėra). Taigi spauskite mygtuką „taškas“ arba „plotas“ ir pele nurodykite objekto vietą.

Dabar jums reikia nurodyti objekto savybes. T.y. reikia pasakyti, ką čia pažymėjote? Biblioteką, restoraną ar viešąjį tualetą? Šios savybės nurodomos redaktoriaus kairėje pusėje:

geoobjekto_savybes

Kaip matote, išsirinkę lankytino objekto tipą, gausite galimybę įvesti objekto pavadinimą ir papildomas savybes. Kai kurios savybės yra taikomos visiems objektams, pavyzdžiui adresą turės visi objektai miestuose, o štai patiekiamo valgio tipą (vietinis, pica, jūrų ir pan.) turės tik restoranai. Kokią papildomą informaciją galima įvesti apie parinktą objekto tipą jums parodys redaktorius.

Norint įvesti kai kurią papildomą informaciją, tokią kaip svetainę ar wikipedijos straipsnio nuorodą, galite pasinaudoti vienu iš po savybės esamų mygtukų, kurių pagalba pridėsite papildomus laukus. Štai pavyzdys, kaip pridedamas svetainės laukas:

geoobjekto_savybes_su_svetaine

Įvedę visą turimą informaciją (būtinai įveskite pavadinimą, ir, jei žinote, adresą) spauskite mygtuką „Išsaugoti“:

mygtukas_issaugoti

Pakeitimo komentare įrašykite, ką keičiate ir iš kur gavote informaciją, pavyzdžiui „Nauja Špunka Džiuginėnuose. Vietinės žinios“. Viskas! Informacija jau atvirame žemėlapyje.

Lankytinų vietų naikinimas

Informacijos aktualumo palaikymui nemažiau svarbu yra ir naikinti jau nebeegzistuojančias lankytinas vietas. Taigi jei žinote, kad kažkoks restoranas užsidarė visiems laikams, atverkite žemėlapį, pažymėkite dingusį restoraną (jei jis pažymėtas kaip taškas) ir spauskite šiukšlių dėžės mygtuką (ištrinti). Jei lankytina vieta buvo pažymėta ant pastato, tada pastatą palikite, o tiesiog panaikinkite lankytinos vietos žymas; paprastai tai bus vietos tipas, pavadinimas, svetainės adresas ir pan. Pastato ir/ar adreso žymas palikite, nes tai lieka, net ir dingus kavinei ar aludei:

savybiu_naikinimas

Share

Vilniaus adresai

Kiek anksčiau jau buvo rašyta apie Vilniaus adresų papildymą. Šį kartą parašysiu apie tai, kaip adresų informacija yra atnaujinama ir prižiūrima.

Adresų informacijos pasikeitimai

Gali pasirodyti, kad pastovus adresų palaikymas nėra labai svarbus. Jei Vilniaus savivaldybė pateikiamų adresų sąrašą atnaujins kas metus, užteks kartą per metus adresus iš naujo įkelti ir viskas? Tikriausiai ne, nes neaišku, kas kiek laiko Vilniaus savivaldybė atnaujins dabar pateikiamą adresų sąrašą, o ir Vilniaus adresų informacija pakankamai sparčiai keičiasi. Štai adresų pasikeitimo grafikas:

adr_change

Kaip matome, kiekvieną mėnesį atsiranda 300 naujų adresų. Tai apie 10 adresų per dieną! Taipogi po 50 senų adresų yra panaikinama. Tokiais tempais per metus bus sukurta 3500 naujų adresų, o tai sudaro daugmaž 7% visų Vilniaus adresų.

Taigi norisi adresus atnaujinti daugmaž tuo pačiu metu, kai adresų informaciją keičia Vilniaus savivaldybė. Laimei adresų pokyčių informacija (adresų keitimo įsakymai) yra viešai prieinama Vilniaus savivaldybės svetainėje, o pagal šiuo metu galiojančius įstatymus, ši informacija yra ir vieša, ir atvira (t.y. ją ramiai galime naudoti OSM pildymui).

Adresų pasikeitimų įsakymai publikuojami pdf formatu. Šis formatas nėra toks patogus, kaip tarkime xml, bet visgi tai ne piešinys, reiškia jį galima apdoroti automatiškai. Kiekviename įsakyme yra viena arba daugiau eilučių, kiekvienoje iš kurių yra naikinamo ir/ar sukuriamo adreso informacija (gatvė, numeris, korpusas) bei tikslios adreso koordinatės.

Šią informaciją perskaito sukurti skriptai ir tada gauname daugmaž tokį įsakymo detalizavimą:

adresu_isakymo_detales

Kaip matome, įsakymo informacija sulyginama su esama adresų informacija. Patikrinama ar kuriamas adresas jau yra OSM duomenų bazėje. Jei yra, ar jis nėra per daug nutolęs nuo įsakyme pateikiamos padėties. Jei adreso informacijos nėra, trūkstamą informaciją vienu paspaudimu galima perduoti į JOSM redaktorių.

Kadangi didžioji dalis šio proceso yra automatizuota, vieno adreso informacijos pasikeitimas apdorojamas per kelias sekundes. Tai leidžia negaištant daug laiko greitai atnaujinti adresų informaciją.

Vilniaus savivaldybės adresų informacijos lyginimas su OSM DB

OSM duomenų bazė yra atvira. Informaciją bet kas gali tiek skaityti, tiek ir keisti. O tai reiškia, kad žymėtojai gali netyčia sugadinti adresų informaciją, pavyzdžiui keičiant pastato geometriją panaikinti egzistuojančio adreso žymas ar pridėti seniai jau panaikintą adresą (žinau atvejų, kai gyventojai po adreso pasikeitimo nežinojo savo naujo adreso ir pyko ant taksi vairuotojų, kurie važiavo pagal naują adresų informaciją, tokie gyventojai gali norėti „pataisyti“ adresų informaciją OSM duombazėje). Taigi reikia karts nuo karto palyginti Vilniaus Savivaldybės adresų db (atnaujinamą naudojant įsakymų duomenis) su informacija, esančia OSM duomenų bazėje.

Palyginę gauname dvi adresų grupes:

  • Adresai, kurie yra VS db, bet kurių nėra OSM. Tokius adresus pridedame į OSM.
  • Adresai, kurie yra OSM db, bet kurių nėra VS db. Tokius adresus iš OSM db išimame.

Taigi turint šiuos du sąrašus galima pastoviai palaikyti švarią ir šviežią adresų informaciją.

Bendras adresų informacijos kelias

Taigi galutinį informacijos kelią matome šioje schemoje:

adresu_informacijos_eiga

  • Periodiškai (kol kas neaišku, kas kiek laiko VS atnaujins savo skelbiamą adresų sąrašą) adresai gaunami iš Vilniaus Savivaldybės. Gauta informacija naudojama pradiniam tarpinės adresų db užpildymui ir periodiškam jos sinchronizavimui.
  • VS adresų keitimo įsakymai naudojami greitam adresų informacijos pasikeitimų įkėlimui į tarpinę adresų db
  • Duomenys tarpinėje adresų db naudojami atnaujinant ir prižiūrint Vilniaus adresų duuomenis OSM duomenų bazėje.

P.S. Na, realybėje gal nėra viskas taip paprasta, viena-kita klaida gali pasitaikyti ir VS duombazėje, bet tai jau visai kita tema 🙂

Share