MapServer - marconegretti.files.wordpress.com · del progetto ForNet sostenuto dalla NASA insieme...

Post on 15-Feb-2019

217 views 0 download

Transcript of MapServer - marconegretti.files.wordpress.com · del progetto ForNet sostenuto dalla NASA insieme...

MapServer

Marco NegrettiPolitecnico di Milano – Polo Regionale di Como

e-mail: marco.negretti@polimi.ithttp://geomatica.como.polimi.it

Università degli Studi di Genova - 25/05/07

introduzione

MapServer è un ambiente di sviluppo open source per la

costruzione di applicazioni web dedicate alla pubblicazione di dati

spaziali

2

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 è 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, IIS• S.O: linux/UNIX, Windows, Mac

• sorgenti compilabili

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

4

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

5

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

http://www.gdal.org/

http://www.opengeospatial.org/

navigazione interattiva delle carte

Selezione dei layer da visualizzare

Strumenti di navigazione/interrogazione della carta

6

navigazione interattiva delle carte

Alcuni esempi: zoom su un’area

7

navigazione interattiva delle carte

Selezione dei layer

8

navigazione interattiva delle carte

Interrogazione

• Visualizzazione degli attributi di un oggetto

9

navigazione interattiva delle carte

Interrogazione

10

realizzazione del webGIS

• Schema di funzionamentoutente internet

browser

archivio datiwebGIS

Server

web

serv

er

richieste dell'utente- estensione geografica- layer-interrogazioni dati- ...

generazione di pagine HTML(dinamiche) in funzione delle

richieste ricevute

11

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

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

12

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

web

ser

ver

templatemap file

pagine html dinamiche

13

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

14

MapFile

• Oggetti oggetto1 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

15

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

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

17

MapFile

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

18

MapFile

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

19

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

20

MapFile

• un esempiolayer: 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/mapfile21

template filestruttura base per la generazione delle

pagine dinamichenormale 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

22

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

23

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/

24

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

web

ser

ver

html+

scriptmap file

pagine html dinamiche

25

MapScript

• file HTML + script

HTML

chiamate alle API

esempio in PHP26

script

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

Le API di MapServer

vengono chiamate come altre funzioni e contribuiscono alla generazione

della pagina

27

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/28

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

29

chameleon

• Esempio

30

Widget

chameleon

31

Codice sostituito

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/32

ka-Map

Alcuni riferimenti:

http://www.ominiverdi.it/

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

alcuni esempi di applicazioni:- http://www.ominiverdi.it/index.php?page=Ka-Map!&toc=kamap#

33

MapLabMapLabsuite 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/34

MapLab - 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 MapFile sia corretta

– permette di visualizzare l’anteprima della carta di cui si sta definendo il MapFile

35

MapEdit

elenco degli oggetti del

mapfile valori dei parametri per ogni oggetto

aggiungi oggetti al mapfile

apri, salva, nuovo mapfile...

36

MapLab - MapEdit

visualizzazione del mapfile generato

37

MapLab - MapEdit

anteprima della carta

38

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 http://www.maptools.org/rosa/

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

39

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

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

/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://geodemo.istat.it/geoindex.html

http://mapserver.gis.umn.edu/gallery

41

riferimenti

• MapServer ⇒ 4.10

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