Lankytinų vietų sinchronizavimas (II dalis)

Ankstesniame įraše buvo išdėstytos mintys, kodėl reikalinga lankytinų vietų (toliau – LV) sinchronizavimo sistema. Šiame įraše papasakosiu, kaip ši sinchronizavimo sistema realizuota Lietuvoje, kas ir kaip ja gali pasinaudoti.

Išoriniai duomenys

Visų pirma reikia gauti išorinius duomenis. Juos galima gauti įvairiais formatais: skaičiuoklės, csv, shape, geojson failai ir pan. Šiuo metu veikianti LV sincrhonizavimo sistema duomenis tikisi gauti xml formatu, taigi bet kokius kitus formatus reikia konvertuoti į xml.

Xml faile mažų mažiausia, ko reikia, tai platumos ir ilgumos laukų (vietoje šių laukų galima naudoti adreso lauką, bet tai susiję su eile kitų problemų, todėl šiame straipsnyje kalbėsime tik apie variantą, kai gauname konkrečias koordinates). Prie koordinačių atskiruose laukuose dėliojame visą informaciją, kokią tik gauname ir kokia gali būti įdomi atvirame žemėlapyje.

Štai pavyzdinis (apkarpytas) muziejų duomenų failo gabalas:

<limis>
<museum>
  <lat>54.900281</lat>
  <lon>23.911986</lon>
  <url>www.ciurlionis.lt</url>
  <type>national</type>
  <name>Nacionalinis M. K. Čiurlionio dailės muziejus</name>
</museum>
<museum>
  <lat>54.487559</lat>
  <lon>22.997380</lon>
  <url>http://muziejai.lt/Vilkaviskis/basanaviciaus_sodyba.htm</url>
  <type>national</type>
  <name>Jono Basanavičiaus gimtinė</name>
</museum>
...

Kiekvienas objektas atskirtas žymomis <museum></museum> ir jo viduje turime konkretaus muziejaus savybes.

Susiejimas su OSM

Kaip matome, išorinių duomenų xml’e žymos gali būti bet kokios: jos nebūtinai turi atitikti OSM naudojamas žymas. Išoriniame šaltinyje žymos gali būti kad ir lietuviškos, tarkim <pavadinimas>. Kad būtų galima lyginti/pildyti duomenis, mums reikės susieti šio išorinio xml žymas su OSM žymomis. Pavyzdžiui aukščiau pateikto muziejų xml susiejimas būtų:

  • urlwebsite (t.y. xml laukas „url“ atitinka OSM lauką „website“)
  • typemuseum_type
  • namename

Kiekvienam lauko susiejimui nurodome požymius:

  • naudoti bendroje paieškoje – lauko reikšmė įrašoma į bendrą užklausą ieškant objekto. Jei nustatyta reikšmė „taip“ – objektas atvirame žemėlapyje privalo turėti atitinkamą reikšmę, kad sinchronizacijos rezultatas būtų ne „nerasta“, o bent jau „beveik“ („beveik“ reiškia, kad objektas rastas, bet jo informaciją reikėtų patikslinti)
  • naudoti detalioje paieškoje – lauko reikšmė įrašoma į detalią užklausą ieškant objekto. Jei nustatyta reikšmė „taip“ – objektas atvirame žemėlapyje privalo turėti atitinkamą reikšmę, kad sinchronizacijos rezultatas būtų „yra“.

Taip pat nurodysime, kad atvirame žemėlapyje visi muziejų duomenys būtinai turi turėti žymą „tourism“ su reikšme „museum“.

Na ir pabaigai nurodysime keletą bendrų nustatymų:

  • Paklaida – Kokia leidžiama koordinačių neatitikimo paklaida (metrais). T.y. jei objektas yra įvestas į atvirą žemėlapį, bet jo koordinatės nutolusios labiau nei nurodyta paklaida – bus interpretauojama, kad išorinis objektas neįvestas ir kad atvirame žemėlapyje yra vienas perteklinis objektas.
  • Užklausa – Bendra užklausos „where“ sąlyga, randanti visus objektus Lietuvoje. Pavyzdžiui muziejams tiks sąlyga „tourism = ‘museum’“, sudetingesnis atvejis galėtų būti „shop in (‘convenience’, ‘supermarket’) and name like ‘Woolworths%’“.

