domenica 7 agosto 2016

Una prova sul sistema di segnalazioni di degrado urbano


Da qualche tempo è stato lanciato un sistema di raccolta di segnalazioni di degrado urbano per i Comuni della Bassa Romagna. Ritengo che sia una iniziativa potenzialmente molto utile per stimolare la cittadinanza attiva e anche per facilitare il lavoro dell'amministrazione.

Ho voluto fare una prova del sistema per capirne l'utilizzo e l'efficacia, inserendo qualche segnalazione.


Micro tutorial

Ho utilizzato l'applicazione per smartphone Android che si può scaricare qui.
L'applicazione è di facile utilizzo e consente di inviare segnalazioni sia in forma anonima che autenticata; questa ultima modalità consente di monitorare lo stato delle proprie segnalazioni e il loro progresso. L'autenticazione è possibile attraverso l'account di Google associato allo smartphone andando sul Menù -> Profilo.
Una volta autenticati è possibile inserire una segnalazione in modo molto semplice , in particolare per determinare la posizione geografica dove inserirla si possono usare i 3 metodi mostrati nella figura che segue
1 - Attraverso il GPS del telefono, che deve essere attivo
2 - Digitando e cercando l'indirizzo
3 - Toccando la mappa nel punto deisderato

Il risultato è sempre l'apparizione di un punto rosso da cui è possibile poi fornire i dettagli della segnalazione ('Inserisci qui una segnalazione').

Il punto di colore verde che si vede in figura è una segnalazione 'risolta', essendomi autenticato infatti riesco a vedere sulla mappa le segnalazioni che ho fatto , colorate in base al loro stato.


Cosa proprio non funziona

L'applicazione, per come è adesso, ha secondo me delle mancanze gravi che ne pregiudicano l'efficacia. Elenco quelle che ritengo siano più importanti.

1. L'applicazione web Segnala-te, accessibile all'indirizzo https://secure.provincia.ra.it/rilfedeurWeb/client/bassaRomagna.html?idEnte=1#  non consente di vedere le proprie segnalazioni fatte con lo smartphone... Per autenticarsi infatti non si può usare lo stesso account usato con il telefono (account Google), oggi i 3 metodi sono i seguenti e non c'è Google :
Modalità di autenticazione su Segnala-TE

Aggiungo che a oggi il login con Federa non funziona e temo non abbia mai funzionato dal lancio del sistema :
Errore Federa


2. L'applicazione web Segnala-te non consente di vedere sulla mappa le segnalazioni fatte da altri utenti. La visione di tutte le segnalazioni sia su web che sulla app consentirebbe di non farle duplicare (quindi l'urp non dovrebbe perdere tempo a rispondere alle segnalazioni per lo stesso problema) e sarebbe un bello strumento di trasparenza sull'operato ed efficacia/efficienza dell'amministrazione.

3. Le segnalazioni vengono dichiarate 'risolte' anche se non lo sono. Una delle mie segnalazioni è stata dichiarata risolta, come si vede in figura, ma a 4 giorni dalla presunta risoluzione la situazione reale è sempre la medesima. L'URP mi ha prontamente contattato per comunicarmi la presa in carico del problema e da quel momento lo stato della segnalazione è divenuto 'risolta'. A mio giudizio è molto importante comunicare bene ai cittadini se 'segnalazione risolta' significa 'problema risolto' oppure solo 'problema preso in carico', sennò si rischia un effetto controproducente....


4. L'applicazione non consente in alcun modo di scaricare i dati delle segnalazioni in nessun formato ne tanto meno in open data (avere poi delle API di interrogazione sarebbe il massimo).

Cosa è da migliorare

Una volta risolti i punti precedenti , che ripeto pregiudicano pesantemente l'efficacia del sistema, ci sono altre cose sulle quali si potrebbe a mio avviso intervenire per migliorare. Eccone alcune.

