65
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA DIPLOMSKI RAD br. 924 Geoprostorni sustav objavi pretplati za obradu toka senzorskih podataka Luka Babić Zagreb, lipanj 2015.

Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

DIPLOMSKI RAD br. 924

Geoprostorni sustav objavi pretplati za

obradu toka senzorskih podataka

Luka Babić

Zagreb, lipanj 2015.

Page 2: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale
Page 3: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

Svima koji su dali svoj doprinos na mom putu prema akademskoj tituli.

Page 4: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

iv

Sadržaj

UVOD .................................................................................................................................... 1

1. OSNOVNI POJMOVI ................................................................................................... 3

1.1. Senzor, senzorske mreže i senzorska očitanja ....................................................... 3

1.2. Geolokacija ............................................................................................................ 3

1.3. GeoJSON ............................................................................................................... 4

1.4. Arhitektura klijent-poslužitelj ............................................................................... 6

1.5. Representational state transfer, REST ................................................................... 8

1.6. Komunikacija objavi-pretplati ............................................................................. 10

1.7. Mobilna aplikacija ............................................................................................... 11

2. OPIS PROBLEMA I ZAHTJEVA .............................................................................. 13

2.1. Opis problema ..................................................................................................... 13

2.2. Dodavanje konverzije .......................................................................................... 13

2.3. Vrste mjerenja i mjerne jedinice .......................................................................... 15

2.4. Dodavanje pretplate ............................................................................................. 15

2.5. Objava senzorskih očitanja .................................................................................. 16

2.6. Algoritam pretrage pretplata za pristigle objave ................................................. 18

2.7. Prosljeđivanje objave pretplatnicima................................................................... 20

3. IMPLEMENTACIJA .................................................................................................. 21

3.1. Java EE ................................................................................................................ 21

3.2. HTTP i REST sučelje .......................................................................................... 22

3.2.1. Dodavanje konverzije .................................................................................. 23

3.2.2. Dodavanje pretplate ..................................................................................... 25

3.2.3. Objava senzorskih očitanja .......................................................................... 27

3.2.4. Brisanje pretplata ......................................................................................... 29

3.2.5. Lista konverzija ........................................................................................... 30

Page 5: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

v

3.2.6. Lista tipova senzora ..................................................................................... 31

3.2.7. Resetiranje poslužitelja ................................................................................ 32

3.3. Geotools i JTS ..................................................................................................... 33

3.4. Mehanizam obaviješćivanja korisnika................................................................. 35

3.4.1. Usluga Google Cloud Messaging ................................................................ 36

3.5. Mobilni uređaj kao senzor i aplikacija kao klijent .............................................. 37

3.5.1. Opis upotrebe aplikacije .............................................................................. 38

4. TESTIRANJE SUSTAVA I REZULTATI ................................................................. 44

4.1. Program za testiranje ........................................................................................... 45

4.1.1. Generiranje pretplata i objava ..................................................................... 45

4.1.2. Konzolni način rada ..................................................................................... 46

4.1.3. Testni način rada .......................................................................................... 47

4.2. Rezultati testiranja ............................................................................................... 50

4.3. Diskusija rezultata ............................................................................................... 56

ZAKLJUČAK ...................................................................................................................... 57

LITERATURA .................................................................................................................... 58

SAŽETAK ........................................................................................................................... 59

SUMMARY ........................................................................................................................ 60

Page 6: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

1

UVOD

Današnji napredak tehnologije vidljiv je u mnogim područjima svakodnevnog

života. Napredak je primjenjiv kroz ostvarenje novih funkcionalnosti koje prije nisu bile

ostvarive kao i korištenje određenih rješenja u širem opsegu, zbog cjenovne pristupačnosti

uzrokovane napretkom tehnologije. Kao jedan primjer funkcionalnosti može se spomenuti

globalna mreža Internet. Internet je od svog nastanka, od mreže koja je povezivala svega

nekoliko računala evoluirao do razine da danas umrežava nekoliko milijardi uređaja na

svijetu. Kao posljedica takvog napretka, danas je razmjena informacija lakša i brža nego

prije. S druge strane, tehnološki napredak u svrhu smanjenja troškova proizvoda vidljiv je

u senzorskoj tehnologiji i mobilnim mrežama. Danas su senzorske jedinice koje mjere

zadanu veličinu, (npr. vlagu, temperaturu, buku) cjenovno pristupačnije nego prije.

Također posjeduju napredne mogućnosti poput komunikacije s ostalim senzorima ili

centralnim senzorskim čvorom, što im omogućuje prosljeđivanje izmjerenih veličina

zainteresiranim stranama. Tehnologije mobilnog pristupa Internetu donijele su mogućnost

povezivanja na Internet bez postojanja direktne žične infrastrukture između interesnih

skupina. Korist mobilnog pristupa može biti vidljiva u korištenju senzora i senzorskih

mreža koje su pozicionirane na udaljenim lokacijama s kojih se prikupljene informacije

prenose mobilnom mrežom. Prosljeđivanje informacija ostvaruje se povezivanjem senzora

u Internet stvari (Internet of Things), odnosno omogućavanjem pristupa globalnoj

internetskoj mreži temeljenoj na protokolu IP. Ako se uzme u obzir cjenovna pristupačnost

rješenja koje bi se na taj način moglo biti korišteno, kao i učestalost korištenja takvih

rješenja, postoji mogućnost izrade sustava koji bi mogli dohvaćati senzorske podatke i

prosljeđivati ih zainteresiranim stranama. Jedan od glavnih izazova koje treba riješiti je

omogućiti brzo i efikasno (što podrazumijeva razumno korištenje dostupnih resursa)

dostavljanje izmjerenih podataka stranama koje iskazuju interes za tim podacima. Također,

dobiveni senzorski podaci osim vrijednosti mjerene veličine najčešće uključuju i

geolokacijsku komponentu, koja ukazuje gdje je očitanje provedeno. Geolokacijska

komponenta može biti jedan od uvjeta na temelju kojeg zainteresirane strane mogu

definirati imaju li ili nemaju interes za određenim očitanjem.

Cilj ovog diplomskog rada je osmisliti, izraditi i testirati sustav koji omogućava definiranje

pretplata temeljenih na zadanim parametrima, prosljeđivanje objava zainteresiranim

Page 7: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

2

pretplatnicima i definiranje novih vrsta očitanja kao i pripadajućih mjernih jedinica za koje

se mogu definirati pretplate.

U prvom dijelu biti će objašnjeni osnovni pojmovi potrebni za razumijevanje rada. Drugi

dio opisuje razradu problema. Treći dio donosi detalje implementacije sustava. Četvrti dio

opisuje proces pripreme podataka za testiranje, prikazuje rezultate testova te daje osvrt na

njih.

Page 8: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

3

1. OSNOVNI POJMOVI

1.1. Senzor, senzorske mreže i senzorska očitanja

Senzor predstavlja uređaj koji ima mogućnost mjerenja određene karakteristika

stvarnog svijeta. Senzori se primjenjuju u mnoge svrhe, primjerice vojne, promatranje

okoliša, nadgledanje vremenskih nepogoda, prostorno istraživanje. Mehanizam koji je

temelj djelovanja senzora je detektiranje određenih događaja ili promjene u kvantiteti

promatranog svojstva, što za posljedicu ima odašiljanje električnog ili optičkog signala.

Valja napomenuti da ne odašilju svi senzori električni ili optički signal uslijed detekcije

svojstava okoline. Primjerice, barometar mehaničkom akcijom (pomicanjem kazaljke) na

vidljiv način pokazuje vrijednost izmjerenog tlaka zraka. Međutim, u ovom radu pod

pojmom „senzor“ pozornost ostaje na onim uređajima koji su kao rezultat očitanja

mjerenja u mogućnosti proizvesti signal koji se može koristiti u elektroničkoj obradi.

Senzorska mreža je računalno dostupni resurs velikog broja međusobno povezanih uređaja

koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim

lokacijama. Senzorske mreže postale su dostupne uslijed zadovoljavanja određenih uvjeta

koji su kako slijede; dostupnosti velikog broja jeftinih, pametnih i dimenzijama skromnih

senzora, brzih i sveprisutnih uređaja za obradu informacija te bežičnih komunikacijskih

mreža.

U kontekstu ovog rada od iznimne je važnosti geolokacija senzorskog očitanja, jer je u

praktičnim primjenama osim vrijednosti očitanja veoma korisno znati i lokaciju gdje se

očitanje dogodilo. Primjerice, ako se radi senzor za detektiranje izljeva nafte u more, u

slučaju nesreće odgovorne službe mogu znati točnu lokaciju gdje treba reagirati.

1.2. Geolokacija

Pojam geolokacija označava lokaciju objekta u dvodimenzionalnom koordinatnom

sustavu koji predstavlja Zemljinu površinu. Geolociranje kao pojam uključuje proces ili

mogućnost određivanja točne lokacije navedenih objekata, kao i vrijednost dobivene

lokacije. U uskoj je vezi s korištenjem sustava za globalno utvrđivanje pozicije, uz

korištenje globalnih pozicijskih satelita (Global Positioning Satellite, GPS). Međutim,

Page 9: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

4

često naglasak nije samo na dobivanju koordinata u prostoru, nego i na dobivanju lokacije

koja ima razumljivo značenje korisniku, primjerice određivanje ulice i kućnog broja.

Postoji nekoliko načina za utvrđivanje točne ili približne lokacije zadanog objekta:

Lociranje objekta korištenjem globalnog pozicijskih satelita

Lociranje uz pomoć radio-frekvencijskog spektra

U drugoj metodi, koriste se informacije iz obližnjih baznih stanica, te se uz pomoć

triangulacije približno određuje lokacija subjekta. Triangulacija je proces određivanja

lokacije točke u prostoru mjereći kut između dvije krajnje točke neke dužine, umjesto

direktnog mjerenja udaljenosti između zadane točke i rubova dužine.

1.3. GeoJSON

Postavlja se pitanje na koji način prikazati određenu dvodimenzionalnu

geometrijsku strukturu u prostoru. Također je problem valjan zapis lokacija zbog

projekcije karata [2]. Za potrebe ovog rada, koristi se već općeprihvaćena specifikacija

GeoJSON za prikaz raznih geografskih struktura pa se u ovom poglavlju opisuju

standardni elementi koji mogu biti korišteni prilikom definiranja spomenutih struktura.

GeoJSON je tekstualni format za prikaz jednostavnih geoprostornih podataka, temeljen na

formatu JSON (JavaScript Object Notation). Trenutna revizija formata je 1.0, s datumom

objave 16. lipnja 2008. Temeljni element na kojem se zasniva format je koordinata

(coordinate) koja je predstavljena poljem brojeva kojih ima dva u slučaju da se radi o

dvodimenzionalnom prostoru. Prvi broj predstavlja x koordinatu, a drugi broj y

koordinatu. Format podržava kodiranje raznih vrsta geografskih struktura, kao što su:

geometrija (geometry), oblik (feature) ili skupina oblika (feature collection). Geometrija

predstavlja oblik (shape) kao takav i ne sadrži nikakve dodatne informacije. Svaka

geometrija u GeoJSON zapisu predstavljena je sa ključevima tip (type) i koordinate

(coordinates), gdje su koordinate točke koje određuju pojedinu geometriju. Geometrija

sama za sebe ne sadrži dovoljno korisnih informacija, jer objekti u stvarnom prostoru često

imaju dodatne atribute koji ih pobliže opisuju. Iz tog razloga definira se oblik (feature),

struktura koja omogućava definiranje dodatnih atributa u formatu ključ ->

vrijednost. Svaki oblik sadrži tri obavezna ključa, tip (type), geometriju (geometry) i

Page 10: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

5

dodatna svojstva (properties). Kolekcija oblika (feature collection) je struktura koja pod

ključem type ima vrijednost „featurecollection“ i dodatno definira skupinu oblika

(feature).

Za svaki GSON objekt nužno je definirati tip geometrije pod ključem type, a mogući

tipovi su:

točka (Point)

linija (LineString)

poligon (Polygon)

skup točaka (Multipoint)

skup linija (MultiLine)

skup poligona (MultiPoligon)

skup geometrija (GeometryCollection).

Točka – geometrija koja je predstavljena samo jednom koordinatom, koja predstavlja točku

u koordinatnom sustavu.

Linija – predstavljena nizom koordinata čija je duljina najmanje dva. Kod linije potrebno je

spomenuti i prsten-liniju (LineRing) koja sama po sebi nije geometrija, ali se koristi kod