Tikrinimas

Tikrinimas vyksta dviem etapais. Visų pirma vykdome užklausą su bendromis sąlygomis:

  • Visiems objektams taikoma sąlyga (pvz. aukščiau nurodyta sąlyga „tourism=’museum’“)
  • Laukai, kurių „bendros paieškos“ požymis lygus „taip“
  • Atstumas tarp objekto atvirame žemėlapyje ir išoriniuose duomenyse turi būti ne didesnis už nurodytą paklaidą

Jei ši užklausa negrąžina jokių rezultatų, tai objekto sinchronizacijos rezultatas yra „NĖRA“ – t.y. objektas nerastas, jį reikia įvesti.

Jei užklausa grąžina vieną ar daugiau rezultatų, vykdoma antra užklausa, kurioje prie bendrų (aukščiau aprašytų) sąlygų pridedamos ir laukų, kurių „detalios paieškos“ požymis lygus „taip“ sąlygos.

Jei ši užklausa randa rezultatą – sinchronizacijos rezultatas – „YRA“ (t.y. objektas rastas ir jis jau yra su teisingomis atributų reikšmėmis).

Jei ši detali užklausa objekto neberanda – rezultatas bus „BEVEIK“, kas reiškia, kad objektas yra, bet reikia patikslinti jo informaciją.

Taigi įvykdžius šias užklausas visiems išorinio šaltinio duomenims gauname sąrašą objektu, kurie pažymėti vienu iš trijų variantų: YRA, BEVEIK arba NĖRA.

poi_list

Ant kiekvieno objekto galima spausti ir gauti detalią informaciją.

poi_detail

Šiame lange galima spausti nuorodą [Atidaryti vietą], kuri JOSM redaktoriuje atidaro sritį, kurioje pažymėtas objektas (tai paprastai naudojama, kai objektas yra, bet jo informaciją reikia papildyti).

Taip pat galima spausti kitą nuorodą [Pridėti objektą (tašką)], kuri JOSM redaktoriuje prideda tašką su visais objektui išoriniame šaltinyje nurodytais atributais (ši nuoroda paprastai naudojama, kai objekto apskritai dar nėra atvirame žemėlapyje).

Na ir paskutinis dalykas – parodomi objektai, kurie atitiko bendrą sąlygą (kaip kad mūsų pavyzdyje „tourism=’museum’“), bet kurie nebuvo „rasti/susieti“ nė su vienu išoriniame šaltinyje minimu objektu. T.y. randami pertekliniai objektai, kurie yra atvirame žemėlapyje, bet kurių nebuvo išoriniame šaltinyje.

Kaip panaudoti/pasinaudoti?

Išorinius LV duomenis gali teikti tiek kompanijos (duomenų savininkės), suinteresuotos savo informacijos skleidimu (kaip antai Palink teikia IKI parduotuvių informaciją), tiek ir atviro žemėlapio entuziastai, radę išorinį duomenų šaltinį, suderinę su duomenų savininkų ir konvertavę duomenis į aukščiau nurodytą xml formatą.

Duomenų teikimas gali būti statinis: xml failas kartas nuo karto pateikiamas rankiniu būdu. Gali būti ir dinaminis, kaip antai Palink atveju: yra duotas url, iš kur galima atsisiųsti pastoviai atsinaujinančius IKI parduotuvių duomenis.

Svarbiausia nepamiršti, kad išoriniai duomenys turi būti atviri: įkėlus duomenis į OpenStreetMap juos galės žiūrėti, pasiimti ir be jokio paklausimo/suderinimo bet kaip naudoti (net ir komerciniais tikslais) bet kas – tiek ne pelno, tiek ir pelno siekiančios organizacijos.

Taigi jei turite tokių išorinių duomenų – susisiekite su Lietuvos OSM bendruomene – geriausia tą padaryti per sąrašyną. Jei dalis apie išorinių duomenų susiejimą su OSM žymomis ar apie bendras/detalias užklausas pasirodė per sudėtinga – nesijaudinkite, svarbiausia yra turėti duomenis, susiejimą ir užklausas tikrai bus kam parašyti.

