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