[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