Share

Lankytinų vietų sinchronizavimas (I dalis)

Lankytinų vietų informacija

Tikriausiai viena išskirtinių atviro žemėlapio savybių – lankytinų vietų (toliau – LV) skaičius ir įvairovė – kavinės, restoranai, muziejai, piliakalniai, parduotuvės, istorinės vietos, bankomatai, elektromobilių įkrovimo vietos ir t.t. ir pan.

lankytinos_vietos

LV atvirame žemėlapyje atsiranda įvairiais keliais:

  • įvedamos po vieną pagal vietines žinias. T.y. kažkoks žymėtojas pamato kavinę ar muziejų ir įveda jį į atvirą žemėlapį.
  • LV informacija gauta iš išorinių šaltinių ir importuojama į žemėlapį. Gal tai degalinių ar parduotuvių informacija iš tinklo valdytojo, gal turizmo objektų informacija iš regioninio parko ir pan.

Informacijos priežiūra

Nesvarbu, kuriuo iš aukščiau išvardintų būdų lankytinos vietos beatsirastų žemėlapyje, gali iškilti kelios problemos/uždaviniai:

  • Prieš įkeliant informaciją apie LV reikia patikrinti, ar LV dar nėra įrašyta (galbūt kitu pavadinimu, su kiek kitokia informacija, kitaip klasifikuota, šiek tiek kitoje vietoje ir pan.)
  • Dėl vienų ar kitų priežasčių jau įvesta LV informacija kartais gali būti netyčia pašalinta ar kažkieno netyčia neteisingai pakeista
  • Informacija gali būti netiksli arba pasikeisti po LV įvedimo į duomenų bazę

Šias problemas teoriškai galima spręsti rankiniu informacijos peržiūrėjimu, tikrinimu ir keitimu, bet tai visiškai nepraktiška, ypač kai objektų skaičius didelis (šiuo metu Lietuvoje yra virš 30000 LV).

Sinchronizavimas

Vienas iš galimų sprendimų – dvi objektų aibės, kurios periodiškai lyginamos viena su kita. T.y. iš išorinio šaltinio gauname kažkokių objektų (tarkim piliakalnių) sąrašą (su koordinatėmis, pavadinimu, tipu ir kita informacija) – tai mūsų „išorinis šaltinis“. Tada imame informaciją apie piliakalnius iš atviro žemėlapio (irgi koordinates, pavadinimą ir kitą informaciją) ir taip gauname „OSM duomenis“. Išorinio šaltinio duomenis keičia tik išorinis šaltinis (tas, kas teikia informaciją), o OSM duomenis keičia ir tas, kas perkelia išorinius duomenis į OSM, ir visi kiti atviro žemėlapio naudotojai/žymėtojai. Tada belieka periodiškai palyginti abi šias aibes ir rasti neatitikimus:

  • objektai, kurių trūksta žemėlapyje
  • objektai, kurių trūksta išoriniame šaltinyje (gali būti, kad ir išorinio šaltinio duomenys nepilni ar pasenę)
  • objektai, kurių informacija išoriniame šaltinyje ir žemėlapyje nesutampa (koordinatės kitoje vietoje, neatitinka pavadinimas, tipas ar kita informacija)

sinchronizacija

Gavus tokią informaciją pildomi/keičiami trūkstami duomenys OSM bei siunčiama informacija išorinių duomenų tiekėjui apie netikslumus jų duomenų rinkinyje.

Ką laimime?

Vieną kartą suvedus duomenis mes galime sekti, kad tie duomenys nebūtų netyčia sugadinti. Jei duomenis žemėlapyje kažkas pakeičia, tai gali rodyti, kad:

  • LV informacija pasikeitė ir pasikeitimai dar neperkelti į išorinį šaltinį
  • Kažkas padarė klaidą keisdamas LV informaciją žemėlapyje

Pirmu atveju žinome, kad reikia informuoti pradinės informacijos tiekėją, kad jie ir savo duomenis pasikeistų (gali būti, kad reikia tiesiog atsisiųsti naują informacijos rinkinį iš pradinio tiekėjo).

