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

One thought on “Lankytinų vietų sinchronizavimas (II dalis)

  1. Pingback: Kelių numerių ir dangų lyginimas | #osm-lt

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload the CAPTCHA.