Archivio del mese di aprile, 2009

23 aprile, 2009 | di

Come prima cosa vorrei ringraziare Andrea per avermi dato la possibilità di contribuire, nel mio piccolo, a TANTO, scusandomi con lui per tutto il tempo (davvero troppo) passato da quando gli ho promesso questo tutorial ad oggi!

In questo breve articolo-tutorial cercherò di fare una panoramica sulla componente client di MapFish, un framework open source basato su ExtJs e OpenLayers, grazie al quale è possibile realizzare delle applicazioni webgis in pieno stile web 2.0 con poco sforzo una volta compreso il funzionamento degli “ingranaggi”.

Innanzitutto va detto che la parte relativa al mapping vero e proprio può essere gestita esattamente come in OpenLayers che, come già ricordato, è compreso all’interno di MapFish.
Si ha quindi a disposizione tutta la flessibilità di OpenLayers (layer WMS, WFS, Google, Yahoo, ecc.) e se si sanno già realizzare mappe online con questa ottima libreria, il passaggio a MapFish consiste semplicemente nel comprendere come gestire layout ed eventi alla maniera di ExtJs (l’altra componente del framework) e nello scoprire gli utili widget che MapFish mette a disposizione dello sviluppatore.

L’utilizzo di questi widget è simile a quello dei controlli di OpenLayers, con la differenza che in questo caso viene sfruttata la potenza di ExtJs per aggiungere un’interfaccia utente avanzata al controllo. I widget che necessitano del solo codice lato client sono:

  • Toolbar – una barra degli strumenti con dei tasti preimpostati (full-extent, pan, zoombox, zoom out) che è possibile espandere con nuovi bottoni sapendosi muovere un minimo con OL;
  • Layer Tree – si tratta di una “toc”, simile al layer switcher di OL, ma molto più configurabile, con la possibilità di includere facilmente icone e di annidare e raggruppare i layer a proprio piacimento;
  • Scorciatoie – liste a discesa con possibilità di autocompletamento del testo inserito (come avviene in Google suggest, per capirci) che centrano la mappa sulle coordinate corrispondenti al luogo/elemento scelto;
  • Stampa – un semplice controllo da includere per stampare la porzione di mappa visualizzata.

Affinché gli altri widget di MapFish (stampa complessa, ricerca nel db, ecc.) funzionino, è necessario che sia installata la componente server del framework che, però, non tratteremo in questo articolo (anche perché, non avendoci mai lavorato, rischierei di scrivere una montagna di cavolate!).
ExtJs semplifica la creazione di layout, anche molto complessi, che risultano accattivanti per l’utente e cross-browser. Con poche righe di codice è possibile creare interfacce a schede (tab), menu accordion, form avanzati, ecc… avendo la sicurezza che l’applicazione verrà correttamente visualizzata su tutti i browser più diffusi in circolazione. Con ExtJs possiamo ottenere rapidamente delle belle GUI in cui “infilare” le nostre applicazioni webgis. Insomma, sono assicurati un risultato di tutto rispetto e un bel risparmio di diottrie e bile (è risaputo che quella di rendere cross-browser delle appicazioni web “complesse” sia una delle attività che più contribuiscono alla creazione di nuovi tipi di imprecazioni… :-) ).

Fatta questa introduzione, passiamo al tutorial vero e proprio!

Tutorial MapFish

Creeremo una semplice applicazione webgis, munita di una toolbar e di un layer tree, con cui sarà possibile visualizzare la localizzazione degli utenti GRASS su due mappe di base alternative.
Le informazioni che mostreremo provengono da diversi server WMS (Nasa, Metacarta, Grass).
Utilizzeremo la versione 1.1 del framework MapFish, scaricabile da qui come archivio compresso in formato tar.gz (se state lavorando in ambiente Windows, vi consiglio di procurarvi l’ottimo 7zip per estrarne il contenuto).

Il primo passaggio consiste ovviamente nello scompattare quanto abbiamo scaricato in modo da ottenere una cartella (MapFish-1.1) che contiene tutto il necessario per creare la nostra applicazione d’esempio.
Utilizzando la sola parte client non abbiamo bisogno di rendere visibile il tutto ad un eventuale webserver e possiamo posizionare la directory di cui sopra dove più ci aggrada nel filesystem…
Tuttavia, per mantenere un certo ordine, consiglio di creare una ulteriore cartella, che chiameremo “EsempioMF”, e di lavorare al suo interno.
Creiamo anche un file index.html, un file myMapFish.js e spostiamo anche loro nella cartella di lavoro “EsempioMF”.
A questo punto, quindi, la situazione dovrebbe essere la seguente:

EsempioMF
|
– MapFish-1.1
|
– index.html
|
– myMapfish.js

Ora che siamo organizzati in modo più o meno ordinato, è il momento di riempire il file index.html.
Ecco come:

	
<html>
<head>
<title>Esempio MapFish by TANTO</title>
	
<!-- link ai CSS della componente ExtJS
(è possibile scaricare temi dal sito di extjs e sostituire default.css con il foglio di stile del tema scaricato... ce ne sono un paio che meritano) -->
<link rel="stylesheet" type="text/css" href="MapFish-1.1/client/mfbase/ext/resources/css/ext-all.css" />
<link rel="stylesheet" type="text/css" href="MapFish-1.1/client/mfbase/ext/resources/css/default.css" />
	