Antru atveju operatyviai pataisome duomenis ir informuojame apie tai klaidą padariusį žymėtoją – paaiškiname kaip, kur, kas ir kodėl.

Taigi turime balansą tarp masinio importo ir rankinio įvedimo po vietinės apžiūros: masinis importas padeda greitai suvesti duomenis, įvedimas po vietinės apžiūros leidžia tikslinti ir prižiūrėti duomenis.

Naudą gauna tiek atviras žemėlapis, tiek ir išorinis duomenų tiekėjas:

  • Atviras žemėlapis gauna aibę duomenų, didėja bendras turimų duomenų kiekis
  • Duomenų tiekėjas gauna informaciją apie klaidas/netikslumus turimuose duomenyse, platinami išorinio tiekėjo duomenys

Kas toliau?

Tokį sinchronizavimą daryti žymiai patogiau, kai naudojama informacinė sistema. Kaip tokia sinchronizavimo sistema realizuota Lietuvoje bus aprašyta kitame įraše.

Share

100000 km kelių!

Pasiekėme apvalų skaičių – jau sužymėjome 100 000 km kelių! Sveikinimai visiems!

Skaičius gražus, bet norėtųsi žinoti, koks skirtumas nuo kitų žemėlapių, kiek dar liko ir pan.

Garmin žemėlapis „Lietuvos keliai“

Paprasčiausias būdas įvertinti pasiektą kelių ilgio rezultatą – palyginti su kokiu nors kitu žemėlapiu. Prieš pusmetį oficialiuose Garmin „Lietuvos kelių“ žemėlapiuose kelių ilgis padidėjo iki 114 000 km. Iki šio rodiklio mums trūksta 14 000 km. Dabartiniais tempais tokį ilgį pasieksime po 300 dienų.

Bendras OSM duomenų palyginimas su komerciniu Garmin žemėlapiu (raudonas – komercinis, žalias – OSM žemėlapis):

Palyginimas su Garmin žemėlapiu

Pilnumo įvertinimas be kitų šaltinių

Praėjusių metų OSM susitikime buvo įdomus pranešimas apie tai, kaip įvertinti GIS duomenų rinkinio kokybę nenaudojant jokio kito duomenų rinkinio. Vienas iš būdų – suklasifikuoti kelius: nuo svarbiausių – automagistralių iki mažiausių – miško kelių ar pėsčiųjų takų. Tada galima pažiūrėti, kurios klasifikacijos kelių ilgiai stabilizavosi, o kurių – vis dar keičiasi. Paprastai pirmiausia užpildomi svarbiausi keliai (automagistralės) ir taip palaipsniui baigiami pildyti vis mažesnio svarbumo/matomumo keliai.

Šiai dienai kelių ilgiai pagal klasifikacijas Lietuvoje pasiskirsto taip:

Kelių ilgiai pagal klasifikaciją

Taigi matome, kad jau sužymėta absoliuti dauguma pagrindinių kelių iki pat klasifikacijos „unclassified“ („unclassified“ – svarbūs keliai, kurie neturi valstybinės/oficialios klasifikacijos). Paskutinius pusę metų pagrinde pildomi tik smulkūs privažiuojamieji arba miško keliai ir takai.

Žodžiu, duomenų jau turime pakankamai, tad galime drąsiai lygintis su komerciniai žemėlapiais. Dabar pagrindinis mūsų tikslas – rinkti informaciją apie iš oro nematomus miško kelius ir takus. Sėkmės!

Share

Įvadas į JOSM

Yra daug būdų, kaip galima keisti duomenis Open Street Map vektorinių duomenų bazėje. Populiariausias – naudoti kurį nors iš OSM redaktorių. Dažniausiai pasirenkamas kuris nors iš naršyklių redaktorių (t.y. redaktorius, kuris pasileidžia naryklėje, kurio nereikia įdiegti). Anksčiau tai būdavo Potlatch, dabar – iD redaktorius. Toks pasirinkimas kaip ir aiškus: nereikia per daug galvoti, tiesiog OSM pagrindinėje svetainėje spaudi „Keisti“, įvedi pakeitimus ir viskas.