1. Occorrerebbe collegare un po' di social network all'applicazione per dare modo di condividere. Servirebbe per dare più trasparenza al processo di segnalazione e risoluzione dei problemi ed entrare nelle piazze virtuali dove spesso regna il 'lamento sterile'

2. Per gli stessi motivi esposti sopra e per promuovere l'uso del sistema sarebbe utile una campagna di presidio dei social network dove normalmente vengono fatte segnalazioni. Occorrerebbe per ridirigere tali segnalazioni sul sistema e dare quindi ad essere risposta.

3. Sarebbe utile assegnare un nome di dominio significativo invece dell'indirizzo attuale che non si può proprio ricordare https://secure.provincia.ra.it/rilfedeurWeb/client/bassaRomagna.html?idEnte=1#

4. Il nome dell'app e il nome del sito web sono diversi, questo non aiuta la rintracciabilità del sistema e la comunicazione. Tra l'altro il nome Rilfedeur è  a mio avviso poco comprensibile.

4. Bisognerebbe lavorare sull'ottimizzazione per i motori di ricerca. Attualmente il sistema non figura tra i risultati se si cerca 'segnalazioni Lugo' , 'degrado Lugo' 'segnalazioni degrado Bassa Romagna' etc.... e anncora peggio, compare prima la pagina di test di un sistema non usato http://lugo.test.decorourbano.org/

5. Per le segnalazioni sui rifiuti avrebbe senso una integrazione con il sistema di Hera che già svolge questo compito (applicazione Il rifiutologo)


Termino il post, sperando che qualche suggerimento che ho dato possa essere utile a chi si occupa del sistema, segnalando una analoga piattaforma che può essere usata come parametro di confronto e che rappresenta uno standard per applicazioni di questo tipo : https://www.fixmystreet.com/.
L'applicazione tra l'altro è open source, quindi è un sistema installabile e implementabile gratuitamente da chiunque : https://github.com/mysociety/fixmystreet







domenica 10 luglio 2016

How to map the photos of your city like OldNYC does

Some months ago I was looking for a way to render on a map the historical photos of Ravenna collected in this Facebook Page. I stumbled upon the OldNYC project and thought it was perfect for my needs! Therefore I forked the project on Github, worked on it and this is the result : www.oldra.it.
In this tutorial which is intended for programmers, I’ll try to explain which are the main steps for reusing the code of OldNYC (written by @danvdk) , and setup the photo map of your city.






At this moment my system has a backend hosted in a Ubuntu virtual machine on my PC and a frontend (a static site) hosted in the cloud. In order to collect the newer posts of the Facebook Page the backend harvests from Facebook and re-generates once a week all of the static pages of the static site and sends them to the cloud to be served by www.oldra.it.


The system

The developement environment and the backend run on a Ubuntu Server 16.04 virtual machine.
  1. First of all I forked the 2 Github repos https://github.com/danvk/oldnyc for the backend and https://github.com/oldnyc/oldnyc.github.io for the static site, then I cloned them on my server with the git clone command (git clone git://github.com/danvk/oldnyc.git git clone git://github.com/danvk/oldnyc.github.io.git). After that my home directory looks like that :


2. I installed python2.7 (do not install python 3) :  apt-get install python2.7
3. I installed virtualenv : apt-get install virtualenv
4. Then I followed the instructions written by @danvdk to setup the environment :
cd oldnyc
virtualenv env
source env/bin/activate
pip install -r requirements.txt
     I did not use Google App Engine therefore did not run ./develop.py
     I installed the numpy package : pip install numpy
5. Created some directories necessary for the backend to work :
   mkdir oldnyc/gecocache
   mkdir oldnyc/images
   mkdir oldnyc/thumbnails
6. Fot testing purposes Installed an Apache web server : apt-get install apache2
   Configured it to listen on localhost and serve the content of the directory oldnyc.github.io ,
which is the static site that will be hosted in the cloud.


The backend

