Master SIT
Settembre 2005
MAPSERVER
Corso Web & GIS
Master in Sistemi Informativi Territoriali
AA 2005/2006
Chiara Renso
ISTI- CNR
[email protected]
Reperibile alla URL: http://mapserver.gis.umn.edu/
Mapserver è un software opensource fornito dall’Università del Minnesota
http://mapserver.gis.umn.edu/ e fornisce un ambiente per la pubblicazione sul web di
mappe. E’ un prodotto in continua evoluzione. Si basa su tecnologia lato server e
permette di pubblicare mappe a partire da vari formati tra cui shape file di ESRI. Con
l’estensione PHP-Mapscript (DM solutions) è possibile utilizzare le funzionalità di
Mapserver da linguaggio di script.
Permette di fornire funzionalità di navigazione delle mappe e interrogazione di elementi.
E’ altamente personalizzabile per poter realizzare applicazioni anche molto complesse.
Inoltre realizza i WMS e WFS di OpenGIS.
Alcuni esempi:
http://www.adbpo.it/maplab_projects/webgis/adbpo_gis/inizio.phtml?inizio=APi
http://mapserver.gis.umn.edu/gallery
MapServer generalmente usa tecnologia CGI e impiega le seguenti risorse:
1. Un http server, tipicamente Apache,
2. MapServer software
3. Un file di inizializzazione che attiva la prima view di una applicazione Mapserver
(opzionale)
4. Un Mapfile che controlla cosa fa il MapServer con i dati
5. Un template file che controlla la user interface visualizzata dalla finestra del
browser
6. Un GIS dataset
MapServer (versione CGI) è normalmente installato nella directory Cgi-bin del server
http e i file mapserver sono memorizzati nella cartella dei documenti http.
Web & GIS
1
Chiara Renso
Master SIT
Settembre 2005
Il file di inizializzazione usa una form per mandare una query iniziale al mapserver.
Il template file è un file HTML che contiene l’aspetto grafico del documento e che al suo
interno contiene caratteri speciali che vengono poi rimpiazzati dal CGI mapserver ogni
volta che viene richiamato. Agisce da interfaccia della vostra applicazione.
MapServer è “stateless” e viene mandato in esecuzione ogni volta che una query è
ricevuta. In questo modo il file di inizializzazione è necessario solo per mandare i
parametri iniziali. Il file di inizializzazione è un file html e passa i parametri di base per
l’applicazione CGI.
Mapserver usa shapefile ESRI come formato vector di default. I dati Raster possono
essere in diversi formati. Di default, MapServer supporta geoTiff file e Tiff file.
Il CGI Mapserver, in base alle direttive del file .map e ai dati degli shapefile di origine,
costruisce delle immagini gif che vengono poi richiamate dai template HTML. Le
immagini gif vengono scritte nella cartella tmp con nomi temporanei.
Browser
web
Web
server
Mapserv.exe
File.shp
File.map
Tmpimage.gif
Template.html
Esempio di file .map
NAME EX1
EXTENT -144 24 -48 101
SIZE 600 600
SHAPEPATH "C:\data"
WEB
TEMPLATE mydemo.html
IMAGEPATH "/data/tmp/"
IMAGEURL "/tmp/"
END
LEGEND
KEYSIZE 18 12
LABEL
TYPE BITMAP
SIZE MEDIUM
COLOR 0 0 89
END
STATUS ON
Web & GIS
Extent della mappa
Path dei dati sorgenti
Riferimenti per il template HTML
Legenda
2
Chiara Renso
Master SIT
Settembre 2005
END
Informazione sui layer
LAYER
NAME "canada"
Nome del file shape
DATA canada
STATUS ON
TYPE POLYGON
CLASS
NAME 'Canada'
TEMPLATE "mcd90py2.html"
COLOR 255 153 0
END
END # end of layer object
LAYER
NAME "wlakes"
DATA wlakes
STATUS OFF
TYPE POLYGON
CLASS
NAME 'Lakes'
TEMPLATE "lakespy2.html"
COLOR 49 117 185
END
END # end of layer object
LAYER
NAME "wlakes_names"
NAME lakes
TYPE ANNOTATION
DATA wlakes
STATUS ON
LABELITEM "name"
CLASSITEM "name"
LABELMAXSCALE 500000
CLASS
EXPRESSION /./
COLOR -1 -1 -1
LABEL
COLOR 0 0 0
SHADOWCOLOR 218 218 218
SHADOWSIZE 2 2
TYPE BITMAP
SIZE MEDIUM
POSITION CC
PARTIALS FALSE
BUFFER 2
END
END # end of class object
Web & GIS
3
Chiara Renso
Master SIT
Settembre 2005
END
END # end of map file
Il file .map definisce la modalità di visualizzazione della mappa.
Alcune entry del map file:
MAP: definisce i parametri generali della carta:
NAME serve come prefisso per la grafica prodotta dal CGI
EXTENT estensione spaziale iniziale.
SIZE definisce la size della mappa in pixel
SHAPEPATH definisce il path locale agli shapefiles shapefiles
WEB: definizione dei template e delle directory di sistema
REFERENCE: definizione delle caratteristiche della mappa di riferimento.
LEGEND: definizione delle caratterische della legenda
SCALEBAR: definizione della barra di scala
LAYER denota l’inizio dell’oggetto layer con le sue caratteristiche:
NAME definisce il nome del layer.
DATA definisce il nome del file di dati usato per questo layer. In caso di
shapefile non necessita di estensione .shp
TYPE definisce come i dati devono essere disegnati (point, line, polygon,
raster)
CLASS denota l’inizio della oggetto classe, ovvero le modalità di visualizzazione
di un layer
STYLE: stile di visualizzazione.
COLOR definisce il valore RGB usato per la colorazione di quella
feature
END denota la fine di un oggetto.
Il template
Il file template è la struttura di base per la generazione del layout grafico
dell’applicazione. E’ una normale pagina HTML con la definizione di apposite
Web & GIS
4
Chiara Renso
Master SIT
Settembre 2005
“variabili”, ovvero tag che vengono rimpiazzati dal mapserver prima della
visualizzazione (chiamate reference).
Mapserver CGI genererà le pagine dinamiche a partire dal template e
rimpiazzando tutte le veriabili con i valori calcolati correnti. I valori correnti
arrivano ai CGI direttamente dall’utente tramite una FORM (nella querystring).
Schema di funzionamento di Mapserver CGI, tratto da [2]
Web & GIS
5
Chiara Renso
Master SIT
Settembre 2005
Web Map Server – Web Feature Server
Mapserver supporta WMS e WFS di OGC, sia come server (fornire servizi) che come
client (integrare servizi da altri server).
Mapserver come server WMS
In particolare, per WMS i seguenti parametri sono implementati:
GetCapabilities: restituisce un documento XML con i metadati del server
GetMap: restituisce un’immagine in base alla richiesta del client
GetFeaturesInfo: restituisce informazioni sulle features interrogate
DescribeLayer: restituisce un file XML con le descrizioni dei layer pubblicati
GetLegendGraphic: restituisce un’immagine con i simboli grafici usati nella legenda
La configurazione come WMS avviene tramite definizione di opportuni parametri
che descrivono metadati nel MapFile.
Infatti, nella sezione MAP si configurano i parametri generali e nella sezione LAYER si
definiscono i metadati degli oggetti da pubblicare.
......
WEB
IMAGEPATH "/ms4w/tmp/ms_tmp/
IMAGEURL "/ms_tmp/"
HEADER "../templates/query_header.html"
FOOTER "../templates/query_footer.html"
METADATA
"map" "/ms4w/apps/ms_ogc_workshop/service/config.map"
"ows_schemas_location" "http://schemas.opengeospatial.net"
"ows_title" "Sample OWS for MapServer OGC Web Services Workshop"
"ows_onlineresource" "http://localhost/cgibin/mapserv.exe?map=/ms4w/apps/ms_ogc_workshop/service/config.map"
......
LAYER
NAME land_shallow_topo_2048
GROUP "Imagery"
PROJECTION
"init=epsg:4326"
END
TYPE RASTER
DUMP TRUE
STATUS ON
DATA ../data/land_shallow_topo_2048.tif
HEADER
../templates/land_shallow_topo_2048_query_header.html
TEMPLATE ../templates/land_shallow_topo_2048_query_body.html
Web & GIS
6
Chiara Renso
Master SIT
Settembre 2005
METADATA
# OGC:WMS specific tags
"ows_title"
"Land Surface, Shallow Water, and Shaded Topography"
END
Esempio di Richiesta GetCapabilities:
http://localhost/cgibin/mapserv.exe?map=myfile.map&service=wms&request=GetCapabilities
Mapserver come server WFS
Per il servizio WFS Mapserver è in grado di supportare le seguenti richieste:
GetCapabilities: restituisce un documento XML con la geometria e gli attributi
della feature richiesta.
GetFeature: restituisce un documento XML con la descrizione della feature
richiesta
DescribeFeatureType: restituisce un documento XML con la descrizione della
feature richiesta.
La descrizione della geometria e’ resa in GML.
La configurazione come WFS avviene tramite definizione di parametri nel
MapFile.
A livello dell’oggetto MAP si configurano i parametri generali, a livello dell’oggetto
layer i parametri da pubblicare.
WEB
....
METADATA
"wfs_title" "prova WFS"
"wfs_srs" "EPSG:23032"
"wfs_onlineresource" "http://localhost/cgibin/mapserv.exe?map=/ms4w/apps/tutorial/example1-3.map"
END
....
LAYER
..
METADATA
"wfs_title" "stati"
"gml_include_items" "all"
END
Web & GIS
7
Chiara Renso
Master SIT
Settembre 2005
Mapserver come client WMS
Per accedere ai dati di un server WMS si definisce un oggetto LAYER
indicando i parametri di connessione al server. Il WMS server accede ai propri
dati e restituisce le immagini dei layer richiesti, che vengono sovrapposte ad
eventuali altri dati per generare l’immagine finale.
LAYER
…
CONNECTION “http://ilserverwms/cgi-bin/...
CONNECTIONTYPE WMS
...
METADATA
“wms_srs” “EPSG:23032” qui sistema di riferimento sul
server
“wms_name” “nomedellayersulserver”
“wms_version” “1.1.1”
“wms_format” “image/png” qui il formato dell’immagine
END
END
Mapserver come WFS client
Analogamente al caso precedente, si definisce un oggetto LAYER con la URL
della connessione e il tipo (WFS) e tutti i metadati con il nome del layer sul
server versione del WFS il metodo della richiesta (GET,POST).
Il WFS server accede ai propri dati e restituisce un file in GML. MapServer
accede ai dati e genera le immagini, lavorando di fatto su file temporanei GML.
Riferimenti:
1. Mapserver – Marco Negretti – Politecnico di Milano
2. Bill Kropla (2005): "MapServer: Open Source GIS Development" ISBN
1590594908
3. Introduzione a Mapserver – D. Magni
4. Reference Map File: http://mapserver.gis.umn.edu/doc46/mapfilereference.html
5. Tutta la documentazione su MapServer:
http://mapserver.gis.umn.edu/docs
6. Test Suite: http://maps.dnr.state.mn.us/mapserver_demos/tests40/
Web & GIS
8
Chiara Renso
Master SIT
Settembre 2005
7. Mapserver WMS WFS: http://ms-ogc-workshop.maptools.org/
8. Map Server Tutorial: http://hypnos.cbs.umn.edu/tutorial/
• http://biometry.gis.umn.edu/tutorial/
Web & GIS
9
Chiara Renso