16 marzo, 2009 | di in » Didattica

In questo post vi mostrerò come creare una sorgente geoRSS a partire da un file CSV che ho creato per l’occasione. Questo contiene dei dati fittizi su tre città italiane, che voglio pubblicare all’interno della sorgente geoRSS, curandone struttura e formattazione, ed inserendo anche un grafico di sintesi dei parametri presenti in ogni record.

Realizzerò il tutto creando un piccolo mashup sfruttando i seguenti servizi:

  • Google Docs, per l’archiviazione dei dati grezzi e per la creazione del CSV a partire da questi
  • Yahoo! Pipes, per l’elaborazione del file CSV e la sua trasformazione in geoRSS
  • le api di Google Charts, per inserire nella sorgente geoRSS dei grafici di sintesi sui dati contenuti nel file CSV
  • Google maps per visualizzare la sorgente geoRSS in una mappa

Un mashup è un’applicazione che, a partire da dati ed informazioni provenienti da due o più fonti/servizi/applicazioni, crea nuove applicazioni/servizi.

Google Docs

Ho creato in Google Docs un nuovo foglio elettronico ed ho inserito dei dati fittizi su tre città italiane. Ho anche aggiunto una colonna per il valore di latitudine, ed una per quello di longitudine (entrambi espressi i gradi decimali).

google docs

Per fare dialogare questo foglio elettronico con gli altri servizi citati sopra, dovrò renderlo pubblico; lo farò utilizzando il tasto Share e selezionando l’opzione “Publish as a web page” (così come nella figura sottostante).

google_docs_publish

Si aprirà una finestra di pop-up e dovrò cliccare su “Publish now“. Fatto questo, cliccherò sul link (presente in basso) “More publishing options“; si aprirà un’altra finestra di pop-up in cui sceglierò CSV come formato di pubblicazione e cliccherò sul tasto “Generate URL”. In ultimo copierò l’URL appena generato e lo incollerò da qualche parte (in un editor di testo).

Yahoo! Pipes e Google Charts

Yahoo! Pipes è il mio editor/cratore di mashup preferito. “Si presenta” ufficialmente così:

Pipes is a powerful composition tool to aggregate, manipulate, and mashup content from around the web.

Con Pipes aggrego ad esempio i feed RSS che pubblico in Blog GIS Italia, ma qui lo utilizzerò in modo diverso.

La prima cosa da fare in Pipes è scegliere la fonte dei nostri dati (possono essere anche più d’una), e in questo caso sceglierò il file CSV di cui sopra; ne andrò a recuperare l’URL e lo incollerò dentro il modulo di Pipes “Fetch CSV”.

fetch_csv3

Posso personalizzare diverse parametri. In questo caso ho escluso dalla lettura dei dati la prima riga (contiene i nomi delle colonne), ed ho impostato a mano i nomi delle colonne della mia tabella.

A questo modulo, ne collego un altro che trovo tra gli operatori di Pipes: “Rename”.

rename_3

In questo modo rinominerò il campo “Citta” in “title”, in modo da avere a disposizione uno dei campi necessari per la creazione di una sorgente RSS.

Eseguirò successivamente il primo di due loop presenti in questo Pipe. Per ogni record della tabella andrò a “costruire” l’URL che mi consentirà di creare un grafico tramite le API di Google Charts. La struttura di base dell’URL per la generazione di un grafico tramite queste API è come quella sottostante:

\"\"http://chart.apis.google.com/chart?
chs=250x100
&chd=t:60,40
&cht=p3
&chl=Hello|World

Dove:

  • http://chart.apis.google.com/chart? è l’URL di base delle API.
  • & è il separatore dei parametri
  • chs=250×100 è la larghezza dei grafici in pixel.
  • chd=t:60,40 sono i dati che voglio rappresentare.
  • cht=p3 è il tipo di grafico.
  • chl=Hello|World sono le etichette del grafico.

Dovrò adattare questo schema ai miei dati, per struttura, valori e formattazione.

Inserirò allora nel modulo “Loop” di Pipes un costruttore di stringhe – il modulo “String Builder” – con cui genererò un URL utile per la stampa a video di un grafico a torta per ogni record della mia tabella.

loop

Assegnerò i valori di output di questo loop alla variabile  “item.chartURI”. Per il primo record verrà generato ad esempio questo URL:

\"http://chart.apis.google.com/chart?cht=p3&chd=t:32,32,34&chl=Parametro
A|Parametro B|Parametro C&chs=450x200&chtt=Reggio Calabria\"

Utilizzerò il modulo “Regex” per fare sì che gli URL generati abbiano una corretta sintassi. Rimuoverò quindi gli spazi e li sostituirò con la stringa “%20″

regex

Utilizzerò adesso il secondo modulo di “Loop”, per generare il contenuto del secondo elemento necessario in una sorgente RSS: il campo “descritpion“. Lo riempirò con delle stringhe di testo con i valori delle colonne che rappresenterò tramite grafico, e con il grafico stesso. Questo per ogni record della tabella.