definiranja poligona. Prsten-linija je vrsta linije koja sadrži minimalno četiri koordinate te

su prva i posljednja koordinata jednake.

Poligon – geometrija predstavljena nizom „prsten-linija“. Ukoliko jedan poligon sadrži

više prstenova, utoliko prvi prsten mora obuhvaćati sve ostale u tom poligonu.

Skup točaka – geometrija predstavljena nizom koordinata. Može se primijetiti kako je

„točka“, specijalan slučaj „niza točaka“, gdje je duljina niza koordinata jednaka jedan.

Skup linija – geometrija koja sadrži niz „linija“.

Skup poligona – geometrija čiji član coordinates sadrži niz poligona.

Skup geometrija – geometrijski objekt koji predstavlja kolekciju geometrijskih objekata.

Obavezni član mora biti „geometries“, čija je vrijednost niz geometrija definiranih kao

GeoJSON geometrijski objekt.

Dodatno uz geometriju, moguće je dodati proizvoljan broj parametara u obliku ključ

vrijednost.

Page 11: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

6

Granični okvir (bounding box) je dodatna informacija o geometriji koju nije obavezno

uključiti u geometriju. Vrijednost graničnog okvira je niz duljine 2*n, gdje je n broj

dimenzija koje su predstavljene geometrijom. Za svaku os u prostoru navodi se prvo

najmanja, a potom najveća vrijednost. Poredak osi odgovara onom kojim su navedene

vrijednosti u geometrijama. Za referentni koordinatni sustav graničnog okvira pretpostavlja

se da odgovara referentnom koordinatnom sustavu GeoJSON objekta kojem pripada.

Primjer jednog valjanog GeoJSON objekta:

1.4. Arhitektura klijent-poslužitelj

Za sustav korišten u praksi, odnosno znanstvenim istraživanjima senzorskih

očitanja, od važnosti je mogućnost pristupa spremljenim podatcima. Za ispunjavanje

navedenih zahtjeva je prikladna arhitektura klijent-poslužitelj, gdje je klijent sudionik koji

pohranjuje i dohvaća senzorska očitanja, a poslužitelj sudionik koji zatražene informacije

čini dostupnima klijentu.

Arhitektura klijent-poslužitelj raspoznaje dva entiteta: klijenta i poslužitelja. Klijent je

sudionik koji traži uslugu od drugog sudionika - poslužitelja. S druge strane, poslužitelj

pruža dotičnu uslugu većem broju klijenata istovremeno. Komunikacija se odvija putem

poruka odnosno zahtjeva, koji se šalju od klijenta prema poslužitelju. Poslužitelj zaprima

zahtjev i ako ima slobodne resurse na raspolaganju kreće u obradu zahtjeva, u suprotnom

{

"type": "Feature",

"geometry": {

"type": "Point",

"coordinates": [125.6, 10.1]

},

"properties": {

"ime": "GeoJSON objekt"

}

}

Page 12: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

7

zahtjev se stavlja u red čekanja te biva obrađen kada uvjeti na poslužitelju to dopuste.

Rezultat obrade zahtjeva je slanje odgovora od poslužitelja prema klijentu.

U sustavu za pretplaćivanje na senzorske objave i objavu senzorskih mjerenja razlikujemo

dva tipa klijenta, pretplatnike i objavljivače, koji imaju različite uloge. Međutim, u obliku

komunikacije između poslužitelja nema razlike u pristupu, taj dio je u potpunosti

transparentan.

Postoje varijacije dvoredne arhitekture, čija je razlika u količini posla koji se odrađuje na

klijentu. Razlikujemo arhitekturu s tankim klijentom i debelim klijentom. Tanki klijent na

svojoj strani izvršava jedino korisničko sučelje, dok se na strani poslužitelja izvršavaju

klijentski primjenski program, poslužiteljski primjenski program i baza podataka. U

slučaju debelog klijenta, klijentski primjenski program se ne izvršava na poslužitelju već

na klijentu. Za klijenta u razvijanom sustavu koji ima ulogu pretplatnika, može se smatrati

razmjerno tankim klijentom. Obrađenim podatcima sa poslužitelja on pristupa putem

korisničkog sučelja na mobilnoj aplikaciji i po potrebi šalje podatke poput novih

konverzija na poslužitelj. Senzorski uređaj se u potpunosti može smatrati tankim klijentom.

Izostanak korisničkog sučelja i činjenica da ne obrađuje podatke, već samo izmjerene

veličine objavljuje na poslužitelju, argument su za doneseni zaključak. Dodatno, uz

dvorednu arhitekturu opisanu u dosadašnjem dijelu poglavlja postoji i troredna arhitektura

klijent poslužitelj, Troredna arhitektura, uz klijenta i poslužitelja još ima izdvojenu bazu

podataka, koja komunicira jedino s poslužiteljem. Najčešće se troslojna arhitektura ili

općenito višeslojna arhitektura klijent poslužitelj koristi kako bi se omogućio neovisan

razvoj svake komponente u sustavu. Za mogućnost pohrane senzorskih očitanja, bolja je

troredna arhitektura klijent-poslužitelj, koja se može koristiti i za pretplaćivanje na

senzorska očitanja. Ipak, sustav koji se razvija u ovom radu kao spremište pretplata koristi

radnu memoriju te baza podataka nije prisutna. Razvijani sustav smatra se dvorednom

arhitekturom klijent-poslužitelj te nema predviđenu objavljenih senzorskih mjerenja, već se

radi o sustavu koji prosljeđuje pristigle objave do zainteresiranih sudionika u što kraćem

roku.

Page 13: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

8

1.5. Representational state transfer, REST

REST je stil arhitekture za raspodijeljene sustave formalno definiran kao niz

ograničenja i dobrih praksi koje je potrebno poštovati prilikom izgradnje sustava. Pozitivan

rezultat koji se ostvaruje poštivanjem navedenih pravila je skup nefunkcijskih obilježja,

navedenih kasnije ovom poglavlju. Izgradnja pristupnih sučelja u razvijanom sustavu ima

dvije namjene; omogućiti objavu senzorskih očitanja na poslužitelj kao i pristup

spremljenim podatcima. Postojeće implementacije arhitekture REST tvore slabo povezane,

skalabilne i brze sustave, koji se mogu nastaviti nadograđivati bez gubljenja željenih

svojstava. Termin „slaba povezanost“ (loosely coupled) ovdje ne označava sporu razmjenu

informacija ili poteškoće u komunikaciji, već označava skrivanje implementacije

određenog procesa na nekom poslužitelju. Stoga, uslijed promjene u implementaciji, drugi

poslužitelji ne moraju raditi izmjene prilikom pristupanja dotičnom poslužitelju na kojem

su se dogodile izmjene. Ova karakteristika omogućava nadogradnju dijela sustava ili

dodavanja novih sudionika u proces bez da to uzrokuje promjene na postojećem dijelu

sustava, čime sustav koji se razvija u ovom radu može biti proširen dodatnim

funkcionalnostima ako se za to ukaže potreba.

REST je stekao popularnost jer je proces implementacije jednostavniji nego primjerice kod

protokola SOAP (Simple Object Access Protocol) ili protokola WSDL (Web Services

Desrciption Language). Za komunikaciju prilikom ostvarenja REST aplikacije najčešće se

koristi protokol za prijenos hiperteksta HTTP (Hyper Text Transfer Protocol). REST se

temelji na identifikaciji resursa, koristeći univerzalni identifikator – URI (Uniform

Resource Identifier). Spomenimo da je URI niz znakova koji se koristi za identificiranje

resursa, a najčešće se koristi na WEB-u.

Zahtjevi koje je potrebno ispuniti kako bi neki sustav bio kvalificiran kao REST

kompatibilan su:

klijent-poslužitelj – homogeno sučelje (uniform interface) odvaja klijente od

poslužitelja. Raspodjela odgovornosti, koja je bitna za komunikaciju između dva

sudionika u procesu, znači da se klijent ne brine o primjerice o procesu trajnog

spremanja podataka na poslužitelju, već je to isključivo odgovornost poslužitelja.

Također, nije odgovornost poslužitelja kako izgleda korisničko sučelje na klijentu

ili koje je trenutno stanje na klijentu već je to isključivo odgovornost klijenta. U

Page 14: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

9

kontekstu mobilne aplikacije to bi znači da je odgovornost iste imati spremljene

informacije o primjerice vlastitom identifikatoru.

Bez očuvanja stanja (stateless) – komunikacija između klijenta i poslužitelja odvija

se u potpunosti bez pohrane trenutnog stanja klijenta na poslužitelju. Cilj je

prilikom svakog zahtjeva klijenta dostaviti sve potrebne informacije o svom stanju

kako bi poslužitelj mogao uspješno izvršiti zahtjev, a odgovornost je klijenta da

pohrani stanje trenutne sjednice. Ovaj zahtjev odnosi se primjerice na senzorske

uređaje koji prilikom svakog objavljivanja novih očitanja trebaju uključiti sve

nužne informacije o sebi.

Predmemorija (cache) – u sustavima kompatibilnima s REST-om, klijentima je

omogućeno kratkotrajno spremanje obrađenih zahtjeva. Kako bi to bilo moguće,

odgovori koji su dobiveni potrebno je označiti kao one koje je moguće kratkotrajno

spremiti ili ne (cacheable). Posljedica kvalitetno izbalansiranog sustava koji koristi

predmemoriju je mogućnost potpune eliminacije određenih zahtjeva prema

poslužitelju, čime se dodatno poboljšava skalabilnost i efikasnost sustava.

Slojevit sustav – klijent ne može razaznati je li spojen direktno na poslužitelj sa

kojeg želi dohvatiti podatke ili je prilikom dohvata zahtjev preusmjeren na nekoliko

poslužitelja u lancu obrade zahtjeva.

Homogeno sučelje je još jedan od temeljnih zahtjeva arhitekture REST koji

pojednostavljuje i razdvaja arhitekturu te omogućava da se dijelovi sustava razvijaju

neovisno jedan o drugome. Zahtjevi koje je potrebno ispuniti kako bi sučelje bilo

homogeno su:

Identifikacija resursa neovisno o njihovoj stvarnoj reprezentaciji

Izmjena resursa koristeći dotične reprezentacije

Hipermedij kao sredstvo predstavljanja stanja aplikacije

Page 15: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

10

1.6. Komunikacija objavi-pretplati

Prilikom dizajniranja sustava, u što spada i komunikacija između sudionika, trebalo

je uzeti u obzir kako će sustav biti korišten i kojim će intenzitetom informacije biti

prosljeđivane između sudionika. Ispostavlja se da je model komunikacije objavi-pretplati

gotovo idealna paradigma za stvarnovremenski dohvat podataka za koje nije moguće

predvidjeti kada će biti dostupni. Upravo je takva priroda senzorskih očitanja u sustavu

koji se razvija te se u skladu s tim komunikacija prilagođava toj paradigmi.

Model komunikacije objavi-pretplati zasniva se na asinkronoj komunikaciji između

objavljivača (publishers) i pretplatnika (subscribers). Pretplatnici definiraju svoje interese

za informacijama u obliku pretplata, gdje imaju mogućnost specificirati koje vrste

informacija žele i u kojem slučaju dobivati. Objavljivači s druge strane, imaju mogućnost

definirati strukturu i sadržaj poruka koje žele objaviti u sustavu, kao atributne vrijednosti u

obliku ključ -> vrijednost. U daljnjem tekstu pobliže se objašnjavaju načini na

koje je moguće definirati pretplate i koje je dodatne uvjete moguće postaviti za svaku

pretplatu. Sustav objavi pretplati izlaže tri akcije kojima je moguće sudjelovati u sustav.

Dvije se odnose na pretplatnike, a jedna na objavljivače. Pretplatnik kao sudionik u sustavu

ima mogućnost definiranje pretplate i postavljanje iste u sustav. Iako se akcija sastoji od

dva koraka, promatramo ju kao cjelinu. Druga akcija koju može izvršiti pretplatnik je

odjava pretplate iz sustava. Kao posljedicu, pretplatnik nakon tog trenutka više neće

primati objave koje bi eventualno odgovarale pretplati koju je definirao.

Za definiranje pretplata koriste se četiri različita modela, a to su kako slijedi:

Pretplate temeljena na kanalima (channel based)

Pretplate temeljena na temama (topic based)

Pretplate temeljena na tipu (type based)

Pretplate temeljena na sadržaju (content based)

Dva najčešća načina definiranja pretplata su pretplate bazirane na temama i sadržaju

[3]. Kod prve vrste pretplata, sustav definira skup tema po kojima su objave kategorizirane.