<!-- Inserisco i riferimenti agli script Javascript necessari al funzionamento del framework MapFish -->
<script type="text/javascript" src="MapFish-1.1/client/mfbase/openlayers/lib/OpenLayers.js"></script>
<script type="text/javascript" src="MapFish-1.1/client/mfbase/ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="MapFish-1.1/client/mfbase/ext/ext-all.js"></script>
<script type="text/javascript" src="MapFish-1.1/client/mfbase/mapfish/MapFish.js"></script>
	
<!-- Inserisco il riferimento allo script Javascript myMapFish.js -->
<script type="text/javascript" src="myMapFish.js"></script>
</head>
<body>
<!-- Nel body creo i div che faranno da contenitori per la mappa vera e propria, per la toolbar e per il layer tree -->
<div id="map"></div>
<div id="buttonbar"></div>
<div id="tree"></div>
</body>
</html>
	

I commenti indicano cosa è stato inserito nell’header.Quindi possiamo chiudere index.html e iniziare a lavorare sullo script myMapFish.js.
Questo script conterrà due porzioni ben distinte:
- la prima servirà a definire il layout dell’applicazione (codice ExtJs);
- la seconda definirà la mappa vera e propria (codice OpenLayers) ed i widget MapFish che utilizzeremo.

Cominciamo, quindi, dalla prima parte dello script ed inseriamo quanto segue:

	
//Layout dell'applicazione
//************************
Ext.onReady(function() {
    new Ext.Viewport({
        layout:'border',
        items:[{
                region:'north',
                margins:'4 4 4 4',
                height: 63,
                html: '<img src="http://blog.spaziogis.it/wp-content/themes/blacknwhite/blacknwhite/images/TANTO_logo.png"/>',
                bodyStyle:'padding:2px;'
                },{
                region:'center',
                layout:'border',
                margins:'0 4 4 4',
                items:[{
                        region:'north',
                        border:false,
                        contentEl:'buttonbar',
                        height:26
                        },{
                        region:'center',
                        contentEl:'map',
                        border:false
                }]
                },{
                title:'Layer tree',
                region:'east',
                margins:'0 4 4 0',
                width:350,
                contentEl:'tree',
                collapsible:true
                },{
                region:'south',
                margins:'0 4 4 4',
                height:20,
                html:'Esempio realizzato per TANTO',
                bodyStyle:'padding:2px;font-size:12px;font-family:tahoma,arial,helvetica'
        }]
	
    });
	
});
	

questa porzione di codice definisce completamente la webgui, non c’è bisogno di altro.
In sintesi, dopo aver inizializzato ExtJs con il metodo Ext.onReady, abbiamo creato un oggetto Viewport per dire ad ExtJs di utilizzare tutta la finestra del browser (dimenticavo… vogliamo che la nostra applicazione sia a tutto schermo :) ) e poi abbiamo inserito un layout di tipo ‘border’ all’interndo del quale (nel pannello ‘center’) abbiamo annidato un secondo layout dello stesso tipo.
Ogni layout di tipo border può contenere 5 panneli (‘region’), detti north, center, east, west, south. Di questi solo ‘center’ è obbligatorio.
Ad ogni modo vi rimando all’esplorazione del sito di ExtJs per scoprire come complicare a piacimento i vostri layout. Il sito è molto ben fatto, pieno di tutorial ed esempi.

Passiamo ora alla mappa e ai mapfish widget.
Sempre all’interno del file myMapFish.js inseriamo questo pezzo di codice sotto al precedente:

	
//Mappa e Widget
//************************
	
function initMap(){
	
    //Creo la mappa e definisco alcuni controlli di base
    var map = new OpenLayers.Map('map',{controls:[
        new OpenLayers.Control.Navigation(),
        new OpenLayers.Control.PanZoomBar()
    ]});
	
    //Definisco l'extent che utilizzerò come vista iniziale
    var bounds = new OpenLayers.Bounds(5,36,21,50);
	
    //Definisco i layer WMS, due di base (alternativi) e uno di overlay
    var jpl_wms = new OpenLayers.Layer.WMS("NASA_Global_Mosaic",
"http://t1.hypercube.telascience.org/cgi-bin/landsat7",{layers: "landsat7"});
	
    var ol_wms = new OpenLayers.Layer.WMS("OpenLayers_WMS",
"http://labs.metacarta.com/wms/vmap0",{layers: 'basic'});
	
    var grass_users = new OpenLayers.Layer.WMS.Untiled("Utenti_grass",
"http://mapserver.gdf-hannover.de/cgi-bin/grassuserwms?",
        {layers: 'GRASS-Users',transparent:true, format:'image/png'},
        {isBaseLayer:false});
	
    //Aggiungo i layer alla mappa
    map.addLayers([jpl_wms,ol_wms,grass_users]);
	
    //Aggiungo il toolbar widget di MapFish:
    //**************************************
    //Creo la toolbar
    var toolbar = new mapfish.widgets.toolbar.Toolbar({map: map, configurable:true});
	
    //Scelgo di renderizzare la toolbar in un div con id = buttonbar
    toolbar.render('buttonbar');
	
    //Aggiungo i bottoni/controlli
    toolbar.addControl(new OpenLayers.Control.ZoomBox(), {iconCls: 'zoomin',toggleGroup: 'map'});
    toolbar.addControl(new OpenLayers.Control.ZoomOut(), {iconCls: 'zoomout',toggleGroup: 'map'});
    toolbar.addControl(new OpenLayers.Control.DragPan({isDefault: true}),{iconCls: 'pan', toggleGroup: 'map'});
	
    //Attivo la toolbar
    toolbar.activate();
	
    //Layer tree
    //***************************************
    //Creo un modello per il layer tree, distribuendo i layer in due nodi espandibili distinti (Mappe di base e Overlay)
    var model = [{
         text: "Mappe di base",
         expanded: true,
         children: [{
              checked:true,
              text:"Nasa Global Mosaic",
              layerName:"NASA_Global_Mosaic"
              },{
              checked:false,
              text:"OpenLayers WMS",
              layerName:"OpenLayers_WMS"
         }]},{
         text: "Overlay",
         expanded: true,
         children: [{
              checked:false,
              text:"Utenti GRASS",
              layerName:"Utenti_grass"
          }]
    }];
	
    //Inserisco il widget vero e proprio indicando
    var tree = new mapfish.widgets.LayerTree({
    map: map, el: 'tree',
    model: model,
    border:false, autoHeight:true
    });
    tree.render();
	
    //Centro la mappa sull'extent definito in precedenza
    map.zoomToExtent(bounds);
	
} //fine della funzione init()
	

