MapServer - Marco Negretti · PDF file realizzazione del webGIS • Schema di funzionamento...
Transcript of MapServer - Marco Negretti · PDF file realizzazione del webGIS • Schema di funzionamento...
MapServer
Marco NegrettiPolitecnico di Milano – Polo Regionale di Como
e-mail: [email protected]://geomatica.como.polimi.it - tel +39.031.332.7524
17/05/05 - v 1.0
proprietà
MapServer è un ambiente di sviluppo open source per la
costruzione di applicazioni web dedicate alla pubblicazione di dati
spaziali
2
storia
• 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
http://mapserver.gis.umn.edu/3
ambiente
• web server: apache• S.O: linux/UNIX, Windows, Mac
• sorgenti compilabili
• binari per–Windows–Mac OS X – rpm per Fedora Core 2
4
navigazione interattiva delle carte
5
Selezione dei layer da visualizzare
Strumenti di navigazione• zoom in• zoom out• pan• viste predefinite
Interrogazione degli elementi della carta
navigazione interattiva delle carte
6
Alcuni esempi: zoom su un’area
navigazione interattiva delle carte
7
Alcuni esempi: zoom su un’area
navigazione interattiva delle carte
8
Selezione dei layer
navigazione interattiva delle carte
9
Selezione dei layer
navigazione interattiva delle carte
10
Interrogazione di un elemento della carta
• Visualizzazione dei dati associati ad un elemento
formati supportati
• vettoriali: shapefile, PostGIS/PostgreSQL, ESRI ArcSDE e altri mediante la libreria OGR
• raster: TIFF/GeoTIFF, EPPL7 e altri mediante la libreria GDAL
11
http://www.gdal.org/ogr/
http://www.gdal.org/
realizzazione del webGIS
• Schema di funzionamento
12
utente internetbrowser
archivio datiwebGIS
Server
web
serv
er
richieste dell'utente- estensione geografica- layer-interrogazioni dati- ...
generazione di pagine HTML(dinamiche) in funzione delle
richieste ricevute
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
13
MapServer CGI
14
mapfile:definizione delle modalità di visualizzazione delle carte
(definizione dei layer, colori, simboli, scala di visualizzazione, attributi interrogabili,...)
template file:struttura della pagina html
utente internetbrowser
archivio dati
webGIS
Server
web
ser
ver
templatemap file
pagine html dinamiche
Il Mapfile
• mapfilefile di testo nel quale vengono definiti oggetti e i loro attributi in modo tale da determinare le modalità di visualizzazione di una carta
15
mapfile
• Oggetti
16
oggetto1attributo1 valoreattributo2 valore...oggetto1.1
attributo valore...
end...endoggetto2attributo1 valore...
end
definizione dell’oggetto 2
definizione dell’oggetto 1
nella definizione di un oggetto è
possibile includere un altro
oggetto
POINTS (n)
SYMBOL STYLE (n)
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)
mapfilegli oggetti
17
In alcuni casi posso avere più oggetti dello stesso tipo
sullo stesso livello
POINTS (n)
SYMBOL STYLE (n)
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)
mapfilegli oggetti
18
POINTS (n)
SYMBOL STYLE (n)
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)
mapfilegli oggetti
19
oggetti dello stesso tipo
possono trovarsi in livelli diversi
mapfile
• un esempio
20
map: definizione dei parametri generali della cartaIn 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
mapfile
• un esempio
21
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
mapfile
• un esempio
22
layer: definizione delle caratteristiche del layer (file di dati, unità di misura, template per le query,...)
metadata: elenco dei metadati
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
http://mapserver.gis.umn.edu/doc44/mapfile-reference.html
template filestruttura base per la generazione delle
pagine dinamiche
23
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/doc44/cgi-reference.html
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
24
MapScript
• MapScript permette di utilizzare diversi linguaggi di script (PHP,Perl, Python e Ruby) per accedere alle C API di MapServer–PHP/Mapscript ⇒ PHP–SWIGMapScript ⇒ Perl, Python, Ruby
25
http://mapserver.gis.umn.edu/doc44/phpmapscript-class-guide.html
http://mapserver.gis.umn.edu/doc44/swigmapscript-reference.html
MapScript
26
mapfile:definizione delle modalità di visualizzazione delle carte
file html + script:gli script richiamano le API di MapServer per visualizzare gli oggetti (carte, legenda,...)
utente internetbrowser
C API
archivio dati
webGIS
Server
web
ser
ver
html+
scriptmap file
pagine html dinamiche
MapScript
• file HTML + script
27
HTML
script
chiamate alle API
esempio in PHP
Gli script vengono eseguiti e
“costruiscono” la pagina HTML
MapScriptSempre 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&...
28
Le API di MapServer
vengono chiamate come altre funzioni e contribuiscono alla generazione
della pagina
strumenti di supporto
• Alcuni strumenti utili per lo sviluppo di applicazioni basate su MapServer–MapEdit–Applet Java
29
http://mapserver.gis.umn.edu/contributed.html
MapEdit
• E’ uno strumento open source per l’editing e la gestione del map file.–permette di impostare i parametri del
map file 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
• Realizzato da DM Solutions
30http://www.maptools.org/maplab/
MapEdit
31
elenco degli oggetti del
mapfile valori dei parametri per ogni oggetto
aggiungi oggetti al mapfile
apri, salva, nuovo mapfile...
MapEdit
visualizzazione del mapfile generato
32
MapEdit
33
anteprima della carta
applet java
• gli applet java possono essere utilizzati per aggiungere funzionalità a MapServer–zoom box, pan, query box, misura di
distanze,...
• jBox java applet
• Rosa java applet
34
http://www.maptools.org/rosa/
http://mapserver.gis.umn.edu/doc44/jbox-howto.html
alcune realizzazioni
• MapServer Atlas– http://www2.dmsolutions.ca/gmap/
• Atlas of eastern and southestern europe– http://pentium7.gis.univie.ac.at/mapserver/
atos/htdocs/prototyp/• Fasti on line: database interrogabile
degli scavi archeologici– http://www.fastionline.org/
• Cartoradio: localizzazione delle stazioni di telefonia mobile in Francia– http://www.cartoradio.fr/
35
http://mapserver.gis.umn.edu/gallery.html
riferimenti
• MapServer ⇒ 4.4.2• MapEdit ⇒ 2.2• Rosa applet ⇒ 1.2.0
36