Objavljivači u skladu s time imaju mogućnost stvoriti objavu te joj pridijeliti pripadnost

određenoj temi dodjeljivanjem tekstualne oznake ili identifikatora koji se odnosi na

dotičnu temu. Drugi najčešće korišten tip su pretplate bazirane na sadržaju i smatraju se

najopćenitijim vrstama pretplate. Osim što pretplatnik ima mogućnost definirati područje

Page 16: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

11

interesa u obliku teme, dodatno može detaljno odrediti koje ga točno vrijednosti sadržaja

zanimaju. Primjerice, korisnik može definirati da ga zanimaju objave na temu

„koncentracija CO2 u atmosferi“, a dodatno ima mogućnost u pretplati temeljenoj na

sadržaju definirati i koje ga vrijednosti dotičnog parametra zanimaju. Takve pretplate

sadrže predikate kojima se uz pomoć imena atributa i operatora usporedbe (=, <, >, <=, >=)

definira područje interesa. Iz navedenog razloga, smatra se da su pretplate bazirane na

temama specijalan slučaj pretplata baziranih na sadržaju. Treći sudionik, uz objavljivače i

pretplatnike je sam sustav za obradu (middleware).

Arhitektura objavi-preplati sustava može biti izvedena centralizirano ili raspodijeljeno [4].

Bez obzira na to koja se izvedba koristi, bitno je za napomenuti da je proces zaprimanja,

filtriranja i dostavljanja objava pretplatnicima u potpunosti transparentan i za objavljivače i

za pretplatnike. Ni u kojem trenutnu objavljivači ne komuniciraju direktno s

pretplatnicima, niti pretplatnici posjeduju točnu informaciju o tome tko je objavio

pretplatu. Međutim za potrebe ovog rada potrebno je u sadržaj objave uključiti

identifikator objavljivača, iako se na ovaj način gubi anonimnost klijenta koji je proizveo

očitanje. Tako pretplatnik može provesti daljnje akcije koristeći spomenuti identifikator.

Mehanizam prosljeđivanja objava različit je za centraliziran i raspodijeljen sustav, pri

čemu efikasna implementacija raspodijeljenog sustava ovisi o izboru algoritma za

prosljeđivanje objava. U daljnjem radu koristi se centralizirana arhitektura sustava objavi

pretplati, ali se zainteresirani čitatelj može detaljnije informirati o implementaciji

raspodijeljenog sustava u [4].

1.7. Mobilna aplikacija

Pametni telefoni (smartphones) danas su postali široko dostupni te svakim danom

imaju sve više mogućnosti. Postalo je uobičajeno da uređaji u sebi imaju ugrađeno

nekoliko senzora kojima mogu mjeriti odabrani parametar u okolini, a samo dodavanje

novih senzora na uređaj danas ne predstavlja problem. Korisnici ih često imaju uz sebe pa

mogu služiti kao generatori senzorskih očitanja, s naglaskom na njihovu pokretljivost. Iz

istog razloga, opravdano je razvijati mobilne aplikacije kojima bi korisnik imao mogućnost

dobivanja informacija o senzorskim očitanjima koja ga interesiraju.

Mobilna aplikacija je računalni program koji je namijenjen pokretanju na pametnim

telefonima, tabletima (tablet computers) i ostalim mobilnim uređajima. Mobilne aplikacije

Page 17: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

12

se u većini slučajeva razvijaju u programskim alatima koji su namijenjeni točno za

određenu platformu. Postoje međutim i programska okruženja koja omogućavaju razvoj

mobilne aplikacije u samo jednom programskom jeziku, a koja se potom može

pojedinačno razviti (deploy) za platformu po želji. U 2015. godini prema [4] su

najzastupljenije mobilne platforme, poredane po popularnosti su: Android (78%), iOS

(18%), Windows Phone (2.7%) i BlackBerry OS (0.3%).

Današnji mobilni uređaji posjeduju mogućnosti koje prije nisu bile izvedive ili uobičajene.

Ipak, brz pristup Internetu i mogućnost geolokacijskog pozicioniranja mobilnog uređaja u

prostoru je funkcionalnost koja je svakodnevna pojava.

Page 18: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

13

2. OPIS PROBLEMA I ZAHTJEVA

2.1. Opis problema

Cilj ovog diplomskog rada je bio razviti sustav objavi-pretplati u kojem pretplate

mogu biti definirane kao geoprostorni objekti (linije, točke, poligoni) koje dodatno

specificiraju atributna svojstva za sužavanje područja interesa.

U ovom sustavu, korisnik ima mogućnost definirati nove vrste mjerenja, mjerne jedinice za

različite tipove mjerenja i formule za konverziju iz jedne mjerne jedinice u neku prethodno

već definiranu. Postojanje konverzija između mjernih jedinica pridonosi fleksibilnosti

sustava. Primjerice, omogućuje da senzorska očitanja u jednoj mjernoj jedinici dostupnoj

za taj tip mjerenja, budu proslijeđene onim pretplatama čija je mjerna jedinica drugačija od

mjerne jedinice objave. Naravno, samo ako postoji preklapanje u vrijednostima atributnih

komponenti objave i pretplate nakon konverzije u istu mjernu jedinicu.

2.2. Dodavanje konverzije

U sustavu je bilo potrebno osigurati dodavanje tipova mjerenja, mjernih jedinica i

formula za konverziju između mjernih jedinica. Prvo je bilo potrebno utvrditi koji su sve

podatci potrebni za potpuno definiranje konverzije. Zbog praktičnih razloga, resurs

konverzije je definiran kao niz ključ -> vrijednost atributa, pri čemu u nastavku

teksta navodimo ključeve unutar resursa. Svaka konverzija pripada određenoj vrsti

mjerenja, npr. temperaturi, koncentraciji plina u zraku, buci i slično. Prilikom definiranja

konverzije potrebno definirati tip mjerenja kojemu konverzija pripada. Stoga prvi ključ u

resursu u kojem definiramo konverziju je vrstaOcitanja. Nakon što je definirana

vrsta očitanja kojoj konverzija pripada, potrebno je odrediti izvorišnu mjernu jedinicu.

Drugi ključ u resursu koji definira konverziju je izMjerneJedinice. Nakon definirane

izvorišne mjerne jedinice, definira se i odredišna mjerna jedinica za određenu konverziju.

Dodajemo i treći ključ, uMjernuJedinicu. Kako bi resurs s kojim definiramo

konverziju bio potpun još nam nedostaje matematička formula koja opisuje odnos

odredišne mjerne jedinice i izvorišne. Treba imati na umu ograničenja programske

implementacije ovog dijela sustava, stoga je format formule takav da sadrži jednu

Page 19: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

14

varijablu, koja mora biti vrijednost izvorišne mjerne jedinice i standardni matematički izraz

kojim se opisuje ovisnost odredišne mjerne jedinice o izvorišnoj. Stoga formula

predstavlja četvrti ključ resursa za definiranje konverzije.

Konačno, izgled resursa za definiranje konverzije je sljedeći:

Za ogledni primjer su stavljene vrijednosti „X“, „Y“, „Z“ i „formula za izračun“, ali se

podrazumijeva da će u stvarnoj primjeni umjesto tih biti neke smislene vrijednosti za

realne vrste mjerenja i mjerne jedinice.

Uz definirani format poruke, uvodi se i ograničenje u ponašanju prilikom dodavanja

konverzije. Ako se konverzija dodaje prvi put, ne postoji nikakvo posebno ograničenje za

dotični slučaj. Konverzija se sprema u sustav, pri čemu vrstaOcitanja,

izMjerneJedinice i uMjernuJedinicu jedinstveno određuju član formula.

Ovaj odnos između elemenata konverzije dolazi do izražaja u sljedećem slučaju. Ukoliko

se na sustavu doda nova konverzija i već postoji za dotičnu kombinaciju triju parametara,

utoliko se stara konverzija uklanja iz sustava te ju nova zamjenjuje.

Pseudokod opisanog postupka dodavanja konverzije:

„vrstaOcitanja“

„izMjerneJedinice“

„uMjernuJedinicu“

„formula“

Dobivene podatke pripremi za obradu na poslužitelju;

U spremištu konverzija provjeri postoji li konverzija definirana sa

vrijednostima identičnim onima dobivenima u prihavećenom zahtjevu na

poslužitelju, prilikom čega se formula ne uspoređuje;

Ako (postoji konverzija) {

Izbriši pronađenu konverziju;

}

U spremište konverzija dodaj novu konverziju zaprimljenu u zahtjevu;

Page 20: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

15

2.3. Vrste mjerenja i mjerne jedinice

Može se primijetiti kako do sada nije bio specificiran način kako se dodaju nove

vrste mjerenja u sustav kao i mjerne jedinice. Međutim, prilikom razrade problema

primjećeno je kako ne postoji potreba za takvom akcijom. Vrste mjerenja i mjerne jedinice

implicitno se dodaju prilikom prethodno opisanog koraka, odnosno dodavanja konverzija.

Točnije, nakon što se konverzija doda u sustav, informacije o vrsti mjerenja i mjernim

jedinicama izvuku se iz resursa konverzije te se potom pohranjuju u sustav u repozitorij

vrsta mjerenja i mjernih jedinica.

2.4. Dodavanje pretplate

Nakon što je dovršen proces dodavanja konverzija, sljedeći korak koji je bilo

potrebno definirati je dodavanje pretplata od strane pretplatnika koji može biti bilo koji

subjekt koji ima interes za rezultate dostupnih senzorskih mjerenja. Uz standardne

atributne komponente pretplate koje se definiraju, za potrebe ovog sustava nužno je bilo

definirati i prostornu komponentu koja će biti element pretplate. Uloga prostornog

elementa pretplate je ograničiti interes pretplatnika na točno određeno geografsko područje

interesa, što ne bi bilo moguće koristeći standardne pretplate opisane u poglavlju 1.6. Jedan

od zahtjeva prilikom zadavanja zadatka je korištenje GeoJSON specifikacije za definiranje

prostornih oblika pa se koriste svi oblici definirani specifikacijom.

Kao i prilikom definiranje resursa za konverziju, elementi pretplate navodit će se u obliku

ključ -> vrijednost. Primarni element koji svakako treba biti uključen u resurs

preplate je identifikator pretplatnika. Pretplata kao takva ne bi imala smisla bez ovog

identifikatora jer u slučaju objave koja preklapa dotičnu pretplatu ne bi bilo moguće na

jedinstven način utvrditi kojem korisniku treba proslijediti objavu. Prvi ključ koji se

uključuje u pretplatu je id. Sljedeći ključ koji je potrebno definirati je vrsta mjerenja za

koju je korisnik zainteresiran, stoga drugi ključ koji se dodaje u pretplatu je

vrstaOcitanja. Pretplata treba sadržavati i mjernu jedinicu za koju je definiran

interval vrijednosti od interesa, koji je definiran u nastavku. Na temelju mjerne jedinice, u

procesu pretraživanja pretplata koje preklapaju senzorsku objavu može se odrediti je li

potrebno izvršiti konverziju vrijednosti objave ili mjerna jedinice objave odgovara mjernoj

jedinici pretplate. Treći ključ koji se dodaje u resurs pretplate je jedinicaOcitanja.

Page 21: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

16

Zadnje dvije atributne komponente koje je potrebno definirati su donja i gornja granica

vrijednosti parametra za koji se objavljuje pretplata. S ova dva parametra se zapravo

definira predikat koristeći relacije „<=“ i „>=“. Preklapanje će se ostvariti ako vrijednost

objave bude veća ili jednaka od donje granice i manja ili jednaka od gornje granice. Četvrti

i peti ključ koji dodajemo u pretplatu su intervalDonji i intervalGornji.

Posljednji ključ pretplate koji treba uključiti je geometrija koja definira prostor na

kojemu postoji interes za senzorskim mjerenjima. Posljednji ključ koji se dodaje u resurs

pretplate je geometrija.

Kao rezultat dodavanja pretplate u sustava potrebno je pretplatniku vratiti povratnu

informaciju o uspješnosti postupka. Ovaj dio će biti detaljnije opisan u poglavlju 3.

2.5. Objava senzorskih očitanja

Sljedeći mehanizam koji je bilo potrebno specificirati je objava mjerenja od strane

objavljivača, što su u ovom slučaju senzori i senzorska mjerenja koja oni generiraju. Kao i

u slučaju pretplate, trebalo je definirati potrebne podatke koja svaka senzorska objava mora

sadržavati kako bi bilo moguće pronaći pretplate koje imaju definiran interes za pojedino