Posso inserire qualsiasi stringa HTML che sia utile a formattare al meglio gli elementi del mio RSS. Il grafico verrà inserito in corrispondenza del tag <img>, che avrà come source proprio l’URL generato nel primo loop.

loop2

Infine:

  • userò il modulo “Location Extractor” per trasformare un normale RSS in un geoRSS
  • mapperò il campo “link” della sorgente RSS affinché punti al grafico generato
  • genererò l’output

fine

Il modulo “Location Extractor” non richiede informazioni aggiuntive, perché sfrutta due colonne presenti nel mio file CSV originario: “Latitude” e “Longitude”. In questo modo ogni elemento del mio RSS sarà geotaggato.

Non mi resta che salvare il mio Pipe cliccando sul tasto “Save”, e provarlo. Per vederlo in azione cliccherò sul link “Run pipe“, visibile nella zona in alto al centro della finestra di editing del Pipe. Si aprirà una pagina come quella sottostante.

pipe3

Da questavisualizzerò gli elementi della mia sorgente RSS. Nel caso di una fonte geoRSS verrà generata automaticamente una mappa, che potrò inserire in una qualsiasi pagina html (copiando il codice che mi verrà restituito al click sul tasto “Get as a Badge“). Qui sotto vedete il tutto in azione.

Questi alcuni degli altri output possibili:

Google Maps

Due degli output di sopra, RSS e KML, possono essere visualizzati in un istante ed in modo molto efficace in Google Maps.

Basterà incollare uno dei due URL di sopra (RSS o KML) dentro il box di ricerca di Google Maps, e fare click sul tasto di ricerca.

google_maps

Qui i due risultati in azione:

E’ possibile ottenere questo risultato con (quasi) qualsiasi URL di file KML o sorgenti RSS che siano geroRSS.

Considerazioni finali

Questo post è quasi la traduzione di quest’altro pubblicato su uno dei Blog che mi solletica di più in questo momento: OUseful.Info. Leggerlo è stato divertente, ma lo è stato molto di più mettere in pratica quanto descritto. Quello che vorrei trasmettervi è l’importanza del “fare”: si comprendono i concetti in modo più profondo, ed escono fuori molte più idee.

Quello che mi stupisce sempre è qualità, la varietà, e la “potenza” degli strumenti che abbiamo a disposizione. L’esempio descritto in questo post è semplice, e mentre lo scrivevo mi rendevo conto che con un po’ di fantasia ed ingegno si potrebbero ottenere risultati sorprendenti.

Per utilizzare Yahoo! Pipes è necessario avere un account Yahoo!. Qui il Pipe che ho realizzato, che potrete clonare ed adattare alle vostre “vere” esigenze.

Sitografia letta, consigliata e disordinata

  1. “Chart Types – Google Chart API – Google Code,” http://code.google.com/intl/it/apis/chart/types.html.
  2. “Creating Google Charts From CSV Data Inside a Yahoo Pipe « OUseful.Info, the blog…,” http://ouseful.wordpress.com/2009/03/12/creating-google-charts-from-csv-data-inside-a-yahoo-pipe/.
  3. “GeoRSS – Wikipedia, the free encyclopedia,” http://en.wikipedia.org/wiki/GeoRSS.
  4. “The scripting library: Combining data and information in the library,” http://www.slideshare.net/bonaria/the-scripting-library-combining-data-and-information-in-the-library.
  5. “Technical Overview: GeoRSS,” http://www.geowebguru.com/articles/108-technical-overview-georss.

Attenzione! Questo è un articolo di almeno un anno fa!
I contenuti potrebbero non essere più adeguati ai tempi!