It took some time for me to understand the wirings of the system. I tryed to look at the system as a black-box without the will to deeply understand how the system works. I just tryed to undestand which were the stages of the processing and which were the input and output of each stage. The first input of the process is the csv file containing the Milstein collection records, the final output is the static site.
Dan software makes many interesting things I did not use for my project like ocr recognition and geocoding based on boroughs, I focused just on the things I needed : scraping, geocoding and presentation.
I wrote down a logical schema that was useful to me to have a view of the process , the files involved and the commands invoked, sorry if this is not crystal clear but it was not intended for teaching purposes; it lacks some stage like photo fetching and thumbnail generation.


The sketch of the logical schema


These are the main stages of the process :
  • The command csv-to-record.py transforms the input file Milstein.csv into a serialized Python object Record.pickle, look inside the Record.py class to get the mapping of the csv columns on the object attributes. In my case I substitued Milstein.csv with facebook-posts.csv.
  • The expand-pickle.py command transforms Record.pickle which represents multiple photos fot each record to Photos.pickle which is one record per photo. As I did not start from Milstein.csv file , in my case Records.pickle is already one record per photo, therefore in the rest of the process I used Records.pickle instead of Photos.pickle
  • The generate-geocodes.py command creates files that associate photos to latitude and longitude, locations.txt and nyc-lat-lons-ny.jsThat command is enough flexible to accept different kind of geocoder as an argument. For my purpose I created the ravenna_coder.py which is tailored for the city of Ravenna and extracts the address from the image description and passes it to the Google geocoder API. Geocoder has a cache in /geocache that allows not to query Google for already gecoded addresses.
  • The cluster-locations.py command clusters the locations of the photos which are next to each other and outputs the lat-lon-map.txt which allow to group multiple photos in a single point on on the map.
  • The generate-static-site.py command creates the files needed for the static site to work.


I modified the code of many classes in order to fit my needs and collected all the commands needed to go from Faccebook scraping to site publishing in just one script : do_all.sh :

./facebook_fetcher.py  (fetches the posts from Facebook)

cd nyc

./csv-to-record-facebook.py (generates Record.pickle from the posts)

cd ..

./generate-geocodes.py --coders ravenna_coder --pickle_path nyc/records.pickle --output_format locations.txt --geocode -n > locations.txt

./cluster-locations.py locations.txt > lat-lon-map.txt

./generate-geocodes.py --coders ravenna_coder --pickle_path nyc/records.pickle --lat_lon_map lat-lon-map.txt --output_format lat-lons-ny.js --geocode > viewer/static/js/nyc-lat-lons-ny.js

cp ./nyc/records.pickle records.pickle (temporarily copies records.pickle needed by image_fetcher and image_thumbnailer)

./image_fetcher.py -n 12000  (downloads the images in order to create the thumbnails)

./image_thumbnailer.py     (creates the thumbnails)

./extract-sizes.py  > nyc-image-sizes.txt

rm records.pickle (removes the temp copy)

cd nyc

./generate_popular.py  (collects the most popular photos based on number of facebook shares to be showed in the right columns of the website)

./generate_fb_links.py (creates fb_links.js which contains the URLS to the fb photos, in OldNYC it is not necessary a separate file with URLS because URLS are composed adding the image ID to a base address pointing to NYPL image repository)

cd ..

cd ../oldnyc.github.io
git add .

