MapServer Marco Negretti Politecnico di Milano Polo Regionale di Como e-mail: marco.negretti@polimi.it http://geomatica.como.polimi.it 08/02/06 - v 1.2
proprietà MapServer è un ambiente di sviluppo open source per la costruzione di applicazioni web dedicate alla pubblicazione di dati spaziali 2
E stato inizialmente sviluppato alla Univesity of Minnesota (UMN) nell ambito del progetto ForNet sostenuto dalla NASA insieme al Minnesota Department of Natural Resources Lo sviluppo è continuato con un altro progetto NASA, il progetto TerraSIP MapServer è in continua crescita, con diversi sviluppatori e enti nel mondo che si stanno occupando del suo sviluppo storia http://mapserver.gis.umn.edu/ 3
web server: apache S.O: linux/unix, Windows, Mac ambiente sorgenti compilabili binari per Windows Mac OS X rpm per Fedora 4
navigazione interattiva delle carte Strumenti di navigazione/interrogazione della carta Selezione dei layer da visualizzare 5
navigazione interattiva delle carte Alcuni esempi: zoom su un area 6
navigazione interattiva delle carte Alcuni esempi: zoom su un area 7
navigazione interattiva delle carte Selezione dei layer 8
navigazione interattiva delle carte Selezione dei layer 9
navigazione interattiva delle carte Interrogazione di un elemento della carta Visualizzazione dei dati associati ad un elemento 10
navigazione interattiva delle carte Interrogazione di un elemento della carta Visualizzazione dei dati associati ad un elemento 11
formati supportati vettoriali: shapefile, PostGIS/PostgreSQL, ESRI ArcSDE e altri mediante la libreria OGR raster: http://www.gdal.org/ogr/ TIFF/GeoTIFF, EPPL7 e altri mediante la libreria GDAL http://www.gdal.org/ 12
Schema di funzionamento realizzazione del webgis utente internet browser richieste dell'utente - estensione geografica - layer -interrogazioni dati -... web server webgis generazione di pagine HTML (dinamiche) in funzione delle richieste ricevute archivio dati Server 13
realizzazione del webgis Due modalità generazione delle pagine dinamiche tramite chiamata al programma mapserv (directory /cgi-bin) MapServer CGI utilizzo di linguaggi di script per la generazione delle pagine HTML dinamiche e accesso ai servizi di MapServer tramite chiamate alle API MapScript 14
MapFile: definizione delle modalità di visualizzazione delle carte (definizione dei layer, colori, simboli, scala di visualizzazione, attributi interrogabili,...) pagine html dinamiche utente internet browser MapServer CGI web server webgis map file template Server archivio dati template file: struttura della pagina html 15
MapFile MapFile file di testo nel quale vengono definiti oggetti e i loro parametri in modo tale da determinare le modalità di visualizzazione di una carta 16
MapFile Oggetti definizione dell oggetto 1 nella definizione di un oggetto è possibile includere un altro oggetto definizione dell oggetto 2 oggetto1 parametro1 valore parametro2 valore... oggetto1.1 parametro valore... end... end oggetto2 parametro1 valore... end 17
gli oggetti SYMBOL POINTS (n) STYLE (n) MapFile LEGEND LABEL SCALEBAR LABEL REFERENCE METADATA PARAMETER (n) MAP QUERYMAP FEATURE (n) POINTS (n) LAYER (n) GRID JOIN OUTPUT FORMAT PROJECTION STYLE (n) PROJECTION CLASS (n) LABEL WEB METADATA PARAMETER (n) 18
gli oggetti SYMBOL LEGEND SCALEBAR POINTS (n) STYLE (n) LABEL LABEL MapFile In alcuni casi posso avere più oggetti dello stesso tipo sullo stesso livello REFERENCE METADATA PARAMETER (n) MAP QUERYMAP FEATURE (n) POINTS (n) LAYER (n) GRID JOIN OUTPUT FORMAT PROJECTION STYLE (n) PROJECTION CLASS (n) LABEL WEB METADATA PARAMETER (n) 19
gli oggetti SYMBOL LEGEND SCALEBAR POINTS (n) STYLE (n) LABEL LABEL MapFile oggetti dello stesso tipo possono trovarsi in livelli diversi REFERENCE METADATA PARAMETER (n) MAP QUERYMAP FEATURE (n) POINTS (n) LAYER (n) GRID JOIN OUTPUT FORMAT PROJECTION STYLE (n) PROJECTION CLASS (n) LABEL WEB METADATA PARAMETER (n) 20
MapFile un esempio map: definizione dei parametri generali della carta In questo oggetto sono contenuti tutti gli altri oggetti del map file web: definizione dei template e delle directory di sistema reference: definizione delle caratteristiche della carta di riferimento 21
MapFile un esempio legend: definizione delle caratteristiche della legenda scalebar: definizione della barra di scala label: la barra di scala contiene dei caratteri le cui proprietà sono definite con questo oggetto 22
MapFile un esempio layer: definizione delle caratteristiche del layer (file di dati, unità di misura, template per le query,...) class: definizione dei parametri di visualizzazione. Per ogni layer posso definire più classi in modo da cambiare le modalità di visualizzazione in base alla scala corrente o al valore di un attributo style: stile di visualizzazione metadata: elenco dei metadati http://mapserver.gis.umn.edu/docs/reference/mapfile 23
template file struttura base per la generazione delle pagine dinamiche normale codice HTML + definizione delle variabili : [nome variabile] MapServer CGI genererà le pagine dinamiche che saranno costituite dal template con i valori che le variabili hanno nella sessione corrente http://mapserver.gis.umn.edu/docs/reference/templatereference 24
MapServer CGI Tramite una form MapServer CGI viene chiamato e gli viene passata una stringa con i parametri di stato: http://geo28.como.polimi.it/cgi-bin/mapserv?img.x=164& img.y=166&mode=browse&layer=reticolo&zoomdir=1& zoomsize=2&imgxy=149.5+149.5&... In funzione dei quali viene generata una pagina HTML Alle variabili viene sostituito il loro valore corrente 25
MapScript MapScript permette di utilizzare diversi linguaggi di script (PHP, Perl, Python e Ruby) per accedere alle C API di MapServer PHP/Mapscript PHP SWIG MapScript Perl, Python, Ruby http://mapserver.gis.umn.edu/docs/reference/phpmapscript-class http://mapserver.gis.umn.edu/docs/reference/mapscript/ 26
MapFile: definizione delle modalità di visualizzazione delle carte pagine html dinamiche utente internet browser MapScript web server webgis map file C API html + script Server archivio dati file html + script: gli script richiamano le API di MapServer per visualizzare gli oggetti (carte, legenda,...) 27
file HTML + script MapScript HTML script chiamate alle API esempio in PHP 28
MapScript Sempre tramite una form vengono passati i parametri di stato: Gli script vengono eseguiti e costruiscono la pagina HTML Le API di MapServer vengono chiamate come altre funzioni e contribuiscono alla generazione della pagina http://geo28.como.polimi.it/wgis_00/cartaj.phtml? layer=bacino_po&layer=ret_carto&zoomsize=2&... 29
strumenti di supporto MapLab suite di strumenti web-based che supportano la creazione e la gestione di applicazioni web basate su MapServer. E costituita da tre componenti: MapEdit: strumento visuale per l editing e la gestione dei mapfile di MapServer MapBrowser: strumento visuale che per la selezione di dati spaziali da una fonte locale o da un server WMS GMapFactory: strumento di supporto allo sviluppo di applicazioni di web mapping (definizione layout della pagina web e inclusione degli strumenti di navigazione/interrogazione) http://www.maptools.org/maplab/ Sviluppato da DM Solutions: http://www.dmsolutions.ca/ 30
MapEdit Con MapEdit si possono facilmente controllare di tutti gli aspetti di configurazione del MapFile ed inoltre ne effettua la validazione, garantendone così la correttezza permette di impostare i parametri del MapFile mediante una interfaccia basata su form controlla che la struttura del map file sia corretta permette di visualizzare l anteprima della carta di cui si sta definendo il map file 31
apri, salva, nuovo mapfile... aggiungi oggetti al mapfile MapEdit elenco degli oggetti del mapfile valori dei parametri per ogni oggetto 32
MapEdit visualizzazione del mapfile generato 33
MapEdit anteprima della carta 34
gli applet java possono essere utilizzati per aggiungere funzionalità a MapServer applet java zoom box, pan, query box, misura di distanze,... jbox java applet http://mapserver.gis.umn.edu/docs/howto/jbox Rosa java applet http://www.maptools.org/rosa/ 35
MapServer Atlas http://www2.dmsolutions.ca/gmap/ alcune realizzazioni Autorità di bacino del fiume Po - AdbPo http://www.adbpo.it/maplab_projects/webgis/adbpo_gis /inizio.phtml?inizio=api http://www.adbpo.it/maplab_projects/webgis/adbpo_gis /inizio.phtml?inizio=smo Fasti on line: database interrogabile degli scavi archeologici http://www.fastionline.org/ GeoDemo: rappresentazione cartografica di alcuni dati e indicatori ISTAT http://demo.istat.it/index.html http://mapserver.gis.umn.edu/gallery.html 36
riferimenti MapServer 4.6.2 37