8 Responses to “Creare un geoRSS corredato di grafici, a partire da un file CSV”

  1. By Gerlando Gibilaro on mar 17, 2009

    Può, sicuramente, risultare autoreferenziale, ma è sempre un piacere leggere articoli chiari.
    Tralasciando le considerazioni sulle potenzialità di tali strumenti utilizzati in maniera combinata tra di loro, mi piace segnalare, per chi fosse interessato, alcuni tutorial su Yahoo! Pipes:
    A Guide to Yahoo Pipes;
    A brief reintroduction to Yahoo! Pipes – Part 1 of 5;
    A brief reintroduction to Yahoo! Pipes – Part 2 of 5;
    A brief reintroduction to Yahoo! Pipes – Part 3 of 5;
    A brief reintroduction to Yahoo! Pipes – Part 4 of 5;
    A brief reintroduction to Yahoo! Pipes – Part 5 of 5.

  2. By Alessio on mar 17, 2009

    Andrea… è una figata pazzesca! Proverò sicuramente a giocarci un po’! Grazie del post :)

  3. By Andrea Borruso on mar 18, 2009

    Grazie a Gerlando ed Alessio per i complimenti: non sapete quanto facciano piacere.

    Grazie mille a Pietro Blu, che mi ha fatto notare di avere dimenticato totalmente di scrivere il “paragrafetto” su Google Maps; l’ho aggiunto ;-) .

    Se qualcuno di voi facesse qualche piccolo esperimento di mashup e lo volesse condividere, mi farebbe cosa molto gradita.

    Ancora grazie,

    a

  4. By Pietro Blu Giandonato on mar 18, 2009

    Questo post di Andrea (che ringrazio ancora per averlo scritto) mi suggerisce una riflessione… polemica forse, ma non riesco a trattenermi.

    Come penso tanti di voi, cerco di leggere e informarmi molto – anche se non quanto vorrei – e noto una scarsità di attenzione verso il web 2.0 applicato alla neogeography nelle comunità italiane di utilizzatori a vario titolo di GIS, dati geografici et similia.

    Frequento – anche se in maniera discontinua e con ruoli differenti – più o meno i maggiori forum, mailing list e blog espressioni di queste comunità, e noto come il panorama si riduca sostanzialmente a due grandi categorie di interesse:

    1. i GIS desktop o web-based, le tecniche e tecnologie per utilizzarli;
    2. la ricerca e reperimento di dati digitali.

    Coloro che si avvicinano a questi argomenti –
    e spesso provengono da esperienze professionali le più svariate – vedono il primo punto come una montagna da scalare con fatica (imparare a usare i software), il secondo come un deserto nel quale cercare un’oasi (i dati).

    Risultato…

    Da un lato un tasso di presenza e partecipazione di gran parte dei nuovi utenti molto scarso, tipo “mordi e fuggi”: faccio la domanda, ottengo (spero) la risposta e… ci si becca! Dall’altro una comunità di power users che discute freneticamente di problematiche di alto livello, poco utili ai newbie.

    E qui arrivo al punto…

    Come ci mostra Andrea grazie a questo post, esiste ormai sul web una messe di strumenti, applicazioni, servizi, fonti di dati formidabile, che sta crescendo vertiginosamente, e della quale non resta altro che coglierne le opportunità a piene mani.

    E’ davvero scarsa la capacità dell’intera comunità geomatica italiana di fornire spunti, opportunità, suggerimenti, idee al novellino così come all’esperto per seguire questo flusso. In un paio d’ore, tra progettazione e realizzazione, è possibile tirare su un mashup potente, semplice e veloce per mettere in strada dati reperiti altrove da più fonti, o addirittura originali!

    Saremo mai capaci di avere un giorno una nostra Where 2.0?

    E’ necessario cambiare il paradigma della geomatica in Italia, passando dal GIS come unico strumento per la rappresentazione e gestione dei dati, arrivando a una sorta di “cloudmapping” realizzato con le decine di strumenti web 2.0 che esistono in giro. Una strada peraltro che richiede essenzialmente fantasia, creatività e intuito, che permette di costruire grandi cose con piccole azioni. Il problema è ovviamente immaginarle…

    Polemicamente vostro,
    Pietro Blu

  5. By Fabio on mar 19, 2009

    Salve,
    riguardo il post su come creare un geoRSS a partire da un file CSV e creare grafici con Google Charts, vorrei far notare che è nato da qualche mese il progetto tutto Open Source GeoBI [1](GeoSpatial Business Intelligence) presentato anche al X GFOSS meeting di Cagliari il 27 Febbraio scorso [2]. E’ stato già sviluppato il primo prototipo del modulo GeoReport che in pratica consente di creare Report cartografici avanzati [3].
    GeoReport ha licenza LGPL ed usa i seguenti prodotti: PentahoBI per la parte di Business Intelligence, GeoServer WFS, GeoJOSN, MapFish Client e MapFish GeoJSON lib per la parte WebGIS.
    La descrizione dell’intera piattforma la potete leggere qui [5].
    Ad oggi stiamo lavorando all’integrazione di GeoReport in Pentaho CDF [6] e stiamo pensando di integrarlo anche in SpagoBI!
    Buona lettura!
    PS: anche TANTO è linkato su GeoBI :-) complimenti per il blog!!!

    [1]http://www.geobi.org
    [2]http://gfoss2009.crs4.it/en/node/94
    [3]http://code.google.com/p/geobi/
    [5]http://www.geobi.org/2009_01_01_archive.html
    [6]http://code.google.com/p/pentaho-cdf/

  6. By Andrea Borruso on mar 19, 2009

    Caro Fabio,
    conosco GeoBI, alcune settimane fa ti ho fatto i complimenti sulla mailing list GFOSS.
    Il tuo blog è inoltre da tempo tra quelli presenti in Blog GIS Italia [1], ed anche “tu” sei quindi presente su TANTO.

    Il lavoro che state facendo suo GeoBi è uno dei più stimolanti ad oggi nel panorama italiano (almeno tra quelli pubblicizzati).
    Mi piacerebbe avere il tempo per andare aldilà della lettura delle sue features, e “sporcarmici” le mani.

    Grazie per i complimenti e grazie per essere passato da qui,

    a

    [1] http://pipes.yahoo.com/pipes/pipe.info?_id=6hPT8mYa3BGl09YzqWIyXQ

  7. By Andrea Borruso on mar 23, 2009

    Aggiungo che oggi anche ars technica parla di Yahoo! Pipes, con un post molto didattico.

  1. 1 Trackback(s)

  2. ott 30, 2009: alessiodilorenzo.it » Benvenuti

Lascia un commento

Tag html consentiti: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>


7 − = 4


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.