Anche qui i commenti dovrebbero essere abbastanza chiari.
Abbiamo creato una mappa esattamente come se stessimo lavorando con buon vecchio OpenLayers e, in più, abbiamo inserito nel codice due MapFish widget.

Prima di vedere il risultato del nostro lavoro dobbiamo fare due piccole modifica al file index.html:
- inserire un evento onload a livello del tag per fare in modo che la mappa venga caricata all’apertura della pagina (esattamente come in OL);
- inseire alcune regole CSS necessarie per la corretta visualizzazione dei MapFish widget

Ecco come deve apparire index.html modificato a dovere:

	
<html>
<head>
<title>Esempio MapFish by TANTO</title>
	
<!-- link ai CSS della componente ExtJS
(è possibile scaricare temi dal sito di extjs e sostituire default.css con il foglio di stile del tema scaricato... ce ne sono un paio che meritano) -->
<link rel="stylesheet" type="text/css" href="MapFish-1.1/client/mfbase/ext/resources/css/ext-all.css" />
<link rel="stylesheet" type="text/css" href="MapFish-1.1/client/mfbase/ext/resources/css/default.css" />
	
<!-- Inserisco i riferimenti agli script Javascript necessari al funzionamento del framework MapFish -->
<script type="text/javascript" src="MapFish-1.1/client/mfbase/openlayers/lib/OpenLayers.js"></script>
<script type="text/javascript" src="MapFish-1.1/client/mfbase/ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="MapFish-1.1/client/mfbase/ext/ext-all.js"></script>
<script type="text/javascript" src="MapFish-1.1/client/mfbase/mapfish/MapFish.js"></script>
	
<!-- Inserisco il riferimento allo script Javascript myMapFish.js -->
<script type="text/javascript" src="myMapFish.js"></script>
</head>
<body onload="initMap()">
<!-- Nel body creo i div che faranno da contenitori per la mappa vera e propria, per la toolbar e per il layer tree -->
<div id="map"></div>
<div id="buttonbar"></div>
<div id="tree"></div>
</body>
</html>
	
<style type="text/css">
/* Icone dei bottoni della toolbar */
.zoomin {
background-image:url(MapFish-1.1/client/mfbase/mapfish/img/icon_zoomin.png) !important;
height:20px !important;
width:20px !important;
}
.zoomout {
background-image:url(MapFish-1.1/client/mfbase/mapfish/img/icon_zoomout.png) !important;
height:20px !important;
width:20px !important;
}
	
.pan {
background-image:url(MapFish-1.1/client/mfbase/mapfish/img/icon_pan.png) !important;
height:20px !important;
width:20px !important;
}
	
/* Dimensioni del Layer tree */
#tree {
height: 100%;
width: 100%;
}
</style>
	

Adesso apriamo index.html col borwser e il risultato dovrebbe essere questo.

;)

19 aprile, 2009 | di

Esattamente un anno fa scrivevo un articolo (quasi) con lo stesso titolo di questo. Non è un fatto scaramantico, ne è la mia testa a perder colpi (vedrete che un po’ li perde); è semplicemente successo di nuovo.

Ancora una volta uno dei lettori più attenti di TANTO, si è insinuato subdolamente in casa nostra ;-) . Prima qualche commento, poi si iscrive alla notifica automatica di ogni nuovo post, poi qualche scambio di email, poi sfrutta la conoscenza delle nostre email e passa per le chat, poi mi chiede spazio sui server per scambio di materiale “strano”, poi si prende di coraggio e mi da dello “smanettone”, poi mi fa notare che ho sbagliato il mio primo mashup … insomma uno da tenere a bada.

