Torna alla Marco Moret Home Page

INDICE dei contenuti
2 La cartografia sul Web
2.1 Nozioni di base
2.2 Software utilizzabili per distribuire le funzionalità GIS sul WWW
2.2.1 ArcView Internet Map Server
2.2.2 MapObject
2.3 Esempi di architetture Web implementabili
2.4 Consultazione tramite Web di CARTE preimpostate
2.4.1 Il problema del mantenimento della scala originale
2.5 La distribuzione dei dati cartografici
LINK di interesse


La cartografia sul Web

Nozioni di base

Negli ultimi anni, un settore della cartografia digitale che ha avuto ampio sviluppo, riguarda il mondo Internet associato ai GIS.
Molto spesso si tratta di semplici applicazioni che forniscono la consultazione di carte in formato immagine statica, ma si arriva anche a siti in cui vengono implementate funzionalità cartografiche vere e proprie e che forniscono all'utente un'interfaccia web simile a quella di un GIS locale.
Le soluzioni implementate per realizzare questa tipologia di siti WWW, sono le più svariate come anche gli strumenti utilizzati per costruirli.
C'è stata una vera e propria ricerca di soluzioni sempre migliori in cui si sono cimentati anche le più importanti ditte di software cartografico come la ESRI proprietaria dei GIS Arc/Info, ArcView, ecc...
Oggi esistono siti implementati utilizzando strumenti costruiti e venduti da altri, oppure siti in cui l'architettura utilizzata è completamente costituita da software realizzati per quello specifico scopo.



Software utilizzabili per distribuire le funzionalità GIS sul WWW

Come già accennato precedentemente, esistono alcuni software acquistabili e installabili su diverse piattaforme hardware e software, in grado di aiutare gli sviluppatori di siti web a distribuire dati cartografici e le funzioni di consultazione su di essi.
Vediamo nel seguito due esempi di applicazioni ESRI utili allo scopo descritto.



ArcView Internet Map Server

Schermata d'esempio di ArcView IMS
AvIMS

E' un software che si appoggia al GIS ArcView (la cui licenza è inserita nel pacchetto che comprende il software stesso) ed è utilizzabile a più livelli di conoscenza informatica, cioè ha alcune funzionalità di base già implementate dagli sviluppatori ESRI, ma consente anche una pesante personalizzazione delle procedure cartografiche che si desiderano aggiungere a quelle esistenti.
Questo applicativo viene distribuito con un'interfaccia Java visibile da chi si connette ai siti su cui è installato, ed implementa le funzioni di base di un GIS:
- zoomIn
- zoomOut
- pan
- interrogazione dei dati alfanumerici associati
- ricerca di elementi cartografici
- stampa dell'immagine generata
- attivazione o disattivazione di temi cartografici dalla legenda
- visualizzazione del punto selezionato in coordinate terrestri
- ...
Come detto precedentemente, è personalizzabile sia per quanto riguarda la parte di interfaccia dei client, e sia per la parte delle vere e proprie funzioni GIS che vengono demandate al lato server su cui è attivo ArcView.
Nel seguito c'è uno schema dell'architettura implementata per ArcView Internet Map Server e una breve spiegazione dei vari oggetti coinvolti:

ArcView IMS

