Thursday 27 January 2011

Profili topografici online? Geocontext-Profiler

Rimanendo in tema di profili topografici nel web, ho trovato nell'ottima lista gfoss una segnalazione di uno strumento online, Geocontext-Profiler, che permette di estrarre profili topografici basati sui dati Google Maps/Google Earth. La scelta del profilo avviene nella mappa definendo punto di inizio e finale. Il profilo è una geodetica, come possiamo accorgerci quando la distanza è significativa, e viene visualizzato graficamente ed anche come dati di elevazione lungo le distanze. E' presente anche una modalità avanzata di visualizzazione che permette di ingrandirne porzioni.
E' possibile incorporare il profilo nel proprio sito, ecco a seguire il corrispettivo del profilo presentato nel precedente post e basato invece su dati SRTM2.

Friday 21 January 2011

Visualizzare profili topografici nel Web

Le mappe web, assieme a Google Earth e simili, sono le modalità più diffuse di visualizzazione dei dati GIS nel Web. I profili topografici e per estensione quelli geologici, sismologici, etc. non hanno invece trovato una forma di espressione per il Web condivisa. Consideriamo uno strumento open source che, fra le molte funzionalità di cui dispone, permette di visualizzare e “navigare” all'interno di profili (altri a http://www.splashnology.com/blog/javascripts/290.html).

E' Protovis - http://vis.stanford.edu/protovis/ - una libreria di visualizzazione scientifica per il web sviluppata dallo Stanford Visualization Group e rilasciata sotto licenza BSD.
Protovis si basa su JavaScript per la logica e SVG per la grafica, quest'ultimo ora implementato in via nativa nelle versioni recenti di browser come Chrome, Firefox, Opera, Safari (ma non ancora disponibile in Internet Explorer).

La galleria degli esempi di Protovis - http://vis.stanford.edu/protovis/ex/ - è una fonte di ispirazione per utilizzi e adattamenti a scopi particolari. Nel nostro caso l'esempio che illustra la tecnica “Focus + context” può essere adattata per i profili topografici (nell'esempio originario rappresenta una serie temporale casuale).

L'aspetto più importante nella modifica del codice JavaScript è la definizione dei dati, cioè le elevazioni lungo un profilo topografico. I dati che ho usato come test riguardano la topografia dell'Appennino settentrionale, derivati da SRTM2 (cella di 90 m). La creazione del profilo è stata effettuata con Mirone - http://w3.ualg.pt/~jluis/mirone/ - ed i dati in formato csv sono stati convertiti nel formato JSON utilizzando la funzionalità online di Christopher Parker: http://www.cparker15.com/utilities/csv-to-json/

I dati convertiti in JSON possono quindi essere inseriti in un file JavaScript a rappresentare una variabile: nel nostro caso la variabile "data" nel file "data.js" che viene importato nel file html. A parte altre modifiche minori del codice Javascript e html, la struttura è risultata funzionante in maniera immediata. Questo esempio può essere visualizzato con qualsiasi browser recente (escluso Explorer) all'indirizzo: http://www.malg.eu/blog/protovis/profili.html


Esempio di visualizzazione di profilo topografico nell'Appennino settentrionale.


Come si può notare, la versione base consente di navigare lungo la sezione, ridimensionare la larghezza del box di scorrimento, scalare o non scalare localmente l'altezza del profilo.


Potenzialmente profili simili possono essere resi più interessanti ed interattivi. Alcuni esempi sono l'aggiunta di informazioni che riguardano il substrato roccioso, come ipocentri sismici, o funzionalità di calcolo di parametri topografici come slope o curvature (su profilo 2D). O può essere creata una applicazione web che consenta di caricare dati topografici o similari in formato .dat o jason e visualizzi il profilo risultante.

Monday 10 January 2011

TIOBE Programming Language Award of 2010: Python

E' stata una competizione a due con Objective-C, che però ha ceduto negli ultimi due mesi. E quindi Python ha guadagnato questo "titolo", avendo incrementato maggiormente la propria quota di "mercato": http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Objective-C è un linguaggio interessante, anche se trainato fondamentalmente da iPhone e iPad.
Python è molto più agnostico, riguardo alla piattaforma. TIOBE elenca ragioni che hanno accompagnato il cammino positivo di Python: la semplicità di apprendimento, il suo essere diventato il linguaggio di scripting ereditando la funzione di Perl,  la popolarità di Django, framework web basato su questo linguaggio, la diffusione come linguaggio di ingresso nelle università.
Anche per i GIS, come è noto, Python è utile: basti pensare a quanti software GIS permettono appunto di utilizzarlo per creare nuovi moduli: ArcGIS, Grass, QuantumGIS, Saga sono solo alcuni nomi. Python poi "balla anche da solo", nel senso che importando moduli specifici scritti sempre in Python o magari in C/C++, Python legge, processa e crea dati GIS.
Un appunto che viene fatto a Python è una relativa lentezza di esecuzione, anche di un ordine di grandezza più lento di linguaggi come Scala, Haskell, Lua, Lisp, Java, per non citare C  e C++.
Ritornando ai dati TIOBE, anche se JavaScript viene dato in discesa, si trovano ultimamente interessanti librerie JS di visualizzazione scientifica come Protovis e JSXGraph, delle quali personalmente non conosco un corrispettivo in Python. Mentre i primi due linguaggi, cioè Java e C mantengono le loro posizioni (ma Java ha un trend a decrescere da vari anni), C++ avrebbe un ritorno di popolarità. Fra i primi 50 linguaggi, si trovano nomi nuovi e meno, comunque interessanti, come Lua, Haskell, Lisp, Scala, Erlang, Forth, Groovy, Fortran, Scheme (un dialetto LISP), lo stesso R (linguaggio statistico), Go (della Google, ibrido Python-C++).