Un po’ scherzo ed un po’ no. E’ un rapporto che si è alimentato in modo molto sano, a partire dalla condivisione di alcuni interessi. Avere un lettore così, è una delle cose più piacevoli che possano accadere a chi – come noi di TANTO – usa uno spazio web per condividere esperienze e passioni.

Alessio Di LorenzoDiverso tempo fa, alla fine di due chiacchiere in chat, nasceva l’idea di fare scrivere al nostro lettore misterioso (ancora un po’ di pazienza) un tutorial su MapFish.
C’è voluto molto tempo, ma ieri ho finalmente ricevuto da Alessio Di Lorenzo proprio il testo di quel tutorial. Sarà pubblicato in settimana e sicuramente attirerà l’attenzione di molti lettori. Avevo parlato di Alessio, proprio nel mio ultimo articolo sulle modalità di pubblicazione di base dati (ripeto è uno che si insinua),  definendolo “un amico geologo abruzzese e curatore  del portale cartografico del Parco Nazionale della Majella” e facendo un grande errore: è in realtà un biologo marino, ed è invero la mia testa a perdere colpi.
Ma non è soltanto di Ale che voglio parlare, lo farà meglio lui con il suo tutorial.

Nel post di un anno fa scrivevo (mi fa paura, citarmi):

La vita di un Blog è semplice: ha bisogno di un po’ di passione, di un po’ di tempo, di buoni contenuti e di lettori fidelizzati. E’ semplice definirla, ma non praticarla, specie se gli autori sono pochi e magari hanno giornate dense di impegni e di scadenze. I commenti dei lettori, i suggerimenti e le critiche, le citazioni dei contenuti, tutto ciò che è relazione e scambio con gli altri è linfa. Quando dopo una giornata di lavoro impegnativa, leggi un’email con un lettore che ti ringrazia e ti mette in difficoltà con una domanda inaspettata, passa la stanchezza e ti ritrovi a scrivere un post su FWtools all’alba.

Questa linfa oggi mi sembra ancora più forte ed importante; e non solo per questo Blog. Meccanismi di questo tipo dovrebbero essere una base comune a tutti i luoghi di aggregazione, piccoli e grandi, virtuali e reali. Vedo nel mondo che “ci piace tanto”, nel mondo dell’informazione geografica, un grosso momento di stasi, molto grigiore, e pochissimi “salti”. Troppa attenzione a procedure software, alla precisione di un calcolo, al freddo raggiungimento di un risultato.

Tra un anno magari avrò la fortuna di accogliere due altri nuovi autori, e a quel punto scriverò un altro post, ma stavolta cambierò titolo: “Il successo di una comunità? Dei nuovi compagni di squadra”.

Benvenuto Alessio, e grazie.

13 aprile, 2009 | di

Gli eventi abruzzesi mi hanno toccato molto. Non poteva essere diversamente.

Sono un geologo e mi occupo di sistemi informativi geografici; posso dare un piccolo aiuto anche io, sfruttando le mie attitudini e le mie competenze?
Per giorni non ho trovato la risposta, poi mi contatta in chat Alessio Di Lorenzo, un amico biologo abruzzese e curatore  del portale cartografico del Parco Nazionale della Majella, e mi chiede se conosco una fonte da cui estrapolare dei dati sugli eventi sismici di questi giorni. Li vuole elaborare e trasformare in una sorgente geoRSS, prendendo spunto proprio da quanto abbiamo scritto qui. Inizialmente la cosa mi ha fatto piacere, ma non mi ha stimolato nulla. In seguito,  aprendo l’URL che gli ho inviato, quello del Centro Nazionale Terremoti dell’Istituto Nazionale di Geofisica e Vulcanologia, qualcosa mi ha fatto “click” in testa. Ma “poco poco, piano piano”.

Mi sono passati davanti agli occhi, i dati sismici pubblicati in questi giorni. Quelli “ufficiali”, quelli presentati dai giornali online di tutto il mondo, quelli sui blog. Alcuni sono caratterizzati da piccole grandi carenze, potenzialmente superabili con poco sforzo, ma con origini che sono profonde.

Tim Berners-Lee, uno degli “inventori” del World Wide Web, ha presentato nello scorso Febbraio una relazione orale sul futuro del Web (grazie a Stefano Costa per la segnalazione). E’ visibile in diversi siti, e gli dovreste dedicare 15 minuti del vostro tempo (se la guardate qui ci sono i sottotitoli, ha un inglese “difficile”), qualsiasi mestiere facciate.  In quella sede ha lanciato uno slogan: “raw data now“, letteralmente “dati grezzi ora”. Ha invitato il “mondo”, gli enti pubblici e quelli privati, a “liberare” i propri dati e creare i presupposti affinché questi possano essere accessibili e mescolati tra loro. Ha invitato inoltre tutti noi a stimolare chi detiene dati, a muoversi in questo senso; senza la condivisione, questi perdono quasi del tutto la loro qualità.

Berners-Lee individua tre regole:

  1. deve bastare un semplice indirizzo web, un URL, per puntare ad un dato
  2. chiunque abbia accesso a quell’URL, deve poter scaricare i dati in qualche formato standard
  3. devono essere descritte le relazioni tra i dati (Andrea è nato a Palermo, Palermo è in Italia, etc.), e queste relazioni devono essere espresse ancora una volta tramite un’URL

