Tracking di dispositivi mobili in ambienti WebGIS

annuncio pubblicitario
UNIVERSITÀ DEGLI STUDI DEL SANNIO
Facoltà di Ingegneria
Corso di Laurea in Ingegneria Informatica
Tesi di Laurea
in
Fondamenti di Informatica
Tracking di dispositivi mobili in ambienti
WebGIS
Relatore:
Candidato:
Ch.mo Prof. Michele Ceccarelli
Francesco Cioffi
Matricola: 195 / 000014
Correlatore:
Dott. Michele Di Capua
ANNO ACCADEMICO 2005/2006
Ai miei genitori, che mi hanno sostenuto lungo
il difficile percorso di studi che si conclude con la laurea.
A mia madre in particolare che mi è sempre stata vicino
specie nei momenti più difficili.
Ed a mio padre che ha sempre fatto dei miei studi la priorità maggiore
A Michele, mio fratello, che è la persona a cui voglio più bene al mondo.
Un ringraziamento particolare va al professore Michele Ceccarelli,
che, in questi ultimi mesi, ha contribuito alla mia formazione professionale.
Mi ha assistito durante il periodo del tirocinio e la redazione della dissertazione
dimostrandosi una persona davvero disponibile e comprensiva.
Dandomi la massima fiducia e mettendosi a disposizione per ogni difficoltà.
Ringrazio il mio correlatore, il Dott. Michele Di Capua
per la pazienza e il fondamentale supporto datomi durante il periodo del tirocinio.
Una figura professionale che non si è mai posta come supervisore, piuttosto come amico.
Ringrazio anche tutto il gruppo della Unlimited Software s.r.l., che mi ha accolto
fra loro permettondomi di lavorare in un ambiente sereno e professionale.
Ulteriori parole di ringraziamento rivolte al relatore e al correlatore
non sarebbero sufficienti a rendere l’idea di ciò che penso di loro e
quanto abbiano contribuito a fare di questo capitolo della mia carriera universitaria
il più bello e il più sereno nonostante l’impegno costante e le lunghe giornate di lavoro.
Grazie per avermi fatto VIVERE questa esperienza,
e ancora grazie ai miei genitori per avermi dato la possibilità di studiare!
Alla mia famiglia:
mio padre Roberto Cioffi
mia madre Maria Rosaria Bevilacqua
mio fratello Michele Cioffi
Indice
I
WebGIS
3
1 Cartografia e GIS
4
1.1
Cartografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
1.2
Sistemi informativi geografici . . . . . . . . . . . . . . . . . . . . . .
4
1.2.1
GIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
1.2.2
Modello dei dati . . . . . . . . . . . . . . . . . . . . . . . . . .
5
1.2.3
Tipologia di dati geografici . . . . . . . . . . . . . . . . . . . .
6
1.2.4
Funzionalità . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
Rappresentazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.3.1
Proiezione cartografica . . . . . . . . . . . . . . . . . . . . . .
8
1.3.2
Coordinate geografiche . . . . . . . . . . . . . . . . . . . . . .
8
1.3.3
WGS84 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
1.3
2 WebGIS
2.1
10
WebGIS software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.1
MapServer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.2
ArcView Internet Map Server (AVIMS) . . . . . . . . . . . . . 12
2.1.3
Autodesk MapGuide 4.0 . . . . . . . . . . . . . . . . . . . . . 14
2.1.4
MapXtreme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
iii
2.1.5
GeoMedia Web Map . . . . . . . . . . . . . . . . . . . . . . . 16
2.1.6
Perché Alov / TimeMap?
3 Shapefile
3.1
20
Organizzazione del file principale . . . . . . . . . . . . . . . . . . . . 21
3.1.1
3.2
. . . . . . . . . . . . . . . . . . . . 18
Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Figure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4 Protocollo NMEA
23
4.1
Introduzione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.2
Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.3
“Frasi” NMEA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.4
Decodifica di una “frase” . . . . . . . . . . . . . . . . . . . . . . . . . 25
5 Infomobilità
5.1
5.2
27
Sistema di rilevamento satellitare della posizione . . . . . . . . . . . . 27
5.1.1
Principio di funzionamento . . . . . . . . . . . . . . . . . . . . 28
5.1.2
Tipo di modulazione e frequenze . . . . . . . . . . . . . . . . . 29
5.1.3
Grado di precisione del rilievo . . . . . . . . . . . . . . . . . . 29
5.1.4
Ricevitore GPS . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.1.5
Principio di funzionamento . . . . . . . . . . . . . . . . . . . . 30
5.1.6
Accesso telematico . . . . . . . . . . . . . . . . . . . . . . . . 32
5.1.7
Telesorveglianza . . . . . . . . . . . . . . . . . . . . . . . . . . 32
5.1.8
GLONASS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Galileo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.2.1
Servizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5.2.2
Principio di funzionamento . . . . . . . . . . . . . . . . . . . . 35
5.3
II
Applicazioni reali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.3.1
Navigatore . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.3.2
Tracking Server . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.3.3
Tracking di flotte . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.3.4
Utilizzi del tracking . . . . . . . . . . . . . . . . . . . . . . . . 39
5.3.5
Telesorveglianza . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Applicazione web
6 Introduzione
40
41
6.1
Premessa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.2
Architettura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6.3
Tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
6.4
Conversioni delle coordinate . . . . . . . . . . . . . . . . . . . . . . . 44
6.5
Filosofia di sviluppo
7 TimeMap
. . . . . . . . . . . . . . . . . . . . . . . . . . . 44
46
7.1
Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
7.2
Client / Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
7.3
File di layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.3.1
Oggetti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.3.2
Dimensioni ed allineamento . . . . . . . . . . . . . . . . . . . 50
7.3.3
Bottoni e toolbar . . . . . . . . . . . . . . . . . . . . . . . . . 50
7.3.4
Pannelli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7.3.5
Colori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
7.3.6
Collegamento alla mappa . . . . . . . . . . . . . . . . . . . . . 51
7.4
File di progetto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7.4.1
Database Clearinghouse . . . . . . . . . . . . . . . . . . . . . 51
7.4.2
Layers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7.5
Applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
7.6
Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
8 Architettura
8.1
Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
8.1.1
8.2
8.3
8.4
Aggiunta di un nuovo dispositivo . . . . . . . . . . . . . . . . 55
Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
8.2.1
Comunicazione con i dispositivi GPS . . . . . . . . . . . . . . 56
8.2.2
Registrazione di un dispositivo GPS . . . . . . . . . . . . . . . 57
8.2.3
Comunicazione con l’applet . . . . . . . . . . . . . . . . . . . 58
Applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
8.3.1
Scheda dettagli . . . . . . . . . . . . . . . . . . . . . . . . . . 59
8.3.2
Pannello di controllo per il tracking . . . . . . . . . . . . . . . 60
8.3.3
Registrazione . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
MIDLet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
8.4.1
Configurazione dei parametri di connessione . . . . . . . . . . 61
8.4.2
Comunicazione Bluetooth . . . . . . . . . . . . . . . . . . . . 61
8.4.3
Invio della propria posizione . . . . . . . . . . . . . . . . . . . 61
9 Funzionamento
9.1
54
62
Oggetti mobili . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
9.1.1
I dispositivi GPS . . . . . . . . . . . . . . . . . . . . . . . . . 62
9.1.2
La classe “GPSDevice” . . . . . . . . . . . . . . . . . . . . . . 64
9.2
9.3
9.4
Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
9.2.1
Comunicazione con la MIDlet . . . . . . . . . . . . . . . . . . 65
9.2.2
Memorizzazione delle posizioni . . . . . . . . . . . . . . . . . . 66
9.2.3
Comunicazione con l’applet . . . . . . . . . . . . . . . . . . . 67
Applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
9.3.1
Layers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
9.3.2
Scheda dettagli . . . . . . . . . . . . . . . . . . . . . . . . . . 67
9.3.3
Pannello di Tracking . . . . . . . . . . . . . . . . . . . . . . . 70
MIDLet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
9.4.1
Ricerca Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . 78
9.4.2
Opzioni di connessione . . . . . . . . . . . . . . . . . . . . . . 79
9.4.3
Verifica della connessione . . . . . . . . . . . . . . . . . . . . . 81
9.4.4
Invio della propria posizione al server . . . . . . . . . . . . . . 81
10 Codice sorgente
84
10.1 Modifiche apportate ai sorgenti originali . . . . . . . . . . . . . . . . 84
10.1.1 Classe Carte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
10.1.2 Classe UploadServlet . . . . . . . . . . . . . . . . . . . . . . . 85
10.1.3 Costanti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
10.2 Classi sviluppate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
10.2.1 Servlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
10.2.2 Applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
10.2.3 Tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
10.2.4 MIDlet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
11 Installazione e configurazione
98
11.1 Installazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
11.2 Caricamento dei dati geografici . . . . . . . . . . . . . . . . . . . . . 99
11.2.1 Caricamento delle mappe . . . . . . . . . . . . . . . . . . . . . 99
11.2.2 Gestione oggetti mobili . . . . . . . . . . . . . . . . . . . . . . 100
11.3 Impostazione dei dati . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
12 Sviluppi futuri
103
12.1 Espandibilità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
12.2 MIDlet per cellulari con antenna GPS integrata . . . . . . . . . . . . 103
12.3 Visualizzazione di informazioni sul cellulare
. . . . . . . . . . . . . . 104
12.4 Gestione del formato SVG sul cellulare . . . . . . . . . . . . . . . . . 104
12.5 Configurazione dei dispositivi da monitorare . . . . . . . . . . . . . . 105
12.6 Sicurezza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
12.7 Gestione di eventi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
12.8 Modifica mappe dal cellulare . . . . . . . . . . . . . . . . . . . . . . . 105
12.9 Analisi del territorio . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
III
Appendice
13 Software
107
108
13.1 Software e linguggio di programmazione . . . . . . . . . . . . . . . . 108
13.2 MIDP 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
13.3 Sun Java Wireless Toolkit 2.3 Beta . . . . . . . . . . . . . . . . . . . 109
13.4 Tomcat 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
13.5 MySQL 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
13.6 Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
13.6.1 Plug-in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Bibliografia
111
Elenco delle figure
115
Elenco delle tabelle
116
14 Ulteriori informazioni
117
14.1 Infrastruttura utilizzata . . . . . . . . . . . . . . . . . . . . . . . . . 117
14.2 Telefoni con ricevitori GPS . . . . . . . . . . . . . . . . . . . . . . . . 117
14.3 Questo documento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
14.4 Sistema operativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
14.5 Browser web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Introduzione e scopo del lavoro
Scopo della tesi è descrivere il sistema di “Tracking di dispositivi mobili” sviluppato “in ambiente WebGIS”, attività svolta durante il periodo di tirocinio e durante
il perodo di tesi.
È stato sviluppato un software in grado di monitorare, tramite un browser
web, dispositivi mobili (eg. cellulare dotato di ricevitore GPS), visualizzandone
dinamicamente la posizione su una mappa GIS, da una console centralizzata.
La prima fase del lavoro è consistita in un’analisi delle tecnologie esistenti nell’ambito del WebGIS. Acquisite le nozioni teoriche fondamentali riguardo la cartografia e il GIS, sono stati successivamente analizzati i principali software esistenti.
Dopo un’attento studio di tali software è stato scelto Alov / TimeMap, una
combinazione di un server di mappe e di un’applet Java che ha soddisfatto subito i
requisiti fondamentali, dettagliati nei capitoli succesivi.
Il sistema presentato, ne eredita le funzionalità di base, ed aggiunge la possibilità
di tenere traccia in tempo reale della posizione di dispositivi mobili.
L’attività principale è quindi consistita nello sviluppo di componenti aggiuntive
sulle tre aree interessate (client, server, mobile), in grado di estendere e innovare
alcune delle funzionalità presenti sul sistema di origine.
Parte I
WebGIS
Capitolo 1
Cartografia e GIS
1.1
Cartografia
La cartografia è l’insieme di conoscenze scientifiche, tecniche ed artistiche finalizzate
alla rappresentazione simbolica ma veritiera di informazioni geografiche1 su supporti
piani (carte geografiche) o sferici (globi).
Gli studi cartografici e le relative applicazioni nei diversi campi applicativi sono
stati rivoluzionati dallo sviluppo e dalla diffusione dei GIS[1] (“Geographic Information System”, Sistemi Informativi Geografici).
1.2
Sistemi informativi geografici
Un GIS è un sistema informativo computerizzato che consente l’acquisizione, la
registrazione, l’analisi, la visualizzazione e la restituzione di informazioni derivanti
da dati geografici (georeferenziati).
1
o statistiche, demografiche, economiche, politiche, culturali, ma comunque in relazione al luogo
geografico nel quale si realizzano
1.2 Sistemi informativi geografici
1.2.1
5
GIS
Il GIS è l’inseime di una potente serie di strumenti per acquisire, memorizzare,
estrarre, trasformare e visualizzare dati spaziali dal mondo reale.
Si tratta di un sistema informatico in grado di analizzare dati spaziali associando
a ciascun elemento rappresentato un database informativo (anche noto come dato
non spaziale).
Il GIS può essere visto come una forma di DBMS (Database Management System), in grado di gestire dati geografici.
1.2.2
Modello dei dati
Per la rappresentazione dei dati in un sistema informatico occorre formalizzare un
modello rappresentativo flessibile che si adatti ai fenomeni reali. Nel GIS abbiamo
tre tipologie di informazioni:
Informazioni Geometriche relative alla rappresentazione cartografica degli oggetti rappresentati: forma (punto, linea poligono), la dimensione e la posizione
geografica,
Topologiche riferite alle relazioni reciproche tra gli oggetti: connessione, adiacenza, inclusione etc. ,
Informative riguardanti i dati (numerici, testuali etc.) associati ad ogni oggetto.
Il GIS prevede la gestione di queste informazioni in un database relazionale.
L’aspetto che caratterizza il GIS è quello geometrico: esso memorizza la posizione
del dato impiegando un sistema di proiezione reale che definisce la posizione geografica dell’oggetto. Inoltre il GIS gestisce contemporaneamente i dati provenienti da
diversi sistemi di proiezione e riferimento.
1.2 Sistemi informativi geografici
6
A differenza della cartografia su carta, la scala, in un GIS, è un parametro di qualità del dato e non di visualizzazione. Il valore della scala, esprime le cifre significative
che devono essere considerate valide rispetto alle coordinate di georiferimento.
1.2.3
Tipologia di dati geografici
Il mondo reale può essere rappresentato in un GIS attraverso due tipologie principali
di dato: il dato vettoriale e il dato raster.
I dati vettoriali sono costituiti da elementi semplici quali punti, linee e poligoni,
codificati e memorizzati sulla base delle loro coordinate. Un punto viene individuato
attraverso le sue coordinate reali (x1, y1); una linea o un poligono attraverso la
posizione dei sui nodi (x1, y1; x2, y2; ...). A ciascun elemento è associato un record
del database informativo che contiene tutti gli attributi dell’oggetto rappresentato.
Il dato raster permette di rappresentare il mondo reale attraverso una matrice
di celle, generalmente di forma quadrata o rettangolare, dette pixel. A ciascun pixel
sono associate le informazione relative a ciò che esso rappresenta sul territorio. La
dimensione del pixel (detta anche pixel size), generalmente espressa nell’unità di
misura della carta (metri, chilometri etc.), è strettamente relazionata alla precisione
del dato.
I dati vettoriali e i dati raster si adattano ad usi diversi. La cartografia vettoriale
è particolarmente adatta alla rappresentazione di dati che variano in modo discreto
(eg. la rappresentazione delle strade, l’ubicazione dei cassonetti dei rifiuti di una
città o una carta dell’uso del suolo), la cartografia raster è più adatta alla rappresentazione di dati con variabilità continua (eg. un modello digitale di elevazione o
una carta di acclività del versante).
1.3 Rappresentazione
1.2.4
7
Funzionalità
Il GIS consente di mettere in relazione tra di loro dati diversi, sulla base del loro
comune riferimento geografico in modo da creare nuove informazioni a partire dai
dati esistenti. Il GIS offre ampie possibilità di interazione con l’utente ed un insieme
di strumenti che ne facilitano la personalizzazione e l’adattamento alle specifiche
problematiche.
I GIS presentano normalmente delle funzionalità di analisi spaziale ovvero di
trasformazione ed elaborazione degli elementi geografici degli attributi. Esempi di
queste elaborazioni sono elencate di seguito.
L’overlay topologico Si effettua una sovrapposizione tra gli elementi di due temi
per creare un nuovo tematismo (eg. si sovrappone il tema dei confini di un
parco con i confini dei comuni, per determinare le zone di competenza di ogni
amministrazione o la percentuale di area comunale protetta).
Le query spaziali Interrogazioni di basi di dati a partire da criteri spaziali (vicinanza, inclusione, sovrapposizione etc.).
La Network Analysis Algoritmi che da una rete di elementi lineari rappresentata
mediante dati geografici (eg. rete stradale), determinano i percorsi minimi tra
insiemi di punti.
1.3
Rappresentazione
Le tecniche geometriche o matematiche che trasformano i punti espressi in coordinate geografiche in punti espressi in coordinate cartesiane si chiamano proiezioni
cartografiche.
1.3 Rappresentazione
1.3.1
8
Proiezione cartografica
Una proiezione cartografica è il risultato di trasformazioni geometriche, matematiche
o empiriche, di punti geografici espressi in coordinate geografiche, in punti espressi
in coordinate cartesiane.
Le proiezioni vengono usate in cartografia per rappresentare su di un piano2 un
fenomeno che nella realtà esiste sulla superficie della sfera.
Essendo impossibile evitare deformazioni3 , le proiezioni vengono scelte sulla base delle loro caratteristiche, vale a dire sulla base dei loro inevitabili difetti (la
deformazione) ed i loro auspicabili pregi.
1.3.2
Coordinate geografiche
Le coordinate geografiche servono ad identificare la posizione di un punto sulla
superficie terrestre.
La latitudine è la distanza angolare dall’equatore e la longitudine è la distanza
angolare lungo il parallelo del luogo da un arbitrario meridiano di riferimento. La
latitudine e la longitudine sono espresse in gradi, minuti e secondi. Attualmente
viene utilizzato il meridiano di Greenwich che passa per l’omonimo osservatorio.
In Italia era costume (non del tutto scomparso) utilizzare come meridiano di riferimento quello passante per l’osservatorio di Monte Mario (a Roma, 12 gradi, 27.2
primi a Est di Greenwich). Tale sistema di coordinate venne adoperato dall’Istituto
Geografico Militare (IGM) per aggiornare i dati allo standard World Geodetic System 1984 (WGS84), su cui si basa anche il Global Positioning System (GPS). Lo
2
3
le carte geografiche
In realtà l’unica rappresentazione esente da deformazioni è la sfera
1.3 Rappresentazione
9
standard WGS84 si basa su un modello geodetico della Terra standard, l’EGM96,
definito da un sistema di armoniche sferiche.
1.3.3
WGS84
WGS84[2] è l’acronimo di World Geodetic System 1984 e definisce il sistema come
geodetico, mondiale, riferito al 1984.
Esso costituisce un modello matematico del globo da un punto di vista geometrico, geodetico e gravitazionale, costruito sulla base delle misure e delle conoscenze
scientifiche e tecnologiche disponibili al 1984.
A questo scopo si utilizzano degli ellissoidi di riferimento, ovvero i datum geodetici. Un datum è un ellissoide con dei parametri assegnati, orientato in modo
opportuno rispetto alla terra.
I datum della geodesia classica, che possono essere definiti locali o regionali,
approssimano bene il geoide solo in un intorno del punto di emanazione, mentre il
datum globale WGS84 utilizza lo standard EGM96, che approssima il geoide nel suo
complesso ed è valido per tutto il mondo.
Dal 2000 è obbligatorio l’utilizzo del WGS84 come standard per la navigazione
aerea. In Italia tuttavia è tuttora in corso la conversione dei dati aeronautici dell’ENAV dai vecchi standard ED50 e MM40 al WGS84, mentre l’Aeronautica Militare
Italiana ha terminato la conversione nel 2002.
Il sistema sviluppato adotta lo standard presentato, in quanto attualmente è
quello maggiormente diffuso sul mercato.
Capitolo 2
WebGIS
Al giorno d’oggi la cartografia sta subendo un’evoluzione senza precedenti a causa
dello sviluppo nei campi dell’informatica e delle telecomunicazioni. Tali cambiamenti
si presentano fondamentalmente sotto tre aspetti:
• produzione cartografica,
• comunicazione,
• conoscenza ed analisi.
La visualizzazione cartografica è la combinazione dei su detti aspetti.
2.1
WebGIS software
I software WebGIS sono una nuova gamma di prodotti per la cartografia. Essi
permettono di comunicare informazioni geografiche in formato visuale tramite il
web.
Tecnicamente il WEBGIS è un GIS distribuito all’interno di una rete di computer, per integrare e distribuire informazioni geografiche in formato visuale nel World
2.1 WebGIS software
11
Figura 2.1: Architettura di un software WebGIS
Wide Web. Dal punto di vista dell’analisi dei processi GIS, la struttura è simile
ad un’architettura Client-Server (vedi fig. 2.1): l’analisi dei dati geografici avviene lato server mentre lato client, gli utenti accedono tramite un browser web o un
programma software proprietario.
Tipicamente il client è un browser web ed il server è un server web su cui è
installato un application server fornito dal software WebGIS. Il client effettua tramite
il web, le richieste in termini di mappe o analisi di dati geografici ad un server. Il
server soddisfa le richieste inoltrandole al software WebGIS. Il software restituisce
i risultati delle richieste al server web che le traduce in una forma comprensibile al
client prima di inoltrarle al browser web. Il client ha delle funzionalità aggiuntive
che permettono l’interpretazione dei risultati: un plugin o un applet.
Di seguito saranno analizzati alcuni software maggiormente affermati sul mercato
basati sulla tecnologia webgis.
2.1.1
MapServer
MapServer1 è un ambiente di sviluppo OpenSource, di applicazioni internet orientate
alla gestione di dati spaziali.
1
http://mapserver.gis.umn.edu/
2.1 WebGIS software
12
Può essere compilato sulla maggior parte dei sistemi Unix-like ed eseguito sui
sistemi Windows e su piattaforme Linux/Apache. Dato che viene installato come
applicazione CGI sul server HTTP, è possibile estenderne le funzionalità accedendo
all’API dell’applicazione.
L’architettura di MapServer è costituita da tre componenti di base: i Mapfile,
i file di template l’insieme dei dati GIS. I Mapfile definiscono i dati che sono usati
nell’applicazione e sono costituiti da parametri di configurazione dell’applicazione.
Permettono di definire informazioni riguardo l’interpretazione dei risultati delle richieste inoltrate al server. I file di template definiscono invece il layout grafico della
legenda e della mappa, impostando quindi l’interfaccia che viene mostrata a video.
MapServer utilizza, per gestire i dati geografici, il formato ESRI2 shapefile come
formato vettoriale di default. I dati in formato raster sono gestiti in diversi formati
a seconda dei parametri impostati in fase di compilazione dell’applicazione.
2.1.2
ArcView Internet Map Server (AVIMS)
AVIMS nasce come un’estensione per il software GIS “ArcView GIS”3 . Per aggiungere la funzionalità di Webmapping, un wizard guida l’utente durante l’installazione
dei vari componenti.
All’interno di ArcView esiste un’estensione IMS (Internet Map Server) che permette ad ArcView GIS di comunicare con un Web Server, e un’estensione, la ESRIMap Web Server che si installa sul web server stesso. Quest’ultima permette al
server web di comunicare con una o più sessioni di ArcView GIS in esecuzione su
una o più piattaforme di sviluppo, gestendo le connessioni e bilanciando il carico di
2
3
http://www.esriitalia.it
http://www.esriitalia.it/arcgis
2.1 WebGIS software
13
lavoro del server fra le varie sessioni. L’estensione per il Web Server è compatibile
sia con i Web server Microsoft che Netscape.
Dato che il web non è in grado di leggere direttamente il formato vettoriale, ArcView gestisce lato server i dati geografici (mappe in formato vettoriale), mentre lato
client vengono visualizzati i dati raster, ossia immagini GIF o JPEG. Le immagini
raster sono particolarmente adatte alle applicazioni Webmapping per visualizzare i
risultati delle operazioni GIS in quanto su un’immagine è possibile applicare effetti
grafici come ombreggiatura o colorare determinati elementi, effetti che rendono più
chiara e fruibile la mappa. A livello prestazionale la comunicazione è resa più performante dal basso carico di informazioni da trasferire, in quanto le immagini GIF
e JPEG sono formati nativamente compressi.
Queste mappe in formato raster vengono gestite in una applicazione atta al
Webmapping, l’applet MapCafè. Essa mette a disposizione gli strumenti grafici per
visualizzare le mappe in un browser web. L’applet, depositata sul server, viene
scaricata automaticamente dal browser web per essere interpretata dalla JVM (Java
Virtual Machine) presente sul computer client. L’utente non ha pertanto necessità
di installare nulla sulla propria macchina per utilizzare l’applicazione accessibile
tramite la rete internet.
Per pubblicare le mappe sul web bisogna aggiungere l’estensione IMS ad un
progetto di ArcView. AVIMS quindi metterà a disposizione, nel menu file, i comandi
per configurare, avviare e bloccare il server, per la configurazione delle pagine web
e per la configurazione dell’applet MapCafè. Per quanto riguarda la configurazione
dell’applet è possibile scegliere quali componenti far apparire nell’interfaccia. Il
pannello di configurazione relativo alle pagine web permette di creare ed editare
documenti HTML. Per far partire il server bisogna configurarlo impostando il tipo
2.1 WebGIS software
14
e l’indirizzo IP del web server in cui si è installata l’estensione “ESRIMap Web
Server”. All’avvio del server la finestra del progetto cambia aspetto indicando che
ci si trova nella modalità di funzionamento server.
2.1.3
Autodesk MapGuide 4.0
Un altro software WebGIS per generare applicazioni orientate al Webmapping è
Autodesk MapGuide 4.0, un software per la pubblicazione di mappe web che vanno
dalle semplici mappe tematiche a complesse mappe multimediali. La suite consiste
di un Server, un Author e di un Viewer.
Il server gestisce le comunicazioni riguardo le mappe e i dati, rispettivamente,
per il Viewer e per l’Author. L’Author è la parte che permette la creazione e
la pubblicazione di mappe in accordo alle specifiche di visualizzazione iniziali. Il
Viewer è un plugin per la visualizzazione delle mappe e per l’esecuzione di alcune
operazioni lato client.
Prima di poter eseguire l’applicazione, tutti i dati geospaziali devono essere convertiti nel formato SDF (Spatial Data File4 ) nativo di MapGuide. Nell’installazione
è compreso un convertitore da tutti i maggiori formati utilizzati per la rappresentazione di mappe. L’utilizzo di un formato proprietario permette agli sviluppatori di
usare un sistema di referenza nativo.
Lato server è necessario configurare la sorgente dei dati e i parametri per l’acceso
al database.
L’interfaccia dell’Author è intuitiva e basata su un approccio WYSIWYG5 . Lo
sviluppo delle mappe per il web è reso possibile grazie al MWF (Map Window
File) incluso nell’applicazione, ossia la finestra per i file delle mappe. Sono incluse
4
5
http://www.spatial-data.com
What you see, is what you get.
2.1 WebGIS software
15
funzioni quali la personalizzazione e l’impostazione di simboli o di menu pop-up, il
salvataggio di “segnalibri” o la possibilità di inserire link. Alcune funzionalità offerte
dall’Author permettono l’applicazione di effetti di trasparenza su immagini raster e
la stampa delle mappe. L’Author è un ambiente di sviluppo per le mappe web che
permette di creare dinamicamente delle mappe lato server che saranno visualizzate
lato client.
Il Viewer è molto semplice da utilizzare, è eseguito lato client ed è fornito sotto
forma di plugin per il browser web. L’utente può gestire i layer e personalizzare la
grafica a seconda delle proprie esigenze, può effettuare l’analisi dei dati pubblicati e
sottoporre query in base a dati geografici salvando i risultati sotto forma di report.
2.1.4
MapXtreme
MapXtreme è uno strumento per la creazione di documenti web in cui è anche possibile processare mappe web tramite le rete internet o una rete intranet. Il cuore
della funzione relativa al Webmapping è MapX, un componente della MapInfo Corporation6 . Sfrutta i controlli ActiveX lato server per sistemi operativi compatibili,
quali Windows.
Il software integra nel web server la possibilità di processare mappe web. Il
software di installazione è diviso in due parti: la parte relativa allo sviluppo e la parte
relativa al server. La parte di sviluppo comprende gli strumenti atti allo sviluppo
di scripts: un IDE, esempi e librerie. La parte relativa al server, invece, include i
controlli MapX ActiveX, dati MapXtreme, il Remote Geocoder, uno strumento di
amministrazione del server, e uno strumento per l’amministrazione dei dati geografici
(Geoset manager). Il Remote Geocoder permette agli amministratori del sito web di
6
http://www.mapinfo.com
2.1 WebGIS software
16
processare i dati geografici che sono alla base delle mappe. Il tool di amministrazione
lato server permette di testare e configurare il server dopo l’installazione. Il Geoset
Manager permette di creare nuove mappe e modificare quelle esistenti, aggiungere
e rimuovere layers, impostare i livelli di zoom, aggiungere proprietà ed etichette ed
alterare le impostazioni riguardanti i layers.
Gli script creati tramite i tool di sviluppo vengono installati sul web server e
saranno mandati in esecuzione per rispondere a determinate richieste effettuate lato
client. Quando uno script va in esecuzione viene istanziato un oggetto e vengono
utilizzati le proprietà e i metodi, messi a disposizione da questo. Quindi lo script,
interagisce con i dati che descrivono la mappa ed effettuano la costruzione di un’immagine, cioè di una mappa in formato raster. L’immagine viene inviata al client
e inclusa nel documento HTML. Si possono generare immagini in vari formati. I
web browser meno innovativi7 supportano nativamente solo i formati GIF, JPEG e
PNG. Svolgendo le operazioni per la creazione delle mappe lato server, e generando
immagini supportate dal browser, MapX lavora solo lato server e non è necessario
installare nessun plugin sul client.
2.1.5
GeoMedia Web Map
Intergraph GeoMedia Web Map8 (GWM) permette la distribuzione delle informazioni geografiche su più sorgenti di dati e l’utilizzo del sistema all’interno della rete
internet o intranet. Il software permette di lavorare su dati geografici usando un
sistema operativo e un browser web standard.
Nel 1997 la Intergraph introdusse GWM per pubblicare dati geospaziali sul web
7
Mozilla Firefox 1.5 ha introdotto la funzionalità di visualizzare immagini in formato SVG ossia
immagini in formato vettoriale.
8
http://www.intergraph.com/gmwm
2.1 WebGIS software
17
come un’estensione delle tradizionali applicazioni GIS. Questo software permette
di creare dinamicamente mappe web in base allo stato dei dati GIS presenti sul
database in un determinato momento, e quindi di distribuire dati e informazioni in
tempo reale.
GWM non abbraccia la filosofia che si basa sulla produzione di immagini, ossia
di mappe in formato raster. Utilizzando una tecnologia di terze parti, interCAP
Graphics System, Inc.9 , crea delle mappe in formato vettoriale prelevando i dati
direttamente dal database di dati GIS. In particolare le mappe sono prodotte in
formato ActiveCGM10 (ACGM), un formato compatto e personalizzabile, sviluppato
per far viaggiare dati vettoriali in internet. In questo modo lato client dovranno
essere interpretati dati in formato vettoriale.
Il software della Intergraph accede contemporaneamente a vari tipi di database ed integra i dati risultanti dalla richiesta in una singola mappa. Un’ulteriore
funzionalità offerta da GeoMedia Web Map è la possibilità di inserire etichette e
collegamenti interattivi all’interno della mappa.
L’applicazione è accessibile lato client tramite un browser web su cui sia installato il plugin o il controllo ActiveX per interagire con le mappe web. La mappa
viene ricreata ogni volta che le informazioni vengono modificate sul server in modo
da mostrare sempre informazioni aggiornate. GeoMedia permette anche di creare
mappe web sottoforma di SVG (formato vettoriale) o JPEG (formato raster).
9
10
http://www.intergraph.com
http://www.design-drawing.com/smartsketch/activeCGM.htm
2.1 WebGIS software
2.1.6
18
Perché Alov / TimeMap?
Alov / TimeMap11 consiste in un’applet Java ed un’applicazione lato server sviluppata nello stesso linguaggio di programmazione.
È possibile utilizzarlo sia in modalità standalone che client / server. La modalità
standalone permette, tramite l’utilizzo dell’applet di visualizzare direttamente in un
web browser le mappe in formato vettoriale.
Quando il web browser tenta di interpretare la pagina HTML in cui si fa riferimento all’applet, essa entra in esecuzione ed interpreta direttamente file in formato
“shape”12 , elencati in un file XML13 .
La modalità di funzionamento client / server permette inoltre, di caricare le
mappe in un database a cui accederà la parte server dell’applicazione. Quando
l’applet viene caricata, in base allo stesso file XML, fa richiesta al server dei dati
necessari per disegnare la mappa. Il server preleva tali dati dal database e li invia
all’applet che disegna la mappa e la mostra a video.
Sono supportati svariati tipi di motori di database e la stessa applicazione lato
server fornisce un’interfaccia per il caricamento delle mappe. La comunicazione fra
client e server avviene tramite richieste HTTP. Lato client, non è necessario installare
nulla, ma basta collegarsi con un browser web che supporti le applet Java14 , all’url
del server. A questo punto il browser provvederà a scaricare l’applet lato client15 ed
a mandarla in esecuzione.
L’applet fornisce gli strumenti per navigare la mappa, selezionare o escludere
layers, per effettuare lo zoom e per inserire etichette o collegamenti.
11
http://www.alov.org - http://www.timemap.net
formato analizzato nel capitolo successivo
13
http://www.w3c.org
14
http://www.java.sun.com
15
In base al funzionamento delle applet Java
12
2.1 WebGIS software
19
L’immagine che viene mostrata nel browser è il risultato dell’elaborazione diretta
di dati contenuti nello shapefile originale16 e quindi mantiene, tramite oggetti, la
stessa struttura di uno shapefile: record e shape.
Il vantaggio di questo approccio sta nel fatto che anche lato client si ha a disposizione la struttura di un shapefile, quindi una mappa in formato vettoriale. Sulla
mappa si possono quindi effettuare operazioni di zoom conservando la stessa qualità
dell’immagine originale.
L’applicazione è largamente configurabile tramite file XML. Il file “layout.xml”
permette di impostare il layout grafico dell’applicazione ed il file “project.xml”
permette di impostare i layers, la sorgente dei dati, eventuali etichette e collegamenti.
In quanto appena detto riguardo il formato delle mappe utilizzato e l’enorme
flessibilità offerta, emergono le motivazioni della scelta di Alov. C’è da aggiungere
la potenza offerta da un linguaggio di programmazione ormai affermato e robusto
quale Java di Sun MicroSystem.
Da considerare inoltre che questo sistema è OpenSource, e la disponibilità dei
sorgenti offre notevoli vantaggi allo sviluppo e all’integrazione di funzionalità in
un’applicazione.
16
a prescindere dal fatto che sia stata caricata dal database o meno
Capitolo 3
Shapefile
Come introdotto nel capitolo precedente, il formato delle mappe utilizzato dall’applicazione sviluppata è il formato “shape”1 . Di seguito saranno descritte la struttura
e le principali caratteristiche di questo formato [10].
Uno “shapefile” memorizza informazioni geometriche non topologiche, per funzionalità spaziali in un insieme di dati. Le informazioni geometriche sono scritte
all’interno del file come un insieme di coordinate vettoriali, mentre attributi sui dati
sono memorizzati in un file di database.
Dato che i file non contengono informazioni riguardanti la struttura dati topologica, offrono il vantaggio di una veloce rappresentazione e modifica.
Gli shapefile supportano punti, linee e forme chiuse nonché poligoni ed i relativi
attributi hanno una relazione diretta (ovvero uno ad uno) con i record.
Uno shapefile ESRI è composto da un file principale (name.shp), un file di indice
(index.shx) e una tabella dBase (dbase.dbf). Il file principale è ad accesso diretto ed
ha una struttura di record a lunghezza variabile. Ogni record descrive una forma
con una lista di vertici. Nel file di indice, ogni record contiene l’offset corrispondente
1
http://www.esriitalia.com
3.1 Organizzazione del file principale
21
nel file principale dall’inizio alla posizione in cui è memorizzato quel record. Il file
dBase contiene gli attributi dei record, uno per volta. La relazione uno a uno tra la
geometria e gli attributi è basata sul numero dei record nel file principale.
3.1
Organizzazione del file principale
Il file principale è formato da un’intestazione di lunghezza fissa seguita dall’elenco dei
record di lunghezza variabile. Ogni record è composto a sua volta da un’intestazione
di lunghezza fissa e da un contenuto a lunghezza variabile.
Tutto il contenuto del file principale può essere suddiviso in due categorie:
• Dati
Contenuto dei record del file principale
Intestazione
• Gestione dei file
File e lunghezza dei record
Offset dei record
L’intestazione del file principale è lunga 100 bytes e contiene informazioni riguardo la lunghezza, la versione, il tipo di figura (shape) utilizzato e informazioni
spaziali riguardo il massimo e il minimo offset.
L’intestazione del singolo record è lunga 8 bytes e contiene il numero del record
e la sua lunghezza.
3.2 Figure
3.1.1
22
Records
Il contenuto dei records consiste nei dati geometrici della figura a seconda del tipo
(eg. punto, poligono etc.). La lunghezza dipende dal numero di parti e vertici della
figura.
3.2
Figure
Tra le forme disponibili si possono annoverare:
• figura nulla senza informazioni geometriche (shape di tipo “null”). Questo
tipo di figura è utilizzato in fase di creazione,
• un punto (coppia di coordinate, nell’ordine X,Y, a doppia precisione.
• punti multipli,
• linee.
Sono rappresentabili inoltre altri tipi di figure più complesse quali poligoni, oppure figure simili alle precedenti con informazioni aggiuntive sulla misura, oppure
figure posizionate secondo le tre dimensioni spaziali.
A seconda dei dati che si vogliono rappresentare si utilizzano delle forme anziché
altre. Uno shapefile è composto da dati omogenei e quindi i record al suo interno
sono sempre dello stesso tipo.
Capitolo 4
Protocollo NMEA
La NMEA (National Marine Electronics Association) ha sviluppato una specifica che
definisce un’interfaccia per le varie apparecchiature elettroniche della marina[3] (una
copia dello standard è disponibile per scopi didattici sul sito web: http://www.nmea.com).
Il sistema sviluppato utilizza questo protocollo.
4.1
Introduzione
Molti software che prevedono la comprensione di informazioni sulla posizione in tempo reale sono in grando di comprendere dati in formato NMEA. Tali dati includono
la soluzione completa PVT (“Position, velocity, time”, posizione, tempo, velocità)
fornita da un ricevitore GPS.
L’idea del protocollo è di inviare un insieme di dati suddiviso in frasi1 . Ogni
frase comprende tutte le informazioni necessarie ed è quindi indipendente dalle altre
frasi. Ci sono frasi per ogni categoria di dispositivi e c’è la possibilità di definire
frasi proprietarie per scopi individuali.
1
Stringhe, dall’inglese “sentences”
4.2 Hardware
24
Ogni frase inizia con il simbolo “$” e finisce con carattere di a capo2 e non può
essere più lunga di 80 caratteri di testo visibile. I dati contenuti nella linea sono
separati dalla virgola3 e sono costituiti solo caratteri ASCII. Alla fine di ogni frase,
dopo un asterisco viene posto un checksum che è calcolato come la funzione XOR a
8 bit di tutti i caratteri che la compongono.
4.2
Hardware
Le interfacce di connessione hardware sono ideate per soddisfare i requisiti NMEA.
Queste sono compatibili con le porte seriali le quali usano il prtocollo “RS232”[4].
Ad ogni modo NMEA raccomanda il rispetto del “EIA-422”[5].
La velocità può variare in base agli apparecchi ma lo standard è 4800 baud con 8
bits di dati, nessuna parità e un bit di stop. Tutte le apparecchiature che supportano
NMEA dovrebbero supportare questa velocità.
4.3
“Frasi” NMEA
Le stringhe NMEA sono composte da parole separate da virgole. La prima parola è
quella che definisce il tipo e quindi in base ad essa si dovrà interpretare il resto della
frase. Lo standard NMEA prevede molti tipi di frasi, in base al tipo di dispositivo
utlizzato nell’ambiente marino.
Lo standard prevede che la stringa inizi con due lettere che identificano la cate2
3
“Carriage return/line”
“commas”
4.4 Decodifica di una “frase”
25
goria di dispositivi che utilizzano tale stringa4 . Le successive tre lettere definiscono
il contenuto della frase.
Invece le stringhe definite da aziende per scopi individuali devono iniziare con
la lettera “P” e le successive tre lettere identificano l’azienda che ha introdotto tale
stringa.
La frase non ha lunghezza fissa in quanto in alcuni casi alcuni campi possono
mancare, ma anche se un valore manca le virgole che lo delimitano vengono inserite.
4.4
Decodifica di una “frase”
La più completa frase NMEA, fra quelle che riguardano il rilevamento della posizione
geografica del localizzatore, è quella che inizia con “$GPRMC”. Infatti il prefisso
inizia con “GP” che sta per “dispositivo GPS” e continua con “RMC” che sta per
“Raccomanded Minimium specific GPS/TRANSIT data”.
Un esempio di stringa NMEA è il seguente:
$GPRMC,140005.242,A,4717.1126,N,00833.7862,E,0.02,79.58,010201,,*36
in cui i campi hanno il seguente significato:
HHMMSS.SSS Ora UTC-GPS (Universal Coordinated Time)
X Stato A=Attivo (Active); V=Nullo (Void)
XXXX.XXXX Latitudine della posizione attuale
X Emisfero della posizione attuale: N=Nord (North); S=Sud (South)
XXXX.XXXX Langitudine della posizione attuale
4
e.g. “GP” per i GPS
4.4 Decodifica di una “frase”
X Verso della posizione attuale: E=Est (East); W=Ovest (West)
X.XX Velocità al suolo in nodi
XX.XX Direzione di movimento, in gradi reali (Track Mode Good)
GGMMAA Data
X.X Variazione / declinazione magnetica in gradi
X Verso della variazione / declinazione magnetica
X Tipo di rilevazione:
[A] Automatica (Autonomous)
[D] Differenziale (Differential)
[E] Stimata (Estimated)
[N] Dati non validi (Non valid data)
26
Capitolo 5
Infomobilità
Dopo un’analisi degli standard e delle tecnologie utilizzate al momento, verranno
presentate le caratteristiche del sistema di rilevamento satellitare della posizione che
è alla base del funzionamento del sistema sviluppato [6], [7].
5.1
GPS
Il sistema GPS (Global Positioning System) avviato dagli U.S.A. a partire dagli anni
’70, e completato nel 1993, è stato realizzato per motivi principalmente militari,
per rispondere all’esigenza del Ministero della Difesa degli Stati Uniti di seguire
il percorso di mezzi militari sulla terraferma ed in mare in modo da localizzarne
la posizione in ogni momento e consentirne eventuali operazioni di supporto e di
salvataggio.
Il GPS è un sistema di individuazione della posizione che utilizza 24 satelliti
artificiali (vedi fig. 5.1), divisi in gruppi di quattro che ruotano attorno alla terra
alla quota di circa 20.200 Km in orbite distanti fra loro di un angolo di 60 gradi, in
5.1 Sistema di rilevamento satellitare della posizione
28
modo da ricoprire tutto il globo terrestre, e formanti un angolo di 55 gradi rispetto
al piano equatoriale.
Figura 5.1: Disposizione dei satelliti
Di questi satelliti, 21 sono attivi, mentre tre sono di scorta, cioè sono in attesa
di entrare in funzione quando qualcuno dei 21 cesserà di essere attivo. I satelliti
artificiali, infatti, hanno una vita media che, per quelli di questa serie, è di circa
dieci anni.
È previsto anche un piano di espansione futura che prevede il lancio di altri
satelliti, per sostituire quelli che man mano esauriranno le loro capacità ed andranno
fuori servizio.
5.1.1
Principio di funzionamento
Il sistema GPS consente di determinare la propria posizione sulla superficie terrestre,
e la quota, ed è attivo oggi in qualunque punto della terra.
È necessario disporre di un ricevitore GPS il quale intercetta a terra il segnale a
microonde generato dai satelliti in orbita che, a turno, passano sopra di noi.
Infatti, visto il numero, l’orbita ed il periodo di rotazione dei satelliti, di cui si è
5.1 Sistema di rilevamento satellitare della posizione
29
già parlato, risulta che in ogni istante sono sopra di noi in media da cinque ad otto
satelliti che si alternano in quota.
5.1.2
Tipo di modulazione e frequenze
I satelliti GPS generano due diversi segnali di tipo numerico, che vengono chiamati
L1 ed L2, alle frequenze rispettivamente di 1,5 e 1,2 GHz circa, modulati in P.S.K.1
dei quali il primo serve per la localizzazione grossolana, quella di tipo civile, e l’altro
per la localizzazione più precisa, di tipo militare.
5.1.3
Grado di precisione del rilievo
Il primo segnale consente la determinazione della propria posizione con la precisione
di circa 300 metri, il secondo invece, con la precisione di 50 cm.
Mentre il primo segnale è trasmesso in chiaro, il secondo, invece, è trasmesso in
codice segreto e non è accessibile se non al Ministero della Difesa degli Stati Uniti
che lo utilizza esclusivamente per la propria sicurezza e non lo rende noto a tutti per
evitare che possa essere utilizzato contro gli interessi degli Stati Uniti da criminali
o da stati nemici.
Ogni satellite trasmette dei segnali ad alta frequenza verso terra che vengono
ricevuti da un apposito apparecchio ricevitore dalle dimensioni ridottissime di un
comune cellulare.
5.1.4
Ricevitore GPS
I ricevitori GPS commerciali, oggi dal costo molto contenuto, consentono di sintonizzarsi automaticamente sulle frequenze dei satelliti suddetti e, dopo un tempo di
1
http://it.wikipedia.org/wiki/PSK
5.1 Sistema di rilevamento satellitare della posizione
30
ricerca e di elaborazione dei dati ricevuti, dell’ordine di pochi secondi, sono in grado, individuando la distanza da almeno quattro satelliti, di determinare la propria
posizione geografica sulla terra in termini di latitudine e longitudine, e quota.
Alcuni tipi di ricevitori, sono in grado di mostrare la propria posizione all’interno
di una cartina geografica anche di un’intera nazione, che può essere ingrandita fino
a diventare una vera e propria cartina topografica.
5.1.5
Principio di funzionamento
I satelliti, dotati di orologi atomici al cesio di grandissima precisione, che vengono
sincronizzati dalla stazione americana di Colorado Spring ogni qual volta vi passano sopra, trasmettono in continuazione dati numerici che comprendono le proprie
coordinate X, Y, Z, e l’istante esatto T di trasmissione.
Questi dati vengono elaborati a terra dal ricevitore il quale, confrontandoli con il
proprio tempo locale, in quanto anche il ricevitore è dotato di orologio al quarzo, e
conoscendo la velocità delle onde elettromagnetiche, deduce a che distanza si trova
da ognuno dei satelliti di cui sta ricevendo il segnale.
Infatti, noto l’istante T1 trasmesso dal satellite in cui è partito il segnale, e
l’istante T2, indicato dall’orologio locale, in cui il segnale è stato ricevuto a terra,
si conosce il tempo impiegato a percorrere la distanza dal satellite al ricevitore, ed
essendo la velocità della luce c, nota, la distanza D del satellite dal ricevitore risulta:
D = c (T2 - T1)
La conoscenza della distanza da un solo satellite è un dato del tutto insufficiente
per determinare la propria posizione, in quanto non è nota la posizione azimutale
né quella zenitale dello stesso, analogamente non è sufficiente conoscere la distanza
5.1 Sistema di rilevamento satellitare della posizione
31
Figura 5.2: Intersezione di tre sfere di raggio noto
da due satelliti; infatti, l’intersezione di due sfere di raggio noto, cioè le distanze
calcolate, dà luogo ad un cerchio e non ad un punto.
L’intersezione di tre sfere di raggio noto (vedi fig. 5.2), invece, determina due
punti, dei quali uno è di norma inaccettabile in quanto si trova ad altissima quota
e risulta anche muoversi ad altissima velocità.
Soltanto l’intersezione di quattro sfere di raggio noto, invece, consente con certezza, di determinare una posizione univoca nello spazio, il che spiega perché è
necessario aspettare del tempo, anche se si tratta di frazioni di secondo, per elaborare i dati, in quanto bisogna aspettare il passaggio di almeno quattro satelliti ed
avere anche il tempo di effettuare numerosi calcoli ed approssimazioni successive.
I dati del quarto satellite, infatti, oltre a rendere univoca la soluzione al sistema
di quattro equazioni in quattro incognite, consentono di correggere il valore del
tempo proprio del ricevitore per mezzo dei tempi dei quattro satelliti.
Le quattro incognite da determinare sono X, Y, Z, T, cioè le tre coordinate
indicanti la posizione geografica dell’utente fornito di ricevitore, più il tempo proprio
5.1 Sistema di rilevamento satellitare della posizione
32
che è indispensabile per determinare con grande precisione le distanze dei satelliti,
distanze che costituiscono i dati di partenza.
La X rappresenta la longitudine, la Y rappresenta la latitudine, la Z, la quota sul
livello del mare, e T il tempo proprio, corretto dagli orologi ad altissima precisione
che orbitano sui satelliti.
5.1.6
Accesso telematico
L’accesso telematico al satellite è del tipo CDMA.2 (Code Division Multiplexing
Access).
La CDMA è la tecnica più moderna e più complessa di accesso telematico ai
satelliti perché, essendo in linea di principio la fusione della divisione di tempo e della
divisione di frequenza, consente di trasmettere i dati multiplandoli sia in frequenza
che in tempo, e permette l’accesso da terra soltanto utilizzando un particolare codice
che può essere noto o segreto.
5.1.7
Telesorveglianza
Il sistema GPS è oggi molto usato per la telesorveglianza degli autoveicoli e la loro
protezione dai furti.
L’autoveicolo è dotato di un ricevitore satellitare del tipo G.P.S. accuratamente
nascosto che viaggia con lui e che ne determina istante per istante la posizione con
la precisione del centinaio di metri ritrasmettendola continuamente alla centrale che
gestisce il sistema antirapina a mezzo di frequenze usate dai cellulari che garantiscono
un’ottima copertura su tutto il territorio nazionale.
2
http://it.wikipedia.org/wiki/Cdma
5.2 Galileo
5.1.8
33
GLONASS
Il GLONASS[8] (GLObal NAvigation Satellite System) è un sistema satellitare di
individuazione della posizione prodotto dall’U.R.S.S. circa nello stesso periodo del
GPS americano e che ha caratteristiche molto simili, solo che non è criptato bensı̀
totalmente in chiaro.
Questo sistema è dotato di 24 satelliti, suddivisi in tre orbite distanti 120 gradi
fra loro ad una quota leggermente maggiore di quella dei satelliti GPS. La frequenza
è determinata in base ad un fattore variabile ed il tempo non corrisponde a quello
di Colorado Spring.
Nonostante le considerevoli differenze tecniche fra i due sistemi, esistono alcuni
fra i migliori ricevitori GPS che possono ricevere sia l’uno che l’altro sistema ed
ottenere una precisione complessiva simile a quella del sistema codificato militare
americano, cioè di quasi mezzo metro.
5.2
Galileo
Galileo[9] è un giovane sistema di posizionamento satellitare indipendente da quello
GPS del Dipartimento della Difesa degli USA e, al contrario di questo, prevalentemente dedicato ad usi civili. La sua entrata in funzione, che prevede il lancio in
orbita di una costellazione di 30 satelliti, è stata fissata per il 2008.
La creazione di una rete europea di localizzazione satellitare, darà impulso ad
una serie di servizi georeferenziati che andranno ad incidere positivamente in tutti i
settori della vita quotidiana, e non solo in quello della mobilità.
Quest’ultimo sarà però senza dubbio il mercato più importante, in particolare il
settore delle applicazioni per il settore automobilistico, ricordando che nei prossimi
5.2 Galileo
34
Figura 5.3: Satelliti in orbita
anni in Europa almeno il 10% dei veicoli, potrà essere on-line, con enormi vantaggi
non solo per gli automobilisti ma anche per i singoli stati, che disporranno cosı̀ di
efficaci strumenti di gestione e monitoraggio della mobilità, tali da sopperire alle
carenze infrastrutturali.
Con Galileo, l’Europa mira ad incrementare la sicurezza e l’efficienza dei trasporti nei settori aeronautico, marittimo e terrestre, grazie alla distribuzione di un
segnale certificato per l’aviazione civile e all’integrazione con i futuri sistemi di comunicazione mobile di uso pubblico. Accanto a questo, il “GPS all’europea” potrà
essere utilizzato per i sistemi antifurto, i mezzi di soccorso e molti altri servizi, pubblici e privati, che oggi devono fare completo affidamento sul servizio gestito dal
Dipartimento della Difesa degli USA.
Il fatto che gli USA considerino il sistema GPS un servizio ancora prevalentemente militare, porta con sé alcune conseguenze non trascurabili, fra cui una copertura
del servizio limitata alle nazioni militarmente allineate e la degradazione del segnale
destinato ad usi civili.
A differenza del GPS, con cui è comunque compatibile e interoperabile, Galileo
trasmetterà i segnali ad almeno due diverse frequenze: in questo modo, secondo
5.2 Galileo
35
gli esperti, i ricevitori terrestri possono correggere con più accuratezza i disturbi
atmosferici e calcolare la posizione con una precisione di circa 1 metro, contro i
10-20 metri del GPS.
5.2.1
Servizi
Sono quattro i servizi che Galileo offrirà:
• L’OS (Open Service) sarà accessibile a chiunque. I ricevitori consentiranno
un’accuratezza inferiore ai 4 metri orizzontalmente e 8 metri verticalmente;
• Il CS (Commercial Service), criptato, consentirà, dietro pagamento, di avere
un’accuratezza inferiore al metro. Il CS potrà essere completato da stazioni a
terra per portare l’accuratezza inferiore ai 10 cm.
• Il PRS (Public Regulated Service) e il SoL (Safety of Life Service) criptati
offriranno un’accuratezza comparabile con il servizio Open Service. Il loro
scopo principale è la robustezza contro disturbi e il rilevamento affidabile dei
problemi entro 10 secondi. Sono specificatamente progettati, rispettivamente,
per operatori di sicurezza (polizia, militari, ecc) e applicazioni per la sicurezza
nei trasporti (air-traffic control, atterraggio automatizzato di velivoli, ecc).
5.2.2
Principio di funzionamento
Galileo è basato su una costellazione di 30 satelliti (vedi fig. 5.4). Le stazioni di
ricezione sulla terra, insieme ad alcuni centri di controllo, forniscono informazioni
relative alla posizione degli utenti. Ad esempio nell’ambito dei trasporti, essi forniscono servizi per la posizione, la ricerca di strade, il controllo della velocità, sistema
di guida etc.
5.2 Galileo
36
Figura 5.4: Architettura di Galileo
Il principio operativo principale è semplice. I satelliti nella costellazione sono
equipaggiati di un orologio atomico che misura il tempo in modo molto accurato. I
satelliti emettono segnali personalizzati che stanno ad indicare il preciso istante in
cui il segnale stesso parte dal satellite. Le antenne riceventi, incorporate per esempio
in un telefono cellulare, hanno in memoria il dettaglio preciso dell’orbita di tutti i
satelliti nella costellazione. Interpretando il segnale in ingresso, il chip integrato nel
dispositivo ricevente, riconosce il satellite che l’ha inviato, e in base al tempo che ha
impiegato per viaggiare dal satellite ad esso calcola la distanza dal satellite. Ogni
ricevitore ha bisogno contemporaneamente, dei segnali di almeno quattro satelliti
per calcolare l’esatta posizione.
5.3 Applicazioni reali
5.3
37
Applicazioni reali
Ad oggi le possibili applicazioni del WebGIS sono molteplici e man mano che la
tecnologia diviene più accessibile e perfezionata nascono nuovi campi d’interesse.
5.3.1
Navigatore
Ad esempio, negli ultimi tempi, si sta diffondendo sempre più l’utilizzo di navigatori
satellitari installati a bordo di veicoli. Un navigatore permette di visualizzare, all’interno di una mappa la propria posizione, e inserendo una destinazione, di guidare
l’utente tramite una voce ed indicazioni grafiche su un display (di un palmare o di
un comune cellulare).
La configurazione che sta prendendo sempre più piede negli ultimi mesi è quella di
un telefono cellulare con un sistema operativo Symbian, su cui è possibile installare
una versione di navigatore. Il telefono cellulare deve essere fornito di interfaccia di
comunicazione bluetooth, e di un ricevitore GPS bluetooth.
5.3.2
Tracking Server
Un’ulteriore possibile applicazione di questa tecnologia è il cosı̀ detto “Tracking
Server”. Esso consiste nel tenere traccia della posizione di un oggetto nel tempo e
memorizzarla su una base di dati.
Utilizzando la rete GPRS3 o l’ormai affermata UMTS4 , dei gestori di telefonia
mobile è possibile comunicare con un server accessibile in internet tramite un telefono
cellulare. Tramite bluetooth5 il cellulare può comunicare con un ricevitore GPS e
3
http://it.wikipedia.org/wiki/GPRS
http://it.wikipedia.org/wiki/UMTS
5
http://it.wikipedia.org/wiki/Bluetooth
4
5.3 Applicazioni reali
38
inviare al server le coordinate della propria posizione. Un’applicazione in esecuzione
sul telefono cellulare può leggere le informazioni dal ricevitore GPS ed inviarle al
server.
Una configurazione simile è del tutto accessibile al giorno d’oggi, infatti tutti i cellulari di ultima generazione supportano la tecnologia UMTS, forniscono l’interfaccia
di comunicazione bluetooth e consentono di installare ed eseguire applicazioni software. Infatti questa generazione di cellulari ha installata una Java Virtual Machine
in versione Microedition, è quindi possibile lo sviluppo di un programma software
che effettui le operazioni descritte.
Tenendo conto che alcune case produttrici di telefoni cellulari iniziano a costruire
cellulari con il ricevitore GPS incorporato si può immaginare un apparecchio atto
ad eseguire solo le operazioni di cui si ha bisogno per il “Tracking Server”.
5.3.3
Tracking di flotte
Il “Tracking di flotte” è un’estensione del “Tracking Server” appena descritto. Esso consiste nel tenere costantemente traccia su un monitor o su un display della
posizione di un certo numero di oggetti in tempo reale.
Se i dati sulle posizioni vengono costantemente registrati su un database, nulla
vieta a un’ulteriore applicazione, di prelevare tali informazioni e renderle disponibili
in forma visuale.
Di applicazioni orientate al WebGIS ne esistono già molte, esse rendono disponibili dati geografici memorizzati su un database o su dei file. È possibile integrare
in esse la funzionalità di visualizzare ulteriori oggetti su una mappa prelevando le
informazioni da un database simile. Per analizzare lo spostamento degli oggetti mobili è sufficiente interrogare costantemente il server che raccoglie i dati sulle relative
5.3 Applicazioni reali
39
posizioni.
5.3.4
Utilizzi del tracking
Il meccanismo del tracking permette quindi una varietà di utilizzi. Basti pensare,
ad esempio, ad una ditta che fitta automobili, a un’impresa di trasporti, o ad una
ditta con dei tecnici sparsi sul territorio.
Una ditta con dei tecnici sparsi sul territorio potrebbe avere sempre sotto controllo la situazione in tempo reale, conoscere esattemente la posizione dei propri
tecnici e quindi soddisfare eventuali chiamate dei clienti contattando ed inviando il
tecnico più vicino.
Una ditta di trasporti o una che fitta automobili, avrebbero la possibilità di conoscere in tempo reale la posizione dei propri mezzi sul territorio e di visualizzarla su
di una mappa. Tramite un database potrebbero memorizzare gli eventuali percorsi
e riproporli successivamente.
5.3.5
Telesorveglianza
Ulteriori applicazioni reali sono quelle orientate alla telesorveglianza. Piazzando
degli appositi dispositivi in un edificio se ne potrebbe riportare la posizione su di
uno schermo. Allo scatenarsi di determinati eventi potrebbero essere mostrati degli
avvisi a video; oppure si potrebbe pensare di controllare in tempo reale la posizione
delle sentinelle all’interno dello stabile e conoscendone la posizione contattare la
sentinella più vicina in caso di eventuali problemi.
Parte II
USAlov
Capitolo 6
Introduzione
Il sistema sviluppato è stato chiamato “USAlov”. Si tratta di un’applicazione Client
/ Server per la visualizzazione ed il tracking di dispositivi GPS, collegati ad un
telefono cellulare1 , su una mappa.
6.1
Premessa
L’applicazione si basa su Alov TimeMap2 un’applicazione Java, quindi indipendente
dalla piattaforma, per la pubblicazione di mappe in formato vettoriale su Inernet e
la visualizzazione interattiva in un browser web.
6.2
Architettura
L’applicazione è composta principalmente da un’applet (lato client) e da una servlet
lato server. La servlet accede ad un database (nel nostro caso MySql3 5), su cui
1
tramite bluetooth nel caso in esame
http://www.timemap.net - http://www.alov.org
3
http://www.mysql.org
2
6.3 Tracking
42
Figura 6.1: Screenshot
sono stati caricati preventivamente i dati relativi le mappe, e li invia, su richiesta, a
quest’ultima.
6.3
Tracking
Tale architettura è stata integrata con funzionalità atte al tracking di flotte.
Lato server è stata sviluppata una struttura che permette di dialogare tramite
richeste HTTP con l’applet, e tramite la rete GPRS o UMTS con i dispositivi mobili.
La struttura client / server esistente in Alov / TimeMap, prevede la possibilità
di mostrare mappe GIS su una macchina client facendone richiesta ad un server. Il
6.3 Tracking
43
Figura 6.2: Struttura sviluppata
server preleva le mappe da una base di dati (clearinghouse). USAlov aggiunge un
server di tracking e un’ulteriore base di dati per la memorizzazione delle informazioni
riguardo gli oggetti mobili. Inoltre integra lato client le infrastrutture necessarie per
visualizzare tali dispositivi sulla mappa e per effettuarne la richesta della posizione
in tempo reale. Il pannello di tracking permette all’utente di interagire con il client
impostando gli oggetti mobili da tracciare o seguire. Nuove funzionalità lato client
effettuano le richieste al server di tracking per la comunicazione delle informazioni
riguado gli oggetto mobili. In tabella 6.1 un riassunto delle funzionalità.
Applet
Client
M
Server delle mappe
Server
O
Pannello e funzioni di tracking
Client
N
Server di tracking
Server
N
6.4 Conversioni delle coordinate
44
MIDlet per l’invio della posizione
Mobile
N
Interfaccia di caricamento delle mappe
Server
M
Tabella 6.1: Funzionalità: I = Modificata e rivista, O =
Originale, N = Nuova
I dispositivi GPS comunicano con il cellulare tramite bluetooth e il cellulare utilizza la rete GPRS per comunicare con il server tramite richieste HTTP. In tal modo
aggiornano la loro posizione al server. L’applet comunica con il server effettuando
un polling su richiesta dell’utente, al quale il server risponde con le informazioni
richieste.
6.4
Conversioni delle coordinate
Per effettaure le conversioni delle coordinate relative alla posizione sono state utilizzate le librerie Java fornite da GeoTransform[13].
Queste permettono di trasformare coordinate quali latitudine e langitudine in
coordinate compatibili con la proiezione cartografica con cui è stata costruita la
mappa.
6.5
Filosofia di sviluppo
La filosofia di sviluppo è stata quella di modificare il meno possibile i sorgenti di
Alov sfruttando le possibilità di estensione messe a disposizione dall’applicazione
originale.
Sono stati gentilemte messi a disposizione i sorgenti dell’applicazione TimeMap
6.5 Filosofia di sviluppo
45
dall’Uiniversità di Sydney (Australia). Essi sono stati molto utili in fase di debbugging e studio anche se l’applicazione originale fornisce già di per se un’ampia
possibilità di personalizzazione e configurazione.
Si è cercato quindi di sfruttare tale estendibilità modificando i sorgenti originali
in minima parte. Le innovazioni più rilevanti sono state sviluppate e progettate in
moduli esterni.
Le modifiche effettuate e le classi implementate sono descritte in maniera dettagliata nel capitolo relativo al codice sorgente.
Capitolo 7
TimeMap
Figura 7.1: Logo di TimeMap
7.1
Database
TimeMap, per memorizzare su database i dati geografici relativi le mappe utilizza,
tra le altre, le seguenti tabelle:
TM INSTANCE Questa tabella contiene i dati necessari per accedere alla tabella
in cui vengono caricati i dati al momento dell’upload della mappa.
TM DATASETS Questa tabella contiene i dati peculiari della mappa caricata,
e viene popolata all’atto della registrazione di una mappa precedentemente
caricata.
7.1 Database
47
Figura 7.2: Database di TimeMap
Quando si carica una mappa viene creata un’ulteriore tabella per memorizzare
le informazioni geografiche. Ad esempio se si carica una mappa con le strade di New
York, il sistema crea una tabella con “n” tuple, quanti sono i record dello shapefile,
ed “m” campi, quanti sono gli attributi. Inoltre la tabella conterrà ulteriori campi
contenenti le informazioni shape sui singoli record. Dalle indagini fatte si è evinto che
se lo shape è di tipo punto, vengono aggiunti due campi a doppia precisione (double)
per le coordinate, altrimenti il sistema utilizza un campo di tipo “GEOBLOB” per
inserire le informazioni relative lo shape.
Ad esempio, lo shapefile contenente le strade di una città viene tradotto in tabella
come mostrato nella figura 7.1
7.2 Client / Server
48
Figura 7.3: Tabella generata per la memorizzazione di uno shapefile contenente le
strade di una città
7.2
Client / Server
TimeMap in origine prevedeva due possibili modalità di funzionamento: standalone
e client / server. Per sviluppare USAlov si è partiti dalla modalità client / server.
In questo modo le mappe GIS, tramite la procedura di upload fornita dall’applicazione, vengono caricate sul database. Quindi la macchina server ospiterà l’applet1 ,
alla quale comunicherà le informazioni di cui ha bisogno (vedi fig. 6.1).
Client La connessione al sistema si basa su un browser web. Quando un client
si collega al sito internet, su cui è ospitata l’applet, il browser scaricherà l’applet2
la quale inizierà il proprio ciclo di vita sulla macchina client. All’avvio del sistema,
il client leggerà alcuni file XML presenti sul server in cui sono specificati il layout
1
Per motivi di sicurezza un’applet non può comunicare con altri host all’infuori dell’host da cui
è stata scaricata.
2
Componente attivo lato client
7.3 File di layout
49
grafico e le mappe da visualizzare. In base a tale file l’applet, comunicherà con il
server il quale fornirà i dati da mostare a video.
Il server fa da tramite tra l’applet e il database, leggendo le richieste dell’applet
e rispondendo con i dati prelevati dal database.
Questa descritta è l’architettura base di TimeMap che, seppur molto più complessa, è stata illustrata in maniera sintetica. La documentazione ufficiale è disponibile
on-line all’indirizzo “http://www.timemap.net”.
Nei prossimi paragrafi di questo capitolo sarà illustrato in dettaglio il funzionamento dell’applicazione.
7.3
File di layout
Il file “layout.xml” specifica i componenti disponibili all’interfaccia client ed il loro
layout nella finestra dell’applet.
Il percorso del file deve essere specificato nel file HTML che carica l’applet e
deve essere passato come parametro “layout” a questa, altrimenti sarà cercato nella
directory di default dell’applicazione al di sotto della direcotry specificata dal parametro “codebase” dell’applet. Se il file ha una struttura XML non valida esso sarà
ignorato e l’applicazione caricherà il layout di default.
7.3.1
Oggetti
Gli oggetti sono specificati con il tag “<object>”3 . Oggetti con funzionalità specifiche sono identificati da uno dei seguenti attributi:
3
vedi standard XML
7.3 File di layout
50
name per componenti quali toolbar, bottoni e controlli,
type per gli altri tipi di componenti.
È anche possibile definire oggetti senza alcun attributo il cui unico scopo è quello
di raggruppare altri oggetti.
7.3.2
Dimensioni ed allineamento
Tutti gli oggetti possono specificare la loro posizione, dimensione ed allineamento.
tramite l’utlizzo dei tag “align”, “bounds” e “size”.
7.3.3
Bottoni e toolbar
I bottoni sono identificati dall’attributo “type” inserito nel tag “<object>”. È
possibile quindi specificarne dimensione ed allineamento.
Per una corretta configurazione grafica si consiglia la creazione di una toolbar
associata alla mappa contenente tutti i bottoni.
7.3.4
Pannelli
Gli oggetti “panel” possono essere utilizzati per contenere altri oggetti eccetto
bottoni.
7.3.5
Colori
Il formato utilizzato per specificare i colori é “R:G:B”, dove R, G e B sono valori da 0
a 255. È inoltre possibile specificare un quarto parametro per definire la trasparenza
(alpha), il quale dovrà assumere anch’esso valori da 0 (trasparente) a 255 (opaco).
7.4 File di progetto
7.3.6
51
Collegamento alla mappa
Tutti gli oggetti sono collegati con la mappa di default, ma nel caso sia prevista
la visualizzazione di due o più mappe, è anche possibile collegare i vari oggetti alla
relativa mappa, grazie all’attributo “map=name-of-map”.
7.4
File di progetto
Il file di progetto “project.xml”4 è un documento XML che descrive la struttura di
una mappa. Contiene la lista dei layers, specifica i simboli, le opzioni e la sorgente
dei dati.
7.4.1
Database Clearinghouse
Usare un database (detto Clearinghouse) è la via più corretta per la memorizzazione
e l’amministrazione dell’insieme dei dati: “dataset”. Un dataset descrive e registra
in un database Clearinghouse i layer che possono essere utilizzati in più progetti.
Per l’amministrazione del Clearinghouse vedere il capitolo sulla configurazione.
7.4.2
Layers
Il file di progetto specifica, sempre avvalendosi dello standard XML, i layers da
visualizzare e la sorgente dei relativi dati. Un layer può essere identificato come un
insieme di oggetti omogenei.
4
Chiamato da TimeMap “mapspace file”
7.5 Applet
7.5
52
Applet
Per essere caricata in un browser web l’applet deve essere richiamata in una pagina
HTML che funge da vettore di dati. Di seguito ne viene illustrato un esempio.
Figura 7.4: Screenshot dell’applet
<applet codebase=“/usalov”
code=“org.alov.viewer.SarApplet”
archive=“alov.jar”
width=“640”
height=“480”
align=“center”>
7.6 Server
53
<param name=“pid”
value=“USAlovResources/project-bmwin.xml”>
<param name=“layout”
value=“USAlovResources/layout.xml”>
</applet>
In questo modo quando si accede con un browser web alla pagina HTML contenente il codice appena illustrato, il browser scaricherà l’applet dal server a cui si
è effettuato l’accesso cercandola nel path indicato dal parametro “codebase” con il
nome indicato dal parametro “archive”.
Una volta scaricata sul client l’applet inizia il proprio ciclo di vita caricando la
classe principale indicata dal paramtero “code”.
L’aspetto grafico sarà impostato secondo il file di layout, mentre i dati da
richedere al server sono indicati nel file di progetto.
In questo caso la classe responsabile dell’avvio è la classe “SarApplet” contenuta
nel package “org.alov.viewer”.
7.6
Server
Lato server il servizio principale è realizzato dalla Servlet “MapServlet” contenuta
nel package “org.alov.serv”.
“MapServlet” è la Servlet principale utilizzata per interagire con l’applet tramite
il protocollo HTTP.
Questo servizio si occupa del recuupero delle informazioni da inviare al client.
Capitolo 8
Architettura
USAlov estende le funzionalità di TimeMap sotto vari aspetti. Esso si propone di
integrare alle funzionalità di base già esistenti la possibilità di effettuare il tracking
di dispositivi mobili.
8.1
Database
Ai fini di storicizzazione dei dati, cioè per il salvataggio dei percorsi effetuati dagli oggetti mobili e dei dati dei dispositivi registrati, sono state introdotte alcune ulteriori
tabelle. Per non interferire con il database dell’applicazione originaria, si è scelto di
creare un nuovo database in cui inserire le tabelle necessarie all’applicazione.
In particolare sono state inserite dua tabelle di base. La tabella “register” consente la memorizzazione dei dispositivi registrati: essa conterrà l’identificativo e il
tipo di ogni oggetto mobile registrato sul sistema. La tabella “history”, invece, contiene i dati relativi il percorso dei dispositivi mobili: contiene quindi l’identificativo
del dispositivo, le coordinate relative la posizione è l’orario della comunicazione.
8.1 Database
55
Tabella 8.1: Struttura della tabella history
Field
Type
Null
id
varchar(255)
Yes
x
double
Yes
0
y
double
Yes
0
timestamp
Yes
0000-00-00 00:00:00
time
Default
Tabella 8.2: Struttura della tabella registered
Field
8.1.1
Type
Null Default
id
varchar(255)
Yes
type
varchar(20)
Yes
Aggiunta di un nuovo dispositivo
Per gestire una particolare categoria di dispositivi mobili, bisogna inserire un’ulteriore tabella. In essa si memorizzeranno i dati peculiari dell’oggetto. Ad esempio
se si vuole gestire la categoria di oggetti mobili “Autobus”, con le caratteristiche
targa, posti e numero, la tabella da creare sarà, per l’appunto, “Autobus” e conterrà
i campi su elencati.
Quando un utente effettua la registrazione di un nuovo dispositivo di tipo “Autobus”, sul sistema, dovrà inserire i valori relativi i campi della tabella. Il sistema
quindi provvederà a popolare la tabella “register” con il tipo di dispositivo e l’identificativo e la tabella “Autobus” con l’identificativo e i dati peculiari dell’oggetto.
trattato.
8.2 Servlet
56
Tabella 8.3: Structure of table autobus
Field
Null Default
id
varchar(255)
Yes
targa
varchar(10)
Yes
posti
int(11)
Yes
varchar(50)
Yes
numero
8.2
Type
Servlet
L’esigenza di dover inserire a runtime oggetti sulla mappa ha condotto all’integrazione, nell’interfaccia di caricamento dei dati, della funzionalità di creazione di mappe
vuote che poi ospiteranno a runtime oggetti mobili (vedi fig. 8.2).
Inoltre è stata sviluppata un’ulteriore servlet che fa da tramite tra i dispositivi
GPS e l’applet. Essa è centrale per il modulo di comunicazione in quanto tutte le
comunicazioni (richieste HTTP) avvengono tramite essa.
8.2.1
Comunicazione con i dispositivi GPS
La servlet riceve la posizione dei dispositivi GPS, la memorizza su un database,
e controlla ad intervalli regolari quali sono quelli che non comunicano la propria
posizione da più di un intervallo di tempo (configurabile).
Per tenere traccia degli spostamenti utilizza due strutture dati: un database in
cui vengono memorizzate tutte le posizioni comunicate dai dispositivi mobili e una
struttura in memoria in cui tiene traccia dei dispositivi attivi.
Le coordinate relative alla posizione, prima di essere memorizzate sul database,
8.2 Servlet
57
Figura 8.1: Interfaccia di caricamento delle mappe
vengono trasoformate in coordinate compatibili con la proiezione cartografica della
mappa.
8.2.2
Registrazione di un dispositivo GPS
La servlet registra nuovi oggetti GPS memorizzandone i dati inviati a seconda del
tipo di oggetto. In questo modo le successive comunicazioni avverranno solo tramite
un identificativo del dispositivo. Inoltre sarà possibile permettere le comunicazioni
solo per i dispositivi preventivamente registrati.
8.2 Servlet
8.2.3
58
Comunicazione con l’applet
Anche la comunicazione con l’Applet avviene rispondendo oppurtunamente ad eventuali richieste HTTP della stessa.
Tracking
Come detto in precedenza, il server tiene traccia dei dispositivi attivi in un determinato momento, eliminando dalla struttura dati quelli che non aggiornano la loro
posizione da più di un intervallo di tempo.
Quindi un opportuno processo in backgound controlla tutta la struttura dati ed
elimina le voci inerenti i dispositivi il cui ultimo aggiornamento della posizione non
è recente.
Quando l’applet effettua un’opportuna richiesta HTTP il server risponde con
l’ultima posizione di ogni dispositivo attivo.
Identificativi:
la servlet distingue i dispositivi in base al tipo e comunica le
ultime posizioni dei dispositivi richesti qualora essi siano presenti nella struttura
dati dei dispositivi attivi. Ad esempio se un oggetto “X” aggiorna la sua posizione
al server alle 14.00 e l’intervallo di tempo massimo di aggiornamento è impostato a
1 minuto, “X” alle 14.01 sarà rimosso dalla struttura dati dei dispositivi attivi.
Una delle nuove funzionalità implementate è quella che consente il tracking di
un singolo dispositivo. In questo caso il server risponde ad ogni richiesta del client
(applet) con la posizione del dispositivo richiesto1 .
Un’altra modalità di funzionamento consente il tracking di molteplici dispositivi
1
Qualora sia attivo
8.3 Applet
59
contemporaneamente. In questa modalità sono visualizzati sulla mappa, all’interno
del browser web, tutti i dispositivi interessati.
Richesta di un percorso
Altra funzionalità sviluppata permette di richiedere il percorso effettuato da un
oggetto in un intervallo temporale. Ad esempio si può chiedere che sia mostrato a
video il percorso effettuato da un’auto fra le ore 15.00 e le ore 16.30 di un determinato
giorno.
Ad una richiesta simile la servlet risponde con il percorso effettuato dal dispositivo nell’intervallo temporale richesto.
8.3
Applet
In base a quanto affermato nel paragrafo “Filosofia di sviluppo”, l’applet originaria
non è stata modificata direttamente e il funzionamento di base è rimasto invariato.
Grazie all’estendibilità prevista dall’applicativo originale, è stato sufficiente implementare le classi rispettando le convenzioni imposte, e specificarle nel file di layout
per far sı̀ che l’applet le utilizzi.
8.3.1
Scheda dettagli
Una delle funzionalità modificate è la finestra di pop-up che viene aperta nel momento in cui si clicca su un elemento della mappa. Se l’elemento è un record della mappa GIS ne vengono mostrati gli attributi, in maniera simile, tranne che nell’aspetto
grafico, all’implementazione originale.
Se invece si vogliono visualizzare gli attributi di un dispositivo GPS di cui si sta
8.4 MIDLet
60
facendo il tracking, i dati vengono chiesti al server dei dati tramite una richiesta
HTTP.
8.3.2
Pannello di controllo per il tracking
Tramite il pannello di controllo è possibile effettuare il tracking di una flotta.
Si può effettuare il tracking di un gruppo di oggetti mobili, o specificare, tramite
l’identificativo, i singoli dispositivi da monitorare per ogni tipo.
È inoltre possibile richiedere il percorso effettuato, in un intervallo di tempo, da
un singolo dispositivo.
8.3.3
Registrazione
Tramite la pagina JSP “register.jsp” è possibile registrare i dispositivi GPS di cui
potrà essere fatto il tracking.
8.4
MIDLet
Su un dispositivo mobile, dotato di JVM2 , è possibile installare un’applicazione di
tipo J2ME[16], [17]. Questo tipo di applicazioni prende il nome di MIDlet, che è
l’equicalente di un’applet per il browser.
La MIDlet[11] sviluppata, permette di connettersi tramite bluetooth a un dispositovo GPS, leggere la posizione attuale e inviarla al server di tracking.
2
http://java.sun.com
8.4 MIDLet
8.4.1
61
Configurazione dei parametri di connessione
La MIDlet deve essere configurata tramite il pannello “Options”. Bisogna inserire
l’url a cui è raggiungibile il server e l’identificativo preventivamente registrato.
8.4.2
Comunicazione Bluetooth
Al lancio della MIDlet, bisogna effettuare la ricerca dei dispositivi Bluetooth nel
range e scegliere il GPS che si vuole utilizzare.
8.4.3
Invio della propria posizione
Una volta agganciato il GPS si può fare lo “start”. La MIDlet instaurerà una
connessione con il GPS e ogni 10 secondi aggiornerà la propria posizione al server
impostato in fase di configurazione.
Capitolo 9
Funzionamento
9.1
Oggetti mobili
USAlov, come già detto, prevede la possibilità di effettuare il tracking di oggetti
mobili suddivisi in categorie.
Un oggetto, per essere monitorato, deve registrarsi sul server tramite la pagina
“register.jsp”. Qui a seconda del tipo1 che rappresenta inserirà dei parametri che lo
caratterizzano. Per esempio un autobus avrà proprietà quali il numero, il percorso,
il numero di posti, oppure un camion avrà proprietà relative al modello, alla merce
trasportata, al peso etc.
9.1.1
I dispositivi GPS
Per dispositivo GPS si intende un dispositivo qualsiasi che invii le proprie coordinate
al tracking server. I dispositivi quindi possono essere di qualsiasi tipo. È possibile
1
Il server può gestirne svariati tipi
9.1 Oggetti mobili
63
Figura 9.1: Class diagram delle classi che mappano gli oggetti mobili
installare il sistema su un qualsiasi telefono cellulare o palmare (dotato di tecnologia
J2ME), in grado di comunicare con un ricevitore GPS.
Per poterli distinguere sulla mappa, si associa ad ogni dispositivo un identificativo univoco2 , e un tipo. Per tipo si intende un oggetto che il dispositivo rappresenta
nella realtà. Per esempio se si effettua il tracking di automobili il tipo associato
sarà, “Auto”, ovvero se si sta facendo il tracking di tecnici sparsi su un territorio3 il
tipo associato sarà, “Tecnico”.
Questa suddivisione in categorie consente di gestire, per ogni tipologia, caratteristiche peculiari.
2
3
Operazione effettuata in fase di registrazione
Vedi capitolo “Sviluppi futuri”
9.1 Oggetti mobili
9.1.2
64
La classe “GPSDevice”
Nel caso di USAlov è stata realizzata la classe “GPSDevice” nell’omonimo package,
che rappresenta, da un punto di vista “Object-Oriented”, un’astrazione di un oggetto
mobile. Questa classe infatti fornisce alcuni metodi ed alcune proprietà ma demanda
alla classi che la estenderanno il compito di fornire ulteriori istanze e metodi, ossia,
rispettivamente, ulteriori proprietà e funzionalità, dell’oggetto che mappa.
La classe “GPSDevice” ha le seguenti proprietà:
id identificatico dell’oggetto,
type tipo (descrizione in formato testuale, eg. Auto, Autobus, Camion...),
lastX l’ascissa dell’ultima posizione rilevata,
lastY l’ordinata dell’ultima posizione rilevata,
lastTime la data (comprensiva di ora minuto e secondo) dell’ultimo rilevamento.
e i seguenti metodi:
getLastCoord() è un metodo di utilità che serve a restituire una stringa contente
l’ultima posizione del dispositivo,
setByRequest() il server gestisce dispositivi GPS astratti e non ne conosce a priori
il tipo, questo metodo permette di impostare tutte le proprietà del dispositivo,
getFieldsValue() questo metodo ritorna un array di oggetti in cui sono presenti
dei riferimenti a tutte le istanze del dispositivo,
getFieldsName() questo metodo invece ritorna un array di stringhe, dei nomi di
tutte le proprietà del dispositivo.
9.2 Servlet
65
I metodi astratti non sono implementati nella classe “GPSDevice” ma si richiede
lo siano nelle classi che la estendono.
In questo modo è immediato creare un nuovo oggetto che rappresenti un’entità
reale. Basta creare una nuova classe che mappa l’oggetto, e farle estendere la classe
“GPSDevice”. Quindi la nuova classe erediterà i metodi e le istanze della classe
estesa4 e implementerà i metodi dichiarati astratti.
9.2
Servlet
Il compito principale del server è quello di ricevere le coordinate relative alla posizione dalla MIDlet, e di comunicarle poi all’applet.
La servlet, classe “UsServlet” contenuta nel package “us.serv.controller”, quando
riceve una richeista HTTP con dei parametri la analizza, e in base al tipo di richista,
effettua determinate operazioni. Utilizza la classe “USAction” contenuta nel package
“us.serv.model” che è una classe di metodi statici, metodi messi a disposizione della
servlet per effettuare le proprie operazioni.
9.2.1
Comunicazione con la MIDlet
La UsServlet riceverà una richiesta HTTP dalla MIDlet, contenente i parametri
relativi alle coordinate5 della posizione.
A questo punto li trasformerà, tramite apposite librerie di conversione, nel sistema di proiezione cartografica utilizzato dalle mappe e li memorizzerà su due
strutture dati: il database e in una struttura dati attiva.
4
5
Detta classe padre secondo la terminologia Objected Oriented
Latitudine e longitudine
9.2 Servlet
66
Database Sul database saranno memorizzati l’identificativo del dispositivo, la
data in cui ha effettuato la comunicazione e la posizione.
Struttura dati attiva In un’apposita struttura dati attiva viene tenuto traccia
dei dispositivi attivi. Nella fattispecie, ogni qualvolta un dispositivo aggiorna la
propria posizione viene costruito l’oggetto che lo mappa e viene aggiunto in tale
struttura hash.
9.2.2
Memorizzazione delle posizioni
La servlet, prima di memorizzare le coordinate relative alla posizione ne effettua la
trasformazione in base alla proiezione cartografica della mappa. Questa operazione
viene svolta dalla libreria Java GeoTransform.
In particolare viene utilizzato il metodo “write” della classe “UsAction” per effettuare la trasformazione delle coordinate che poi saranno memorizzate sul database.
Per la trasformazione viene usata la classe “Nmea” contenuta nel package “us.util”.
L’oggetto Nmea ha un metodo “parseMessage(String lat, String lon)” che accetta
latitudine e langitudine e imposta le proprietà in base alla trasformazione nella
proiezione cartografica WGS84 fuso 32N.
All’inizio dello sviluppo tale classe accettava direttamente la stringa NMEA e
ne effettuava il parsing e la trasformazione delle coordinate derivanti, in quanto non
veniva effettuata nessuna operazione di analisi della stringa sul dispositivo mobile.
In seguito si è ritenuto opportuno effettuare tale parsing direttamente nella MIDlet
ed è stato implementato il nuovo metodo nella classe “Nmea”, alla quale però non
si è voluto cambiare il nome per motivi storici.
9.3 Applet
9.2.3
67
Comunicazione con l’applet
Per la comunicazione con l’applet, anche in questo caso, il server non fa nient’altro
che rispondere alle richieste HTTP. A seconda della richesta e dei parametri passati
con la richiesta, il server analizza i propri dati e risponde in modo appropriato.
9.3
Applet
9.3.1
Layers
USAlov raggruppa, anche in fase di visualizzazione, i dispositivi mobili per categoria,
utilizzando un layer per ogni tipo. All’avvio i layer contenenti i dispositivi mobili
saranno ovviamente vuoti, e verranno riempiti con gli oggetti che rappresentano i
dispositivi mobili, in base alle richieste dell’utente.
9.3.2
Scheda dettagli
Quando si clicca su di un elemento di una mappa viene generato un evento a
cui risponde una delle classi presenti nel vettore dei listener caricato in fase di
inizializzazione dall’applet.
Un listener rappresenta, in Java, un ascoltatore, ossia una classa in grado di
rispondere ad eventi.
All’avvio, la “SarApplet”, carica in un vettore di listener le classi che implementano le interfacce di seguito elencate.
CarteAttribute Interfaccia da implementare per effettuare la visualizzazione dei
dati.
9.3 Applet
68
CarteHostListener Questa è l’interfaccia per i listener abilitati a ricevere gli
eventi dell’applet. Implementandola se ne potrà controllare il comportamento.
Le interfacce dichiarano i seguenti metodi.
void setParameters(CarteHost host, XmlElement layout) Invocato quando
l’applet setta i parametri ottenuti dal file di layout. In fase di inizializzazione
l’applet carica il file di layout, ne effettua il parsing, quindi crea e aggiunge i
componenti specificati ed invoca il metodo.
void stop() Invocato quando l’applet viene terminata. Viene utilizzato per terminare tutte le attività in background.
void showAttributes(LayerVector lyr, Vector records) Invocato quando devono essere visualizzati gli attributi dei record.
La classe che è stata implementata è “UsFrame” e fa parte del package “us.listener”.
Aggiungendo il tag:
<object class=‘‘us.listener.UsFrame’’/>
essa viene caricata in fase di inizializzazione dalla “SarApplet”. Come richesto
implementa le interfacce di cui sopra.
In particolare crea una finestra grazie alla classe “Card2” presente nel package
“us.Frame”. Come ormai sarà charo, i metodi di questa classe vengono invocati
quando si clicca con il mouse su di un elemento della mappa (vedi figura 9.2).
Quest’ultima estende le funzionalità della classe originale ma dà anche la possibilità di visualizzare i dati inerenti un dispositivo GPS di cui si sta facendo il
tracking.
9.3 Applet
69
Figura 9.2: Scheda dettagli
Il client non conosce a priori tutti gli attributi dei record che rappresentano
dispositivi GPS, a differenza dei record che rappresentano elementi di una mappa
GIS.
Quindi per mostrare tali attributi la nuova classe “Card2”, utilizza un’ulteriore
classe chiamata “RequestGPSData” facente parte del package “us.applet”. Questa
implementa il metodo “getFields()” il quale restituisce un “Vector” di stringhe6
contenenti gli attributi del GPS richiesto. Il metodo effettua una richiesta HTTP al
server:
6
Vector¡String¿ notazione Java 5.0
9.3 Applet
70
http://url server /read data.rlv?
id=identificativo gps &type=tipo gps
ed effettua il parsing della risposta.
9.3.3
Pannello di Tracking
Nella toolbar di USAlov è stato aggiunto un ulteriore bottone, come nel caso precedente inserendo il seguente tag
<object type=‘‘panel’’bounds=‘‘0,0,1,35’’ align=‘‘top’’>
<object type=‘‘toolbar’’ name=‘‘toolkit’’
bounds=‘‘0,0,460,1’’ align=‘‘left’’>
...
<object
class=‘‘us.listener.ComunicationServer’’
bounds=‘‘150,7,23,23’’
image=‘‘USAlovResources/GPSView.gif’’/>
...
</object>
</object>
nel file di layout ed implementadone le classi che ne definiscono il comportamento.
La classe, come si può vedere dal tag, si chiama “ComunicationServer” e si trova
nel package “us.listener”. Essa implementa le seguenti interfacce:
CarteHostListener Di questa interfaccia si è discusso nel paragrafo precedente.
9.3 Applet
71
Figura 9.3: Pannello di tracking
CarteListener Controlla le azioni da intraprendere in base ad eventi scatenati
sull’applet.
ActionListener L’interfaccia del listener per ricevere eventi di azioni. L’oggetto
creato, appartenente a questa classe, viene registrato come componente grazie al metodo “addActionListener”. Quando l’evento viene generato viene
invocato il metodo “actionPerformed”.
ed estende la seguente classe:
ImageButton Controlla il bottone incluso nell’interfaccia.
9.3 Applet
72
Quindi implementa i seguenti metodi7 :
• Interfaccia “CarteListener”
void mouseMapPressed(MouseEvent e) Questo metodo viene invocato
quando viene premuto un bottone su un componente della mappa.
void mouseMapReleased(FloatRectangle selRect, MouseEvent e) Questo
metodo viene invocato quando viene rilasciato il bottone del mouse da
un componente della mappa. Esso accetta l’area selezionata durante il
“Drag & Drop”.
void mouseMapMoved(MouseEvent e) Questo metodo viene invocato ogni
qual volta si muove il mouse sulla mappa.
void afterMapDraw(Graphics g) Questo metodo è chiamato ogni volta
che viene ridisegnata la mappa. Qui si inserisce il codice che modifca
l’immagine della mappa finale mostrata a video.
• Interfaccia “ActionListener”
void actionPerformed(ActionEvent e) Invocato per svolgere un’azione in
risposta ad un evento.
e ne eredita tutti quelli dalla classe “ImageButton”. Quest’ultimi si preoccupano
della creazione grafica del bottone, del colore, della posizione e di tutto ciò che è
necessario per la creazione di un bottone.
Quando si preme il bottone sulla barra dell’applet viene invocata la classe “ComunicationServer” che mostra a video il pannello di tracking. Questo pannello
permette di accedere alle funzionalità descritte nei prossimi paragrafi.
7
Sono da aggiungere i metodi dell’interfaccia “CarteHostListener”
9.3 Applet
73
Figura 9.4: Tracking di alcuni dispositivi contemporaneamente
Posizione dei dispositivi
Per ogni categoria di dispositivi si dovrà specificarne l’identificativo e tramite la
pressione del tasto “Start/Refresh” questi saranno visualizzati sulla mappa se attivi
in quel momento.
È anche possibile scegliere di monitorare tutti i dispositivi di una determinata categoria tramite il bottone “All” avendo selezionato la categoria nel pannello a scelte
multiple. Oppure tutti i dispositivi di tutte le categorie previste tramite il bottone
“All types” della categoria selezionata. Ad ogni cambiamento si dovrà ripremere il
bottone “Start/Refresh” per aggiornare la lista degli oggetti da monitorare.
9.3 Applet
74
In dettaglio, alla pressione del tasto per aprire il pannello di tracking, viene invocato il metodo “actionPerformed” della classe “ComunicationServer” che effettua
le seguenti operazioni in cascata:
• controlla le categorie di dispositivi GPS per popolare il menu a tendina in cui
scegliere la categoria dell’oggetto;
• legge dal file “gps.xml” caricato sul server, per impostare la lista dei dispositivi
GPS da monitorare;
• crea un’istanza della classe “GPSView” contenuta nel package “us.window”
che è responsabile della creazione e della gestione del pannello di tracking.
Tracking di default All’avvio, viene caricato un file XML in cui sono specificati i
dispositivi da monitorare di default. Tale file risiede sul server e non è prevista (vedi
capitolo “Sviluppi futuri”) la possibilità di modificarlo lato client. Tale operazione
viene effettuata grazie alla classe “GPSViewXMLParseFile” contenuta nel package
“us.util” che implementa i metodi per effettuare il parsing del file XML.
<?xml version=‘‘1.0’’ encoding=‘‘UTF-8’’>
<gps type=‘‘Tecnico di secondo livello’’
id=‘‘145643GflT’’/>
<gps type=‘‘Tecnico di primo livello’’ id=‘‘19756DlF’’/>
Alla pressione del tasto “Start” viene creata (se non esiste già) un’istanza della
classe “ThreadShowGPS” contenuta nel package “us.applet”. Questa classe è un
thread e quindi esegue le proprie operazioni in background senza interrompere lo
svolgimento delle altre. Tale processo, finché non viene fermato, esegue sempre il
seguente ciclo di operazioni per ogni categoria di dispositivi:
9.3 Applet
75
• pulisce il layer corrispondente alla categoria,
• crea una lista con tutti gli identificativi da monitorare separati da virgola,
• invia una richiesta HTTP al server per richiedere la posizione del dispositivi
di cui al punto precedente,
http://server url /read.rlv?ids=identificativi gps&type=categoria
• inserisce in base alla stringa ricevuta, “n” record nel layer corrispondente alla
categoria, rappresentativi degli “n” dispositivi di cui si è fatta richiesta di
monitoraggio,
• effettua l’aggiornamento grafico della mappa con i nuovi record.
Inseguimento di un dispositivo
Un’altra modalità di tracking è quella che consente di inseguire letteralmente un
determinato oggetto. Infatti selezionando il tipo nel menù a tendina e inserendo
l’identificativo nell’apposita area di testo verrà effettuato l’inseguimento dell’oggetto
mobile (“follow mode”).
Questo compito è portato a termine dalla classe “ThreadFollowGPS” contenuta
nel package “us.applet”. Questa effettua il seguente ciclo di operazioni:
• pulisce il layer corrispondente alla categoria,
• crea una stringa con l’identificativo da monitorare,
• invia una richiesta HTTP al server per richiedere la posizione del dispositivo
di cui al punto precedente,
9.3 Applet
76
http://server url /read.rlv?id=identificativo gps&type=categoria
• inserisce, o aggiorna nel caso già esista, in base alla stringa ricevuta, il record
nel layer corrispondente alla categoria, rappresentativo del dispositivo di cui
si è fatta richiesta di monitoraggio,
• effettua l’aggiornamento della mappa con i nuovi record,
• centra la mappa rispetto al dispositivo inseguito.
Durante il tracking lo zoom della mappa rimarrà invariato ma essa avrà sempre al centro il dispositivo che si sta monitorando. Per questa funzionalità viene
utilizzata la funzione “UsCenterAt()” della classe “Carte” contenuta nel package
“org.alov.map” (vedi capitolo “Codice sorgente” per una spiegazione più dettagliata
dell’algoritmo utilizzato).
Visulizzazione del percorso di un dispositivo
L’ultima funzionalità presente nel pannello di tracking è quella che permette di richiedere il percorso fatto da un dispositivo in un determinato intervallo di tempo.
Selezionando la categoria dell’oggetto sarà sufficiente inserirne l’identificativo, la data di inizio e fine del periodo da monitorare e premere il pulsante “Get Path”. Quindi
sulla mappa sarà mostrato il percorso effettuato dall’oggetto in quell’intervallo di
tempo.
La classe incaricata è “PathGPS” contenuta nel package “us.applet”. Tale classe
esegue ciclicamente le seguenti istruzioni.
• Accetta nel costruttore un riferimento ad una struttura dati contenente dei
punti. Tale struttura viene sistematicamente riletta tramite il metodo “af-
9.3 Applet
77
Figura 9.5: Percorso di un oggetto mobile
terMapDraw(Graphics g)” della classe “ComunicationServer”, ad ogni refresh
della mappa, dove vengono aggiunti i punti contenuti nella struttura.
• Crea una stringa con l’identificativo di cui richiedere il percorso e l’intervallo
di tempo.
• Invia una richiesta HTTP al server per richiedere il percorso del dispositivo di
cui al punto precedente.
http://server url /getPath.rlv?id=identificativo gps
&type=categoria&from=data di partenza&type=data di arrivo
9.4 MIDLet
78
• Inserisce, in base alla stringa ricevuta, i punti nella struttura dati di cui al
primo punto. I punti rappresentano il percorso del dispositivo nell’arco di
tempo richiesto.
• Effettua l’aggiornamento della mappa con i nuovi punti.
9.4
MIDLet
La classe di partenza della MIDlet è “USAlovMIDlet” e si trova nel package “us.mid”.
Questa come richesto da J2ME estende la classe “MIDlet” di base. Essa implementa anche l’interfaccia “CommandListener” in modo di essere in grado di accettare e
processare comandi ricevuti tramite la tastiera del telefono cellulare.
Questa MIDlet all’avvio crea un menu che permette di accedere alle voci di
seguito elencate.
9.4.1
Ricerca Bluetooth
La MIDLet come prima cosa deve agganciare un dispositivo bluetooth.
Quindi il telefono cellulare dovrà scegliere fra i dispositivi bluetooth nel range8
(10m c.a) con cui comunicare.
La classe che si occupa di ciò è “SearchGPS” del package “us.gps” ed effettua la
ricerca di tutti i dispositivi bluetooth nel range. A ricerca completata essa crea una
lista dei dispositivi GPS trovati e la visualizza a video utilizzando il riferimento al
costruttore passato dalla classe di partenza.
Scelto il dispositivo con il quale si vuole comunicare si può tornare al menu
principale tramite il tasto “Back”.
8
Nel nostro caso i dispositivi GPS nel range
9.4 MIDLet
79
Figura 9.6: Ricerca di un ricevitore GPS bluetooth
9.4.2
Opzioni di connessione
Un volta scelto il dispositivo GPS, è necessario impostare i parametri di connessione
al server dei dati9 .
Tramite il menu si sceglie la voce “Options” (opzioni) e si accede all’apposita
interfaccia ove sarà possbile impostare l’identificativo del dispositivo10 e l’url del
9
10
Tale operazione va effettuata solo la prima volta che si utilizza la MIDlet
Preventivamente registrato sul server
9.4 MIDLet
80
Figura 9.7: Impostazione delle opzioni di connessione
server a cui connettersi.
La classe “USAlovMIDlet” si occupa di creare il form per l’inserimento di tali dati mentre il salvataggio è affidato alla classe “DbStore” presente nel package
“us.db”. Il cellulare infatti permette di memorizzare informazioni in un cosı̀ detto
“RecordStore” secondo una struttura a record. “DbStore” ha il compito di salvare
i dati sul supporto di memorizzazione del cellulare e di ritrovarli le volte successive.
9.4 MIDLet
9.4.3
81
Verifica della connessione
La MIDlet prevede anche la possibilità di controllare la connessione verso il server.
Si invierà una stringa di prova al server il quale risponderà in senso afferamtivo
solo se l’identificativo impostato è registrato.
Responsabile di questa operazione è la classe “CheckConn” contenuta nel package
“us.internet”. Essa invia una richesta HTTP, tramite la rete GPRS dell’operatore
di telefonia mobile, al server impostato. La stringa sarà cosı̀ composta:
http://url server /checkByPhone.jsp?id=id impostato.
A tale stringa il server risponderà con un messaggio di errore o di conferma. Quindi se la risposta è positiva vuol dire che la connessione è riuscita e che l’identificativo
comunicato è registrato sul database del server.
9.4.4
Invio della propria posizione al server
A questo punto, terminate le fasi di ricerca del dispositivo e di impostazione delle
opzioni di connessione si può lanciare l’applicazione nella modalità di funzionamento
principale.
Allo “Start” la MIDlet si connette al dispositivo GPS tramite bluetooth, processa
la stringa ricevuta e la invia al server.
La comunicazione bluetooth avviene in modo molto simile ad una comunicazione
client / server. Il dispositivo GPS, nel nostro caso farà da server, mentre il telefono cellulare sarà il client. A differenza della comunicazione client / server, con
il bluetooth, è sufficiente che il dispositivo effettui una prima richiesta al ricevitore
GPS, in tal modo quest’ultimo inizierà a rispondere con alcune informazioni fino a
richiesta di interruzione.
9.4 MIDLet
82
Figura 9.8: Aggiornamento della propria posizione al server di tracking
La stringa di connessione bluetooth è del tipo:
btspp://indirizzo dispositivo bluetooth :1
dove l’indirizzo del dispositivo bluetooth viene ricavato in base al GPS selezionato
precedentemente.
Quindi la classe “Start” contenuta nel package “us.gps” effettua la prima connessione con il dispositivo.
Il dispositivo GPS risponde con delle stringhe conformi al protocollo NMEA. La
9.4 MIDLet
83
MIDlet si occupa quindi di processare tali stringhe e di trasformarle in una forma
comprensibile al server.
Tali stringhe vengono analizzate tramite le classi contenute nel package “gps” e
scomposte in forma di latitudine e longitudine.
A questo punto le informazioni vengono inviate al server dati tramite una richiesta di tipo HTTP:
http://url server ?write.jsp?id=identificativo gps
&lat=latitudine &lon=longitudine
Capitolo 10
Codice sorgente
In questo capitolo saranno analizzati alcune porzioni del codice sorgente non analizzate nei precedenti capitoli.
10.1
Modifiche apportate ai sorgenti originali
In base a quanto affermato in precedenza, riguardo la filosofia di sviluppo, le modifiche effettuate sui sorgenti sono state bene poche.
10.1.1
Classe Carte
Alla classe “Carte” contenuta nel package “org.alov.map” sono stati aggiunti i
seguenti metodi:
void usCenterAt(double x, double y)
Centra la mappa sul punto passato come parametro, lasciando invariato il livello di
zoom attuale.
10.1 Modifiche apportate ai sorgenti originali
85
double width = Math.abs(currentRect.x2 - currentRect.x1);
double height = Math.abs(currentRect.y2 - currentRect.y2);
newRect.x1 = x - width/2; newRect.y1 = y - height/2;
newRect.x2 = x + width/2; newRect.y2 = y + height/2;
Vector<Layer> getEmptyLayers()
Restituisce un elenco dei layers vuoti. Serve a stabilire i layers che rappresentano
categorie di oggetti mobili.
10.1.2
Classe UploadServlet
L’architettura dell’applicativo originale, lato server, è stata arricchita con le funzionalità atte al caricamento di tabelle, che rappresentano categorie di oggetti mobili.
Nella servlet “UploadServlet” contenuta nel package “org.alov.serv” sono state
effettuate le seguenti modifiche.
Link “Empty Shapefile”
Cliccando su questo link si aggiunge una tabella vuota. Questa tabella è la rappresentazione di uno shapefile di tipo puntuale che, a regime, viene interpretato come
un layer vuoto dal client dove saranno ospitati, a runtime, gli oggetti mobili.
Metodo loadPumpPage()
Tramite il metodo dell’overloading dei metodi permesso da Java è stato creato un
nuovo metodo loadPumpPage().
Tale metodo si occupa di creare, ed inviare al browser la pagina HTML per il
10.2 Classi sviluppate
86
caricamento delle mappe. Il nuovo metodo crea la pagina nel caso particolare in cui
si voglia effettuare il caricamento di una mappa vuota.
10.1.3
Costanti
La classe “Const” contenuta nel package “org.alov.util”, contiene alcune costanti
relative al nome e alla versione dell’applicazione.
10.2
Classi sviluppate
In figura 10.1 sono mostrate le classe aggiunte.
Figura 10.1: Classi aggiunte
10.2 Classi sviluppate
10.2.1
87
Servlet
Lato server è stata creata l’infrastruttura per il prelevamento dal database delle
informazioni riguardo gli oggetti mobili e la comunicazione con l’applet. A questo
scopo, sono stati aggiunte le classi contenute nei packages “us.serv.*”.
La classe principale è la servlet “UsServlet”. Essa, secondo quanto stabilito dal
pattern MVC[14] di Sun, utilizza i metodi statici messi a disposizione dalla classe
di action “UsAction” per compiere le proprie operazioni.
GPSDevicesList
“GPSDevicesList” è la struttura dati attiva in cui si tiene traccia dei dispositivi attivi
in ogni momento. Questa classe estende la classe “Hashtable” di Java per aggiungere
alcune funzionalità. In particolare implementa il metodo “getType(String type)” e
sovrascrive il metodo “toString()”. Il primo serve a restituire una nuova struttura
dati uguale a quella di partenza ma contenente solo gli oggetti del tipo richiesto;
il secondo restituisce un stringa contenente le coordinate di ogni oggetto mobile
presente nella struttura al momento della richiesta.
ThreadRefreshListMobiles
La classe “ThreadRefreshListMobiles” è un thread che pulisce la struttura dati appena illustrata. La servlet “UsServlet”, in fase di inizializzazione crea un’istanza di
tale classe, passando come parametri nel costruttore un riferimento all’istanza “GPSDeviceList”, e l’intervallo di tempo in cui periodicamente deve essere effettuata la
pulizia. La servlet legge i parametri di configurazione dal file “web.xml”1 indicanti
1
Si rimanda il lettore alla documentazione di Tomcat per ulteriori approfondimenti a riguardo
10.2 Classi sviluppate
88
l’intervallo di tempo da far passare fra un’analisi e l’altra della struttura e verifica
se attivare tale analisi2 .
DBManager
Un’ulteriore operazione eseguita dalla Servlet in fase di inizializzazione è il caricamento del “DBManager”. Tale classe consente una separazione concettuale del
livello applicativo che si occupa dell’accesso alla base di dati. Per la creazione di tale
classe viene analizzato il file di configurazione “db.properties” contenente i parametri
per l’accesso al database.
Metodo service
Il metodo service della classe “UsServlet” si occupa a runtime di soddisfare le richieste ricevute dai client (applet e dispositivo mobile). Come previsto dal pattern
MVC, l’applicazione è configurata in mode che tutte le richieste che terminano con
un certa sequenza di caratteri dopo il punto vengono indirizzate ad una specifica
servlet. La parte antecedente viene utilizzata, quindi, per interpretare l’operazione
da eseguire.
La prima operazione che effettua la servlet è l’analisi della richiesta ricevuta e in
base ad essa effettua le operazioni necessarie. Ad esempio, una richiesta HTTP del
tipo
http://url server /read data.rlv?
id=identificativo gps &type=tipo gps
viene interpretata, in base a quanto appena affermato, in questo modo:
2
In fase di configurazione o debug può essere utile non attivare questa funzionalità
10.2 Classi sviluppate
89
l’ultima parte “.rlv” permette al server web di indirizzare la richiesta alla servlet
in questione, in base alle istruzioni inserite nel file “web.xml”; la parte appena
precedente “read data” rappresenta il comando. Ad esempio, nel caso riceva il
comando in questione, la servlet, verifica che siano presenti i parametri “id” e “type”,
e in caso affermativo restituisce una stringa contenente le proprietà del dispositivo
GPS richiesto. Tali operazioni, come già detto, vengono eseguite utilizzando i metodi
statici della classe “UsAction”
In base a quanto appena illustrato sarà chiaro che il metodo service è costituito
da una serie di “statement” (if / else if / if) sul comando ricevuto, in cascata fino a
trovare il comando ricevuto.
10.2.2
Applet
Lato client l’applet è stata arricchita con le classi contenute nei package “us.applet”,
“us.listener” e “us.window”.
Le classi “ComunicationServer” e “UsFrame” vengono caricate in fase di avvio
dalla “SarApplet”. il loro funzionamento è stato già illustrato nei capitoli precedenti.
Le classi contenute nel package “us.window” vengono utilizzate da quest’utlime e
sono le classi che visualizzano il pannello di tracking e la scheda dettagli.
10.2.3
Tracking
Per eseguire le operazioni riguardo il tracking, lato client vengono utilizzate le classi
contenute nel package “us.applet”. Questo package contiene, tra le altre, le classi “ThreadFollowGPS” e “ThreadShowGPS”, che consentono, rispettivamente, di
monitorare un singolo oggetto mobile e una flotta di essi. Entrambe sono strutturate come thread, svolgendo quindi, operazioni in background senza interrompere
10.2 Classi sviluppate
90
gli altri processi, ed entrambe utilizzano i metodi statici della classe “GPSLayer”
per l’inserimento dell’oggetto mobile sulla mappa mostrata a video. In particolare
quest’ultima classe implementa i seguenti due metodi:
Record addGpsToLayer(String line, Layer layerToFollow, Record rec)
che si occupa di aggiungere il record passato come parametro al layer, anch’esso
passato come parametro, in base alle informazioni contenute nella “line”.
E il metodo:
boolean showGpssInLayer(String line, Layer layer)
che si occupa di analizzare la linea ricevuta ed aggiungere al layer gli oggetti
mobili in base ad essa.
Aggiunta di un dispositivo
Per l’aggiunta di un dispositivo si utilizzano i riferimenti alle istanze utilizzate per
disegnare la mappa a video:
// Imposta il tipo di forma punto layer.objectType = 1;
layer.drawOrder = 1;
// Crea un nuovo Record rec = layer.newRecord();
rec.setId(requestToServer); rec.figType = 1; rec.centroid =
new FloatPoint(x, y); rec.extent = new FloatRectangle(x, y,
x, y); rec.setField(0, id);
// Crea un nuova figura nel record appena creato shp =
rec.newShape(1);
10.2 Classi sviluppate
91
// Imposta la posizione delle figura shp.xCoords[0] = x;
shp.yCoords[0] = y;
// Aggiunge il nuovo record al Layer
layerToFollow.addRecord(rec);
Richiesta al server
Come si è visto entrambi i metodi analizzati in precedenza accettano una linea di
testo fra i parametri. Tale linea è il risultato di un richesta al server. Tale richesta
viene effettuata nel seguente modo:
String urlString = urlToRequest
URL uRL = new URL(urlString);
InputStream urlStream = uRL.openStream();
InputStreamReader inputStreamReader = new
InputStreamReader(urlStream);
BufferedReader br = new BufferedReader(inputStreamReader);
String line = br.readLine();
La classe “PathGPS” si occupa delle richieste relative al percorso effettuato da
un oggetto.
10.2.4
MIDlet
Come già discusso nei capitoli precedenti la classe principale della MIDlet è “USAlovMIDlet”. L’elenco delle classi sviluppate è mostrato in figura 10.2
La classe principale estende la classe “MIDlet” ed implementa la classe “CommandListener”, entrambe classi J2ME. Essa disegna la prima schermata e reagisce
ai comandi inviati dalla tastiera del telefono cellulare.
10.2 Classi sviluppate
92
Figura 10.2: Classi sviluppate per la MIDlet
USAlovMIDlet implementa, inoltre, il metodo “commandAction”, secondo quanto stabilito dall’interfaccia su citata, per l’esecuzione delle operazioni richieste dall’utente.
Questo metodo è invocato ogni volta che l’utente sceglie un’operazione dal tastierino. Di seguito ne è riportato un esempio a scopo esemplificativo3 .
public void commandAction(Command c, Displayable s)
{
if (c == cmExit)
{
destroyApp(true);
notifyDestroyed();
}
else if (c == cmStart) {
start = new Start(dbstore, choosedGPS)
3
Il codice riportato è solo a scopo dimostrativo e per ragioni di leggibilità non corrisponde a
quello reale. Lo stesso vale per il codice riportato successivamente.
10.2 Classi sviluppate
93
dbs.closeRecordStore(); start.start();
}
...
}
else if (c == cmCheckConn)
{
dbs = new DbStore();
checkConn = new CheckConn(dbStore);
dbs.closeRecordStore();
checkConn.start();
}
}
La classe “CheckConn” permette di verificare la connessione con il server, e la
classe “SearchGPS” permette di effettuare la ricerca dei dispositivi GPS bluetooth
nel range. Entrambe sono strutturate come thread, e quindi svolgono le proprie
operazioni in background.
La classe “SearchGPS” inoltre, implementa l’interfaccia “DiscoveryListener”, che
è un’interfaccia fornita dalla libreria bluetooth di J2ME. Essa garantisce che la
classe implementi i metodi per la ricerca di dispositivi bluetooth. Di seguito è
mostrato un esmpio del metodo “deviceDiscovered()” che è il metodo che viene
invocato ogniqualvolta viene trovato un dispositivo bluetooth durante la fase di
ricerca.
10.2 Classi sviluppate
94
public void deviceDiscovered(RemoteDevice device,
DeviceClass arg1)
{
if (devices.indexOf(device) == -1)
{
devices.addElement(device);
}
}
Invece a ricerca terminata è invocato il metodo “inquiryCompleted()”.
public void inquiryCompleted(int arg0)
{
GPSList = new List(‘‘USALov:
GPS Search
result’’,List.IMPLICIT);
GPSList.addCommand(cmSelect);
GPSList.addCommand(cmBack);
GPSList.setCommandListener(this);
Enumeration e = devices.elements();
while (e.hasMoreElements())
{
RemoteDevice rd = (RemoteDevice)
e.nextElement();
GPSList.append(rd.getFriendlyName(false) +
+ rd.getBluetoothAddress(), null);
10.2 Classi sviluppate
95
}
USm.display.setCurrent(GPSList);
}
La classe “DbStore” si occupa della gestione dei dati memorizzati sul “record
store” del telefono cellulare. Ad esempio per prelevare l’identificativo memorizzato
sulla memoria del telefono utilizza le seguenti istruzioni:
byte[] byteId = rs.getRecord(1);
return new String(byteId);
invece per memorizzarlo:
byte[] byteId = new byte[50];
byteId = id.getBytes();
rs.setRecord(1, byteId, 0, byteId.length);
Infine la classe “Start” si occupa della lettura della posizione attuale da ricevitore
GPS e dell’invio al server. Anch’essa è un thread, in quanto tutte le operazioni di
I/O (eg. connesione ad internet, comunicazioni bluetooth), rischiano di bloccare il
dispositivo mobile.
Essa in fase di istanziazione, ovvero nel costruttore, effettua la connessione con
il dispositivo bluetooth:
String url = ‘‘btspp://’’ +
choosedDevice.getBluetoothAddress() + ‘‘:1’’
StreamConnection connection = (StreamConnection)
Connector.open(url, Connector.READ);
10.2 Classi sviluppate
96
InputStreamReader reader = new
InputStreamReader(connection.openInputStream());
successivamente legge le informazioni ricevute:
String output = new String();
int input;
while ((input = reader.read()) != LINE DELIMITER)
output += (char) input;
output = output.substring(1, output.length() - 1);
Infine analizza la stringa (il codice di analisi della stringa non è mostrato, ma si
rimanda il lettore al capitolo sul protocollo NMEA) e la invia al server:
String url = ‘‘http://url server /write.rlv?
id=identificativo gps &pos=posizione ’’;
InputStream is = Connector.openInputStream(url);
InputStreamReader isr = new InputStreamReader(is);
char[] risArray = new char[20];
isr.read(risArray);
String ris = new String(risArray);
if (ris.indexOf(OK) > 0)
// Il cellulare è riuscito a stabilire la
connessione // La risposta del server è contenuta
nella variabile di tipo stringa ris
else
10.2 Classi sviluppate
// Il cellulare non è riuscito a stabilire la
connessione con il server
97
Capitolo 11
Installazione e configurazione
L’installazione dell’applicazione presuppone che sul server siano già installati e
configurati Tomcat e MySql, entrambi alle versioni 5.
Per installare l’applicazione è sufficiente effettuare il deploy del file “usalov.war”1 .
Successivamente sarà ncessario caricare le mappe in formato “shapefile” sul database
tramite l’interfaccia fornita dall’applicazione. Infine bisognerà personalizzare i file.
di configurazione in base alle proprie esigenze come di seguito descritte.
11.1
Installazione
Per effettuare il deploy accedere tramite browser web all’interfaccia “Tomcat Manager” dalla pagina iniziale di Tomcat. Nel form “war file to depoly” inserire il file
“usalov.war” e cliccare sul tasto deploy.
1
Per richiedere il file contattare l’autore della tesi tramite email al’indirizzo “[email protected]”
11.2 Caricamento dei dati geografici
11.2
99
Caricamento dei dati geografici
USAlov ha ereditato ed integrato l’interfaccia di gestione e caricamento delle mappe,
raggiungibile all’indirizzo:
http://url del server /usalov/pump
Username e password sono configurabili all’interno del file “WEB-INF/mapservhome/mapserv.xml”. Inserire o modificare (se già presente) il tag:
<master user=‘‘username ’’ password=‘‘password ’’ ip=indirizzo ip 2 />
11.2.1
Caricamento delle mappe
Effettuato l’accesso, tramite il link “Upload shapefile” si può effettuare il caricamento di un file di mappa. Tramite i link sotto la voce “Setup”, bisogna impostare
i parametri di accesso al database. Il caricamento della mappa consiste nella creazione di una tabella contenente i dati della mappa. Sono necessari un file shape
“nome.shp” e il file di database “dbase.dbf”. Per poter accedere dal client alle
informazioni è però necessario effettuare la registrazione.
A caricamento completato il sistema chiede all’utente se si vuole registrare la
mappa. Cliccando sul pulsante “Register this dataset?” o successivamente cliccando
sul link “Vector Dataset”, si registra la mappa. Bisogna indicare alcuni parametri,
quali la tabella di riferimento (quella creata nello step appena precedente), i parametri per l’accesso al database (almeno in lettura sempre alla stessa tabella) ed
alcuni altri parametri descrittivi riguardo i campi da inviare al client e le informazioni riguardanti il tipo e il tema della mappa. Se si sceglie di registrare la mappa
2
Indirizzo IP della macchina da cui si accede, “*” per essere abilitati ad accedere da tutti gli
indirizzi IP
11.3 Impostazione dei dati
100
subito dopo il processo di caricamento il sistema inserirà automaticamente alcuni
campi.
11.2.2
Gestione oggetti mobili
Per la gestione degli oggeti mobili è necessario utilizzare ad una tabella vuota.
Tramite il link “Empty Shapefile”, sarà creata una mappa vuota.
Tale mappa deve essere utilizzata per registrare gli oggetti mobili sul database. Il
sistema comunica solo all’avvio i layers da gestire e quindi, per ogni oggetto devono
essere state registrate delle mappe “virtuali” che saranno poi popolate a runtime
dal sistema lato client.
Ad esempio se si vuole configurare il sistema per gestire il tipo di oggetto “Autobus” si deve creare la tabella vuota tramite il link “Empty Shapefile” e successivamente registrare la mappa basandosi sulla tabella appena creata. Successivamente,
per gestire un’ulteriore categoria di oggetti mobili, sarà sufficiente registrare un’altra
mappa contenente
11.3
Impostazione dei dati
Una volta caricati i dati geografici sul database bisogna editare il file “project.xml”
per istruire l’applet sulle mappe da scaricare all’avvio:
<?xml version=“1.0”?>
<project zoomunits=“m” usetime=“no”>
<domain name=“Full map” full=“yes” xmin=“909823.0”
ymin=“4500250.0” xmax=“1053050.0” ymax=“4610210.0”/>
<layer name=“1” label=“BN PROV” visible=“yes”>
11.3 Impostazione dei dati
101
<dataset id=“1”>
</dataset>
<symbol filled=“no” outline=“0:0:0”/>
</layer>
<layer name=“2” label=“Auto” visible=“yes”>
<dataset id=“2”>
</dataset>
<renderer type=“default”>
<symbol
image=“USAlovResources/GPSDevice/auto.png”
label=“Auto” />
</renderer>
<renderer type=“label” labelfield=“EMPTY ID”
usezoom=“yes”>
<symbol fill=“255:0:0” outlined=“255:0:0”
size=“10” font=“Dialog” label=“ID Auto” position
= “3”/>
</renderer>
</layer>
</project>
Bisogna inserire il tag layer per ogni layer che si vuole visualizzare. Esso deve contenere il tag dataset con l’identificativo comunicato dal sistema in fase di
registrazione della mappa sul database. Per ulteriori dettagli sui tag illustrati, si
11.3 Impostazione dei dati
102
rimanda alla documentazione di TimeMap, disponibile per il download, sul sito web
http://www.timemap.net.
Capitolo 12
Sviluppi futuri
12.1
Espandibilità
Come nell’applicazione di partenza anche durante questo sviluppo si è cercato di
preservare l’espandibilità rispettando i principi fondamentali sanciti dall’approccio
“Object-Oriented”.
12.2
MIDlet per cellulari con antenna GPS integrata
Recentemente il mercato ha proposto telefoni cellulari con ricevitore GPS integrato
(vedi capitolo “Ulteriori informazioni” nell’appendice di questa dissertazione). La
MIDlet sviluppata per USAlov permette l’utilizzo di un telefono cellulare che comunichi con un ricevitore GPS tramite interfaccia bluetooth. Per essere compatibile
con i telefoni cellulari con GPS integrato la MIDlet deve essere modificate per quanto
riguarda la parte di interfacciamento con il ricevitore GPS.
12.3 Visualizzazione di informazioni sul cellulare
12.3
104
Visualizzazione di informazioni sul cellulare
Una funzionalità aggiuntiva potrebbe essere quella di visualizzare informazioni su
altri utenti del sistema connessi: posizione, distanza, percorso.
12.4
Gestione del formato SVG sul cellulare
Altra possibile estensione riguarda la visualizzazione di mappe animate in formato
SVG[12], che riportano ad esempio, un percorso di un dispositivo.
Figura 12.1: Analisi del territorio
12.5 Configurazione dei dispositivi da monitorare
12.5
105
Configurazione dei dispositivi da monitorare
Per motivi di sicurezza un applet, non può accedere ai dati sul disco rigido del client
su cui sta girando, a meno che non sia certificata.
Certificando l’applet sarebbe possibile accedere a file locali al client in cui sono memorizzati i dispositivi da monitorare all’avvio. In questo modo non sarà
necessario al riavvio dell’applet riconfigurare il pannello di tracking.
12.6
Sicurezza
Gestire l’autenticazione degli utenti che si connettono al sistema tramite il cellulare.
Profilazione degli utenti tramite dispositivo mobile.
12.7
Gestione di eventi
Gestione di informazioni da e verso il cellulare riguardanti determinati eventi.
Per esempio sarebbe interessante inviare la propria posizione ad altri utenti connessi al sistema ed essere avvisati quando questi si trovano al di sotto di una distanza
prestabilita.
12.8
Modifica mappe dal cellulare
Invio informazioni agli utenti (telefoni cellulari) di carattere generale. Ad esempio,
in caso di blocchi temporanei di viabilità, si potrebbero avvisare gli altri utenti che
si trovano nella zona interessata.
12.9 Analisi del territorio
12.9
106
Analisi del territorio
Oltre agli strumenti atti alla navigazione stradale si potrebbe sfruttare la tecnologia
utilizzata dal sistema per effettuare la catalogazione di srutture.
Figura 12.2: Analisi del territorio
Un comune interessato a censire i semafori per esempio, potrebbe sfruttare la
possibilità della comunicazione con il cellulare per impostare le coordinate geografiche dei semafori, su un database per permetterne la visualizzazione su di una mappa
della zona interessata.
Parte III
Appendice
Capitolo 13
Software
13.1
Software e linguggio di programmazione
Linguaggio di sviluppo Java 5.0
Web Server Apache Tomcat 5.5
Database SQL MySQL Server 5
Piattaforma di sviluppo Eclipse 3.1
13.2
MIDP 2.0
Uno dei punti di forza del linguaggio di programmazione Java, è proprio la portabilità
e infatti anche sui dispositivi mobili è spesso presente una, seppura ridotta, JVM.
In particolare è stato introdotto il protocollo bluetooth non presente nella versione MIDP 1.0.
13.3 Sun Java Wireless Toolkit 2.3 Beta
13.3
109
Sun Java Wireless Toolkit 2.3 Beta
La “Sun Java Wireless Toolkit” è un insieme di strumenti per la creazione di applicazioni Java da eseguire su dispositivi mobili. Esso consiste di strumenti di sviluppo,
utility, e simulatori di dispositivi.
13.4
Tomcat 5
Ormai alla versione 5.x, è il web server più utilizzato per sviluppare applicazioni
web scritte in Java.
13.5
MySQL 5
È opensource, e una vasta gamma di sviluppatori e utilizzatori contribuisce giorno
per giorno alla sua diffusione e al suo miglioramento.
È stato scelto questo database sia per motivi “ideologici” che per motivi pratici.
Difatti esso, proprio grazie alla sua licenza, è diffusissimo come tipo di database e
ciò assicura affidabilità e un supporto notevole.
13.6
Eclipse
L’editor utilizzato per lo sviluppo è Eclipse 3.1. Basato su Java, grazie alla sua
espandibilità a plug-in e, anche in questo caso, al tipo di licenza aperta, è diffusissimo
dalla comunità di sviluppatori e può contare sulla presenza di migliaia di plug-ing.
13.6 Eclipse
13.6.1
110
Plug-in
Uno dei punti di forza di questo IDE di sviluppo è la sua estendibilità attraverso
plugin. In fase di sviluppo, infatti, numerosi sono stati i plugin utilizzati e altrettanti
i vantaggi derivati dal loro utilizzo.
Per lo sviluppo delle pagine JSP, il debugging, e la gestione di Tomcat sono
stati installati i plugin di Sysdeo1 . Per la redazione di diagrammi UML[15] è stato
utilizzato il plugin di Omondo2 .
Per lo sviluppo dei pannelli grafici è stato utlizzato il plugin Visual Editor.
Per lo sviluppo della MIDlet, EclipseME3 ha permesso di testare l’applicazione
direttamente nell’IDE.
1
inserire sito web
http://www.omondo.com - controllare
3
http://www.eclipseme.org
2
Bibliografia
[1] Burrogh P.A. 1986, Principles of geographical information systems for land
resource assessment,
Clarendon Press, Oxford, U.K, 194pp.
Mogorovich P., Mussio P. 1988, Automazione del Sistema Informativo
territoriale.
Elaborazione Automatica dei Dati Geografici, Masson, 1988. p.503-8 vol.2
[2] WGS 84 Implementation manual - EUROCONTROL e IfEN (1998)
[3] http://www.nmea.org (febbraio 2006)
[4] http://www.camiresearch.com/Data Com Basics/RS232 standard.html
(febbraio 2006)
[5] http://it.wikipedia.org/wiki/EIA-422 (febbraio 2006)
[6] “GPS signal structure and theoretical performance,” in Global Positioning System: Theory and Application, vol. I, B. W. Parkinson and J. J. Spilker, Jr.,
Eds. Washington, DC: American Institute of Aeronautics and Astronautics,
1996, ch. 3, pp. 57-120.
BIBLIOGRAFIA
112
[7] J. J. Spilker, Jr., “GPS signal structure and performance characteristics,”
Navigation: J. Inst. Navigation, vol. 25, no. 2, pp. 121-146, Summer 1978.
[8] D. A. Divis, “GLONASS emerges; Change in ISNS game plan,” GPS World,
vol. 7, no. 5, p. 12, May 1996.
[9] Sito web del progetto Galileo:
http://europa.eu.int/comm/dgs/energy transport/galileo/index en.htm (febbraio 2006)
[10] “ESRI Shapefile Technical Description,”
An ESRI White Paper, July 1998
[11] http://java.sun.com/products/midp/index.jsp (febbraio 2006)
[12] http://www.w3.org/Graphics/svg (febbraio 2006)
[13] http://www.ai.sri.com/geotransform/
[14] http://java.sun.com/blueprints/patterns/MVC.html (febbraio 2006)
[15] Sinan Si Alhir, “UML in a Nutshell”,
Oreilly
[16] Core J2ME Technology & MIDP
By John W. Muchow
Publisher : Prentice Hall PTR
Pub Date : December 21, 2001
Pages : 737
[17] J2ME in a Nutshell
Kim Topley
BIBLIOGRAFIA
Publisher: O’Reilly
Edition March 2002
478 pages
113
Elenco delle figure
2.1
Architettura di un software WebGIS . . . . . . . . . . . . . . . . . . 11
5.1
Disposizione dei satelliti . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.2
Intersezione di tre sfere di raggio noto . . . . . . . . . . . . . . . . . . 31
5.3
Satelliti in orbita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.4
Architettura di Galileo . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6.1
Screenshot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
6.2
Struttura sviluppata . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
7.1
Logo di TimeMap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
7.2
Database di TimeMap . . . . . . . . . . . . . . . . . . . . . . . . . . 47
7.3
Tabella generata per la memorizzazione di uno shapefile contenente
le strade di una città . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
7.4
Screenshot dell’applet . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
8.1
Interfaccia di caricamento delle mappe . . . . . . . . . . . . . . . . . 57
9.1
Class diagram delle classi che mappano gli oggetti mobili . . . . . . . 63
9.2
Scheda dettagli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
9.3
Pannello di tracking
. . . . . . . . . . . . . . . . . . . . . . . . . . . 71
ELENCO DELLE FIGURE
115
9.4
Tracking di alcuni dispositivi contemporaneamente . . . . . . . . . . 73
9.5
Percorso di un oggetto mobile . . . . . . . . . . . . . . . . . . . . . . 77
9.6
Ricerca di un ricevitore GPS bluetooth . . . . . . . . . . . . . . . . . 79
9.7
Impostazione delle opzioni di connessione . . . . . . . . . . . . . . . . 80
9.8
Aggiornamento della propria posizione al server di tracking . . . . . . 82
10.1 Classi aggiunte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
10.2 Classi sviluppate per la MIDlet . . . . . . . . . . . . . . . . . . . . . 92
12.1 Analisi del territorio . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
12.2 Analisi del territorio . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Elenco delle tabelle
6.1
Funzionalità: I = Modificata e rivista, O = Originale, N = Nuova . . 44
8.1
Struttura della tabella history . . . . . . . . . . . . . . . . . . . . . . 55
8.2
Struttura della tabella registered . . . . . . . . . . . . . . . . . . . . 55
8.3
Structure of table autobus . . . . . . . . . . . . . . . . . . . . . . . . 56
Capitolo 14
Ulteriori informazioni
14.1
Infrastruttura utilizzata
Per le prove ed i test è stato utilizzato un telefonino Nokia 6630 ed un ricevitore
GPS Royal Tek dotato di processore Sirf III con 20 canali di ricezione.
14.2
Telefoni con ricevitori GPS
I telefoni con ricevitori GPS al momento (febbraio 2006) sul mercato sono:
• Samsung D500
• Motorola V545
• Motorola V980
• Motorola A1000
• Motorola E1000
14.3 Questo documento
14.3
118
Questo documento
Questo documento è stato impaginato in LATEX1 .
14.4
Sistema operativo
Sia durante la fase di sviluppo che di test, sono stati utilizzati, in modo completamente intercambiabile, sistemi operativi Linux o Windows. In articolare Debian
GNU/Linux (testing)2 e Microsoft Windows XP Professional3 . Tale intercambiabilità è stata possibile grazie all’utilizzo di un linguaggio di programmazione indipendente dalla piattaforma quale Java, e la disponibilità della macchina virtuale
per esso per entrambi i sistemi. L’utilizzo di software aggiuntivo opensource quali
Tomcat e MySql, ha poi reso completamente trasparente la scelta.
Bisogna però segnalare le differenza prestazionali riscontrate specie in fase di caricamento delle mappe GIS sulla base di dati. Su un sistema operativo Linux il tempo
impiegato è stato notevolmente inferiore rispetto al sistema operativo antagonista.
14.5
Browser web
Il browser web utilizzato è stato Mozilla Firefox 1.54 .
1
http://www.latex.org
http://www.debian.org
3
http://www.microsoft.com
4
www.mozilla.org
2
Scarica