[Gfoss] opencoesione

Maurizio Napolitano napo a fbk.eu
Mer 18 Lug 2012 17:33:17 CEST


Vi giro l'email apparsa sulla ML Spaghetti Open Data
(per chi non fosse iscritto) da parte di Gugliemo
Celata - una delle menti che c'e' dietro lo sviluppo
di opencoesione

------------------------------------------------------------
Ciao a tutti,
ecco un pò di dettagli molto tecnici, per i più curiosi, 
sull'applicazione OpenCoesione, che ho contribuito a realizzare.

Lo stack software usato è riassunto brevemente nelle faq 
(http://www.opencoesione.gov.it/faq/).

L'applicazione è basata su Django e i dati sono in un DB postgres, con 
estensione postgis per la gestione delle info georeferenziate.
Il DB contiene una versione relazionale e normalizzata, dei dati flat 
scaricabili.

I dati sono indicizzati attraverso Solr (Tomcat + Lucene), per la 
navigazione a faccette nelle sezioni progetti e soggetti.
Django e Solr si interfacciano attraverso Haystack.

Le mappe sono generate con TileStache.
I boundaries vengono letti direttamente dagli SHP file dell'ISTAT 
(quelli semplificati),
mentre la tematizzazione coropleth a scala di grigio è fatta attraverso 
django,
che genera dinamicamente un file XML mapnik con le definizioni di stile 
(i colori), dato in pasto a TileStache.

Per darvi un'idea, la generazione di un xml mapnik, può arrivare a 
richiedere trenta secondi.

Lo sfondo delle mappe, con i confini marittimi a 12 miglia è preso da 
cloudmade.com e
proxato dal nostro server. Ovviamente i dati dei confini nautici sono 
OSM, grazie per la segnalazione.

L'algoritmo di classificazione divide i dati in 5 gruppi è indicato 
nelle faq (Jenks optimisation)
ed è già implementato in python in una libreria (pySal, dal package 
numPy/sciPy),

Tutte le tiles PNG prodotte sono cachate su disco.

Sfondo e tematizzazione sono sovrapposti in pagina su leaflet, 
attraverso chiamate ajax al TileStache.

La generazione di molte delle pagine html richiede anche più tempo della 
generazione dei mapnik (fino  a 3 minuti),
quindi l'html risultante è spedito su memcached e c'è una procedura di 
pre-generazione delle cache,
che purtroppo non può essere lanciata mentre il sito è live. Ecco perché 
la correzioni alcuni errori (veneto in menu principale),
richiederà un pò di tempo prima di apparire online.

Le applicazioni django e tilestache sono deployate su uWSGI, con nginx 
che intercetta le richieste statiche e le serve direttamente.

Su tutto c'è Varnish, come reverse proxy, per ottimizzare le risorse a 
disposizione lato server.


I commenti e i feedback sono preziosissimi, in genere chi programma non 
riesce a testare un granché bene.
Grazie a tutti.


Maggiori informazioni sulla lista Gfoss