Questo sarà il web 3.0, basato sui dati e (si spera) sulle relazioni semantiche tra gli stessi. Ma torniamo ai dati sismici sul nostro paese. Rispettano queste tre regole?

Questa non sarà una critica al CNR ed all’INGV. Leggo sul loro sito, che gran parte dei dati da loro pubblicati in questo contesto, sono affidati (ancora una volta) al volontariato. A molti dipendenti infatti sembra non sia stato rinnovato il contratto. Non conosco questa situazione, ma è molto triste anche soltanto immaginare che una funzione di questo tipo possa essere “relegata” a semplici attività di volontariato.
Quello dei dati sismici è per me solo uno spunto, ed il discorso va allargato a tutti i contesti in cui esistano dei dati pubblicati in modalità poco efficienti (o addirittura non pubblicati).

Il formato in cui sono accessibili gran parte dei dati sismici è il CSV :

è un formato di file basato su file di testo utilizzato per l’importazione ed esportazione (ad esempio da fogli elettronici o database) di una tabella di dati.  Non esiste uno standard formale che lo definisca, ma solo alcune prassi più o meno consolidate.

Un esempio pratico è quello delle date, espresso in alcuni file dell’INGV in questo formato YYYY/MM/DD (2009/04/13). Aprendo uno di questi file con un foglio elettronico, il campo “data” verrà quasi sicuramente interpretato in automatico ed adattato alle impostazioni “locali” del vostro PC. Su molti PC italiani, sarà infatti forzato questo formato: DD/MM/YYYY (13/04/2009). E’ la stessa data? Sembra di si. Ma se iniziassimo a scambiare questi dati con colleghi, che usano un semplice blocco note per aprire il file CSV (senza quindi che i dati siano “trasformati”), o che vivono in un altro paese (quindi con un’impostazione locale differente), in quanto tempo ne perderemmo l’integrità?
Usando degli standard, ad esempio per le date l’ISO 8601 , riusciremo a dare ai nostri dati una vita più lunga ed anche una “platea” molto più estesa.

Altre volte i dati sono pubblicati come tabelle HTML. Avete mai provato a fare copia ed incolla di una tabella, da una pagina web ad un foglio elettronico? Molte volte se ne esce con le ossa rotte.
E’ giusto pubblicare i dati in html, ma dovremmo sempre fornire anche altre possibilità. Il servizio geologico americano (“so forti li americani”), lo USGS, pubblica da tanti anni un catalogo di eventi sismici in tre formati: KML (il formato di Google Earth che è ormai uno standard OGC), CSV ed XML (geoRSS). E’ una scelta che mi sembra cristallina. Si conciliano infatti formati adatti ad un’immediata divulgazione, con un formato RAW (come direbbe Tim Berners-Lee).  Il file KML e quello XML consentono ai dati di essere interpretati correttamente da una macchina e di essere “mescolati” più facilmente con altri provenienti da altri pc, scritti con altri software e  prodotti da altri gruppi di lavoro. Questa opportunità è un aspetto molto importante, in quanto l’incrocio di dati diversi spesso fa saltare agli occhi significati inaspettati; a costo di essere noioso, se non definisco i miei dati in un formato standard, sarà difficile riuscire a correlarli “immediatamente” con altri. L’INGV si sta muovendo sullo stesso solco, e in questa pagina troverete i dati degli eventi sismici degli ultimi 90 giorni sia informato CSV, che KML. Ma troverete anche questo avviso:

Le informazioni contenute in queste pagine sono state sinora garantite dalla disponibilità del personale, precario e non dell’Istituto Nazionale di Geofisica e Vulcanologia. L’agitazione del personale dell’Istituto contro l’emendamento 37bis alla proposta di legge 1441 quater, che in sostanza provocherebbe il quasi immediato licenziamento del personale precario, porterà alla sospensione di tutte le attività. Nell’immediato si procederà al blocco di ogni tipo di informazione telematica e telefonica non istituzionale.

Ma torniamo un attimo alle tre regole di sopra. La prima può sembrare meno importante, ma nasconde nella sua semplicità di formulazione un grande potere (sembra Spiderman).
Usiamo ogni giorno gli indirizzi http, gli URL. Li usiamo in modo naturale e spontaneo, senza chiederci cosa siano, su cosa si basino e come funzionino. E non c’è nulla di male.
Quando cambio canale della mia TV con un telecomando, non devo avere alcuna nozione sulla trasmissione dell’infrarosso; devo soltanto saper che devo usare un determinato tasto. Se prendo il telecomando del mio nuovo stereo, mi viene naturale utilizzarlo allo stesso modo. Così per il lettore DVD e per la mia pompa di calore (dite che questa è una forzatura?).
Anche accedere a diversi tipi di dati, di diversa origine, dovrà essere una cosa così semplice e “spontanea”. Con lo stesso protocollo, l’http, non più accedere “soltanto” a pagine web ma anche a fonti di dati grezze.

Quello che gli eventi abruzzesi mi hanno stimolato, come uomo e come professionista, è l’attenzione alla politica della gestione dei dati. Le classi dirigenti del nostro paese dovrebbero allinearsi a quanto esposto da Tim Berners-Lee. Sia perché il cittadino possa essere informato, sia per dare forza e valore ai dati, i quali se chiusi in un hd o divulgati in modo inappropriato rischiano di essere inutili e di produrre uno spreco (non soltanto economico).
Dobbiamo tenere alta l’attenzione verso questi temi.