1: Client Internet/Intranet
Rappresenta gli utenti che si connettono al server in cui c'è un sito che utilizza ArcView IMS per distribuire la propria cartografia.
Questi utenti necessitano solo di un browser tipo Netscape o Internet Explorer (da ver 3.0 in avanti) e non devono installare alcun altro prodotto aggiuntivo tipo plug-in.
Gli utenti vedranno l'interfaccia che gli sviluppatori del sito hanno deciso di implementare oppure quella di default (Applet Java chiamata MapCafè) che è già a disposizione nel pacchetto acquistato da ESRI.
2: Web Server
E' il server che ospita il sito web in questione, comprese le eventuali pagine HTML di contorno e/o le applet Java che gestiscono l'interfacciamento con il GIS vero e proprio.
Attualmente non tutti i web server possono utilizzare ArcView IMS, ma solo quelli Microsoft (IIS, Personal Web Server) o quelli della Netscape (FastTrack, Enterprise Server).
3: IMS lato web server
E' la parte di software di IMS che deve essere installata sul Web Server e che implementa l'interfacciamento tra le richieste che arrivano dai client e i GIS ArcView attivi al livello sottostante.
E' un singolo file nominato esrimap(n).dll che viene chiamato dai vari client come un CGI e a cui vengono appesi tutti i dati nesessari per implementare la richiesta effettuata.
Questi dati riguardano per esempio quale comando GIS far eseguire ad ArcView e quali livelli cartografici vengono coinvolti.
L'URL che viene richiamato dai vari browser (trasparentemente all'utente) è del tipo:
http://mio_sito/script/esrimap.dll?param1=stringa1¶m2=stringa2&......
dove param1, param2, ecc... hanno nomi particolari che indicano a IMS il tipo di dato che viene passato, mentre stringa1, stringa2, ecc... sono i dati veri e propri.
Si nota subito che i dati costituenti la richiesta vengono passati come stringa di tipo GET e perciò limitata nella sua dimensione massima.
Infatti prove su carte con un numero elevato di temi cartografici con nomi lunghi, hanno dato problemi di troncamento dell'URL di richiesta.
Una semplice soluzione può essere quella di inserire nella legenda delle carte che si mettono a disposizione, temi con nomi corti magari codificati e aggiungere poi semplici pagine HTML contenenti tabelle di decodifica.
Il programma esrimap(n).dll si occupa anche di accodare le varie richieste e di distribuirle sui diversi ArcView attivi che forniscono gli stessi dati, bilanciando così il peso del lavoro su più applicazioni.
4: ArcView con estensione Internet Map Server
E' il motore di tutto. A questo livello ci sono i GIS o il GIS ArcView sui quali sono stati creati i progetti contenenti le viste cartografiche che si vogliono rendere consultabili su Web.
La procedura di installazione e creazione di un progetto distribuibile sul mondo WWW è abbastanza semplice, al punto che l'estensione IMS permette anche di generare le pagine HTML da spostare sul Web Server per l'attivazione dell'applet di default (MapCafè).
Una volta create le viste ArcView contenenti i temi cartografici desiderati, è necessario indicare alcuni parametri fondamentali come la macchina su cui si utilizza il Web Server, la porta di connessione, le dimensioni delle immagini che devono essere generate, ecc... e poi si servono le carte tramite alcuni nuovi comandi che l'estensione IMS aggiunge all'interno dei menù di ArcView.
Tutto il lavoro di acquisizione dati da esrimap.dll, esecuzione delle operazioni e restituzione dei risultati, è demandato ad alcuni scripts di Avenue che l'estensione IMS installa.
Questi scripts possono essere aggiunti e/o modificati da un programmatore esperto per implementare così nuove funzionalità. Durante l'esecuzione delle richieste degli utenti Internet, è possibile vedere sul monitor del server ArcView, tutto ciò che sta avvenendo in quel momento.
5: Dati cartografici
E' il livello rappresentante i dati veri e propri su cui si appoggia ArcView per "servire" le carte sul mondo Internet.
Possono essere dati di ogni tipo leggibile da ArcView (coperture Arc/Info, coperture SDE, SHAPE, raster, ...) con associati i relativi dati alfanumerici interrogabili dall'utente.

Vantaggi di ArcView IMS
- facilità di installazione
- facilità di utilizzo nella sua versione base
- semplicità nella creazione di viste ArcView "servibili" su Internet
- manuale utente facilmente leggibile anche da chi non è un esperto del settore

