MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open...

42
MapServer Marco Negretti Politecnico di Milano – Polo Regionale di Como e-mail: [email protected] http://geomatica.como.polimi.it Università degli Studi di Genova - 22/05/08

Transcript of MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open...

Page 1: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

MapServer

Marco NegrettiPolitecnico di Milano – Polo Regionale di Como

e-mail: [email protected]://geomatica.como.polimi.it

Università degli Studi di Genova - 22/05/08

Page 2: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

introduzione

MapServer è un ambiente di sviluppo open source per la

costruzione di applicazioni web dedicate alla pubblicazione di dati

spaziali

2

Page 3: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

introduzione

• 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 è continua nell'ambito di 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

Page 4: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

introduzione

• Il progetto MapServer aderisce all'Open Source Geospatial Foundation (OSGEO)

• OSGEO ha come obiettivo di incoraggiare l'uso e lo sviluppo collaborativo dei progetti open source che ne fanno parte– GRASS

– GDAL/OGR

– gvSIG

– ...

4http://www.osgeo.org

Page 5: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

ambiente

• web server: apache, IIS• S.O: linux/UNIX, Windows, Mac

• sorgenti compilabili

• binari per– Windows– Mac OS X – rpm per Fedora– Gentoo– ...

5

Page 6: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

formati supportati• vettoriali:

– shapefile, PostGIS, ESRI ArcSDE, Oracle Spatial, MySQL e altri mediante la libreria OGR

• raster:– TIFF/GeoTIFF, EPPL7 e altri mediante la libreria

GDAL

• Implementa le specifiche del "Open Geospatial Consortium (OGC)":

– WMS (client/server), non-transactional WFS (client/server),

– WMC, WCS, Filter Encoding, SLD, GML, SOS

6

http://www.gdal.org/ogr/

http://www.gdal.org/

http://www.opengeospatial.org/

Page 7: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

navigazione interattiva delle carte

Selezione dei layer da visualizzare

Strumenti di navigazione/interrogazione della carta

7

Page 8: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

navigazione interattiva delle carte

Interrogazione

Visualizzazione degli attributi di un

oggetto

8

Page 9: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

navigazione interattiva delle carte

Interrogazione

9

Page 10: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

realizzazione del webGIS

• Schema di funzionamento

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

10

Archivio dati:- file (shape, TIFF, ...)- connessione a database- OGC Web Services (OWS)

Page 11: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

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

Page 12: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

MapServer CGIMapFile: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

we

b se

rve

r

templatemap file

pagine html dinamiche

12

Page 13: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

MapFile

• MapFilefile 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

Page 14: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

MapFile

• Oggettioggetto1 parametro1 valore parametro2 valore ... oggetto1.1 parametro valore ... end...endoggetto2 parametro1 valore ...end

definizione dell’oggetto 2

definizione dell’oggetto 1

nella definizione di un oggetto è

possibile includere un altro

oggetto

14

Page 15: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

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)

gli oggetti

15

MapFile

Page 16: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

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)

gli oggetti

16

MapFile

Page 17: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

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)

gli oggetti

oggetti dello stesso tipo

possono trovarsi in livelli diversi

17

MapFile

Page 18: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

MapFile

• un esempio

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

18

Page 19: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

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

19

Page 20: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

MapFile• un esempio

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/docs/reference/mapfile

20http://geomatica.como.polimi.it/corsi/sw_gis/mapfile.pdf

Page 21: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

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

21

Page 22: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

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

Page 23: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

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,

Java

http://mapserver.gis.umn.edu/docs/reference/phpmapscript-class

http://mapserver.gis.umn.edu/docs/reference/mapscript/

23

Page 24: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

MapScript

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

we

b se

rve

r

html+

scriptmap file

pagine html dinamiche

24

Page 25: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

MapScript

• file HTML + script

HTML

chiamate alle API

esempio in PHP25

script

Page 26: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

Gli script vengono eseguiti e

“costruiscono” la pagina HTML

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&...

Le API di MapServer

vengono chiamate come altre funzioni

e contribuiscono alla generazione

della pagina

26

Page 27: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/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● text/html – in html secondo quanto stabilito nei template

del MapFile● GML – formato GML

● DescribeLayer restituisce un documento XML con la descrizione dei layer pubblicati

● GetLegendGraphic restituisce un’immagine con i simboli grafici utilizzati

MapServer WMS Server

27

Page 28: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

La configurazione come WMS server avviene tramite la definizione di opportuni parametri nel MapFile

A livello dell’oggetto MAP si configurano i parametri generali del servizio

MapServer WMS Server

In generale i metadati relativi alla configurazione WMS si presentano tutti con una intestazione comune:wms_*, ows_*

28

Page 29: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

29

A livello dell’oggetto LAYER si configurano i parametri dei dati da pubblicare

MapServer WMS Server

mediante: - alcuni parametri dell’oggetto layer - metadati appositamente definiti

http://mapserver.gis.umn.edu/docs/howto/wms_server

Page 30: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/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)

MapServer WFS Server

30

Page 31: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/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

MapServer WFS Server

In generale i metadati relativi alla configurazione WFS si presentano tutti con una intestazione comune:wfs_*, ows_*

31

Page 32: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

32

A livello dell’oggetto LAYER si configurano i parametri dei dati da pubblicare

MapServer WMS Server

mediante: - alcuni parametri dell’oggetto layer - metadati appositamente definiti

http://mapserver.gis.umn.edu/docs/howto/wfs_server

Page 33: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

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/

Sviluppato da DM Solutions: http://www.dmsolutions.ca/33

Page 34: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

chameleon

• Richiede che siano installati:­ Web server

­ PHP 4.2.2+ installato come CGI

­ PHP/MapScript 4.2+

• Utilizza:– HTML

– CSS

– JavaScript

– XML

– PHP

34

Page 35: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

chameleon

Il funzionamento si basa sul concetto di widget• I widget sono richiamati medianti particolari tag all'interno della pagina HTML del template• Ad ogni widget corrisponde una determinata funzione• Quando la pagina viene caricata, chameleon sostituisce ai widget il codice generato in funzione dello stato corrente• E' possibile creare dei nuovi widget introducendo così nuove funzioni

35

Page 36: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

chameleon

• Esempio

36

Widget

Page 37: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

chameleon

37

Codice sostituito

Page 38: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

ka-Mapka-MapApplicazione 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/

Sviluppato da DM Solutions: http://www.dmsolutions.ca/38

Page 39: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

ka-Map

Alcuni riferimenti:

il wiki:- http://ka-map.ominiverdi.org/wiki/

alcuni esempi di applicazioni:- http://www.ominiverdi.it/index.php/

kamap/Ka-Map!

39

Page 40: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

pacchetti software

FGS Linux Installer• pacchetto software che include MapServer, Apache, PHP e tutte le librerie necessarie per utilizzare MapServer sotto LinuxMapServer for Windows - MS4W• pacchetto software che include MapServer e tutte le librerie necessarie per utilizzare MaPServer sotto Windows

http://www.maptools.org/fgs/

http://www.maptools.org/ms4w/40

Page 41: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

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

Page 42: MapServer - Marco Negretti · PDF fileGDAL • Implementa le specifiche del "Open Geospatial Consortium (OGC)": –WMS (client/server), non-transactional WFS (client/server),

riferimenti

• MapServer ⇒ 5.0.2

42http://creativecommons.org/licenses/by-nc-nd/3.0/