I fatti di questi giorni, il dialogo con i colleghi di TANTO, l’indiretto stimolo di Alessio, i post di altri blogger, mi hanno spinto anche a provare a realizzare una piccola cosa concreta, proprio a partire dai dati sismici della regione Abruzzo.
Si tratta di qualcosa che a prima vista è confrontabile alle interfacce di webmapping basate su Google Maps, in cui in coincidenza della posizione di ogni evento sismico è raffigurato un “pallino”. Quello che ho provato ad aggiungere è la possibilità di modificare e “mescolare” i criteri di visualizzazione del dato: a partire dalla serie di dati che ho estratto, poter visualizzare ad esempio soltanto gli eventi sismici di Marzo, di magnitudo maggiore di 4, di profondità compresa tra 5 e 10 km e del distretto sismico del “Gran Sasso”. L’utilizzo di questi filtri mi ha dato (da utente) la sensazione di potere leggere “meglio” i dati; spero che non dipenda dall’emotività con cui ho lavorato su questo piccolo progetto.
Ho aggiunto anche una timeline, che da la possibilità di passare dalla visualizzazione degli eventi in scala spaziale, ad una efficacissima in scala temporale. Anche qui potrete usare gli stessi filtri.
C’è una visualizzazione tabellare “dinamica” in HTML, ordinabile usando qualsiasi delle colonne presenti, ed anche questa “sensibile” ad i filtri.
Infine i dati sono esportabili in diversi formati, tra i quali: RDF/XML, Semantic wikitext, Tab Separated Values. Per attivare l’export basta andare con il mouse alla sinistra del modulo “Cerca”, e cliccare sull’icona a forma di forbice che verrà visualizzata (vedi figura).
Purtroppo ho riscontrato un problema con l’export nel formato a cui tenevo di più – RDF/XML – ma spero di risolverlo nei prossimi giorni (è un piccolo autogol ;-) ).

L’interfaccia sviluppata ha però un vero grande difetto (e magari non sarà l’unico): non si aggiornerà in automatico, ogni volta che verranno pubblicati nuovi dati dall’INGV. Questo perché sono partito dai quelli pubblicati qui (una tabella HTML), e non da quelli in CSV o KML. Nei prossimi giorni proverò a partire da quelli in CSV, darli in pasto a Yahoo! Pipes ed automatizzare il processo di pubblicazione.

L’applicazione è visibile qui, e qui sotto vedete uno screenshot della timeline.

E’ realizzata con Exhibit, e ci scriverò a breve un tutorial di dettaglio. In questo post volevo “fare” altro.

Chiudo dando la disponibilità di collaborazione mia e dei miei colleghi, a chiunque ritenga che le nostre competenze possano essere d’aiuto in questo momento.

Un abbraccio forte a tutti quelli che stanno vivendo questo terribile momento; uomini, donne e bambini con una compostezza ed una dignità fuori dal comune.

Sopra le nuvole c’è il sereno” diceva Endrigo in una meravigliosa canzone  “d’amore”.

13 aprile, 2009 | di

Advocacy Mapping

Dopo la guida di MapAction, vi segnalo l’ottimo post su Making Maps riguardante la neogeography al servizio dello advocacy, ovvero il processo di intervenire su questioni di interesse comune al fine di esercitare una pubblica influenza riguardante ideologie o per conto di gruppi di persone. Stiamo parlando di “nobili” fini, of course… non certo interessi privati.

Si tratta di due brevi pubblicazioni edite da Tactical Technology Collective:

  • Visualizing Information for Advocacy: an Introduction to Information Design, scaricabile qui
  • Maps for Advocacy: An Introduction to Geographic Mapping Techniques, scaricabile qui.

Consiglio vivamente di leggere il bel post su Making Maps, non voglio dunque aggiungere molto altro se non che le due pubblicazioni non hanno affatto un taglio da “guide” nel senso proprio del termine. La prima è piuttosto un bel lavoro sulla “information design”, mentre la seconda porta diversi esempi nella realizzazione di applicazioni cartografiche e relativi strumenti utilizzati.

Non trascurate poi di dare un’occhiata alle “related resources” del post… molto illuminanti.

8 aprile, 2009 | di

La domanda è: possiamo disegnare quanta coscienza abbiamo di ciò che conosciamo (o che crediamo di conoscere)?

Dopo qualche minuto di pausa per capire quale sia esattamente la domanda… vediamo, allora, di iniziare il nostro viaggio partendo da alcune definizioni etimologiche che spesso molti (anche il sottoscritto) danno per scontate.

Conoscenza: ho trovato in questo articolo una bella panoramica sul significato etimologico di conoscenza. In pratica: “comincio ad accorgermi”: “la conoscenza, infatti, non esiste a priori, può essere solo colta nel suo farsi.” In effetti due sono stati gli elementi che hanno catturato la mia attenzione: il “comincio a…” (e non “mi accorgo”) e l’immagine del post sopra indicato: Etimologia di “conoscenza”: una ragazza che segue con le mani una serie di “ghirigori” che legano parole e concetti, ma, forse, anche emozioni, stati d’animo, pulsioni….