Taigi naršyklės redaktoriaus naudojimo pats didžiausias pliusas – paprastumas. Deja naršyklės redaktoriai turi ir savo minusų:

  • nepilnai veikia arba apskritai nėra įvedamų duomenų tikrinimo (funkcionalumas, kai redaktorius, prieš įrašant duomenis, patikrina pakeitimus ir praneša apie galimas klaidas)
  • nėra keitimo konfliktų sprendimo galimybės (turima omeny situacija, kai tą patį objektą vienu metu keičia keli redaguotojai)
  • kai kurie objektai rodomi nepilnai arba visai nerodomi (dėl to, padarius paprastus pakeitimus, sugadinami sudėtingesni objektai)
  • Viso redagavimo metu reikia būti prisijungus prie interneto (t.y. nėra taip vadinamo „off-line“ režimo)
  • Naršyklių redaktoriai yra žymiai lėtesni (ypač jei keičiate didesnius plotus ir/arba didesnius duomenų kiekius)

Šios problemos nėra labai svarbios, jei atliekami nedideli pakeitimai: įvedamos lankytinos vietos, gatvės pavadinimas ar stovyklavietė. Bet jei redaguojama daugiau, naršyklių redaktoriai tampa problematiškais arba patiems redaguotojams, arba tiems, kas vėliau turi taisyti likusias klaidas.

Paklausus, kodėl žmonės nenaudoja nenaršyklinių redaktorių, dažniausiai gaunamas atsakymas: „Nesuprantu, kaip jais naudotis“. Taigi pabandykime pažiūrėti, kaip naudoti populiariausią OSM nenaršyklinį redaktorių – JOSM (Java OSM editor). Šis įrašas nėra skirtas visiškai su OSM nesusipažinusiems, jis skiriamas tiems, kas jau redagavo su Potlatch ir/ar iD ir norėtų išbandyti JOSM. Taigi papasakosiu tik pagrindinius aspektus ir skirtumus nuo naršyklių redaktorių. Bendras redagavimo procesas yra toks:

  • Duomenų atsisiuntimas
  • Ortofoto įjungimas
  • Objektų keitimas
  • Žymų keitimas
  • Pakeitimų įrašymas

Duomenų atsisiuntimas

Paleidus JOSM gauname gan tuščią vaizdą:

JOSM pradžia

Jei iD/Potlatch redaktoriuose iš karto rodomi duomenys vietovės, kurią žiūrėjote žemėlapyje, ir paslinkus vaizdą į šoną automatiškai atsiunčiami nauji duomenys, JOSM reikia konkrečiai nurodyti, kurios vietos duomenis norite redaguoti (toks veikimas būtinas, jei norite keisti bent kiek didesnio ploto duomenis). Taigi, visų pirmą nurodykite, kurios srities duomenis keisite. Tam spauskite mygtuką „Download map data from OSM server“ JOSM mygtukas „atsisiųsti“. Atsidariusiame dialoge žemėlapyje nurodykite pageidaujamą sritį. Žemėlapį galite didinti/mažinti pelės ratuku, paslinkti į šonus – laikydami dešinį pelės mygtuką, na ir, laikydami kairį pelės mygtuką, galite pažymėti pageidaujamą stačiakampę sritį (beje, toks pat žemėlapio valdymas veiks ir atsiųstų duomenų srityje):

Ploto parinkimas

Nesirinkite didelės srities, ypač jei redaguojate mieste, kur ir taip labai didelė duomenų koncentracija. Kuo mažiau duomenų – tuo greičiau veiks redaktorius. Jei bandysite pasirinkti per didelį plotą – OSM serveris atsisakys duoti jums duomenis, tokiu atveju parinkite mažesnę sritį. Pasirinkę, spauskite mygtuką „Download“.

JOSM susisieks su OSM duombaze, atsisiųs duomenis ir juos parodys redaktoriuje:

Atsisiųsti duomenis

Taigi, centrinėje JOSM dalyje matote atsiųstus duomenis. Plotas, kurio duomenų nesate atsisiuntę, JOSM rodomas užbrūkšniuotas (pažymėtas raudonai šioje iliustracijoje):