Svantaggi di ArcView IMS
- elevato costo di una licenza
- limitazioni sulla creazione delle viste di ArcView (lunghezza totale dei nomi dei temi limitata e impossibilità di utilizzare caratteri non alfabetici quali punti, trattini, parentesi, numeri, ecc...)
- licenza legata al numero di CPU utilizzate per eseguire gli ArcView.
Questo significa che eseguendo un ArcView su una macchina con l'estensione IMS, e volendo eseguire un secondo ArcView sempre utilizzando IMS, bisogna farlo dalla stessa macchina di prima, a meno di comprare una seconda licenza.
Questo indica che per avere siti web con più ArcView attivi in modo da distribuire le richieste, è necessario avere una macchina potente per poter supportare il peso di più processi ArcView attivi.
- la licenza di IMS per Solaris (SUN), ha un baco dovuto al fatto che è necessario eseguire più ArcView con IMS, non solo dalla stessa CPU, ma anche dalla console di quella macchina.
Non è possibile cioè lanciare gli ArcView su un server remoto a causa del settaggio del DISPLAY necessario per permettere al GIS di partire.
- le patch di aggiornamento del prodotto a volte hanno i nomi dei file tutti minuscoli mentre l'applicazione cerca nomi con alcune lettere maiuscole.
Ciò comporta l'esecuzione di test approfonditi per capire quali file devono essere rinominati.
Questi ultimi problemi elencati denotano anche poco interesse da parte di ESRI per le versioni di IMS in ambienti UNIX.



MapObject

Dopo l'esperienza di ArcView IMS, ESRI ha deciso di implementare una serie di librerie per ambienti di programmazione più conosciuti rispetto ad Avenue.
E' nato quindi MapObject, che è costituito da un insieme di controlli utilizzabili da Visual Basic per aiutare il programmatore ad implementare funzioni cartografiche in una qualunque applicazione stand-alone.
Inoltre esiste l'estensione di MapObject per Internet, chiamata MapObject Internet Map Server che sostanzialmente funziona come ArcView IMS con la differenza che non bisogna utilizzare ArcView per servire i dati, ma basta collegare le richieste dei client ad applicazioni Visual Basic scritte utilizzando i controlli MapObject.
MapObject, senza l'estensione IMS, permette di creare applicazioni che si avvicinano molto ad un GIS vero e proprio.
Basti pensare ad ArcExplorer, distribuito gratuitamente da ESRI, e scritto interamente utilizzando MapObject in ambiente Visual Basic.
Questo GIS permette di gestire i dati cartografici nei formati ESRI, utilizzando le più comuni funzioni di visualizzazione e consultazione su una carta digitale.
Implementa anche alcune funzioni di connessione a server remoti per la consultazione di cartografia digitale su Internet, ma qui la parte server è comunque gestita da MapObject IMS.
Come esempio di controllo MapObject per Visual Basic, vediamo l'oggetto Map. Esso è un pannello che si aggiunge ad una Form e sul quale vengono man mano aggiunti dei livelli cartografici. La sua visualizzazione permette di implementare l'immagine della carta costituita da tutti i livelli inseriti.
Anche i livelli sono degli oggetti di MapObject con le loro proprietà ed i loro metodi che per esempio permettono di selezionare i colori da assegnare agli elementi cartografici presenti nel tema, oppure di ottenere le coordinate cartografiche che racchiudono il tema.
Parliamo ora dell'architettura che deve avere un sistema per utilizzare MapObject IMS, in modo tale da poterla mettere in confronto con quella di ArcView IMS:

MapObject IMS

Tutti i livelli sono simili a quelli descritti per ArcView IMS, ma cambia completamente il livello 4, infatti non ho più degli ArcView attivi, ma una serie di eseguibili Visual Basic che attendono le richieste degli utenti per implementarne le risposte.
Inoltre, in questo caso non c'è più un'interfaccia di default implementata da ESRi, ma tutto è demandato al programmatore (esistono comunque degli esempi scritti da ESRI, da cui trarre spunto soprattutto per le prime esperienze).
Definiamo in breve le caratteristiche principali del livello più specifico:
4: Applicazione Visual Basic + MapObject
E' totalmete compito del programmatore, implementare i progetti Visual Basic necessari per eseguire le più svariate funzioni GIS che si vogliono mettere a disposizione degli utenti.
Insieme a MapObject IMS, viene aggiunto un controllo Visual Basic chiamato WebLink che permette di comunicare con lo script esrimap(n).dll installato sulla parte Web Server.
Ad ogni richiesta degli utenti, esrimap.dll comunica i dati all'eseguibile che si attiva e fornisce i risultati. Solitamente le mappe generate da una richiesta, vengono salvate sotto forma di immagini Jpeg o Gif e restituite al client.
Queste applicazioni, si connettono facilmente a dati di tipo SHAPE file, coperture Arc/Info, livelli SDE, raster, ecc... Vantaggi di MapObject IMS
- facilità di installazione
- possibilità di implementare funzioni GIS utilizzando il linguaggio Visual Basic
- possibilità di leggere codici di esempio forniti da ESRI facilmente comprensibili per i programmatori