Coscienza: a questo termine viene dato, comunemente, un significato etimologico decisamente perentorio: Consapevolezza di ciò che avviene. Non è, tuttavia, estraneo in questo termine l’idea di un percorso, di un cammino, almeno secondo l’insegnamento di Tommaso d’Aquino espresso nella sua reditio (De Ver., 1,9; Sup. Lib. De Causis Exp., 15). Aver coscienza di qualche cosa, pertanto, significa, in primo luogo, aver compiuto un percorso, un viaggio ed essere giunti ad una meta (che inevitabilmente costituirà un nuovo punto di partenza).

Quindi: cominciare ad apprendere ed aver consapevolezza del percorso che si sta intraprendendo. Un binomio che va di pari passo attraverso strade impensabili ed imprevedibili, fatte di casi fortuiti, labirinti, assonanze e dissonanze…

Avere coscienza della propria conoscenza vuol dire fermarsi un attimo, fare il punto della situazione (come su una mappa), decidere quale strada percorrere, mettersi di nuovo in cammino.

La parte più difficile è: fermarsi un attimo, il resto viene da sé.

Nel mio di fermarmi un attimo, mi sono imbattuto nelle, così dette, mappe mentali, mappe concettuali.

Ora, la dottrina più severa tiene ben distinte queste due rappresentazioni grafiche del pensiero. Su Wikipedia, (ma non solo), leggiamo: “Le mappe mentali (mind maps) non vanno confuse con altri tipi di mappe come le mappe concettuali e le solution map, dalle quali si differenziano sia per la strutturazione, sia per il modello realizzativo, sia per gli ambiti di utilizzo“.

Possiamo dire, solo per offrire delle definizioni di massima e per completezza espositiva, senza volerci dilungare troppo, che:

  • le mappe mentali sono rappresentazioni grafiche del pensiero, strumenti di conoscenza;
  • le mappe concettuali sono strumenti grafici per rappresentare la conoscenza.

Tuttavia, vi dirò che le differenze fra le due tipologie sopra evidenziate non interessano, anche perché non raramente le une possono trasformarsi nelle altre (e viceversa), gli strumenti dell’una possono essere gli stessi dell’altra.

Non di rado mi è capitato, prima della stesura di un atto, di rappresentare graficamente il percorso concettuale che intendevo seguire.
Quando, poi, iniziavo a scrivere mi accorgevo che i concetti espressi secondo la mappa concettuale prima schematizzata, assumevano nuova forma, anzi, si evolvevano nella stesura secondo schemi sconosciuti e, paradossalmente, non pensati dal sottoscritto.
Non potendo rinunciare, quindi, alle idee che fluiscono come un fiume in piena, rinunziando ad una stesura ordinata, l’atto diventava una sorta di brain storming creato a partire dalla mappa concettuale.
Preparato in tale maniera il campo di battaglia, solo dopo diverse riletture e schematizzazioni, sono pronto a riordinare in forma compiuta sia il pensiero grafico, che lo stream of conscious.
In pratica, non di rado mi è capitato di partire da mappe concettuali per approdare a mappe mentali, mappe concettuali che favoriscono il fluire dei pensieri.
Fra i due elementi non esiste un prius e un post, ma una intima relazione: il flusso di pensieri rappresentato in una mappa mentale può confluire in una organizzazione degli stessi secondo una mappa concettuale. Ma vero, come detto, è anche il caso opposto. Ecco che, per fare un esempio, mi sono fermato un attimo ed ho deciso di visualizzare la mia coscienza delle mie esperienze conoscitive e partecipative sul web.
Questo è ciò che ne è venuto fuori:

gerlando-sul-web

In sé conosco i vari strumenti ed i vari “luoghi” nei quali opero e mi muovo nel web, ma mi sono chiesto quanta coscienza avessi degli stessi prima della realizzazione di questa mappa. Poca, pochissima.
E me ne sono accorto specialmente visualizzando le interconnessioni e le relazioni fra gli elementi che possono essere molteplici e di varia natura.

Una prima notazione che può essere fatta osservando la mappa è relativa all’utilizzo che fa il nostro Gerlando degli strumenti e dei servizi presenti nel web.
L’utilizzo lo si ricava dai concetti utilizzati per collegare i suddetti strumenti web based .
Questo fatto ci suggerisce l’idea che l’utilizzo di un determinato servizio web non è “univoco” ma è dato dal concetto collegato.

Dire “Gerlando usa Flikr”, oppure “Gerlando ha un account su Flickr” non qualificherebbe il “modo” dell’utilizzo dello strumento.
Nella mappa assume una particolare importanza, prima della relazione, il concetto relazionante.

Ad esempio:

Gerlando condivide attraverso Flickr”: Non è stato utilizzato il termine “pubblica” là dove si sarebbe suggerito l’idea che Gerlando utilizza Flickr come un photoblog, ovvero che la finalità dell’utilizzo di quel particolare servizio web è il relazionarsi con il mondo esterno.
Non è stato usato il termine “aggrega” là dove si sarebbe suggerito l’idea che l’utilizzo di Flickr fatto da parte di Gerlando sia quello di utilizzarlo come contenitore di elementi fotografici provenienti da diverse fonti e riuniti sotto Flick per comodità, ad esempio. E così via.
La mappa vuole suggerire una certa idea di utilizzo dello strumento Flickr, utilizzato, o valorizzato, in una sua particolare valenza (nel caso specifico per condividere le proprie foto con amici o familiari).
L’utilizzo combinato delle relazioni (frecce) e dei concetti (condivide, pubblica, legge, etc…), amplia a dismisura il “modo” dell’utilizzo dello strumento.

