Cruscotto per la navigazione degli indicatori di sostenibilità e - Cnr
Cruscotto per la navigazione degli indicatori di sostenibilità e - Cnr
Cruscotto per la navigazione degli indicatori di sostenibilità e - Cnr
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
2012<br />
Progetto Turismo Pisa<br />
Deliverable D2.2 Realizzazione del prototipo<br />
<strong>per</strong> <strong>la</strong> <strong>navigazione</strong> dell’infrastruttura <strong>di</strong><br />
conoscenza<br />
Coor<strong>di</strong>namento:<br />
Fosca Fosca Giannotti<br />
Salvatore Rinzivillo<br />
KDD KDD Lab, Lab, ISTI-CNR<br />
Via Via Moruzzi Moruzzi 1, 1, 56124 56124 Pisa Pisa<br />
fosca.giannotti@isti.cnr.it<br />
salvatore.rinzivillo@isti.cnr.it<br />
0
Autori: Barbara Furletti. Lorenzo Gabrielli (ISTI-CNR)
Sommario<br />
1 Interfaccia <strong>di</strong> <strong>navigazione</strong> ............................................................................................................ 1<br />
1.1 Interfaccia back-end .............................................................................................................. 2<br />
1.2 Interfaccia front-end .............................................................................................................. 2<br />
2 Servizio <strong>di</strong> visualizzazione <strong>per</strong> dati geo-referenziati ................................................................... 4<br />
3 Popo<strong>la</strong>mento del Data Warehouse................................................................................................ 5<br />
4 Riferimenti ................................................................................................................................... 7
Questo documento descrive <strong>la</strong> realizzazione del prototipo <strong>di</strong> <strong>navigazione</strong> del sistema (descritto in<br />
(1)) che raccoglie e integra i dati dell’osservatorio.<br />
Il prototipo <strong>di</strong> <strong>navigazione</strong> estende <strong>la</strong> base <strong>di</strong> conoscenza (DBMS Postgres e Data warehouse) con<br />
due interfacce <strong>di</strong> <strong>navigazione</strong>: l’interfaccia <strong>di</strong> back-end, orientata ad un utente es<strong>per</strong>to, <strong>per</strong>mette <strong>di</strong><br />
navigare le gerarchie e visualizzare in modo elementare le i valori <strong>degli</strong> <strong>in<strong>di</strong>catori</strong>; l’interfaccia <strong>di</strong><br />
front-end, orientata ad un utente finale, consente <strong>di</strong> esplorare <strong>la</strong> base <strong>di</strong> conoscenza e <strong>di</strong> ottenere i<br />
risultati secondo un modello grafico più complesso.<br />
Data <strong>la</strong> <strong>di</strong>sponibilità <strong>di</strong> dati geo-referenziati (nel caso specifico i dati <strong>di</strong> telefonia mobile), è stato<br />
realizzato un servizio aggiuntivo <strong>di</strong> visualizzazione dei dati sul<strong>la</strong> mappa geografica.<br />
Attraverso una alimentazione costante del sistema da parte dei fornitori dei dati, viene garantita <strong>la</strong><br />
consistenza del sistema nel tempo.<br />
Figura 1 mostra lo schema ad alto livello delle componenti del sistema.<br />
Figura 1: Schema ad alto livello dell’architettura del sistema.<br />
1 Interfaccia <strong>di</strong> <strong>navigazione</strong><br />
L’interfaccia <strong>di</strong> back-end consente <strong>di</strong> accedere alle funzionalità del DWH esprimendo me<strong>di</strong>ante il<br />
linguaggio MDX (MultiDimensional eXpressions) (2) i coman<strong>di</strong>/sintassi <strong>per</strong> <strong>la</strong> <strong>navigazione</strong> del<br />
cubo OLAP.<br />
L’interfaccia <strong>di</strong> front-end è orientata invece all’utente finale e fornisce una serie <strong>di</strong> strumenti <strong>per</strong> <strong>la</strong><br />
<strong>navigazione</strong> e esplorazione dei dati contenuti nel DWH.<br />
1
1.1 Interfaccia back-end<br />
L’interfaccia <strong>di</strong> <strong>navigazione</strong> è realizzata attraverso il tool open source JPIVOT (3) che consente <strong>di</strong><br />
visualizzare le misure in base alle <strong>di</strong>mensioni <strong>di</strong> analisi e alle rispettive gerarchie scelte. Figura 2<br />
mostra un esempio dell’aspetto dell’interfaccia implementata con JPivot. In questo caso ma misura<br />
esplorata è Numero voucher ovvero i <strong>per</strong>messi <strong>per</strong> i bus turistici venduti nell’anno 2009.<br />
L’interfaccia <strong>per</strong>mette <strong>di</strong> esplorare <strong>di</strong>namicamente le <strong>di</strong>mensioni spaziali e temporali in maniera<br />
molto semplice ed intuitiva.<br />
Figura 2: Esempio <strong>di</strong> <strong>navigazione</strong> dei risultati implementato con JPivot.<br />
La statistica mostrata in Figura 2 è il risultato del<strong>la</strong> seguente query MDX:<br />
select {[Measures].[Numero voucher]} ON COLUMNS,<br />
({[Time.H1].[2009].Children} * {[Regions].[toscana].[pisa].[pisa]}) ON ROWS<br />
from [DWH_turismo]<br />
Questa interfaccia è accessibile all’in<strong>di</strong>rizzo:<br />
http://mat<strong>la</strong>spisa.isti.cnr.it:8080/mondrian/testpage.jsp?query=DWH_turismo<br />
1.2 Interfaccia front-end<br />
L’interfaccia front-end dell’utente finale è accessibile all’in<strong>di</strong>rizzo:<br />
http://mat<strong>la</strong>spisa.isti.cnr.it/foundation/osserv.php<br />
Per ogni in<strong>di</strong>catore è possibile visualizzare l’andamento temporale dei valori ed eventualmente<br />
focalizzare lo stu<strong>di</strong>o su un partico<strong>la</strong>re <strong>per</strong>iodo temporale utilizzando lo strumento fornito<br />
dall’interfaccia.<br />
Le richieste <strong>degli</strong> utenti sono co<strong>di</strong>ficate in interrogazioni al DWH utilizzando uno script javascript.<br />
Una volta recu<strong>per</strong>ate le informazioni dal DWH, queste sono visualizzate utilizzando <strong>la</strong> libreria<br />
javascript d3.js (4).<br />
Figura 3 mostra un esempio <strong>di</strong> visualizzazione front-end del<strong>la</strong> serie temporale dei bus turistici<br />
arrivati a Pisa.<br />
Per ogni in<strong>di</strong>catore, viene evidenziato il fornitore del dato (nel caso in esempio, il Comune <strong>di</strong> Pisa),<br />
e una descrizione sintetica dell’in<strong>di</strong>catore scelto.<br />
Nell’area del grafico, l’asse delle ascisse evidenzia <strong>la</strong> finestra temporale <strong>di</strong> rilevamento, mentre<br />
2
l’asse delle or<strong>di</strong>nate riporta i volumi <strong>di</strong> presenze <strong>di</strong> bus. Posizionando il mouse sul grafico in<br />
corrispondenza <strong>di</strong> ogni rilevamento, a margine destro dell’area <strong>di</strong> visualizzazione viene evidenziato<br />
il dettaglio corrispondente (nel caso <strong>di</strong> esempio, il rilevamento corrisponde a 3692 bus turistici nel<br />
mese <strong>di</strong> Aprile 2010).<br />
Sul<strong>la</strong> destra sono riportati tutti gli <strong>in<strong>di</strong>catori</strong> dell’OTD oggetto <strong>di</strong> questo stu<strong>di</strong>o.<br />
L’interfaccia mette a <strong>di</strong>sposizione un sistema <strong>di</strong> confronto tra <strong>in<strong>di</strong>catori</strong> che visualizza, sul<strong>la</strong> stessa<br />
area, il grafico corrispondente. In Figura 4 viene mostrato il confronto tra il numero <strong>di</strong> autobus<br />
turistici che hanno sostato previo acquisto <strong>di</strong> voucher e autobus turistici che hanno sostato senza<br />
voucher.<br />
Figura 3: Esempio <strong>di</strong> <strong>navigazione</strong> dei risultati nell’interfaccia front-end.<br />
3
Figura 4: Confronto tra <strong>in<strong>di</strong>catori</strong>.<br />
2 Servizio <strong>di</strong> visualizzazione <strong>per</strong> dati geo-referenziati<br />
Il servizio <strong>di</strong> visualizzazione è orientato al<strong>la</strong> rappresentazione spaziale delle informazioni a cui è<br />
associato un attributo geografico.<br />
Il servizio integra il <strong>la</strong>yer informativo prodotto dall’analisi dei dati con quello geografico proprio <strong>di</strong><br />
una mappa spaziale. La sovrapposizione <strong>di</strong> questi <strong>la</strong>yer <strong>per</strong>mette una migliore comprensione delle<br />
informazioni estratte dal DWH.<br />
L’implementazione è realizzata me<strong>di</strong>ante l’uso delle librerie Javascript D3 (4) e Google Maps<br />
JavaScript API v3 (5). La libreria Google Maps fornisce il supporto <strong>per</strong> il <strong>di</strong>segno del <strong>la</strong>yer<br />
geografico <strong>per</strong>mettendo <strong>di</strong> aggiungere contenuti informativi <strong>di</strong> vario genere. Javascript D3 è<br />
utilizzato <strong>per</strong> il caricamento e <strong>la</strong> gestione dei dati.<br />
L’attuale implementazione è focalizzata sul<strong>la</strong> rappresentazione <strong>di</strong> informazioni estratte dai dati<br />
GSM, che attualmente sono l’unico dataset con associata una informazione spaziale. In partico<strong>la</strong>re<br />
si rappresentano mappe <strong>di</strong> densità <strong>di</strong>segnando sul<strong>la</strong> mappa <strong>la</strong> griglia <strong>di</strong> co<strong>per</strong>tura del segnale<br />
telefonico.<br />
Questo prototipo è esten<strong>di</strong>bile <strong>per</strong> <strong>la</strong> rappresentazione <strong>di</strong> altre tipologie <strong>di</strong> dati geo-referenziati e<br />
delle statistiche associate.<br />
Un esempio <strong>di</strong> risultato consultabile attraverso il servizio <strong>di</strong> visualizzazione è mostrato in Figura 5.<br />
In questo caso, l’informazione rappresentata è <strong>la</strong> mappa <strong>di</strong> densità prodotta considerando il numero<br />
<strong>di</strong> telefonate effettuate in un giorno feriale nel<strong>la</strong> fascia oraria 5:00-8:00 da utenti del servizio <strong>di</strong><br />
telefonia mobile nell’area urbana <strong>di</strong> Pisa. Nel caso specifico dei dati <strong>di</strong> telefonia mobile, le aree<br />
spaziali (i poligoni) rappresentano <strong>la</strong> zona co<strong>per</strong>ta da una partico<strong>la</strong>re antenna.<br />
Il significato del<strong>la</strong> gradazione dei colori è spiegato dal<strong>la</strong> legenda posta in basso a sinistra, mentre il<br />
menu in basso a destra consente <strong>di</strong> selezionare <strong>di</strong>versi tipi <strong>di</strong> informazioni da visualizzare.<br />
4
Questo servizio è <strong>di</strong>sponibile al<strong>la</strong> url: mat<strong>la</strong>spisa.isti.cnr.it/maps/index.php<br />
Figura 5: 2 Servizio <strong>di</strong> visualizzazione <strong>per</strong> dati geo-referenziati<br />
3 Popo<strong>la</strong>mento del Data Warehouse<br />
Lo scopo del DWH è quello <strong>di</strong> mantenere <strong>la</strong> consistenza <strong>di</strong> dati storici e <strong>per</strong>mettere l’aggiornamento<br />
dei dati nel tempo. Questo aggiornamento è possibile attraverso <strong>la</strong> definizione <strong>di</strong> procedure <strong>per</strong><br />
l’alimentazione automatica del sistema.<br />
Per garantire <strong>la</strong> consistenza del DWH è dunque necessaria <strong>la</strong> col<strong>la</strong>borazione dei fornitori dei dati<br />
nel<strong>la</strong> fase <strong>di</strong> raccolta <strong>di</strong> nuovi dati e alimentazione <strong>per</strong>io<strong>di</strong>ca nel sistema.<br />
A tale scopo sono state implementate una serie <strong>di</strong> interfacce RESTFul (6) <strong>per</strong> poter gestire le<br />
procedure <strong>di</strong> comunicazione e aggiornamento dei dati me<strong>di</strong>ante un servizio web.<br />
Le interfacce definiscono due tipo <strong>di</strong> meto<strong>di</strong>: uno <strong>per</strong> <strong>la</strong> selezione dei dati (get) e uno <strong>per</strong><br />
l’aggiornamento <strong>per</strong>io<strong>di</strong>co (post).<br />
Un metodo get <strong>per</strong> <strong>la</strong> richiesta <strong>di</strong> un in<strong>di</strong>catore è il seguente:<br />
getMeasure(request)<br />
GET<br />
http://mat<strong>la</strong>spisa.isti.cnr.it:8080/turismo-rest/getMeasure<br />
Request format:<br />
@QueryParam("startime") long:inizio dell’intervallo <strong>di</strong> osservazione(ms);<br />
@QueryParam("endtime") long:fine dell’intervallo <strong>di</strong> osservazione(ms);<br />
5
@QueryParam("comune") String: nome del Comune;<br />
@QueryParam("measure") String: nome del<strong>la</strong> misura.<br />
Esempio:<br />
http://mat<strong>la</strong>spisa.isti.cnr.it:8080/turismorest/getMeasure?startime=1215372400000&endtime=1315823200000&comune=pisa&measure=K<br />
m+<strong>di</strong>+piste+cic<strong>la</strong>bili<br />
Response Format:<br />
List of “ts, value”<br />
Esempio:<br />
2010-12,14.0<br />
2011-01,0.0<br />
…<br />
Le interfacce <strong>di</strong> post sono state realizzate tendendo conto del fatto che alcuni dati <strong>di</strong> base possono<br />
essere inviati contemporaneamente, come <strong>per</strong> esempio le informazioni re<strong>la</strong>tive ai bus turistici. La<br />
chiamata setPullmanTuristici(pullman) <strong>per</strong>mette infatti <strong>di</strong> aggiornare insieme le variabili<br />
numeroBus e numeroVoucher <strong>per</strong> il <strong>per</strong>iodo “time” e il comune “comune”.<br />
setPullmanTuristici(pullman)<br />
POST<br />
http://mat<strong>la</strong>spisa.isti.cnr.it:8080/turismo-rest/setPullmanTuristici<br />
Request format:<br />
@XmlRootElement(name = "pullmanTuristiciParams")<br />
public c<strong>la</strong>ss PullmanTuristiciParams {<br />
@XmlElement(name = "comune")<br />
public String comune;<br />
@XmlElement(name = "time")<br />
public long time;<br />
@XmlElement(name = "numeroBus”)<br />
public int numeroBus;<br />
@XmlElement(name = "numeroVoucher”)<br />
public int numeroVoucher;<br />
}<br />
Response Format:<br />
@XmlRootElement(name = "result")<br />
public c<strong>la</strong>ss Result {<br />
@XmlElement(name = "message")<br />
public String message;<br />
}<br />
Tutti i meto<strong>di</strong> REST definiti <strong>per</strong> ogni fornitori sono descritti in dettaglio nell’allegato tecnico (7).<br />
6
4 Riferimenti<br />
1. ISTI-CNR. D1.2 Design e realizzazione dell'infrastruttura <strong>di</strong> conoscenza. 2012.<br />
2. Multi<strong>di</strong>mensional Expressions. [Online] http://msdn.microsoft.com/en-us/library/ms145506.aspx.<br />
3. JPivot. [Online] http://jpivot.sourceforge.net/.<br />
4. Libreria javascript D3. [Online] https://github.com/mbostock/d3/wiki.<br />
5. Google. Google Maps JavaScript API v3. [Online]<br />
https://develo<strong>per</strong>s.google.com/maps/documentation/javascript/.<br />
6. Oracle. RESTful Web Services. [Online]<br />
http://www.oracle.com/technetwork/articles/javase/index-137171.html.<br />
7. ISTI-CNR. D2.2 Allegato Tecnico. 2012.<br />
8. —. D1.1 - Descrizione dei dati e delle sorgenti <strong>di</strong>sponibili. 2012.<br />
9. —. D2.2-Realizzazione del prototipo <strong>per</strong> <strong>la</strong> <strong>navigazione</strong> dell'infrastruttura <strong>di</strong> conoscenza. 2012.<br />
10. Group, PostgreSQL Global Development. PostgreSQL. [Online] The PostgreSQL Global<br />
Development Group . http://www.postgresql.org/.<br />
11. Mondrian Pentaho. [Online] Pentaho. http://mondrian.pentaho.com/.<br />
7