senzorsko očitanje.

Kako bi se senzor koji objavljuje podatke moglo identificirati na jedinstven način,

potrebno je uključiti identifikator senzora u objavu. Prvi član u resursu objave stoga je

ključ identifikatorSenzora. Objava od strane senzora dogodila se u određenom

vremenskom trenutku, stoga je razumno dodati u resurs objave vrijeme kada se dogodila.

Dodaje se drugi ključ kao resurs objave, vrijemeOcitanja. Lako je moguće određeni

fenomen mjeriti na više načina, odnosno različitim modelima senzora. U resurs objave

uključuje se i tipSenzora, odnosno oznaka koja pretplatniku pruža dodatnu informaciju

o tome koje su karakteristike senzora koji je stvorio objavu. Dakako, karakteristike nisu

uključene u navedeni ključ, međutim koristeći vrijednost ključa tipSenzora, pretplatnik

može saznati tražene informacije o senzoru. Primjerice minimalni interval očitanja,

preciznost i slično. Svaki senzor mjeri određenu pojavu, što je zapravo vrsta očitanja. Za

proces filtriranja pretplata, objava treba definirati i što je točno izmjereno, koja fizikalna ili

neka druga veličina. Sljedeći ključ koji je dodan u resurs objave je vrstaOcitanja.

Zbog zahtjeva sustava, koji omogućava definiranje pretplata u više različitih mjernih

jedinica, obavezno je bilo uključiti jedinicu očitanja senzora, što je sljedeći ključ u pretplati

Page 22: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

17

jedinicaOcitanja. Senzorska objava također je trebala uključiti i vrijednost

mjerenog parametra. Kako se radi o numeričkoj vrijednosti, koristi se realni tip double, a

zapisuje se pod ključem vrijednost. Na kraju, objava je vezana uz neko geografsko

područje. Pretpostavka je da određeni senzori mogu mjeriti određeni parametar za šire

geografsko područje, dok su primjerice mjerenja drugih senzora manjeg geografskog

opsega. Zadnji element koji je uključen resurs je geometrija, odnosno geometrijska

komponenta koja opisuje područje na kojem se provelo određeno senzorsko mjerenje. Kao

i u slučaju definiranja pretplate, geometrija mora biti oblik definiran u specifikaciji

GeoJSON.

Konačno, resurs objave sadržava sljedeće ključeve:

Ako se želi postići preklapanje objave i definirane pretplate, treba zadovoljiti sljedeće

uvjete:

atributne vrijednosti objave trebaju preklapati definirane atributne predikate u

pretplati.

geolokacijska komponenta objave treba prostorno preklapati (intersect)

geolokacijsku komponentu pretplate

Za dodavanje novih oblika pretplate kod kojih su objave tekstualne datoteke, sustav se

može nadograditi. To je jednostavniji oblik pretplate od onih koje se opisuju u daljnjem

radu, jer je za preklapanje pretplate s objavom nužno da se preklapaju geolokacijske

komponente

„identifikatorSenzora“

„vrijemeOocitanja“

„tipSenzora“

„vrstaOcitanja“

„jedinicaOcitanja“

„vrijednost“

„geometrija“

Page 23: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

18

2.6. Algoritam pretrage pretplata za pristigle objave

Nakon što su zadovoljeni svi uvjeti opisani u poglavljima 4.2, 4.3, 4.4, 4.5, sustav

može obavljati svoju funkciju. Potrebno je na kraju detaljno opisati kako izgleda proces

traženja pretplata koje odgovaraju pristigloj objavi. Proces je složeniji zbog činjenice da je

potrebno provjeriti i atributna i prostorna preklapanja pretplate s objavom. Postavlja se

pitanje kojim redoslijedom pristupiti filtriranju i koji su argumenti govore u prilog, a koji

protiv predloženog rješenja. U hipotetskom scenariju, pretpostavlja se da je promatrani

parametar primjerice temperatura. Za područje grada Zagreba prema [6] prosječne

minimalne zimske temperature su -3 stupnja Celzijeva, a prosječne ljetne temperature

iznose 27 stupnja Celzijevih. Temperaturni raspon između prosječne minimalne zimske i

prosječne maksimalne ljetne temperature iznosi 30 stupnjeva Celzijevih. U relativnom

uskom temperaturnom intervalu moguće je definirati potencijalno veliki broj pretplata. S

druge strane, područje grada Zagreba prema [7] iznosi 641 km2, te je prostor na kojem je

moguće definirati određenu pretplatu primjerice za vrijednost temperature nudi veću

granulaciju naspram prostora za definiranje temperature. Ovim kratkim promišljanjem

dolazi se do zaključka da je učinkovitije prvo filtrirati pretplate po geografskoj lokaciji,

tražeći preklapanja s područjem objave. U drugom koraku, sve dobivene pretplate koje su

dobivene kao rezultat prethodnog koraka treba usporediti po vrijednosti atributa sf

dobivenim atributima objave.

Postavlja se pitanje kako efikasno pretraživati veliki skup pretplata koristeći prostorne

predikate. Rješenje problema je prostorno indeksiranje, koje koristi određene

aproksimacije s ciljem brzog pretraživanja pretplata koje se preklapaju s područjem

određene objave. Sam proces odvija se u dva koraka. U prvom koraku se ne uzima točna

geometrija već aproksimacija određene geometrije, najčešće u obliku minimalnog

graničnog kvadrata (minimal bounding box) [8]. Koristeći minimalni granični kvadrat i

prostorne predikate, pronalazi se super-skup geometrija koje preklapaju geometriju s

kojom ih uspoređujemo. Koristi se termin super-skup, jer zbog korištenja aproksimacija

kao rezultati prvog koraka pojavljuju se i one geometrije koje ustvari ne preklapaju

geometriju s kojom se izvodio prostorni predikat. Tek se u drugom koraku, koji se zove

pročišćavanje (refinement) [8] uspoređuju geometrije sa prostornim predikatom odabrane

geometrije. Najčešće korištene strukture podataka za prostorno indeksiranje su rešetkasto

indeksiranje (grid indexing), Quad-stablo (quad tree) i R-stablo (R-tree). U trećem,

Page 24: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

19

završnom koraku potrebno je provjeriti preklapanja atributnih komponenti pretplate i

objave.

Da bi se atributne komponente međusobno preklapale, potrebno je zadovoljiti sljedeće

uvjete:

vrsta očitanja objave treba odgovarati vrsti očitanja pretplate

vrijednost očitanja treba biti između donje i gornje granice promatranog atributa u

pretplati

Kada je algoritam gotov za izvršavanjem, dobiveni skup pretplata su one pretplate kod

kojih postoji i prostorno i atributno preklapanje s dobivenom objavom.

Pseudokod algoritma je sljedeći:

Iz pristigle objave dohvati geometrijsku komponentu;

Iz prostornog indeksa svih pretplata dohvati one koje se preliminarno preklapaju sa geometrijom objave;

Iz skupa dobivenih pretplata izbaci one pretplate kod kojih ne postoji egzaktno preklapanje sa geometrijom objave;

Za svaku objavu iz skupa filtriranih pretplata {

Ako (jedinica očitanja objave ne odgovara jedinici očitanja pretplate){

Preračunaj vrijednost očitanja u mjernu jedinicu pretplate;

}

Ako (vrijednost očitanja nije u intervalu pretplate) {

Ukloni pretplatu iz skupa mogućih pretpltata

}

}

Za svaku pretplatu u skupu mogućih pretplata {

Proslijedi očitanje korisnku koji je definirao pretplatu.

}

Page 25: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

20

2.7. Prosljeđivanje objave pretplatnicima

Svim pretplatama koje su sadržane u skupu koji je rezultat algoritma, opisanog u

poglavlju 4.5, treba proslijediti odgovarajuću pretplatu. Prema [4], neučinkovito je rješenje

ako klijent, odnosno pretplatnik u kontekstu ovog rada, periodički upućuje zahtjev na

poslužitelj s ciljem provjere je li u međuvremenu pristigla objava koja preklapa područje

interesa pretplate. Takav način komunikacije zove se model pull. Efikasnije rješenje je

model komunikacije push u kojem poslužitelj prosljeđuje podatke klijentu kada su uvjeti za

to zadovoljeni, odnosno kada se dogodi preklapanje pretplate i objave. Zapravo se radi o

modelu objavi-pretplati koji je prepoznat kao najbolja paradigma za prijenos informacija sa

stvarnovremenskim svojstvima.

Page 26: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

21

3. IMPLEMENTACIJA

U ovom poglavlju objašnjavaju se detalji implementacije programskog rješenja u

skladu sa zahtjevima predstavljenima u poglavlju 2. Jedan od zahtjeva za programsku

implementaciju rješenja bio je korištenje programskog jezika Java. U skladu s tim, koristio

se programski okvir Java EE (Enterprise Edition) za razvoj aplikacijskog poslužitelja.

Kompletna arhitektura može se opisati kao dvoredni klijent-poslužitelj.

3.1. Java EE

Java Enterprise Edition je programski alat kompanije Oracle za razvoj poslovnih

aplikacija, proširenje Java SE (Standard Edition) platforme. Java EE platforma proširena je

dodatnim aplikacijskim modulima (API, Application Programming Interface) i okolinom

za izvršavanje poslovnih aplikacija. Primjeri aplikacija koje je moguće razviti su: web

servisi, mrežne aplikacije i drugi veliki, višeslojni i skalabilni sustavi. Cilj platforme je

razvoj programske podrške zasnovan na modularnim komponentama koje se izvršavaju na

aplikacijskom poslužitelju. Razvoj je olakšan korištenjem anotacija (annotations) za

konfiguraciju programa, naspram standardnog korištenja konfiguracijskih XML datoteka.

Postoji nekoliko Java EE certificiranih poslužitelja koji mogu izvršavati aplikacije pisane

za tu platformu, a to su: GlassFish, JBoss, Apache Geronimo, Apache TomEE i drugi. Za

potrebe razvoja programskog rješenja u ovome radu koristi se GlassFish poslužitelj, verzije

4.1. Razvijena aplikacija je zapakirana kao datoteka WAR (Web Application Archive), koja

će biti postavljena (deployed) na poslužitelju GlassFish. WAR je u suštini jedan oblik JAR-

a, Java arhive (Java ARchive), čija je namjena distribuiranje skupine Java Servleta, Java

Server Pages, klasa napisanih u Javi, XML datoteka i ostalih resursa koji zajedno formiraju

cjelinu za web-aplikaciju.

Page 27: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

22

3.2. HTTP i REST sučelje

Za komunikaciju između korisnika, odnosno klijenta te poslužitelja koristila se

arhitektura REST, zbog svojih dobrih svojstava opisanih u poglavlju 1.5. Protokol HTTP

(HyperText Transfer Protocol) je korišten kao transportni protokol za prijenos zahtjeva

klijenta prema poslužitelju i prijenos odgovora za obrađeni zahtjev od poslužitelja prema

klijentu. Razlozi za korištenje dotičnog protoka su široka rasprostranjenost i razvijena

programska podrška za razvoj aplikacija. Međutim, protokol HTTP nije bio korišten kada

se klijentima prosljeđuju objave koje preklapaju pretplate koje su definirali. Za tu vrstu

komunikacije koristila se kasnije opisana razmjena poruka na principu push.

Sučelje REST za sustav implementirano je korištenjem Java EE platforme pa je u ovom

poglavlju fokus na opisu korištenih URL-ova (Uniform Resource Locator) i standardnih

HTTP metoda koje su se koristile za dotične URL-ove.

Java EE koristi unaprijed definiran skup anotacija kako bi se izgradilo aplikacijsko sučelje.

Neke od korištenijih anotacija su:

@Path Predstavlja URI predložak do lokacije na kojoj se

nalazi resurs (klasa ili metoda). Predstavlja relativnu

putanju na poslužitelju na kojem je aplikacija

aktivna.

@PathParam Koristi se za ubacivanje vrijednosti URI parametra

definiranog u @Path anotaciji.

@GET Predstavlja „GET“ metodu iz protokola HTTP,

odnosno da određena metoda unutar klase koristi

„GET“ metodu za obradu zahtjeva. Dotična metoda

se koristi za dohvat informacija o resursu definiranog

putem URI-ja.

Page 28: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

23

Temeljna URL ekstenzija aplikacije je /gprsp/rest/api, pri čemu je izostavljen

URL poslužitelja na kojemu je aplikacija poslužena. Ako se aplikaciji želi pristupiti s