Svantaggi di MapObject IMS
- accodamento delle richieste degli utenti e quindi necessità di attivare più eseguibili in contemporanea con grande utilizzo di risorse.
- ristretto numero di funzioni cartografiche rispetto a quelle utilizzabili da Avenue
- difficoltà di implementazione per i non esperti di programmazione
- limitazione nella lunghezza della stringa dei dati passati a esrimap(n).dll per implementare la richiesta (problema delle richieste GET fatte da un browser).



Esempi di architetture Web implementabili

Finora abbiamo parlato di prodotti già realizzati da altri e disponibili sul mercato per aiutare gli sviluppatori di siti web ad implementare la distribuzione della cartografia.
Nulla vieta però di costruirsi la propria applicazione personalizzata.
I prodotti visti prima sono per un uso generale, cioè sono fatti in modo da soddisfare il più ampio numero di richieste possibili, coinvolgendo così un'ampia fetta di mercato.
Proprio per questo però, tali prodotti sono spesso esagerati per chi debba solo implementare qualche piccola funzionalità cartografica sul web e quindi può succedere che un programatore web desideri costruirsi la propria applicazione.
Vediamo alcuni esempi di architetture implementabili:

Distribuzione di funzioni GIS e dati GRASS
Vediamo subito l'architettura che l'applicazione può implementare:

Esempio GRASS

