Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Marco Negretti
Politecnico di Milano – Polo Regionale di Como
e-mail: marco.negretti@polimi.it
http://geomatica.como.polimi.it
MapServer è un ambiente di
sviluppo open source per la
costruzione di applicazioni web
dedicate alla pubblicazione di dati
spaziali
2
introduzione
http://mapserver.gis.umn.edu/
3
introduzione
http://www.osgeo.org
4
ambiente
• sorgenti compilabili
• binari per
– Windows
– Mac OS X
– rpm per Fedora
– Gentoo
– ...
5
formati supportati
• vettoriali:
– shapefile, PostGIS, ESRI ArcSDE, Oracle
Spatial, MySQL 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/
• Implementa le specifiche del "Open
Geospatial Consortium (OGC)":
– WMS (client/server), non-transactional WFS
(client/server),
– WMC, WCS, Filter Encoding, SLD, GML, SOS
http://www.opengeospatial.org/
6
navigazione interattiva delle carte
Visualizzazione degli
attributi di un
oggetto
8
navigazione interattiva delle carte
Interrogazione
9
realizzazione del webGIS
• Schema di funzionamento
utente internet
browser
Server
Archivio dati:
- file (shape, TIFF, ...)
- connessione a database
- OGC Web Services (OWS)
10
realizzazione del webGIS
• Due modalità
– generazione delle pagine HTML
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
11
MapFile: MapServer CGI
definizione delle modalità di
visualizzazione delle carte
(definizione dei layer,
colori, simboli, scala di utente internet
visualizzazione, attributi browser
interrogabili,...)
pagine html dinamiche
webGIS
web server
archivio dati
Server
template file:
struttura della pagina html
12
MapFile
• MapFile
file di testo nel quale vengono definiti
gli oggetti e i loro parametri in modo
tale da determinare le modalità di
visualizzazione di una carta
13
MapFile
• Oggetti
oggetto1
definizione parametro1 valore
dell’oggetto 1 parametro2 valore
...
nella definizione oggetto1.1
di un oggetto è parametro valore
possibile ...
includere un altro end
oggetto ...
end
oggetto2
parametro1 valore
definizione ...
dell’oggetto 2 end
14
POINTS (n) MapFile
gli oggetti
SYMBOL STYLE (n)
LEGEND LABEL
SCALEBAR LABEL
15
POINTS (n) MapFile
gli oggetti
SYMBOL STYLE (n)
16
POINTS (n) MapFile
gli oggetti
SYMBOL STYLE (n)
oggetti dello
LEGEND LABEL
stesso tipo
possono trovarsi
in livelli diversi
SCALEBAR LABEL
17
MapFile
• un esempio
18
MapFile
• un esempio
19
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
http://geomatica.como.polimi.it/corsi/sw_gis/mapfile.pdf
20
template file
struttura base per la generazione delle
pagine dinamiche
normale codice
HTML
+
definizione delle
“variabili”:
[nome variabile]
http://mapserver.gis.umn.edu/docs/reference/templatereference
21
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
22
MapScript
http://mapserver.gis.umn.edu/docs/reference/phpmapscript-class
http://mapserver.gis.umn.edu/docs/reference/mapscript/
23
MapScript
MapFile:
definizione delle modalità di utente internet
visualizzazione delle carte browser
webGIS
web server
html
map file C API +
script
archivio dati
Server
24
MapScript
• file HTML + script
HTML
script
chiamate
alle API
esempio in PHP
25
MapScript
Sempre tramite una form vengono passati i parametri
di stato: http://geo28.como.polimi.it/wgis_00/cartaj.phtml?
layer=bacino_po&layer=ret_carto&zoomsize=2&...
Gli script vengono
eseguiti e
“costruiscono” la
pagina HTML
Le API di
MapServer
vengono chiamate
come altre funzioni
e contribuiscono
alla generazione
della pagina
26
MapServer WMS Server
MapServer supporta le seguenti richieste WMS
(1.0.0, 1.0.7, 1.1.0, 1.1.1):
●
GetCapabilities restituisce un documento XML con i
metadati del server
●
GetMap restituisce un immagine in base alle richieste
inoltrate dal client
● GetFeaturesInfo restituisce informazioni sulle
features interrogate
● text/plain - formato testo
del MapFile
● GML – formato GML
28
MapServer WMS Server
mediante:
- alcuni parametri dell’oggetto layer
- metadati appositamente definiti
http://mapserver.gis.umn.edu/docs/howto/wms_server
29
MapServer WFS Server
MapServer supporta le seguenti richieste WFS
(1.0.0):
• GetCapabilities restituisce un documento XML con i
metadati del server
• GetFeature restituisce un documento XML con la
geometria e gli attributi della feature richiesta
• DescribeFeatureType restituisce un documento XML
con la descrizione della feature richiesta
MapServer implementa le funzioni base di un WFS: non
sono implementate le richieste di modifica delle features
Transaction e LockFeature
La descrizione della geometria è resa in GML
• per default GML2
• GML3 se specificato
(parametro OUTPUTFORMAT=GML3)
30
MapServer WFS Server
La configurazione come WFS server avviene tramite la
definizione di opportuni parametri nel MapFile
A livello dell’oggetto map si configurano i parametri generali
del servizio
31
MapServer WMS Server
mediante:
- alcuni parametri dell’oggetto layer
- metadati appositamente definiti
http://mapserver.gis.umn.edu/docs/howto/wfs_server
32
chameleon
Chameleon
• E' un ambiente distribuito e personalizzabile
per lo sviluppo di applicazioni web.
• E' sviluppato utilizzando MapServer come
motore (utilizzando la libreria PHP/MapScript).
• MapFile per la definizione delle proprietà dei
dati da pubblicare.
• Template file, con una struttura diversa da
quello visto per MapServer CGI, per la
definizione della pagina da pubblicare.
http://chameleon.maptools.org/
34
chameleon
35
chameleon
• Esempio
Widget
36
chameleon
Codice
sostituito
37
ka-Map
ka-Map
Applicazione interattiva di web-mapping, con
navigazione continua (tipo google maps)
• Lato Client:
✔ AJAX e DHTML
➔ navigazione continua
• Lato Server:
✔ MapServer - Mapscript
✔ PHP e GD
➔ creazione tile
http://ka-map.maptools.org/
Alcuni riferimenti:
il wiki:
- http://ka-map.ominiverdi.org/wiki/
39
pacchetti software
http://www.maptools.org/ms4w/
40
alcune realizzazioni
• MapServer Atlas
– http://www2.dmsolutions.ca/gmap/
• Autorità di bacino del fiume Po - AdbPo
– http://www.adbpo.it/maplab_projects/webgis/adbpo_gis/i
nizio.phtml?inizio=APi
– http://www.adbpo.it/maplab_projects/webgis/adbpo_gis/i
nizio.phtml?inizio=SMo
• Fasti on line: database interrogabile degli scavi
archeologici
– http://www.fastionline.org/
http://mapserver.gis.umn.edu/gallery
41
riferimenti
• MapServer ⇒ 5.0.2
http://creativecommons.org/licenses/by-nc-nd/3.0/
42