ka-Map! - Faunalia
Transcript
ka-Map! - Faunalia
Open Source ka-Map! Una moderna interfaccia per il Web Mapping che sfrutta AJAX ed il Mapserver SE IL SITO WEB GOOGLE MAPS E LA SUA VERSIONE DESKTOP GOOGLE EARTH SONO ORMAI SULLA BOCCA DI MOLTI È GRAZIE ALLE LORO GRANDE INTERATTIVITÀ E ALL'INNOVATIVA CAPACITÀ DI RENDERE LA NAVIGAZIONE DELLE MAPPE UN'ESPERIENZA SEMPLICE E ACCESSIBILE. IL MONDO DEL FREE SOFTWARE NON È RIMASTO A GUARDARE E GIÀ DAL MAGGIO 2005 LA CANADESE DM SOLUTIONS HA RILASCIATO CON LICENZA OPEN SOURCE LA SUA ULTIMA INTERFACCIA PER MAPSERVER: KA-MAP. KA-MAP RACCOGLIE LA SFIDA DI GOOGLE MAPS E TROVA IL MODO DI RILANCIARE CON LA CONSUETA DUTTILITÀ DEI SOFTWARE OPEN SOURCE. LA COMUNITÀ HA RISPOSTO CON UN FORTE IMPULSO DI SVILUPPO E ADESSO KA-MAP È UNA DELLE SOLUZIONI OPEN SOURCE PIÙ APPREZZATE PER VISUALIZZARE MAPPE SUL WEB. PERCHÉ KA-MAP UMN Mapserver è l'applicazione di riferimento per il Web Mapping e i Web Services. È un dato di fatto che questa robusta applicazione stia rosicchiando quote di mercato ai ben più blasonati software commerciali ed il motivo va trovato nella sua estrema robustezza e nella grande comunità di sviluppo che continua a sostenere il progetto. Mapserver offre un’interfaccia di default che è decisamente basilare ma molti progetti si sono incaricati di fornire integrazioni e soluzioni alternative capaci di soddisfare le più disparate richieste. Si va da interfacce essenziali a strumenti molto simili, ad applicazioni GIS; queste hanno molte caratteristiche comuni e la maggior partesi porta dietro i limiti delle interfacce Web classiche: • Impossibilità di effettuare panning in modo fluido: le operazioni di panning, come quelle di zoom, richiedono il completo caricamento della pagina per ogni movimento. Questo comporta una esperienza di navigazione alquanto frammentata. • Estrema lentezza: la necessità di scaricare continuamente l'intera pagina Web per ogni interazione richiesta porta ad un notevole traffico dati non necessario con conseguente allungamento delle attese per raggiungere l'informazione desiderata. • Interfaccia utente generalmente poco intuitive: l'utente non esperto di software GIS si trova a dover compiere una serie di operazioni prima di poter arrivare all'informazione ricercata. Una nota a parte la meritano le interfacce con applet Java. Queste soluzioni offrono un’esperienza molto più simile a quella delle applicazioni desktop ma hanno il problema di essere pesanti da scaricare e spesso lente nell'interagire ai comandi dell'utente. In questo contesto era palese la necessità di ricorrere a nuove tecnologie per offrire un'esperienza di navigazione più naturale. Google ha offerto la sua soluzione Google Maps mentre la comunità Open Source ha risposto con ka-Map. MondoGIS 54 maggio/giugno ‘06 61 Open Source premuto, trascinate la mappa nelle varie direzioni. Tutto avviene quasi istantaneamente senza l'attesa per ricaricare la pagina Web. Google Suggest e Google Maps sono quindi due ottimi esempi di questo nuovo approccio alla programmazione delle applicazioni web che viene chiamato Ajax. Si tratta dell'acronimo di Asynchronous JavaScript e XML. Figura 1 - Confronto procedurale fra il modello web classico e modello Ajax. Fonte: www.adaptivepath. com/publications/essays/archives/000385.php KA-MAP ka-Map è un progetto Open Source creato per offrire una interfaccia Ajax per sviluppare applicazioni di Web-mapping altamente interattive sfruttando le funzionalità disponibili nei moderni browsers. COS'È AJAX? Dall’articolo di Jesse James Garrett (www.adaptivepath.com/publications/essays/archives/000385.php) non vi è dubbio che la diffusione di Internet e il miglioramento costante della velocità di connessione hanno permesso la creazione di numerose applicazioni Web. Quasi tutti gli utenti Internet hanno avuto esperienze di utilizzo di almeno un programma di posta elettronica che avesse una interfaccia Web (ad esempio Yahoo Mail). Nonostante la grande diffusione di queste applicazioni non è difficile notare che le loro interfacce perdano qualcosa in confronto alle applicazioni desktop (ad esempio Outlook Express). La stessa semplicità che ha permesso la rapida proliferazione del Web ha anche creato il distacco fra l'esperienza offerta dalle applicazioni Web e quella delle applicazioni Desktop. Adesso questo distacco si sta chiudendo. Provate ad usare Google Suggest (http://suggest.google.com). Mentre scrivete nel campo di ricerca quasi istantaneamente arrivano i suggerimenti. Adesso visitate Google Maps (http://maps.google.com). Provate a fare un ingrandimento (zoom in). Portare il cursore del mouse sulla mappa e, mantenendo il pulsante DEFINIZIONE DI AJAX Ajax non è una tecnologia. Sono in realtà più tecnologie indipendenti l'una dall'altra ma unite in un nuova e potente maniera. Ajax offre: • presentazione basate sugli standard di XHTML e CSS; • visualizzazioni dinamiche ed interazioni basate sul Document Object Model (DOM); • scambio e manipolazione di dati utilizzando XMLHttpRequest; • Javascript come piattaforma per unire e gestire le suddette tecnologie. Il modello classico delle applicazioni Web funziona così: la maggior parte delle azioni nell'interfaccia lancia al Web server una richiesta HTTP. Il server processa la richiesta (registrando dati, processando numeri, comunicando con sistemi distribuiti) e quindi rende al client una pagina HTML. È un modello che è nato con il Web come mezzo ipertestuale (Fig. 1). Il sistema è davvero sensato ed efficiente ma questo non porta ad una altrettanto sensata esperienza per l'utente. Mentre il server fa le sue cose, cosa ci si aspetta che faccia l'utente? Ogni passo del processo porta l'utente ad aspettare ancora un po'. PERCHÉ AJAX È DIFFERENTE Un’applicazione Ajax elimina la natura intermittente dell'interazione utente-server inserendo un intermediario: un motore AJAX. Invece di caricare pagine Web dall'inizio, il browser scarica il motore Ajax scritto in javascript e generalmente invisibile. Questo motore è responsabile di creare l'interfaccia che l'utente vede e, allo stesso tempo, di comunicare con il server in base alle azioni dell'utente. L'interfaccia Ajax permette di rendere asincrona l'interazione fra utente e server. In questo modo l'utente non si trova mai di fronte a pagine bianche in attesa che il server faccia qualcosa (Fig. 2). Ogni azione dell'utente che normalmente finirebbe per generare un richiesta HTTP prende forma di una richiesta JavaScript all'interfaccia Ajax. Ogni risposta verso le azioni dell'utente che non necessitino di connessioni al server (come validazione dei dati, editing dei dati in memoria e anche qualche azione di navigazione) sono gestite direttamente dall'interfaccia. Se si presenta la necessità di ricorrere al server (invio di dati, caricare nuove parti dell'interfaccia o richie- 62 MondoGIS 54 maggio/giugno ‘06 Open Source sta di nuovi dati) le connessioni al server avvengono in maniera asincrona, usando normalmente XML, senza interrompere l'interazione fra l'utente e l'applicazione. CACHING SYSTEM Caratteristica fondamentale comune a Google Maps e ka-Map è il sistema di caching. Le applicazioni standard di Mapserver non utilizzano questo sistema ed ogni volta che una mappa viene richiesta, anche solo per uno spostamento o cambiamento di scala, il Mapserver deve accedere ai dati e ricreare le immagini da rendere al client. Questo comporta che il Web Server passa la richiesta al Mapserver, il Mapserver ricerca i dati dalle varie fonti, elabora la risposta e rende l'immagine al Web Server ed infine questa immagine viene inviata, con tutta la pagina Web, al client dell'utente. In ka-Map i dati raccolti dal Mapserver sono trasformati in immagini, in formato di tessere (tiles) di 200 px di lato. Ogni volta che viene visualizzata una certa mappa ad una certa scala, ka-Map si incarica di controllare che le tessere vengano create solo per l'area richiesta. Se queste tessere esistono già, questo è il punto importante, le tessere non vengono ricreate ed il Web Server restituisce direttamente le immagini senza dover consultare il Mapserver. Così si risparmiano notevoli risorse di calcolo e quindi tempo nella risposta. In pratica kaMap salva in cache solo le aree richieste dagli utenti, Figura 2 - Confronto operativo fra il modello web classico e modello Ajax. Fonte: www.adaptivepath. com/publications/essays/archives/000385.php Figura 3 - Interfaccia Standard. Fonte: www.ominiverdi.org MondoGIS 54 maggio/giugno ‘06 63 Open Source mani dentro il codice e personalizzare anche l'interfaccia aggiungendo nuove funzionalità, modificando le esistenti o cambiando l'aspetto grafico a suo piacimento. Per fare questo è consigliata una certa dimestichezza nello sviluppo di applicazioni AJAX. Figura 4 - Interfaccia Embedded. Fonte: www.ominiverdi.org questo determina una strategia mista per quanto riguarda i problemi: ridondanza dei dati - velocità dell'applicazione. Sono gli utenti stessi che determinano cosa ed a che scala verrà salvato in cache evitando un eccessiva ridondanza dei dati. Per chi richiede le massime prestazioni in velocità, esiste inoltre uno script (precache.php) che si incarica di processare una volta per tutte le tessere di una certa mappa a tutte le scale previste dalla sua configurazione. Questo permette a chi sviluppa un’applicazione con ka-Map di pubblicare un sito solo quando le tessere siano già state create, permettendo ai visitatori di avere da subito la migliore esperienza di navigazione possibile. La velocità di risposta dell'applicazione è quindi relazionata alla velocità di connessione disponibile per l'utente, alla velocità di connessione disponibile per il server e al tempo di accesso alle tessere sul disco. È facile notare che le variabili limitanti sono ridotte al minimo. CONFIGURAZIONE FLESSIBILE BASATA SU UMN MAPSERVER Come abbiamo precedentemente descritto, ka-Map svolge la funzione di interfaccia grafica lato client per Mapserver. La gestione delle connessione ai dati, l'elaborazione e la preparazione delle immagini viene svolta interamente dal Mapserver. Gran parte della personalizzazione per le applicazioni realizzate con ka-Map dipende dal mapfile che non è altro che il file di configurazione che il Mapserver utilizza per definire il contorno (extent, scala di inizio, proiezione, formato di output, ecc.) ed i singoli livelli di dati (nome, stato, tipo, sorgente dati, scala minima, scala massima, ecc.) della mappa da produrre. La parte di configurazione che resta al ka-Map riguarda la dimensione delle tessere, il numero di mapfile da presentare, con che nome presentarli e quali livelli di zoom offrire. Naturalmente qualche programmatore più smaliziato potrebbe mettere le MAPPE E LAYER (GROUP) MULTIPLI Abbiamo appena detto che la personalizzazione di ka-Map permette di presentare più mappe con la stessa applicazione. Le mappe possono essere totalmente diverse le una delle altre in quanto ognuna di loro fa riferimento ad un distinto mapfile. Per ciò che riguarda la gestione dei livelli (LAYER), ka-Map ha una sua peculiarità. Sfrutta l'attributo GROUP definibile per ogni LAYER del mapfile per creare quelli che sono i veri e proprio livelli dell'applicazione. In questo modo più LAYER possono appartenere ad uno stesso gruppo e ka-Map li rappresenterà raggruppati su uno stesso livello, unendo in una singola immagine tutti i layers appartenenti al medesimo gruppo. Quindi la legenda di ka-Map presenterà un livello per ogni GROUP e saranno presenti i simboli per ognuno dei LAYER appartenenti al dato GROUP. Le proprietà dei vari livelli, descritte in seguito, verranno applicati a tutti i LAYER del GROUP relativo. NAVIGAZIONE DA TASTIERA Per migliorare la navigabilità, ka-Map permette di utilizzare alcuni comandi da tastiera per spostarsi sulla mappa nelle varie direzioni. Ipotizzando di aver utilizzato un sistema di proiezione classico, mappa orientata con il nord in alto e ovest a sinistra, il tasto up permette di spostare la centratura della mappa verso Nord, il tasto down verso sud, left verso ovest, right verso est. Allo stesso modo si possono usare i tasti page up, page down, home, end per spostarsi nelle rispettive direzioni per una distanza maggiore. FUNZIONALITÀ ESTENSIBILI ATTRAVERSO UNA API Le funzionalità base coprono già numerose necessità ma chi non sapesse accontentarsi potrebbe utilizzare le API (Application Programming Interface) a disposizione per estendere le potenzialità di ka-Map. Questa opzione richiede un discreto livello di dimestichezza con la programmazione in ambiente AJAX ma l'accesso non è proibitivo. La documentazione a riguardo non è ancora buona ma le funzionalità sono documentate nel codice e il WIKI (http://kamap.ominiverdi.org) della comunità di ka-Map offre già numerosi chiarimenti. TOOL INTERFACCIA UTENTE ka-Map, facendo proprie le caratteristiche di molti software Open Source, si presta a differenti implementazioni della sua interfaccia. Tra le principali troviamo quella di default e quella embedded. 64 MondoGIS 54 maggio/giugno ‘06 Open Source DEFAULT Come è facile notare dalla figura 3, l'implementazione di default si presenta come una normale applicazione desktop per la navigazione delle mappe. Nell'intestazione (Toolbar) sono presenti tutti i pulsanti per accedere alle funzioni di Zoom In, Zoom Out, Zoom a scala predeterminata, Zoom alla scala di default. Inoltre è presente la select box per scegliere fra le varie mappe definite nell'implementazione. Altri due pulsanti permettono di scegliere fra la modalità di Panning (scorrimento) e quella di Identify (con click singolo o rubber box). In basso a destra rispetto alla Toolbar è presenta la mappa di riferimento (Keymap). Nella mappa di riferimento vi è il selettore della visione corrente che può essere utilizzato per cambiare vista sia tramite il doppio click in un punto della Keymap sia trascinando il rettangolo del selettore (riquadro con bordo rosso). Sotto la Keymap vi è una scalebar (Scalebar) che funziona integralmente lato utente, ovvero non viene richiesta l'immagine al server tutte le volte che si cambia scala. Sotto la Scalebar si trova la legenda (Legend). Questa è la parte più interattiva di tutta l'interfaccia e presenta numerose funzioni. I pulsanti "+" e "-" al lato di ogni livello permettono l'espansione e la chiusura delle singole legende. Per ogni livello è possibile attivare o disattivare la visibilità agendo su un checkbox, regolare la opacità delle immagini, cambiare la posizione in alto o in basso. Accanto a Toolbar, Keymap e Scalebar è presente una freccia che permette di far apparire e scomparire i riquadri a piacimento. Nascondendo i riquadri si ottiene una navigazione a tutta pagina che nessun altro sistema tradizionale può offrire. EMBEDDED L'utilizzo del tag HTML IFRAME permette di inserire in qualsiasi pagina Web un riquadro contenente una mappa interattiva che può essere caricata da qualsiasi server remoto (Fig. 4). Tra gli attributi di IFRAME vi è appunto SRC che permette di definire la sorgente dei dati da mostrare. tra le interfacce di ka-Map vi è quella che fa riferimento al file iframe.html che offre una soluzione semplificata senza Keymap, Scalebar e Legend e con una Toolbar minimale. COMPATIBILITÀ Allo stato attuale la compatibilità è al livello delle più blasonate soluzioni AJAX (Google Maps, ecc.). • Internet Explorer 6.0 o superiore; • Firefox 0.8 o superiore; • Safari 1.2.4 o superiore; • Netscape 7.1 o superiore; • Mozilla 1.4 o superiore; • Opera 8.02 o superiore. COME FUNZIONA KA-MAP Abbiamo già accennato alla gestione delle tile o tessere che dir si voglia. La gestione di queste a livello del client avviene attraverso due elementi fondamentali: theInsideLayer e il viewport. Le tessere sono posizionate nel 'pixel space' con coordinate assolute. Figura 5 - Struttura dell'InsideLayer. Fonte: Paul Spencer, DM Solutions Group, 2005 MondoGIS 54 maggio/giugno ‘06 65 Open Source verrà mostrerà tutto il valore di questa applicazione. Questo software offre l'occasione a molti siti che offrono Web mapping di rinnovare il loro aspetto e le loro potenzialità. I limiti alle implementazioni di questa applicazione riguardano solo la fantasia degli sviluppatori e la disponibilità di dati. Non perdetevi i Workshop e le presentazioni che verranno fatte a Losanna il prossimo settembre (www.foss4g2006.org). Sarà l'occasione per tastare il polso al crescente mondo del Free and Open Source Software for GIS. Ka-Map ci sarà! Figura 6 - Procedura di cashing durante il panning. Fonte: Paul Spencer, DM Solutions Group, 2005 THEINSIDELAYER Il layer interno, theInsideLayer è la struttura dove si crea la mappa. In esso il motore Ajax si incarica di applicare le varie tessere che vengono mano a mano scaricate dal server. Nella griglia del theInsideLayer si sviluppa l'immagine della mappa così come la vediamo durante la navigazione (Fig.5). VIEWPORT Il viewport è una finestra che permette all'utente di visualizzare una parte del contenuto dell'insideLayer. Nell'azione del panning (scorrimento della mappa) theInsideLayer scorre sotto il viewport. È il viewport che intercetta le azione di movimento e manda le richieste asincrone per ottenere il download delle tessere di mappa che lo circondano (Fig. 6). [autori] Lorenzo Becchi Andrea Cappugi Ominiverdi www.ominiverdi.it CONCLUSIONI Ka-Map è un'applicazione giovane e come tale non può avvalersi di un curriculum di grande prestigio. Siamo ancora alla versione 0.2. Lo sviluppo gode di un'ottima salute e nel CVS del progetto si possono trovare numerose nuove funzioni. L'interesse della comunità, così come le sponsorizzazioni, permettono ai software Open Source di crescere o scomparire. ka-Map compie il suo primo anno dimostrandosi un progetto in ottima salute. L'anno che Link utili • • • • • 66 MondoGIS 54 maggio/giugno ‘06 La Home Page di ka-Map: http://ka-map.maptools.org/ Il Wiki per la documentazione di ka-Map: http://ka-map.ominiverdi.org/ La Home Page di Ominiverdi, co-sviluppatori di ka-Map: www.ominiverdi.org Google Maps: http://maps.google.com GFOSS: www.gfoss.it