Livello Client
Tale livello lo si può identificare con una qualunque macchina che sia collegata ad un provider della rete Internet, sia essa una workstation UNIX, un Personal Computer IBM compatibile o un Apple Machintosh.
L'utente di questo host, utilizzerà un browser di navigazione per poter connettersi all'applicazione e usufruire di tutti i suoi servizi.
Per l'utente finale, tutto quanto viene elaborato dal server in funzione delle richieste fatte, risulta essere completamente trasparente, ossia vedrà solo i risultati finali forniti dal server, senza sapere quali elaborazioni e quali motori agiscono nei livelli sottostanti.
Questo è il livello in cui vengono eseguite le Applet JAVA, trasferite dal server sul quale si trovano, che realizzano un'interfaccia amichevole fornendo un ambiente di lavoro che permette all'utente finale di avere a che fare con un sistema GIS di dimensioni ridotte.
La scelta tra l'utilizzo di applet Java o semplice HTML, dipende da dove si vogliono far eseguire le funzionalità GIS.
Infatti, se si decide che tutte le funzioni debbano essere demandate al server, allora i risultati delle operazioni, possono essere tranquillamente racchiusi in semplici pagine HTML e non in applet Java, ma ciò significa che anche le semplice trasformazione tra coordinate video e coordinate territoriali, deve essere fatta dal server, mentre potrebbe essere fatta tranquillamente da Java sul client in modo più veloce.
Naturalmente, come tutte le cose, si può raggiungere un compromesso e utilizzare le applet Java solo per alcune funzionalità semplici, mentre si passa dal server per quelle più complesse tipo bufferizzazione o zoom in scala.
Livello Web Server
Questo livello rappresenta il punto di collegamento tra i livelli più esterni: quello client e quello dei database (geografici o alfanumerici).
Il suo compito è quello di fare da tramite tra le richieste inoltrate dalle applicazioni utilizzate dagli utenti (livello CLIENT) e le risposte generate dal livello dei motori dei DataBase.
Questo livello è composto da una molteplicità di programmi di natura diversa, i quali svolgono ovviamente funzioni differenti, come per esempio demoni in ascolto su determinate porte, la gestione della concorrenza tra più utenti del GIS GRASS, programmi CGI, script per la generazione di HTML e per l'attivazione di processi di diverso tipo, etc.....
Livello GIS GRASS
E' il database geografico di appoggio per l'esecuzione di tutte le funzionalità GIS complesse.
Esso è composto da un proprio database cartografico in cui memeorizza i dati griglia o vettoriali da distribuire e sui quali operare.
GRASS nella versione 4.2, non ha un proprio database alfanumerico, come per esempio ArcInfo (Info è il suo db), quindi deve appoggiarsi ad un db esterno e il programmatore deve implementare le funzioni di interfaccia trai due ambienti.
Livello d'interfaccia tra GRASS e i database
Il database alfanumerico può essere qualunque, l'importante è riuscire ad utilizzarlo con programmi di interfacciamento scritti con linguaggi eseguibili dai web server (C, Java, perl, ...).
Prendiamo per esempio il database miniSQL (free); esso ha una serie di librerie che gli permettono di essere interrogato con un qualunque programma utente scritto in C.
Vediamo come può funzionare questo livello di interfaccia.
supponendo che l'utente interroghi un punto sulla mappa generata per ottenerne delle informazioni associate, i vari livelli si attivano in questo modo:
1)l'applet Java trasforma le coordinate video interrogate in coordinate terrestri (es.UTM).
e manda tali coordinate ad un CGI sul web server.
2)il programma CGI si connette a GRASS e gli indica che il tipo di richiesta è quella di sapere quale componenete geografica è in quel momento interrogata.
3)GRASS esegue la richiesta e comunica al programma CGI se la componenente interrogata esiste e quale codice la indica (il codice è l'unica informazione alfanumerica che GRASS associa ad una componente cartografica).
4)il programma CGI passa il codice al programma di interfacciamento con il database, il quale esegue un'interrogazione SQL con il codice ricevuto ed ottiene tutte le informazioni associate.
5)Il programma CGI prende tali informazioni e le comunica al client che le visualizzerà all'utente.
Un'architettura simile è abbastanza complessa, ma funzionante con tempi di risposta anche brevi.
Questo esempio serve solo per far capire che la distribuzione di cartografia sul web, può essere implementata anche utilizzando tutti strumenti gratuiti (GRASS, miniSQL, C, Java, ...), magari seguendo schemi più complessi ma efficienti.
Non sempre quindi, bisogna per forza appoggiarsi a strumenti già esistenti acquistabili a volte a prezzi elevati e che implementano architetture facilmente ricostruibili da un programmatore web.



Consultazione tramite Web di CARTE preimpostate

Molti siti hanno spesso la necessità di distribuire carte geografiche utilizzabili dagli utenti per i più svariati scopi.
Un esempio molto ricorrente lo troviamo nei siti web dedicati alla pianificazione territoriale sia essa regionale, provinciale o comunale.
Il problema ricorrente è dovuto alla dimensione che spesso hanno queste carte e al fatto che non sempre è possibile fornire all'utente la consultazione nella scala originale.
Il primo problema è di facile risoluzione, infatti solitamente si procede come segue:
-creazione della carta geografica in formato immagine tramite scannner oppure tramite programmi di conversione da formati GIS a formati immagine (solitamente da postscript a Gif).
-spezzettamento della carta in immagini più o meno grandi tramite l'utilizzo di programmi per
l'elaborazione delle immagini.
-riduzione dell'immagine originale in dimensioni adatte al web.
-creazione di una mappa sensibile HTML per l'individuazione dei tagli effettuati.
In questo modo l'utente può vedere la carta nel totale in dimensioni ridotte poi, cliccando nei vari punti, aumenta il livello di dettaglio consultando però solo un pezzo alla volta della carta.
Per comprendere meglio questo procedimento, è possibile consultare un esempio al sito cartografico della Provincia di Torino:
Esempio di consultazione carta

Per quanto riguarda il problema della consultazione delle carte nella scala originale, la risoluzione è più complessa. Vediamo ora una tecnica utilizzabile.