Sempre per seguire il medesimo esempio: è vero che Gerlando utilizza Flickr per “condividere” le sue foto con gli amici, ma è altrettanto vero che utilizza Flickr per “pubblicare” articoli sul blog il Grande CoComero.
Possiamo dire, utilizzando gli strumenti linguistici applicati alla mappa, che Flickr è il significante, le relazioni ed i concetti rappresentano il significato.
Il legame tra il “Flickr” e un determinato valore è arbitrario, ovvero non ha una motivazione intrinseca, ma dipende da una scelta.

Sempre di più nel web assistiamo alla progettazione di strumenti il cui valore è dato dai “modi” del loro utilizzo e non da un valore oggettivo.
Ad esempio con gli rss posso seguire gli aggiornamenti di un blog, ma posso utilizzarli, attraverso Pipes, per creare/gestire/monitorare le proprie liste di titoli finanziari visualizzando le ultime quotazioni di borsa (un divertente articolo che illustra ben 35 modi in cui possono essere utilizzati gli RSS , sebbene è del 2006, è questo: 35 Ways You Can Use RSS Today).
L’esempio dell’utilizzo combinato di vari strumenti presenti in rete, considerando anche il fatto che ormai tutti i nuovi programmi installabili nei propri pc sono, per così dire web addicted, costituisce un interessante paradigma a partire dal quale si possono realizzare delle mappe concettuali, utilizzabili anche per illustrare le funzionalità degli strumenti web based (questo è un divertente articolo il cui risultato potrebbe essere ad esempio:

faccio una foto dal cellulare, la invio via email a Flickr – Flickr la pubblica su un blogTwitter recupera il post e lo pubblica sul mio account – il tutto viene recuperato ed aggregato da Storytlr – il feed di Storytlr viene recuperato da Pipes che lo invia a Facebook – quest’ultimo servizio mi rifiuto di utilizzarlo).

Per la realizzazione della mappa sopra rappresenta sono partito da un foglio di carta dove ho elencato i luoghi di internet da me frequentati o gli strumenti utilizzati, li ho messi in relazione fra di loro con una serie di collegamenti che si sovrapponevano fra di loro in modo confuso.
Poi attraverso Cmap Tools ho iniziato ad enucleare e a decidere i concetti che legano i luoghi, per giungere ad una loro rappresentazione grafica.

Per altro, attraverso Cmap Tools si possono compiere indagini interessanti, quali ad esempio le analisi dei concetti utilizzati nella mappa (collegamenti in entrata ed in uscita), le frasi e/o le proposizioni che collegano i concetti, esportare i dati come testo.

cmap_relazioni

In sé il fascino delle mappe concettuali è grandissimo, là dove assumono un valore particolarmente penetrante non solo gli “oggetti” messi relazione, ovvero le “relazioni” stesse, ma ancora di più il “modo” e il “metodo” del relazionare.
Quello delle mappe concettuali è il mondo della filosofia inteso come metodo conoscitivo.

Le mappe mentali, è evidente, rappresentano, nella loro “folle” e colorata realizzazione, il mondo della scoperta. L’insondabile processo dell’intuizione e dell’intelligenza, là dove vengono composti gli opposti scoprendo che il cammino umano nella conoscenza è davvero tortuoso.

Pertanto ordine e caos, rispettivamente coscienza e conoscenza (un parallelismo forse stravagante e provocatorio, ma devo dire piuttosto stimolante), mappe concettuali e mappe mentali entrambe tese e volte a misurare e a rappresentare il disordine.

Ed è per questo che al sottoscritto non piace parlare di mappe mentali differenziandole dalle mappe concettuali. Quando si inizia non si sa cosa ne verrà fuori (“È pericoloso, Frodo, uscire dalla porta. Ti metti in strada, e se non dirigi bene i piedi, non si sa dove puoi finire spazzato via“).

Più interessante, mi sembra, l’idea di pensare visivamente: il Think visual di Dave Gray.

Concludo rilanciando, invece, l’idea di scoprire i luoghi e le modalità con cui le mappe mentali e mappe concettuali si mescolano e si confondono fra di loro, esplorando quelle zone di confine: là dove, per dirla con Italo Calvino, non è più possibile distinguere il rombo del tuono dall’ululato del lupo (Italo Calvino: Le città Invisibili).

Una serie di link non inseriti nel post (purtroppo), aggiungete i vostri:

Un paio di libri:

  • Mappe Mentali: Tony e Barry Buzan (lo potete acquistare qui se volete);
  • L’Intelligenza Verbale: Tony Buzan (qui se volete acquistarlo).

TANTO non rappresenta una testata giornalistica ai sensi della legge n. 62 del 7.03.2001, in quanto non viene aggiornato con una precisa e determinata periodicita'. Pertanto, in alcun modo puo' considerarsi un prodotto editoriale.