računala na kojemu je i poslužena, što će u nastavku biti slučaj, potpuni URL aplikacije

glasi:

http://localhost/gprsp/rest/api

„localhost“ je adresa mrežnog sučelja računala na kojemu se korisnik nalazi.

3.2.1. Dodavanje konverzije

Kao prvi korak bilo je potrebno na poslužitelju omogućiti dodavanje konverzije za određen

tip mjerenja i mjerne jedinice od interesa. Akcija kao rezultat ima dodavanje novog resursa

na poslužitelj ili izmjenu postojećeg, te se u skladu s načelima arhitekture REST, koristi

odgovarajuća metoda protokola HTTP, POST.

@POST Predstavlja „POST“ metodu protokola HTTP,

odnosno da određena metoda klase koristi „POST“

metodu za obradu zahtjeva. Dotična metoda koristi se

za informiranje odredišnog poslužitelja o kreiranju

novog resursa za URI na koji se resurs šalje.

@DELETE Predstavlja „DELETE“ metodu protokola HTTP.

Metoda se koristi kako bi se od odredišnog

poslužitelja zatražilo da izbriše resurs koji je

identificiran URI-jem zahtjeva.

@Consumes Specificira MIME ekstenziju (Multipurpose Internet

Mail Extensions) kojim se opisuje resurs zaprimljen

od klijenta.

@Produces Specificira MIME ekstenziju odgovora koji se vraća

klijentu koji je uputio zahtjev. Postoji nekoliko

definiranih vrijednosti, ali može se spomenuti

„application/json“ vrijednost ovog parametra koja se

često koristi u ovom radu.

Page 29: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

24

URL na koji se prosljeđuje resurs je :

http://localhost:8080/gprsp/rest/api/addconversion

Resurs se na poslužitelj prenosi u tijelu zahtjeva u obliku JSON objekta. Format dotičnog

JSON objekta je sljedeći, opisan kroz primjer dodavanja konverzije iz Celzijevih u

Kelvine, za mjerenje temperature:

Rezultat mjerenja u slučaju da je resurs valjan, što podrazumijeva ispravno definiranu

formulu, može biti jedna od dvije poruke:

Nova konverzija dodana

Konverzija izmijenjena

Prva poruka prikazana je kada se za definiranu trojku vrstaOcitanja,

izMjerneJedinice i uMjernuJedinicu prvi puta dodaje konverzija. U slučaju

izmjene resursa definiranog postojećom trojkom, prikazuje se druga poruka. U slučaju

nepredviđene greške u odgovoru će biti uključena poruka iznimke koja se dogodila u

programu. Obrada mogućih grešaka izostavljena je u programskoj implementaciji jer je

izvan opsega rada. Pretpostavka je da će korisnik sustava poštivati definirane zahtjeve i

ograničenja. Dodatno, sustav ne omogućava interno kombiniranje postojećih konverzija.

Neka je pretpostavka da na sustavu postoji neka jedinica očitanja, s definiranim

konverzijama između mjernih jedinica, simbolički predstavljenih sa „A“, „B“ i „C“. Neka

prva konverzija definira pretvorbu „A“ „B“, a druga konverzija pretvorbu „B“ „C“.

Korisnik, ako to želi, mora eksplicitno dodati konverziju „A“ „C“, jer sustav nema

mogućnosti načelom tranzitivnosti zaključiti da je moguće kombinacijom konverzija „A“

„B“ i „B“ „C“ postići konverziju „A“ „C“. Kao i u slučaju greške u zahtjevu

resursa, radi se o problemu koji je izvan opsega ovog rada.

{

„vrstaOcitanja“: „temperatura“,

„izMjerneJedinice“:„C“,

„uMjernuJedinicu“:„K“,

„formula“:„C + 273.15“

}

Page 30: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

25

Korištenjem anotacija Jave EE, resurs na poslužitelju koji omogućava dodavanje

konverzije izgleda ovako:

@POST anotacija definira metodu protokola HTTP koja se koristi.

@Path, odnosno vrijednost u zagradi određuje relativnu rutu na poslužitelju na kojoj se

upućuje zahtjev.

@Consumes određuje vrstu resursa koji se šalje u tijelu zahtjeva.

@Produces određuje vrstu resursa koja će biti vraćena u odgovoru koji se prosljeđuje

klijentu. Kako se za razmjenu informacija koristi JSON format, naznačen je

„MediaType.APPLICATION_JSON“ za povratni tip.

3.2.2. Dodavanje pretplate

Drugi zahtjev opisan u poglavlju 2.4 koji je trebalo izvršiti, je dodavanje pretplate

na poslužitelj. Kao i prilikom dodavanja konverzije, radi se o akciji koja mijenja stanje na

poslužitelju, odnosno dodaje novi resurs. I u ovom slučaju se koristi metoda POST

protokola HTTP. Resurs koji se šalje na poslužitelj je JSON kompatibilan, kao i odgovor

koji poslužitelj šalje po obrađenom zahtjevu.

URL na koji se dodaje nova pretplata je:

http://localhost:8080/gprsp/rest/api/subscribe

U poglavlju 2.4 opisani su svi potrebni podatci koji moraju biti navedeni u resursu

pretplate kako bi bio kompletan. Jedan od zahtjeva zadatka je korištenje specifikacije

GeoJSON za definiranje prostornih geometrija. Ako se promotri specifikacija oblika

(feature) u GeoJSON dokumentaciji, može se primjetiti kako se uz geometriju unutar

@POST

@Path(„/addconversion“)

@Consumes(MediaType.APPLICATION_JSON)

@Produces(MediaType.APPLICATION_JSON)

public String addConversion(String request) {

...

}

Page 31: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

26

jednog oblika treba nalaziti i član properties. Taj je element asocijativno polje, u kojem su

podatci pohranjeni u obliku ključ vrijednost. Umjesto da se razrađuje u

potpunosti nova struktura podataka za definiranje pretplate, praktičnije je koristiti

spomenuti feature, jer osim geometrije moguće je definirati dodane parametre. Iz

praktičnih razloga, ponajviše olakšavanja implementacije programskog rješenja, feature

koji predstavlja pretplatu biti će element još općenitijeg objekta, kolekcije oblika (feature

collection). Konkretno radi se o mogućnosti korištenja postojećih parsera i konvertera iz

tekstualnog JSON formata. U resursu pretplate, identifikator pretplatnika biti će korišten

kao ključ za slanje asinkronih push poruka prema pretplatniku ako na poslužitelj bude

zaprimljena objava koja preklapa pretplatu.

Jedna kompletna pretplata ima sljedeću strukturu:

{

„type“:“FeatureCollection“,

„features“:[

{ „type“:„Feature“,

„geometry“:{

„type“:„Point“,

„coordinates“:„[50.0, 50.0]},

„properties“:{

„identifikator_pretplatnika“:„123456789“,

„vrsta_ocitanja“:„temperatura“,

„jedinica_ocitanja“:„C“,

„interval_donji“:„10“,

„interval_gornji“:„15“

}

}]

}

Page 32: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

27

Na poslužitelju, u Java EE tehnologiji, resurs na poslužitelju definiran je ovako:

3.2.3. Objava senzorskih očitanja

Treća akcija koja je trebala biti omogućena kako bi sustav implementirao osnovne

zahtijevane funkcionalnosti je objavljivanje senzorskog očitanja. Detalji zahtjeva opisani

su u poglavlju 2.5. Objava senzorskog mjerenja na poslužitelj zapravo je slanje novog

resursa na obradu, slično kao što je slučaj s dodavanjem konverzije ili dodavanjem

pretplate. Prema načelu REST-a, kao metoda za dodavanje odnosno objavu senzorskog

očitanja koriste se POST protokola HTTP.

Resurs senzorskog mjerenja, slično kao i pretplata, ima prostornu komponentu i atribute

koji ju dodatno definiraju. Iz razloga opisanih u poglavlju 3.2.2, koristi se ista struktura

podataka formata GeoJSON, FeatureCollection.

@POST

@Path(„/subscribe“)

@Consumes(MediaType.APPLICATION_JSON)

@Produces(MediaType.APPLICATION_JSON)

public String addSubscription(String request) {

...

}

Page 33: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

28

Primjer resursa senzorskog mjerenja izgleda ovako:

U primjeru su identifikator senzora i tip senzora izostavljeni kako čitatelj ne bi bio zbunjen

navedenim vrijednostima, jer ne postoji ograničenje u formatu za ta dva podatka. Oni ovise

od proizvođača do proizvođača, te može biti riječ o proizvoljno dugom nizu

alfanumeričkih znakova. Format vremena je broj sekundi od 1.1.1970. do trenutka kada je

mjerenje provedeno. Taj način mjerenja zove se UNIX vrijeme (UNIX time), poznato kao i

vrijeme epohe (epoch time). Ime potječe od korištenja u velikom broju UNIX operacijskih

sustava. Kako bi senzorska objava mogla biti obrađena, nužno je da su vrstaOcitanja i

jedinicaOcitanja već definirani na poslužitelju kroz korak opisan u poglavlju 4.3. U

protivnom će u odgovoru na upućeni zahtjev biti ispisana odgovarajuća poruka o grešci.

URL za dodavanje nove objave u sustav je:

http://localhost:8080/gprsp/rest/api/publish