Il problema del mantenimento della scala originale

Partiamo con un chiarimento necessario a capire il problema.
Se, utilizzando un GIS, creo una carta in formato postscript con una certa scala 1:X, quando trasformo il postscript in Gif o Jpg per inserire la carta su una pagina web, perdo sicuramente la scala originale.
Infatti provate a vedere una stessa immagine con due monitor a risoluzione differente (es. 800x600 e 640x480) vedrete che le dimensioni sono differenti a causa del diverso numero di pixel con cui state visualizzando.
Lo stesso problema avviene in fase di stampa, infatti anche le stampe cartacee hanno il loro numero di pixel per pollice (risoluzione) da cui sono costituite.
Questo significa che l'immagine è comunque in scala, ma non più nella scala 1:X di partenza.
Se ora provate a consultare la stessa carta tramite un GIS (es. ArcView) su due monitor a risoluzione diversa, vedrete che le dimensioni sono sempre le stesse perchè il GIS ridisegna la cartografia considerando le dimensioni attuali del monitor e la sua risoluzione.
Questo problema è stato affrontato in molti dei siti cartografici da me realizzati e la soluzione adottata è la seguente:
-si parte dal postscript generato da ArcView o Arc/Info in risoluzione 300 dpi (punti per pollice).
-utilizzando alcuni programmi per
l'elaborazione delle immagini, vengono generati i formati Gif e Tiff della carta stessa.
Questo serve perchè la Gif verrà utilizzata per visualizzare la carta in una pagina Html, mentre la Tiff per generare il formato PDF in scala originale come vedremo nei passi successivi.
La Gif viene generata a 72 dpi in modo tale da minimizzare la sua dimensione sul web.
-il Tiff è un formato che memorizza al suo interno il numero di dpi con cui è cistituita un'immagine, quindi la si genera mantenendo i dpi originali (300 nel nostro caso).
Abbiamo ora un Tiff che dobbiamo in qualche modo mettere a disposizione degli utenti Internet.
La soluzione è quella di trasformare il Tiff in PDF, formato leggibile dal programma Acrobat Reader, gratuitamente distribuito dalla Adobe e installabile su molte delle più conosciute piattaforme Hw e Sw.
Il PDF finale sarà visualizzabile dal programma suddetto in una scala che dipende comunque dalla risoluzione del monitor, ma potrà essere stampato nella scala originale, come se fosse un postscript.
Clicca sul successivo link per vedere un esempio di carta cartografica in formato Gif con relativo PDF:
Esempio di carta in formato Gif e PDF
Mettendo assieme la tecnica dello spezzettamento delle carte e della loro stampa in scala originale, si può dare all'utente un modo semplice e utile per ricostruirsi le parti di carta a lui necessarie senza dover per forza avere un plotter che stampa su grandi formati ma solo una stampante, anche A4 (in questo caso taglio la carta in formati A4) e il sw Acrobat Reader.



La distribuzione dei dati cartografici

Un altro problema che spesso tocca i siti web dedicati alla cartografia, è il seguente: in quale formato confezionare i dati cartografici da distribuire agli utenti?
I formati immagine servono per far vedere le carte cosi' come sono fatte, ma non servono a molto quando si vuole consultare il dato cartografico vero e proprio con tutti i dati associati.
Naturalmente i formati cartografici dipendono dal GIS che si utilizza e dal GIS più utilizzato dagli utenti potenziali.
Una soluzione è distribuire il formato SHAPE della ESRI che può essere letto dai GIS ESRI tra cui il gratuito ArcExplorer e dai più famosi programmi di gestione dei dati vettoriali quali Microstation o AutoCad.
Il formato SHAPE è costituito quasi sempre da tre files con lo stesso nome ma con estensioni diverse:
.shp :contiene le geometrie del dato cartografico
.dbf :contiene i dati alfanumerici associati alle geometrie (è il formato di DBase facilemente leggibile anche con Excel o Access)
.shx :contiene le associazioni tra geometrie e dati


Banner
di Web Banner Italia
Membro Web Banner Italia

Click to Visit