JOSM dalys

Jei norėsite daryti pakeitimus už jau atsisiųsto ploto ribų – reikės tiesiog atsisiųsti papildomus duomenis (jei pamiršite atsisiųsti papildomus duomenis, JOSM jums apie tai primins).

Ortofoto įjungimas

Vienas pagrindinių skirtumų nuo naršyklinių redaktorių (kuris dažnai gąsdina žymėtojus) yra tas, kad JOSM „automatiškai“ neįjungia ortofoto fono. Visgi fonas padeda lengviau orientuotis, dėl ko pakeitimus daryti būna „ramiau“.

Norėdami įjungti ortofoto, tiesiog pasinaudokite meniu „Imagery“, kuriame rasite ir Lietuvoje naudojamą „ORT10LT (Lithuania)“. Jį pasirinkus vaizdas bus daug aiškesnis:

JOSM su Ortofoto

P.S. Plačiau apie Lietuvos ortofoto buvo rašyta anksčiau.

Objektų keitimas

Naujų objektų braižymas vyksta parinkus taškų braižymo įrankį (ieškokite įrankinėje, kairėje JOSM pusėje): Taškų braižymo įrankis. Naudodami šį vieną įrankį, galite kurti tiek taškus, tiek kelius, tiek plotus:

  • taškas – du kartus spragtelėkite pele norimoje vietoje
  • kelias – vieną kartą spragtelėkite pele kelio pradžioje ir tada „spragsėkite“ naujus taškus, kol nubraižysite visą kelią. Paskutinį tašką spragtelėkite du kartus.
  • plotas – brėžiamas analogiškai keliui, tiesiog paskutinis taškas turi būti lygus pirmam taškui (taigi „apėję“ visą plotą spragtelėkite ant pirmojo taško, nuo kurio pradėjote).

Su JOSM galite perkelti plotus, kelius, taškus, pridėti naujus taškus keliuose, sulieti kelis taškus į vieną bei iš vieno taško padaryti kelis ir t.t. ir pan. Redagavimo funkcijų yra labai daug ir dar daugiau galima gauti įsidiegus norimus priedus. Tikiu, kad šitą išsiaiškinsite patys (arba kada nors kas nors parašys kitą įrašą apie tai).

Žymų keitimas

Kita svarbi dalis yra skydeliai (aukščiau pateiktoje atsiųstų duomenų iliustracijoje jie apibrėžti mėlynai). Skydeliai rodo įvairią informaciją:

  • Rodomus sluoksnius (duomenys, gpx pėdsakai, ortofoto ir pan.)
  • Parinkto objekto žymas
  • Parinkto objekto autorius
  • Aptiktas klaidas
  • ir t.t.

Skydelių yra daug. Papildomų skydelių atsiranda įdiegus JOSM priedus ir pan. Norimus skydelius įjungti bei išjungti nenorimus galite per meniu „Windows“.

Tikriausiai svarbiausias skydelis yra žymų skydelis:

Žymų skydelis

Pažymėję objektą (ar kelis objektus), šiame skydelyje matysite objekto žymas. Galėsite pridėti naujas žymas, keisti ar naikinti esamas (spausdami atitinkamus skydelio mygtukus: „Add“, „Edit“, „Delete“).

Pakeitimų įrašymas

Galiausiai, baigę visus norimus pakeitimus, nusiųskite (įrašykite) duomenis į OSM duombazę. Tam naudokite mygtuką „Upload all changes…“ Mygtukas „Įrašyti“.

Atsidariusiame įrašymo dialoge matysite, kiek objektų sukūrėte, pakeitėte ar panaikinote. Ten įrašykite savo pakeitimo komentarą bei šaltinį, kuriuo naudojotės:

Įrašymo dialogas.

Štai ir viskas! Bendras procesas, kaip matote, panašus į naršyklinių redaktorių procesą. Tik su JOSM jūs turite kur kas platesnes galimybes, apie kurias pakalbėsime kituose įrašuose, o kol kas – padarykite savo pirmą OSM keitimą su JOSM (pavyzdžiui, nupaišykite namą kur nors užmiestyje 🙂 )!

Share