git commit -m 'photo update' (commits the github changes 'cause ./generate_static_site.py requires a clean state of the repo)

cd ../oldnyc

./generate_static_site.py

cp ./thumbnails/* ../oldnyc.github.io/thumb/

cp ./viewer/static/js/* ../oldnyc.github.io/js/

cd ../oldnyc.github.io/

./update-js-bundle.sh  (merges the js files needed by the forntend, the list of files to merge is in files.txt)

sudo systemctl start apache2.service (restarts the testing webserver to refresh the site)


After running the do_all.sh script the static site oldnyc.github.io is ready to be uploaded to your hosting provider.


The frontend - static site


Even if the variable part is created by the backend with the do_all.sh script there are a few things to change in order to use the static site oldnyc.github.io.
  • Create a new facebook app and use the app id in index.html and , if you scrape Facebook, in facebook_fetcher.py
  • Get a Google Map API Key. You have to insert the key in index.html and viewer.js . Rembember to do the domain verification on the Google Console, this allows your website to call Google API.
  • If you want to get feedback from the users on the photos then customize feedback.js and open a Firebase project.
  • Insert your website domain (eg www.oldra.it) in the following files : index.html, about.html, generate_static_site.py, viewer.js, social.js
  • Customize the social sharing messages in index.html and social.js

The final result is www.oldra.it

mercoledì 29 giugno 2016

OldRA, una mappa di foto storiche della città

Nel 2015 mi sono imbattuto nella pagina Facebook C'era una volta Ravenna che raccoglie foto storiche della città da inizio secolo ai giorni nostri. Mi è subito sembrato che fosse un modo molto bello per portare ad un pubblico ampio un po' di conoscenza sulla propria città, tanto che ho subito voluto dare un contributo inviando al curatore della pagina alcune foto di famiglia fatte a Marina di Ravenna nel 1977.

La schermata del sito www.oldra.it


Ho navigato in lungo e in largo nelle foto d'epoca pubblicate e ho pensato che sarebbe stato utile avere un modo alternativo per sfogliare questo bell'album di foto che parlano della città, in particolare con una mappa.
Ho quindi cercato progetti che avessero potuto aiutarmi nello scopo e mi sono imbattuto nel progetto OldNYC. Si tratta del progetto di @danvdk, che ha voluto mappare le foto storiche di New York conservate nella Biblioteca Pubblica di New York City.
Il software di Dan oltre a fare il geocoding delle foto estrae pure la descrizione , tramite OCR, dalle foto stesse; prevedendo quindi anche il feedback degli utenti per aiutare a correggere imprecisioni nella raccolta dati. Recentemente è stata rilasciata anche l'applicazione per IOS per navigare la mappa da dispositivi mobili e che propone in modalità push le foto in base al luogo di NY in cui ci si trova, fornendo quindi, per esempio, una nuova esperienza ai turisti.
Mi è sembrato che il software di Dan, condiviso su GitHub, fosse perfetto quindi l'ho adattato ai miei scopi ed ecco il risultato : www.oldra.it.  In particolare il mio sistema fa 3 cose principali :
- Interroga la pagina Facebook C'era una volta Ravenna e ne legge i post attraverso le API di Facebbok.
- Assegna un rating di popolarità alle foto in base al conteggio di condivisioni (sul sito sono nel riquadro Popular Photos)
- Effettua il geocoding attraverso le API di Google (già utilizzate in OldNYC) estraendo l'indirizzo dalla descrizione della foto. In questo è stato molto utile che il Comune di Ravenna abbia pubblicato il dataset in open data dello stradario della città.
- Crea la mappa piazzando le foto in base ai risultati del geocoding. Le foto sono dei link alla pagina C'era una volta Ravenna.


Il codice sorgente è disponibile su GitHub per chi volesse fare una cosa simile per la propria città, anche utilizzando sorgenti che non siano pagine Facebook.
A breve, come mi ha anche gentilmente chiesto Dan Vanderkam, creatore di OldNYC, scriverò un post per spiegare tecnicamente come fare per riutilizzare il codice di OldNYC.

mercoledì 11 maggio 2016

Spunti di riflessione sui temi dell’Agenda Digitale ER

La regione Emilia Romagna ha intrapreso un percorso partecipativo di redazione dell'agenda digitale regionale. Faccio riferimento ai contenuti esposti in questo post e di cui si parlerà in un incontro organizzato per il 12 Maggio ,lanciando qualche idea 'pratica' che magari fa già parte della strategia regionale e qualche suggestione che non ha la pretesa di essere una teoria completa e solida.
By darwin Bell from San Francisco, USA - digitalUploaded by SunOfErat, CC BY 2.0, https://commons.wikimedia.org/w/index.php?curid=30988177



WI-FI
Le misure contenute nel programma secondo me vanno nella giusta direzione, tra l’altro mi piace molto che sia prevista la segnalazione degli hot spot , cosa che spesso manca.
E’ importante a mio giudizio che ovunque l’accesso sia possibile senza dovere autenticarsi con username e password , dovrebbe bastare il solo numero di cellulare. A tendere la barriera per la fruizione di questo servizio deve essere 0.


Alfabetizzazione
E’ importante che esistano ‘sportelli’ di assistenza individuale sul territorio ma secondo me sarebbe altrettanto importante una formazione ‘on the job’ più mirata ai servizi nei luoghi in cui ci si interfaccia con la PA. Mi spiego meglio, l’idea è che quando un cittadino si reca presso uno sportello fisico per espletare una pratica allora in quel luogo esso possa capire come compiere la stessa operazione allo sportello virtuale con risparmio di tempo e denaro. Le interfacce fisiche della PA dovrebbero diventare dei ‘redirect’ che rimandano alle interfacce virtuali. Se si vuole arrivare in tempi decenti ad una progettazione di servizi ‘digital first’ che fanno risparmiare molto denaro pubblico allora non si può aspettare che tutta la popolazione abbia seguito i corsi Pane e Internet.


Sempre sui servizi, legato al tema SPID, per allargare il numero di accessi alle prestazioni online forse sarebbe utile riuscire ad allargare i meccanismi di delega, può essere un modo per accelerare il ritorno di investimento sui servizi digitali.


Sui corsi PEI, che trovo utili, si potrebbe forse cercare maggiore integrazione/collaborazione con iniziative analoghe che magari già si tengono sul territorio, partendo dai punti di contatto dei programmi di formazione.


Su tema alfabetizzazione vedo la PA in un ruolo centrale nel diffondere ‘digital literacy’ presso la popolazione, è in un ruolo in cui può sfruttare la leva del ‘bisogno’ del cittadino di usufruire di servizi per spingerlo ad affacciarsi all’uso delle nuove tecnologie.


Open Data
Il portale Open Data ER è una risorsa che va sicuramente valorizzata. I dati aperti hanno bisogno che venga sostenuta una conversazione su di essi e che vengano calati in contesto.
Per farlo occorrerebbe a mio avviso che la presenza del portale ER fosse maggiormente pervasiva nei siti delle PA locali e centrali per farlo uscire dal suo isolamento ‘per addetti ai lavori’.
Servirebbe secondo me che i portali Open Data locali (spesso desolatamente poco popolati di dati) rimandassero , quando necessario, al portale regionale. Gli addetti ai lavori hanno ben presente l’organizzazione gerarchica delle informazioni presenti sui cataloghi di dati e quindi possono facilmente trovare ciò che cercano; dall’altra parte il cittadino meno esperto molto probabilmente se ha bisogno di informazioni locali partirà dal sito locale senza risalire fino al sito regionale che magari contiene la risposta alle sue domande.


In generale sarebbe a mio avviso molto utile che un sito informativo della PA contenesse collegamenti di contesto verso i portali open data. Se ad esempio vi sono pagine relative agli eventi in città ed esiste una dataset inerente, allora tale dataset dovrebbe essere raggiungibile partendo da tali pagine. Integrare maggiormente gli open data nella navigazione dei siti istituzionali aiuterebbe i dataset ad uscire dall’isolamento e a migliorare anche il posizionamento dei portali open data nei motori di ricerca .

Open data e servizi. Trovo che sarebbe utile condurre una survey sulle sollecitazioni provenienti
dall’esterno e sui servizi erogati per capire come potere rispondere partendo da dati aperti. I servizi ‘data driven’ possono essere una leva importante per sviluppare il riuso dei dati aperti.

sabato 5 marzo 2016

Un esercizio di mappatura su Openstreetmap

All' Open Data Day di oggi a Ravenna abbiamo svolto un breve esercizio sull'utilizzo di Openstreetmap. Ci siamo concentrati su alcuni task molto specifici e lo abbiamo fatto utilizzando un editor di Openstreetmap per dispositivi mobili chiamato Vespucci.



Ecco le slide


lunedì 4 gennaio 2016

Quanto ci costa il dissesto idrogeologico

L'italia è un paese fragile dal punto di vista del rischio idrogeologico sia per la naturale morfologia del territorio che per cause derivate dall'attività umana.
Tra queste ultime un ruolo importante è giocato dal consumo di suolo, "il concetto di consumo di suolo deve, quindi, essere definito come una variazione da una copertura non artificiale (suolo non consumato) a una copertura artificiale del suolo (suolo consumato)", fenomeno fotografato con completezza nell'ultimo rapporto ISPRA.


I molti dati del rapporto sono stati rilasciati in open data e mi hanno permesso di creare questa mappa che mostra semplicemente il dato percentuale di suolo consumato per provincia:


Il costo di questa situazione di dissesto è considerevole, gli interventi di manutenzione del territorio sono numerosi e spesso conseguenti a gravi emergenze ed episodi estremi.

Ultimamente è stato lanciato il portale ItaliaSicura che consente, tra le altre cose, di monitorare gli interventi in corso e conclusi atti a mitigare e prevenire i problemi di dissesto. Con i dati rilasciati con licenza libera ho quindi costruito la mappa della spesa per provincia per la manutenzione del territorio, lavorando anche per cercare di ripartire meglio possibile (con metodi manuali e spatial join) interventi che nel dataset originale sono 'erroneamente' aggregati in entità territoriali singolari (si vedano ad esempio tutti gli interventi della costa romagnola che nel dataset cadono sotto il Comune ferrarese di Goro e che chiaramente danneggiano l'analisi di spesa per provincia ).



Con i dati georiferiti ho estratto i cantieri del territorio cercando di darne una visualizzazione che tenga conto anche del costo dell'intervento per capire dove si concentra la maggior spesa.




Le mappe sono consultabili anche su questo mio post per CheFuturo

lunedì 21 settembre 2015

Come installare il proprio server GPS

I dati georeferenziati rappresentano una delle fonti più importanti di conoscenza nel flusso di informazioni che scorre in rete.
I dati sulla posizione in tempo reale di persone, mezzi, dispositivi, oggetti sono anche la base sulla quale si possono costruire servizi utili, a volte indispensabili, per le comunità.

Per questo mi è venuta la curiosità di installare e provare un server GPS. Si tratta di sistema in grado di tracciare la posizione, in tempo reale, di qualsiasi dispositivo possa comunicare con esso, nel mio caso un normalissimo smartphone.

Ho scelto di provare OpenGTS, un server opensource scaricabile e installabile liberamente e che prevede anche una versione Enterprise a pagamento dotata di diverse features aggiuntive, ritengo però che la versione base sia già sufficiente per molti scopi.
Per la parte client ho installato sul telefonino CellTracGTS/Free per Android.

Ecco la traccia di un giro di prova che ho fatto per testare il sistema :

Un altro giro visualizzato su Google Earth :


In questo post spiegherò quali sono i passi da compiere per eseguire l'installazione base, ma per i più pigri metto a disposizione il server già configurato e funzionante come macchina virtuale VMWare ;) Fedora22-64bit-OpenGTS2.5.9.zip .


INSTALLAZIONE DEL SERVER

1) Scaricare l'ultima versione di Fedora 22 Server e installarla su una macchina virtuale VMWare.
La versione server di Fedora 22 non prevede una interfaccia grafica, che si può comunque aggiungere con il comando sudo yum groupinstall "Fedora Workstation" --skip-broken
2) Installare Java.
sudo yum install java-1.8.0-openjdk-devel.x86_64
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.51-5.b16.fc22.x86_64
cd /usr/local
ln -s $JAVA_HOME java
3) Installare il supporto JavaMail
Scaricarlo da https://java.net/projects/javamail/pages/Home
cd <directory dove è stato scaricato java mail>
sudo cp javax.mail.jar $JAVA_HOME/jre/lib/ext/.
4) Installare Ant
sudo yum install ant
5) Installare Tomcat 7, NON installare Tomcat 8 poichè non è compatibile
Per l'installazione seguire questo tutorial
Poi eseguire
export CATALINA_HOME=/usr/local/apache-tomcat-7.0.64/
cd /usr/local
ln -s $CATALINA_HOME tomcat

Ricordare poi di modificare il file di configurazione server.xml avendo cura di specficare :
<Connector port="80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443"
address="0.0.0.0"/>
E' importante aprire il firewall per consentire connessioni dall'esterno. Per farlo occorre installare l'applicazione Firewall (fare un semplice 'Cerca' sul menù start di Fedora) e poi nelle regole consentire l'accesso http.
6) Installare Apache POI
Scaricarlo da https://poi.apache.org/download.html
cd <directory dove è stato scaricato Apache-POI>
sudo cp poi-3.12-20150511.jar $JAVA_HOME/jre/lib/ext/
7) Installare HTTP Core
Scaricarlo da http://hc.apache.org/httpcomponents-core-ga/download.html
cd <directory dove è stato scaricato HTTP core>
sudo cp httpcore-4.4.1.jar $JAVA_HOME/jre/lib/ext/
8) Installare Twilio
Scaricarlo da https://www.twilio.com/docs/java/install
cd <directory dove è stato scaricato Twilio>
sudo cp twilio-java-sdk-3.3.12.jar $JAVA_HOME/jre/lib/ext/
9) Installare MySQL
sudo yum install mariadb-galera-server.x86_64
sudo systemctl enable mariadb.service
sudo yum install mysql-connector-java
cd <directory dove è stato scaricato mysql-connector>
sudo cp mysql-connector-java.jar $CATALINA_HOME/lib
sudo cp mysql-connector-java.jar $JAVA_HOME/jre/lib/ext/mysql-connector-java-5.1.xx.jar

10) Installare OpenGTS
Scaricarlo da http://sourceforge.net/projects/opengts/files/latest/download
cd /usr/local
su root /usr/local
unzip /<directory dove è scaricato OpenGTS/OpenGTS_2.5.9.zip
chown -R user:group OpenGTS_2.5.9
exit
export GTS_HOME=/usr/local/OpenGTS_2.5.9
cd /usr/local
ln -s $JAVA_HOME java
ln -s $CATALINA_HOME tomcat
ln -s $GTS_HOME gts
cd $GTS_HOME
ant all
11) Inizializzare il database e verifica della configurazione
cd $GTS_HOME
bin/initdb.sh -rootUser=root
bin/checkInstall.sh
12) Creazione dell'utente amministratore
bin/admin.sh Account -account=sysadmin -pass=password -create
13) Installazione dei moduli
cd $GTS_HOME
cp build/track.war $CATALINA_HOME/webapps/
cp build/event.war $CATALINA_HOME/webapps/
cp build/gprmc.war $CATALINA_HOME/webapps/

A questo punto il server è installato e dovrebbe rispondere all'indirizzo http://localhost/track/Track, entrando con account=sysadmin user:<vuoto> password=password

INSTALLAZIONE DEL CLIENT

Il client CellTracGTS per Android può essere scaricato e installato da qui.
Nella configurazione è necessario , nell'indirizzo del server, specificare l'indirizzo pubblico del server OpenGTS : http://<ip pubblico del server>/gprmc/Data

Occorre poi entrare nel pannello di amministrazione sul server ed aggiungere il dispositivo client appena configurato, specificando l'ID univoco del device.

Per scaricare il tracciato del dispositivo o verificarne la posizione in tempo reale si può fare una richiesta al server di questo tipo :
http://<ip pubblico del server>/events/data.kml?a=sysadmin&p=password&d=<id univoco del dispositivo>