{

„type“:“FeatureCollection“,

„features“:[{

„type“:„Feature“,

„geometry“:{„type“:„Polygon“,

„coordinates“:„[[0.0, 0.0], [100.0, 0.0],

[[100.0, 100.0], [0.0, 0.0]]},

„properties“:{

„indentifikatorSenzora“:„[ID]“,

„vrijemeOcitanja“:„123456789“,

„tipSenzora“:„[TIP SENZORA]“,

„vrstaOcitanja“:„temperatura“,

„vrijednost“:„15“,

„jedinicaOcitanja“:„C“

}

}]}

Page 34: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

29

Resusr na poslužitelju koji omogućava objavu senzorskih objava izgleda ovako:

Algoritam pretraživanja implementiran je u skladu sa opisom u poglavlju 2.6.

3.2.4. Brisanje pretplata

Razvojem sustava uočeno je da postoji potreba za dodatnim REST sučeljima na

poslužitelju kako bi se sustav mogao jednostavnije koristiti. Ovo i sljedećih nekoliko

poglavlja opisuju svako sučelje zasebno, motivaciju za stvaranjem, URL odnosno URI te

format odgovora.

Prilikom dodavanja nove pretplate i nakon što je novi resurs stvoren na poslužitelju, svaka

pretplata dobiva svoj jedinstveni identifikator. Identifikator je dodijeljen svakoj pretplati sa

svrhom da se nju može modificirati koristeći spomenuti identifikator. Jedina modifikacija

koja je implementirana u ovom trenutku je brisanje pretplate s poslužitelja. Prema

načelima REST-a, resurs kojim se manipulira treba biti predstavljen URI-jem. Kako se radi

o akciji brisanja resursa tj. pretplate, koristi se metoda DELETE protokola HTTP.

Primjer URI-ja za brisanje pretplate je:

http://localhost:8080/gprsp/rest/api/unsubscribe?Subscriptionid=1

Za primjer URI-ja pretpostavlja se da je vrijednost identifikatora za dotičnu pretplatu „1“.

Kao odgovor na zahtjev prilikom brisanja pretplate postoje dvije moguće poruke;

„Pretplata je izbrisana“ ili „Nema pretplate sa specificiranim subscriptionid“.

@POST

@Path(„/publish“)

@Consumes(MediaType.APPLICATION_JSON)

@Produces(MediaType.APPLICATION_JSON)

public String publish(String request) {

...

}

Page 35: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

30

Resurs na poslužitelju izgleda ovako:

3.2.5. Lista konverzija

Prilikom razvoja mobilne aplikacije ukazala se potreba za definiranjem sučelja preko kojeg

će biti moguće dohvatiti sve konverzije koje trenutno postoje na poslužitelju. Ništa se ne

šalje na poslužitelj, nego se samo dohvaćaju podatci, koristi se metoda GET protokola

HTTP.

URL sa kojeg se dohvaća lista svih postojećih konverzija je:

http://localhost:8080/gprsp/rest/api/listconversions

Odgovor sa poslužitelja biti će lista konverzija:

{

elapsedTime: 0,

success: true,

error: null,

count: 1,

payload:

[{ „vrstaOcitanja“:„temperatura“,

„izMjerneJedince“:„K“,

„uMjernuJedinicu“:„C“,

„formula“:„K-273“

}]

}

@DELETE

@Path(„/unsubscribe“)

@Consumes(MediaType.APPLICATION_JSON)

@Produces(MediaType.APPLICATION_JSON)

public String unsubscribe(String request) {

...

}

Page 36: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

31

Na poslužitelju je resurs definiran na sljedeći način:

3.2.6. Lista tipova senzora

Zbog istih motiva kao i u prethodnom podpoglavlju, ukazala se potreba za

dohvaćanjem svih vrsta senzora za koji su trenutačno definirani na poslužitelju. Korištena

je metoda GET protokola HTTP, jer se radi o dohvatu podataka bez slanja resursa na

poslužitelj.

URL sa kojeg se dohvaća lista svih postojećih senzora je:

http://localhost:8080/gprsp/rest/api/sensortypes

Odgovor s poslužitelja biti će lista senzora:

Jedan unos u listi tipova senzora ima dva člana, vrstuOcitanja koja identificira vrstu

senzorskog mjerenja, a drugi mjerneJedinice sadrži listu svih podržanih mjernih

jedinica za tu vrstu očitanja.

{

elapsedTime: 0,

success: true,

error: null,

count: 1,

payload:

[{

„vrstaOcitanja“:„temperatura“,

„mjerneJedinice“:[„C“, „K“]

}

]

@GET

@Path(„/listconversions“)

@Produces(MediaType.APPLICATION_JSON)

public String listconversions(String request) {

...

}

Page 37: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

32

Izgled resursa na poslužitelju:

3.2.7. Resetiranje poslužitelja

Prilikom testiranja poslužitelja pokazalo se kao korisna mogućnost napraviti sučelje

putem kojeg bi se jednim pozivom izbrisale sve pretplate, konverzije i tipovi senzora. Za

brisanje konverzija i tipova senzora čak i ne postoje definirana sučelja, dok za brisanje

pretplata postoji. Ipak, u slučaju velikog broja pretplata bio bi zamoran zadatak jednu po

jednu pretplatu brisati sa poslužitelja. Zbog jednostavnosti, koristi se metoda GET

protokola HTTP, kako bi se metodu moglo izvršiti iz preglednika Weba.

URL na kojem se brišu svi podatci s poslužitelja je:

http://localhost:8080/gprsp/rest/api/reset

Resurs na poslužitelju izgleda ovako:

Za ovu metodu, za razliku od prethodnih se ne definira povratni tip podatka kao

MediaType.APPLICATION_JSON jer se korisniku ispisuje obična tekstualna poruka o

uspješnosti akcije.

@GET

@Path(„/reset“)

public String reset(String request) {

...

}

@GET

@Path(„/sensortypes“)

@Produces(MediaType.APPLICATION_JSON)

public String listSensorTypes(String request) {

...

}

Page 38: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

33

3.3. Geotools i JTS

Treba spomenuti programske okvire koji su se koristili za obradu resursa

senzorskog očitanja odnosno pasiranje resursa senzorske objave kao i za upravljanje

geometrijama.

GeoTools je programski okvir otvorenog koda (open source) objavljen pod LGPL (Lesser

General Public Licence). Programski okvir omogućava standardizirane metode za

upravljanje geoprostornih podataka, primjerice geografskih informacijskih sustava.

Specifikacije koje razvija Open Geospatial Consortium (OGC) su također implementirane

u programskom okviru.

Neke od osnovnih funkcionalnosti programskog okvira su:

Definicija sučelja za najvažnije koncepte i strukture podataka

Programsko sučelje za dohvat podataka, transakcijsku obradu i zaključavanje dretvi

Tehnologije za parsiranje sadržaja iz formata XML (eXtensible Markup Language)

u GML (Geography Markup Language), koristeći sheme.

Otvoreni pomoćni programi za definiranje novih formata podataka

GeoTools ekstenzije

Geotools programski okvir se u ovom radu koristi zbog mogućnosti korištenja sa

GeoJSON formatom i knjižnicom JTS (Java Topology Suite). Precizno govoreći, GeoTools

programski okvir koristi se za pretvorbu geometrija zapisanih u GeoJSON formatu u

pripadajuću geometriju knjižnice JTS.

Programska knjižnica JTS je aplikacijsko sučelje (Application Programming Interface) za

dvodimenzionalne prostorne predikate i funkcije. U trenutku pisanja ovog rada, aktualna

verzija knjižnice je 1.8.

Glavne značajke knjižnice JTS su:

Implementacija prostornih struktura podataka definiranih u OGC Simple Feature

Specification for SQL.

Kompletna, konzistentna implementacija temeljnih dvodimenzionalnih algoritama

što uključuje binarne predikate za doticaj (touch) i preklapanje (overlap) kao i

prostorne metode analize za presjek (intersection) i odmak (buffer) [8].

Page 39: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

34

Izričit model preciznosti, sa algoritmima koji sa oprezom rješavaju situacije kod

kojih dolazi do dimenzijskog kolapsa.

Robusna implementacija ključnih geometrijskih operacija

Unos ili ispis podataka u WTK (Well Known Text) formatu

U knjižnici JTS postoje sljedeći prostorni oblici:

Točka (point)

Skup točaka (multipoint)

Linija (linestring)

Prsten (linearring)

Skup linija (multilinestring)

Poligon (polygon)

Skup poligona (multipoligon)

Skup geometrija (geometry collection)

Kao što je vidljivo, podržani oblici odgovaraju onima koji su definirani u specifikaciji

GeoJSON, zbog čega je ova knjižnica posjeduje zadovoljavajuće funkcionalnosti za

potrebe rada.

Postoji više odnosa između dva oblika koja se uspoređuju, točnije dva oblika mogu biti u

sljedećim odnosima:

jednaki (equals)

disjunktni (disjoint)

presijecanje (intersect)

dodirivanje (touch)

preklapanje (overlap)

križanje (cross)

prvi sadržan unutar drugog (within)

drugi sadržan unutar prvog (contains)

Možda čitatelju neće biti jasno koja je točna razlika između intersection, touch, overlap,

cross, within i contains. Može se smatrati da je intersection najopćenitiji oblik odnosa

između dvije geometrije, koje imaju barem jednu zajedničku točku. Ostali odnosi poput

Page 40: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

35

touch, overlap, cross, within i contains imaju dodatne zahtjeve na dimenzionalnost oblika

koji su u interakciji i dimenzionalnost oblika koje tvore njihove zajedničke točke. U ovom

radu intersect kao odnos između dvije geometrije će biti dovoljan, stoga se ostali prostorni

predikati dodatno ne opisuju. Zainteresirani čitatelj može na poveznici [9] pronaći detalje

na spomenutu temu.

Prostorni indeksi implementirani u programskoj knjižnici JTS su Quadtree i STRtree.

Quadtree je prostorna struktura koja služi za izvođenje efikasnih upita kvadrata, dok je

STRtree prostorna struktura koja podržava samo izvođenje upita nakon što je izgrađena, što

onemogućava naknadno dodavanje novih oblika. U programskoj implementaciji koristio se

Quadtree zbog mogućnosti dodavanja i brisanja elemenata u bilo kojem trenutku

korištenja.

3.4. Mehanizam obaviješćivanja korisnika

U trećem poglavlju do sada su opisani svi važniji elementi sustava. Ostaje još opisati

mehanizam informiranja korisnika ako na sustav pristigne senzorska objava koja odgovara

korisnikovoj pretplati. Sve do sad opisane interakcije bile su inicirane od strane klijenta

koji je slao zahtjev, a poslužitelj je slao odgovore. Međutim, klijent ne može znati kada će

poslužitelj zaprimiti objavu te je pitanje kako efikasno obavijestiti korisnika. Jedno već

spomenuto rješenje je spremati objave koje odgovaraju pretplati korisnika u red čekanja.

Klijent periodičnim slanjem zahtjeva na poslužitelj (poll) provjerava ima li u njegovom

redu čekanja objava koje preklapaju njegovu pretplatu. Ako red čekanja nije prazan,

korisnik dohvaća sve objave, čime se red čekanja pristiglih objava korisnika na poslužitelju

prazni. Nekoliko je problema s ovim pristupom. Potrebno je procijeniti koliki treba biti

vremenski interval provjere stanja na poslužitelju. Interval ne smije biti prekratak da

uzrokuje opterećenje poslužitelja u slučaju velikog broja korisnika, a s druge strane ne

smije biti niti toliko dug da sama objava postane beskorisna korisniku uslijed predugog

vremena isporuke. Pokazuje se da je bolje ipak prepustiti poslužitelju odgovornost

propagiranja informacija prema klijentu, odnosno pretplatniku korištenjem poruka na

principu push.

Postoji još jedna mogućnost prosljeđivanja poruka od poslužitelja prema klijentu.

Komunikacije je inicirana od strane klijenta bez da poslužitelj bude nepotrebno opterećen.

Metoda kojom se to postiže je dugoročno prozivanje (long polling) poslužitelja. Ideja je da

Page 41: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

36

klijent održava otvorenu TCP (Transmission Control Protocol) vezu s poslužiteljem, bez

da se podatci nužno prenose između sudionika ako za to nema potrebe. Međutim, kad se za

to ukaže potreba, poslužitelj može kroz uspostavljenu vezu poslati informacije klijentu.

Opisani model komunikacije ima potrebnu sposobnost prijenosa informacija, bez da su

mrežni resursi iskorišteni na neefikasan način. Ovaj način prijenosa se često koristi za

izradu web aplikacije kod kojih se želi poboljšati korisničko iskustvo (user experience).

Pitanje je može li se i ovakav pristup koristiti ako je jedan od sudionika u komunikaciji

mobilni uređaj, koji ima bateriju ograničen izvor električne energije. Istraživanja su

pokazala [12] da je potrošnja energije manja ako se koriste push poruke, za razliku od

tehnike dugoročnog prozivanja poslužitelja. Zbog svega opisanih prednosti, odabran je

način komunikacije push između poslužitelja i klijenta.

Klijentska aplikacija razvijena je za mobilne uređaje s operacijskim sustavom

Android. Google, kompanija koja najvećim dijelom razvija platformu Android, ima

razvijen mehanizam slanja asinkronih push poruka od poslužitelja prema klijentu, GCM -

Google Cloud Messaging. GCM je usluga koji implementira sve dosad navedene

funkcionalnosti koje su zahtijevane za servis koji će služiti kao mehanizam isporuke

poruka od poslužitelja do klijenta.

3.4.1. Usluga Google Cloud Messaging

Korisno je spomenuti kao detalj implementacije osnovne zahtjeve za korištenja

usluge GCM. Sudionici u procesu su klijentski poslužitelj, klijentska aplikacija na

mobilnom uređaju i GCM poslužitelji za razmjenu poruka [11].

Interakcija između spomenutih sudionika je sljedeća:

Google GCM poslužitelj dohvaća poruke i prosljeđuje ih klijentskoj aplikaciji

Aplikacijski protokol implementira protokol HTTP ili XMPP (eXtensive Messaging

and Presence Protocol, za komunikaciju sa GCM poslužiteljem

Klijentska aplikacija ima omogućenu GCM funkcionalnost. Kako bi primanje

GCM poruka bilo moguće, aplikacija treba zatražiti registracijski token od GCM

poslužitelja. Dobiveni token se onda šalje na pripadajući aplikacijski poslužitelj.

Token se koristi kada poslužitelj želi poslati poruku točno određenom klijentu

Page 42: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

37

Postoji nekoliko akreditiva (credentials) koji se koriste u procesu, a to su:

Sender-ID – jedinstveni niz brojeva koja se stvara prilikom konfiguriranja

projekta na Google razvojnoj konzoli (developers console). Koristi se u

registracijskom procesu klijentske aplikacije na GCM poslužitelj.

Sender Auth Token – ključ spremljen na aplikacijskom poslužitelju koji služi

autoriziran pristup Google servisima, od kojih je jedan i GCM. Ključ je sadržan u

zaglavlju HTTP POST zahtjev koji se šalje na GCM poslužitelj.

Application-ID – Klijentska aplikacija se registrira za prihvat poruka. Za

Android, svaka aplikacija predstavljena je imenom paketa definiranog u manifest

datoteci. Ovime se osigurava da su poruke dostavljene ispravnoj aplikaciji na

uređaju.

Registration token – identifikator dodijeljen od strane GCM poslužitelja

aplikaciji čime joj se omogućava dostavljanje poruka. Ovaj token treba biti tajan.

Poruke koje se šalju mogu biti poslane jednom ili više klijenata odjednom. Postoji i

ograničenje veličine poruka, koje ne smiju biti veće od 4kb. Korišteni format je JSON, a

vrijeme isteka poruke je četiri tjedna. To znači da će poruka biti spremljena na GCM

poslužitelju maksimalno četiri tjedna ako uređaj u međuvremenu nije dostupan za prihvat

poruke. GCM servis ima i mogućnost i komunikacije od klijentske aplikacije prema

aplikacijskom poslužitelju, Kako bi to bilo moguće, komunikacija mora biti

implementirana korištenjem protokola XMPP.

3.5. Mobilni uređaj kao senzor i aplikacija kao klijent

Kako bi se demonstrirale mogućnosti sustava za korištenjem u stvarnim uvjetima

razvijena je mobilna aplikacija koja omogućava osnovne funkcionalnosti koje su opisane

za klijenta. Kao što je već spomenuto, aplikacija je razvijena za uređaje s operacijskim

sustavom Android. Aplikacija se sastoji od sveukupno 5 ekrana zvanih aktivnosti

(activity), pri čemu svaki ekran služi za točno jedan slučaj upotrebe (use case). Slika 1

prikazuje slučajeve upotrebe.

Page 43: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

38

Slika 1 - Slučajevi upotrebe aplikacije

3.5.1. Opis upotrebe aplikacije

Glavni navigacijski ekran sadrži četiri gumba (button), grafičke komponente

kojima se korisnik kreće u aplikaciji. Po tekstu koji je napisan unutar svakog gumba

korisniku je intuitivno jasno što može postići svakom pojedinom akcijom. Na ovom ekranu

prikazana je i karta usluge Google Maps, u čijem je fokusu šire područje grada Zagreba.

Namjena karte je omogućiti korisniku pregled terena kako bi mogao pronaći područje koje

ga interesira. Karta korisniku može biti prikazana u četiri različita prikaza, koja se mogu

uočiti na Slika 3. Na lijevoj slici karta je u satelitskom prikazu, a desna u normalnom. Iz

padajućeg izbornika, koji se aktivira kliktanjem gumba u gornjem desnom kutu, može se

odabrati odgovarajući prikaz karte.

Page 44: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

39

Slika 2 - Početni ekran aplikacije Slika 2 – Padajući izbornik za odabir prikaza

Lijevi satelitski prikaz korisniji je kako bi se prikazao stvarni izgled terena, dok je desni

terenski bolji ako su potrebne informacije prometnim pravcima, imenima naselja i

granicama država. Hibridni prikaz zapravo je satelitski uz naznačene nazive gradova, dok

terenski prikaz naglasak stavlja na prikaz terena kao geografske strukture, gdje je lakše

uočiti brda i nizine.

Klikom na gumb „Prikaži senzore“, prikazat će se ekran na kojem će biti prikazani svi

trenutno dostupni tipovi senzora definirani na poslužitelju. Slika 4 prikazuje scenariji kada

postoje definirani senzori. Ako na poslužitelju nema nikakvih informacija, korisniku se

prikazuje odgovarajuća poruka, kao na slici 5.

Page 45: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

40

Slika 4 – Prikaz postojećih senzora na poslužitelju Slika 5 – Poruka ako nema podataka na poslužitelju

Gumb „Osvježi“ u gornjem desnom kutu ekrana služi kako bi korisnik mogao provjeriti je

li došlo do promjene u definiranim vrstama senzora, bez da mora izlaziti iz trenutne

aktivnost i ponovo se u nju vraćati.

Kroz aplikaciju korisnik ima mogućnost pregledati i sve trenutno dostupne konverzije koje

su definirane na poslužitelju. Na spomenuti ekran dolazi se odabirom gumba „Prikaži

konverzije“. Slično kao i kod prikaza svih vrsta senzorskih očitanja, ako postoje unosi na

poslužitelju, prikazat će se sve informacije o dostupnim konverzijama, što prikazuje slika

6. Ako nema podataka, korisniku se ispisuje odgovarajuća poruka, prikazano na slici 7. U

gornjem desnom kutu gumb „Osvježi“ ima sličnu funkcionalnost kao i na ekranu za prikaz

svih vrsta mjerenja.

Page 46: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

41

Slika 6 – Prikaz postoječih konverzija na

poslužitelju

Slika 7 – Poruka ako nema podataka na poslužitelju

Aplikacija ima mogućnost dodavanja konverzije ako na poslužitelju nisu definirane sve

konverziju za mjernu jedinicu u kojoj korisnik želi definirati pretplatu. Prilikom dolaska na

ekran gdje može izvršiti opisanu akciju, korisnik uočava četiri polja koja je potrebno

ispuniti. U svim poljima stoji kratak opis što bi trebalo unijeti u njih. Primjer ispravno

definirane konverzije prikazan je na Slici 9.

Page 47: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

42

Slika 8 – Prazni ekran za dodavanje nove konverzije Slika 9 – Primjer ispravno unesene konverzije

Korisnik je obaviješten uspješnom ili neuspješnom dodavanju nove konverzije kroz kratku

skočnu poruku (toast), koja se privremeno pojavljuje u donjem dijelu ekrana, kao na slici 9

Posljednja funkcionalnost koju je moguće ostvariti kroz aplikaciju je dodavanje pretplate.

Kao što je već poznato, od atributnih parametara potrebno je definirati vrstu očitanja koja

se prati, mjernu jedinicu, te donji i gornji interval koji je od interesa za korisnika. Za

potrebe mobilne aplikacije, skup geometrijskih oblika reduciran je na poligon, iako je

predviđeno da na uređaju korisnik može definirati i ostale spomenute geometrijske oblike.

Kod učitavanja ekrana za dodavanje pretplata, s poslužitelja se dohvaća popis svih vrsta

očitanja kao i mjernih jedinica za svako očitanje. Korisnik odabire vrstu očitanja i mjernu

jedinicu kroz padajući izbornik (spinner). Donju i gornju vrijednost parametra koji korisnik

želi pratiti, može se unijeti kroz ćelije za unos teksta (edittext). Aplikacija provodi

validaciju jesu li odabrani svi potrebni parametri, te u slučaju da to nije učinjeno ispisuje

Page 48: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

43

odgovarajuće upozorenje. Na Slici 11 prikazano je kako izgleda pretplata koja ima sve

potrebne unose. Poligon prikazan na slici označava obalno područje rijeke Save u gradu

Zagrebu. Konačno, korisnik pretplatu objavljuje na poslužitelju odabirom opcije „objavi“

iz padajućeg izbornika u gornjem desnom kutu.

Slika 10 – Odabir vrste očitanja iz padajućeg

izbrnika kod dodavanja pretplate

Slika 11 – Primjer pretplate sa unesenim svim

potrebnim podatcima

Page 49: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

44

4. TESTIRANJE SUSTAVA I REZULTATI

Sustav je u potpunosti implementiran u skladu sa zahtjevima i funkcionalan te je bilo

potrebno provesti testiranje performansi sustava. Prije testiranja, trebalo je definirati koji

će se parametri testirati i na koji način. Broj pretplata u sustavu je očito varijabilan, te se

pokazalo razumno testiranja u sustavu provesti tako da se broj pretplata mijenja kod svake

iteracije testiranja. Dakako i broj objava je varijabilan, ali fokus testiranja je bio provjeriti

koliko je vremena potrebno da bi sustav pronašao sve pretplate koje odgovaraju pristigloj

objavi. Iz tog razloga, skup objava koji se koristio u svakoj iteraciji bio je fiksan, te se isti

skup koristio za sva testiranja kako bi se osigurala konzistentnost.

Ideja prilikom testiranja vrednovati sljedeće parametre:

Ukupno vrijeme obrade svih objava

Prosječno vrijeme procesiranja objave (bez obzira na ishod)

Prosječno vrijeme procesiranja objave kod koje postoji preklapanje s pretplatama

Prosječno vrijeme procesiranja objave kod koje nema preklapanja s pretplatama

Broj objava kod kojih je pronađeno preklapanje s pretplatama

Prosječno vrijeme pretraživanje pretplate koja odgovara pristigloj objavi

Za testiranje je bilo potrebno imati skup podataka s kojima će se provoditi testiranje. U

skladu s tim, pokazala se potreba za izradom generatora koji će nasumično kreirati

pretplate i objave jer nisu postojali nikakvi valjani podaci koji bi mogli biti korišteni za

testiranje sustava.

Cilj je testiranja bio da proces bude lako ponovljiv, brz, a da rezultati testiranja budu trajno

pohranjeni i pri tome korektno statistički obrađeni kako bi se mogli donijeti zaključci iz

dobivenih rezultata.

Page 50: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

45

4.1. Program za testiranje

Za potrebe testiranja izrađena je dodatna aplikacija s tekstualnim korisničkim

sučeljem.

Ideja je s razvijenim programom omogućiti sljedeće:

Brzo i jednostavno generiranje pretplata i objava koji će se koristiti u testiranju

Jednostavno dodavanje velike količine pretplata i objava na poslužitelj

Automatiziran proces testiranja sustava, čiji je krajnji produkt trajni zapis

obrađenih rezultata u tekstualnu datoteku

Program je nazvan „DiplomskiWebInteraktor“, kako bi bilo jasno da je glavna uloga u

programa omogućiti jednostavnu interakciju s poslužiteljem. Razvijen je u programskom

jeziku Java, a koristi dodatne vanjske knjižnice kako bi se pojednostavio proces razvoja.

Program implementira sve tri funkcionalnosti navedene u ovom potpoglavlju, a zavisno od

načina pokretanja programa će odabrana funkcionalnost biti generirana.

4.1.1. Generiranje pretplata i objava

Prva funkcionalnost programa je generiranje pretplata i senzorskih objava. Za

geometrije koje predstavljaju pretplate i objave korištene su točke, linije i poligoni. Dok je

nasumično stvaranje točaka i linija relativno trivijalan posao, pravi je izazov bio kako

nasumično stvoriti pravilne poligone. Prvo je trebalo odlučiti koliki će biti prostor na

kojem će se definirati objave i pretplate. Za potrebe testiranja odabran je kvadrat stranica

duljine 10000. U skladu s tim, odabrana su dva različita uzorka poligona, koji su potom

translatirani za nasumični vektor čije X i Y komponente mogu imati vrijednost od 0 do

10000. Dva ostala tipa geometrija, linija i točka, nasumično su generirani tako da stanu u

prostor definiranog kvadrata. Testni podatci napravljeni su samo za jednu vrstu očitanja, s

dvije mjerne jedinice, a to je temperatura s mjernim jedinicama Kelvin i Celzijus.

Vrijednosti očitanja u slučaju objave ili gornja i donja vrijednost u slučaju pretplate su

nasumično odabrani brojevi u intervalu od 0 do 450, prilikom čega je uzeto u obzir da kod

pretplate gornji interval bude veća vrijednost od donjeg.

Page 51: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

46

Ako se želi generirati pretplate, program se pokreće na sljedeći način:

java –jar diplomskiwebintereactor.jar generate subscriptions

[broj_objava]

Na sličan način se generiraju i objave:

java –jar diplomskiwebintereactor.jar generate publications [broj_objava]

U oba slučaja, broj_objava treba biti zamijenjen s cjelobrojnom vrijednošću koja

odgovara broju objava ili pretplata koje se želi generirati.

Rezultat oba načina pokretanja biti će datoteke s podatcima, „Subscriptions.txt“ ili

„Publications.txt“, ovisno o tome što se želi dobiti.

4.1.2. Konzolni način rada

Konzolni način rada programa sugerira kako korisnik ima mogućnost u istoj sesiji

programa unijeti više različitih naredbi.

Za konzolni način, program se pokreće na sljedeći način:

java –jar diplomskiwebintereactor.jar console

Naredbe dostupne u ovom načinu rada su:

listcommands – prikazuje sve naredbe koje se mogu izvršiti

addsubscriptions – dodaje na poslužitelj sve pretplate koje se nalaze u

datoteci „Subscriptions.txt“ u radnom direktoriju iz kojeg je pokrenut program

addconversions – dodaje na poslužitelj sve konverzije iz datoteke

„Conversions.txt“, koja se treba nalaziti u radnom direktoriju.

unsubscribeall – ukloni sve pretplate koje su dodane u ovoj sesiji

unsubscribe [ID] – ukloni pretplatu čiji s definiranim [ID]

end – dovršava trenutnu sesiju

reset – postavlja poslužitelj na početno stanje

Page 52: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

47

4.1.3. Testni način rada

Slično kao i prilikom generiranja pretplata i objava, dovoljno je samo pokrenuti

program kako bi se provelo testiranje. Da bi testiranje bilo provedivo, u radnom direktoriju

programa treba postojati datoteka „Publications.txt“. Objave iz spomenute datoteke koriste

se za testiranje performansi sustava.

Za potrebe testiranja, napravljen je prilagođeni URL na poslužitelju koji za svaku objavu

vraća broj pronađenih pretplata i vrijeme obrade za pojedinu objavu.

Primjer odgovora poslužitelja za jednu objavu prilikom testiranja:

Najvažniji podatci odgovora su elapsedTime koje označava vrijeme obrade i count koji

označava koliko pretplata preklapa pristiglu objavu.

Pseudokod algoritma testiranja:

Program se pokreće na sljedeći način:

java –jar diplomskiwebintereactor.jar test

{

"elapsedTime": 20,

"success": true,

"error": null,

"count": 209,

"payload": []

}

Za sve objave u datoteci {

Učitaj objavu iz datoteke;

Pošalji objavu na poslužitelj;

Dohvati rezultate obrade;

Pohrani „elapsedTime“ i „count“ iz rezultata obrade;

}

Obradi akumulirane „elapsedTime“ i „count“ podatke;

Zapiši rezultate testiranja u datoteku

Page 53: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

48

Kada se pokrene testiranje, korisnik u konzoli može vidjeti neobrađene rezultate

testiranja za svaku pojedinu objavu, što je prikazano na slici 12.

Slika 12 – Ispis u konzoli prilikom testiranja sustava

Po završetku testiranja, rezultati testiranja koji su statistički obrađeni zapisani su u

datoteku. Kako bi statistička obrada podataka Za podatke koji sadrže prosjeke

akumuliranih vrijednosti računa se i standardna devijacija.

Primjer sadržaja datoteke:

Subscriptions count : 5000

Publications count : 400

Total publishing time : 2796,800 ms

Average time per publication : 6,992 +- 7,956 ms

Total hit publications execution time: 2244,400 ms

Avg hit publication execution time: 13,602 +- 8,752 ms

Total miss publications execution time: 552,400 ms

Avg miss publication execution time: 2,351 +- 1,335 ms

Publications with matches count : 165

Average subscription match time : 0,939 +- 1,301 ms

Page 54: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

49

Značanja pojedinih redaka u izvješću su:

Subscription count broj pretplata na poslužitelju u trenutku

testiranja

Publications count broj očitanja s kojima je provedeno

testiranje

Total publishing time ukupno potrošeno vrijeme na slanje svih

očitanja

Average time per publication prosječno vrijeme obrade jednog

senzorskog očitanja

Total hit publications execution

time

ukupno vrijeme obrade svih očitanja kod

kojih je pronađena barem jedna

preklapajuća pretplata

Avg hit publication execution

time

prosječno vrijeme obrade očitanja kod

kojih ima preklapanja s pretplatama

Total miss publication execution

time

ukupno vrijeme obrade svih očitanja kod

kojih nema preklapanja s pretplatama

Avg miss publication execution

time

prosječno vrijeme obrade očitanja kod

kojih nema preklapanja s pretplatama

Publication with matches broj objava kod kojih je postignuto

preklapanje sa barem jednom pretplatom

Average subscription match time prosječno vrijeme traženja jedne objave

Page 55: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

50

4.2. Rezultati testiranja

Slika 13 – Prikaz ovisnosti vremena objavljivanja svih očitanja zavisno o broju pretplata

Slika 14 – Prikaz ovisnosti prosječnog vremena objavljivanja jedne objave zavisno o broju pretplata

Page 56: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

51

Slika 15 – Standardna devijacija za vrijeme objavljivanja jednog očitanja

Slika 16 – Prikaz ovisnosti ukupnog vremena izvođenja objava s obzirom na porast broja pretplata

Page 57: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

52

Slika 17 – Prikaz ovisnosti prosječnog izvođenja objave kod koje postoji preklapanje sa barem jednom

pretplatom

Slika 18 – Standardna devijacija vremena izvođenja jedne objave kod koje postoji preklapanje sa barem

jednom pretplatom

Page 58: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

53

Slika 19 – Prikaz ovisnosti ukupnog vremena izvođenja objava kod kojih ne postoji ni jedno preklapanje

sa pretplatama

Slika 19 – Prikaz ovisnosti prosječnog izvođenja objave o broju pretplata, kod koje ne postoji

preklapanje ni sa jednom pretplatom

Page 59: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

54

Slika 20 – Standardna devijacija za vrijeme izvođenja jedne objave kod koje ne postoji preklapanje ni sa

jednom pretplatom

Slika 20 – Standardna devijacija za vrijeme izvođenja jedne objave kod koje ne postoji preklapanje ni sa

jednom pretplatom

Page 60: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

55

Slika 21 – Ovisnost vremena pronalaska točno jedne pretplate za pristiglo očitanje s obzirom na ukupan

broj pretplata

Slika 22 – Standardna devijacija vremena pronalaska točno jedne pretplate za pristiglo očitanje

Page 61: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

56

4.3. Diskusija rezultata

Proučavanjem dobivenih rezultata svakako se može zaključiti da se vrijeme obrade

svakog senzorskog očitanja povećava s brojem pretplata u sustavu. To se odražava i na

ostale rezultate mjerenja poput ukupnog i prosječnog vremena objave očitanja kod kojih

postoji preklapanje s pretplatama. Zanimljivo je s primijetiti dvije stvari; koeficijent

povećanja vremena obrade pretplata kod kojih nema preklapanja je manjeg intenziteta

nego vremena obrade pretplata s preklapanjem. Za pretpostaviti je da je to zbog prostornog

indeksiranja geometrija koje čine pretplatu, čime je sustav efikasniji prilikom izvođenja

prostornih predikata. Također, povećanje prosječnog vremena da bi se pronašla jedna

pretplata koja preklapa senzorsko očitanje raste s manjim koeficijentom nego prosječno

vrijeme obrade senzorskog očitanja kod kojeg postoji preklapanje. Značajna je i činjenica

da je prosječno vrijeme obrade očitanja kod kojeg postoji preklapanje s pretplatom uz

deseterostruko povećanje broja pretplata, raslo s faktorom oko 6. S druge strane, povećanje

prosječnog vremena traženja jedne pretplate je raslo s faktorom 2.5, uz jednako povećanje

broja pretplata. Broj objava kod kojih postoji preklapanje očekivano raste s povećanjem

broja pretplata. Ipak, za taj parametar nije bitno s kojim faktorom raste, jer najvećim

dijelom ovisi o razdiobi generiranih pretplata i objava.

Za kraj se može spomenuti da je sustav skalabilan, jer je povećanje broja pretplata u

sustavu uzrokovalo linearno povećanje vremena obrade očitanja, a ne polinomno.

Page 62: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

57

ZAKLJUČAK

Široka pristupačnost mobilnih tehnologija i senzora danas donosi nove načine na koje

znanstvenici mogu pristupati senzorskim očitanjima sa šireg geografskog područja. Osim

same vrste senzorskog očitanja, odnosno pojave koju odabrani senzor mjeri, iznimnu

važnost predstavlja geolokacija senzorskog očitanja. Iz tog je razloga bitno savladati

problem projekcije karata i prikaza kompleksnih geometrija, kao i uspoređivanje istih kroz

prostorne predikate kako bi se utvrdio njihov međusobni odnos. Danas je proces

prikupljanja podataka takav da korisnici definiraju svoje interese za podatcima. Kada

podatci postanu dostupni u obliku očitanja se prosljeđuju do korisnika ako postoji

preklapanje između interesa, odnosno u kontekstu ovog rada pretplate. Gotovo idealna

paradigma koja omogućava stvarnovremensku dostavu podataka korisnicima je objavi-

pretplati. Ipak, prije nego dođe do dostavljanja podataka korisniku, nužno je na efikasan

način riješiti problem pronalaska onih pretplata koje geometrijski i atributno preklapaju

pristiglo senzorsko očitanje. U ovom radu efikasno geometrijsko preklapanje se postiže

korištenjem prostornih indeksa koji su dostupni kroz programsku knjižnicu Java Topology

Suite. Ostvareni sustav objavi-pretplati ima i mogućnost proširenja funkcionalnosti,

odnosno dodavanja novih vrsta senzorskih očitanja kroz sučelje REST na poslužitelju.

Osim poslužitelja, razvijena je i mobilna aplikacija kao klijent koji sudjeluje u sustavu kao

pretplatnik na senzorska očitanja. Konačno, izgrađeni sustav je testiran tako da se

proučavao utjecaj broja pretplata u sustavu na razne parametre objave pristiglih senzorskih

očitanja. Rezultati pokazuju kako sustav na zadovoljavajuće brz način pronalazi pretplate

koje preklapaju pristigla senzorska očitanja. Također, pokazuje se linearno povećanje

vremena obrade pristiglih zahtjeva, odnosno da je sustav skalabilan.

_________________________

Page 63: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

58

LITERATURA

[1] HAUPT F; KARASTOYANOVA, D; LEYMANN, F; SCROTH B; Web Services (ICWS), IEEE International Conference on 2014, stranice 129 – 136, London: John Wiley, 2006.

[2] An Album of Map Projections, http://pubs.usgs.gov/pp/1453/report.pdf, 10.6.2015

[3] ASSILZADEH H.; ZHONG, Z.; KASSAB A.S.; GAO J.; LEVY J.K.; Development of even-driven and scalable oil spill monitoring and managment system

[4] PODNAR ŽARKO, I.; PRIPUŽIĆ K.; LOVREK, I; KUŠEK, M; Raspodijeljeni sustavi, radna inačica udžbenika, Zagreb, 2014

[5] Smartphone OS market share Q1 2015, http://www.idc.com/prodserv/smartphone-os-market-share.jsp, 15.5.2015

[6] Zagreb Monthly Climate Average, http://www.worldweatheronline.com/Zagreb-weather-averages/Grad-Zagreb/HR.aspx, 1.5.2015

[7] O Zagrebu, http://www.zagreb.hr/default.aspx?id=1081, 18.5.2015

[8] KASSAB, A; LIANG, S; GAO, Y; Real time notification and improved situational awereness in fire emergencies using geospatial-based publish/subscribe, Science direct, Svezak 12, 2010, 431 – 438

[9] JTS Topology Suite, http://www.vividsolutions.com/jts/JTSHome.htm, 10.5.2015

[10] Understanding spatial relations, http://edndoc.esri.com/arcsde/9.0/general_topics/understand_spatial_relations.htm, 25.5.2015

[11] Cloud messaging, https://developers.google.com/cloud-messaging/, 25.5.2015

[12] N. Sharma. “Push Technology–Long Polling,” International Journal of Computer Science and Management Research, Svezak 2, 2013, pp.2581-2584, ISSN 2278-733

Page 64: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

59

SAŽETAK

Ovaj rad obrađuje problem prikupljanja senzorskih očitanja i njihova prosljeđivanja

zainteresiranim korisnicima. Sustav izgrađen u ovom radu ima sposobnost proširenja s

novim vrstama senzorskih očitanja, za koja se potom mogu primati objave. U radu je

razvijen kompletni sustav, što uključuje arhitekturu poslužitelja, algoritme, strukture

podataka i mobilnu aplikaciju kao klijenta. Za definiranje prostornih geometrija korišten je

format GeoJSON, a za izvođenje predikata između dvije geometrije koristi se programska

knjižnica Java Topology Suite. Izgrađeni sustav testiran je sa skupom pretplata i objava

koji su generirani odgovarajućim programom, razvijenim isključivo za potrebe ovog rada.

Rezultati testiranja pokazuju kako je sustav skalabilan, fleksibilan i zadovoljavajuće brz u

prosljeđivanju pristiglih senzorskih očitanja korisnicima čije pretplate preklapa objava.

Page 65: Geoprostorni sustav objavi pretplati za obradu toka ... · koji koriste senzore za nadziranje uvjeta poput temperature, zvuka, tlaka na raznim lokacijama. Senzorske mreže postale

60

SUMMARY

This thesis focuses on sensor reading acquiring and propagation of readings to

participants in system who are showing interest in such data. System has been built in

flexible manner, so new sensor readings types can be registered at runtime, and then

published as they come. The system built in this thesis is completely functional, including

server arhitecture, algorithms, data structures and mobile application that serves as client.

GeoJSON format is used to describe spatial components, and spatial predicates are

evaluated using Java Topology Suite library. The system has been tested with set of

subscriptions and sensor readings, which are generated using custom program, developed

only to ensure test data. Result are showing that system is scalable, flexible and

satisfactorily fast when it comes to forwarding sensor readings to those clients that have

matching subscriptions for published sensor reading.