Università degli Studi di Genova 18 maggio 2011 Introduzione a webgis e Open Web Services (OWS) Marco Negretti - marco.negretti@polimi.it Politecnico di Milano
Indice Introduzione generale webgis Open Web Services - Geoservizi web MapServer Open Source??? 2
Introduzione ai webgis e Open Web Services 3
schema browser browser browser browser/ browser/ applicazione applicazione browser/ applicazione webgis OWS web SERVER file (shape, dwg,...) dati "interni" DBMS... OWS dati "esterni" 4
funzionalità Visualizzazione/interrogazione dei dati webgis: navigazione tramite interfaccia web OWS: WMS (Web Map Service), WFS (Web Feature Service), WCS (Web Coverage Service) SOS (Sensor Observation Service)... Modifica ed elaborazione dei dati OWS: WFS e SOS transactional WPS (Web Processing Service)... 5
webgis browser webgis interrogazione interrogazione estensione carta estensione carta contenuti cartografici (layer) contenuti cartografici (layer) accesso ai dati accesso ai dati cartografia CTR 6 strade provinciali confini comunali
webgis browser webgis ricerca delle informazioni richieste dal ricerca delle informazioni richieste dal client: client: per i layer richiesti per i layer richiesti relativamente alla zona di interesse relativamente alla zona di interesse cartografia strade CTR 7 comuni
webgis browser webgis generazione generazione dell'immagine finale dell'immagine finale cartografia 8
webgis architettura server based tutte le operazioni di accesso, elaborazione dati e navigazione vengono svolte sul server ogni nuova richiesta si traduce in una richiesta al server che la elabora per costruire una nuova pagina HTML di risposta piena indipendenza del servizio dalla configurazione HW e SW del client prestazioni compromesse da situazioni di carico di lavoro non previste 9
architettura client based il server distribuisce i dati e il codice necessario per l elaborazione al client le operazioni vengono quindi svolte in locale non si hanno problemi di sovraccarico si dipende dall architettura del client: necessità di plug-in sul client per visualizzare le carte client in grado di sostenere le operazioni richieste soluzione mista webgis 10
Open Web Services (OWS) Standard definiti dall Open Geospatial Consortium OGC: http://www.opengeospatial.org/ Interoperabilità e indipendenza dall ambiente software nell accesso ai servizi La comunicazione è basata sul linguaggio xml (extensible Markup Language) che è utilizzato per la definizione e la descrizione delle applicazioni La comunicazione si basa (nella gran parte dei casi) su protocollo HTTP 11
Open Web Services (OWS) Possiamo descrivere il funzionamento in quattro fasi: Il client contatta il server in merito alle caratteristiche del servizio fornito Il server fornisce al client un documento xml contenente le funzionalità e i dati disponibili Il client fa la propria richiesta al server Il server risponde in base a quanto richiesto scambio di informazioni automatizzato 12
Open Web Services (OWS) Sono stati definiti diversi standard: Web Coverage Service (WCS) - 2.0 Web Feature Service (WFS) - 2.0 Web Map Service (WMS) - 1.3.0 Web Processing Service (WPS) - 1.0.0 Catalog Service (CS-W) - 2.0.2 Sensor Observation Service (SOS) - 1.0.0... e altri ancora 13 http://www.opengeospatial.org/standards
Open Web Services (OWS) HTTP OWS CLIENT A OWS Server 1 OWS CLIENT B OWS Server 2 OWS CLIENT C OWS Server 3 OWS 4 OWS 5 14
Open Web Service - un esempio Open Web Service Laboratorio di Geomatica http://ows.como.polimi.it/ Web service geografico per la gestione e la distribuzione di contenuti cartografici e dei metadati ad essi associati Servizio WMS dimostrativo per i dati vettoriali dei DB topografici comunali della Regione Lombardia Servizio WMS dimostrativo per i dati della Regione Sardegna Servizio CS-W per la pubblicazione dei metadati 15
WMS - esempio Il WMS client chiede al WMS server i dati disponibili http://ows.como.polimi.it/cgi-bin/wms_desio? SERVICE=WMS& VERSION=1.3& REQUEST=getcapabilities 16
17 WMS - esempio <Service> <Name>OGC:WMS</Name> <Title>WMS db Desio</Title> sul servizio <Abstract>Test sulle funzionalità WMS sui dati a livello comunale</abstract> <KeywordList> <Keyword>WMS</Keyword> <Keyword> db2k</keyword> <Keyword> Regione Lombardia</Keyword> </KeywordList> <OnlineResource xlink:href="http://ows.como.polimi.it/cgibin/wms_desio?"/> <ContactInformation> <ContactPersonPrimary> <ContactPerson>Marco Negretti</ContactPerson> <ContactOrganization>Politecnico di Milano- Polo Regionale di Como</ContactOrganization> </ContactPersonPrimary> <ContactPosition>Technical Officer</ContactPosition> <ContactAddress> <AddressType>Postal</AddressType> <Address>Vial Valleggio 11</Address> informazioni generali
WMS - esempio dati disponibili <Layer queryable="1" opaque="0" cascaded="0"> <Name>Unita_Volumetrica</Name> <Title>Unita Volumetrica</Title> <LatLonBoundingBox minx="9.17459" miny="45.5875" maxx="9.23707" maxy="45.6423"/> <BoundingBox SRS="EPSG:32632" minx="513619" miny="5.04824e+06" maxx="518474" maxy="5.05432e+06"/> </Layer> <Layer queryable="1" opaque="0" cascaded="0"> <Name>Edificio</Name> <Title>Edificio</Title> <LatLonBoundingBox minx="9.17459" miny="45.5875" maxx="9.23707" maxy="45.6423"/> <BoundingBox SRS="EPSG:32632" minx="513619" miny="5.04824e+06" maxx="518474" maxy="5.05432e+06"/> </Layer> 18
WMS - esempio Il WMS client inoltra una richiesta al WMS server http://ows.como.polimi.it/cgi-bin/wms_desio? SERVICE=WMS& VERSION=1.3& REQUEST=GetMap& FORMAT=image/png& SRS=EPSG:32632& BBOX=515100,5051000,515500,5051500& WIDTH=400&HEIGHT=500& LAYERS=Area_stradale,Edificio,Area_verde WMS client WMS Server 19
WMS - esempio Il WMS server accede ai sui dati e restituisce le immagini dei layer richiesti nella zona di interesse WMS client WMS Server 20
WMS - esempio Queste immagini vengono sovrapposte ed unite ad altri eventuali dati locali dal client e viene generata l immagine finale 21
WMS client 22 Accedere ai dati da browser è un "po' scomodo" Lo scopo di questi servizi è condividere la cartografia in modo standard l'utente può utilizzare qualsiasi strumento purché questo sia conforme agli standard OGC Cambia la prospettiva rispetto al webgis, in cui chi pubblicava i dati doveva preoccuparsi anche di fornire gli strumenti di navigazione un esempio con OpenJump
WMS client - OpenJump GIS Desktop open source basato su Java 23 http://openjump.org/
WMS client - OpenJump Oltre ai dati in locale posso utilizzare dati da server WMS/WFS URL del server: http://ows.como.polimi.it/cgi-bin/wmsardinia 24 seleziona cosa aprire: WMS
WMS client - OpenJump layer pubblicati dal WMS server (GetCapabilities) layer selezionati per la visualizzazione (GetMap) 25
WMS client - OpenJump I layer sono visualizzati, eventualmente in sovrapposizioni con altri dati aperti in locale 26 http://geomatica.como.polimi.it/corsi/sw_gis/openjump13.pdf
OWS Quindi chi pubblica i dati non si preoccupa del SW sarà utilizzato per accedervi chi legge i dati non è vincolato dal formato originale di questi Meno vincoli all'accesso dell'informazione 27
28 alcuni strumenti per realizzare webgis e/o OWS MapServer Università del Minnesota http://www.mapserver.org/ GeoServer http://geoserver.org/ MapGuide Autodesk http://mapguide.osgeo.org/ pywps http://pywps.wald.intevation.org/ Zoo project http://www.zoo-project.org/ istsos http://istgeo.ist.supsi.ch/site/projects/istsos GeoMedia WebMap Intergraph http://www.intergraph.com/ ArcIMS ESRI http://www.esriitalia.it/ Open Source
29 http://www.mapserver.org
30 MapServer - introduzione MapServer è un ambiente di sviluppo open source per la costruzione di applicazioni web dedicate alla pubblicazione di cartografia Scritto in linguaggio C Sviluppato iniziato dalla Univesity of Minnesota (UMN) con il progetto ForNet sostenuto dalla NASA insieme al Minnesota Department of Natural Resources Lo sviluppo è continuato nell'ambito di un altro progetto NASA, il progetto TerraSIP
31 MapServer - introduzione MapServer è in continua crescita, con diversi sviluppatori e enti nel mondo che si stanno occupando del suo sviluppo 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... http://www.osgeo.org
MapServer - introduzione web server: apache, IIS S.O: linux/unix, Windows, Mac disponibilità dei file sorgenti da compilare sorgenti compilabili pacchetti precompilati Debian Ubuntu Windows Mac OS X... 32
MapServer - introduzione vettoriali: shapefile, PostGIS, ESRI ArcSDE, Oracle Spatial, MySQL e altri mediante la libreria OGR (http://www.gdal.org/ogr/) raster: TIFF/GeoTIFF, EPPL7 e altri mediante la libreria GDAL (http://www.gdal.org) Implementa le specifiche del "Open Geospatial Consortium (OGC)": WMS, WFS, WCS, SOS 33
MapServer - navigazione cartografia Strumenti di navigazione/interrogazione della carta 34 Selezione dei contenuti da visualizzare
35 MapServer - navigazione cartografia
MapServer - schema di funzionamento 36 immagine da: http://www.mapserver.org/_images/architecture.png
MapServer - schema di funzionamento MapServer CGI generazione delle pagine HTML tramite chiamata al programma mapserv (directory /cgi-bin) MapScript utilizzo di linguaggi di script per la generazione delle pagine HTML dinamiche e accesso ai servizi di MapServer tramite chiamate alle API 37
MapServer CGI utente internet browser pagine html dinamiche web server webgis map file template Server archivio dati 38 MapFile: definizione delle modalità di visualizzazione delle carte template file: struttura della pagina html
39 MapServer - MapFile MapFile file di testo nel quale vengono definiti gli oggetti e i loro parametri in modo tale da determinare le modalità di visualizzazione 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
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 MapServer - MapFile style: stile di visualizzazione 40 metadata: elenco dei metadati http://www.mapserver.org/mapfile http://geomatica.como.polimi.it/corsi/sw_gis/mapfile5.pdf
MapServer - TemplateFile struttura base per la generazione delle pagine di navigazione normale codice HTML + definizione delle variabili : [nome variabile] MapServer CGI genererà la pagina di navigazione utilizzando il template come base, sostituendo alle variabili i valori assegnati nella sessione corrente 41 http://www.mapserver.org/mapfile/template.html
MapServer - TemplateFile 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 42
MapServer - MapScript PHP MapScript Python MapScript pagine html dinamiche utente internet browser web server webgis map file C API html + script Server archivio dati 43 MapFile: definizione delle modalità di visualizzazione delle carte http://www.mapserver.org/mapscript/ file html + script: gli script richiamano le API di MapServer per visualizzare gli oggetti (carte, legenda,...)
file HTML + script MapServer - MapScript HTML script chiamate alle API 44 esempio in PHP
MapServer - 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 45
46 MapServer - WMS server MapServer supporta le seguenti richieste WMS (1.0.0, 1.0.7, 1.1.0, 1.1.1, 1.3.0): 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 DescribeLayer, restituisce un documento XML con la descrizione dei layer pubblicati GetLegendGraphic, restituisce un immagine con i simboli grafici utilizzati http://www.mapserver.org/ogc/wms_server.html http://geomatica.como.polimi.it/corsi/sw_gis/mapserver_ows.pdf
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 non sono implementate le richieste di modifica delle features Transaction e LockFeature GeoServer (http://geoserver.org) http://www.mapserver.org/ogc/wfs_server.html 47 http://geomatica.como.polimi.it/corsi/sw_gis/mapserver_ows.pdf
MapServer 12/05/2011 rilasciata la versione 6.0.0 48
49 Open Source???
open source??? Chi garantisce che lo sviluppo del sw open source continui se non c'è una società che vende le licenze? 50
open source??? Chi garantisce che lo sviluppo del sw open source continui se non c'è una società che vende le licenze? NESSUNO! Ma questo vale anche per il SW closed source!!! 51
SICAD/open* - SW closed source 1979 SIEMENS 1998 SICAD Geomatics (100% SIEMENS) 2002 AED Graphics => AED-SICAD 2007 SW utilizzato e valido ma si termina supporto e sviluppo - 7.1A20 Windows - 7.1A25 Unix PERCHE'? 52 * il nome open non si riferisce al codice
SICAD/open AED-SICAD: distribuisce SW ESRI ESRI azionista di AED-SICAD Perché continuare a sviluppare due SW in concorrenza tra loro? SICAD/open abbandonato dal punto di vista commerciale più che ragionevole, ma gli utenti di SICAD? agevolati a passare a sw ESRI 53
GRASS - SW open source 1985 GRASS 1.0 U.S. Army - Construction Engineering Research Laboratory (USA-CERL) 1991 1995 GRASS 4.0 pubblicazione su internet, interesse di altre società e università versione per Linux: Yung-Tsun Kang Michigan State University 54 1996 USA-CERL annuncia l'abbandono del progetto 1997 GRASS 4.2 - Baylor University Texas
GRASS - SW open source 1999 GRASS 5.0 licenza GPL Baylor e M. Neteler (Uni Hannover) 2002 Inizia lo sviluppo di GRASS 5.1 all'itc-irst Trento 2005 GRASS 6.0.0 ITC-irst/GRASS Development Team 2006 nasce OSGEO 2011 GRASS 6.4.1 GRASS Development Team 55
56 Nota si possono trovare n altri esempi di software open che hanno terminato lo sviluppo closed che continuano a supportare i propri utenti da decenni ma: nel caso di sw open il codice resta se c'è interesse e risorse lo sviluppo può "passare di mano" nel caso di sw closed il codice viene chiuso in un cassetto e non si può fare nulla, malgrado ci possa essere sia l'interesse che le risorse per continuare lo sviluppo
Riferimenti http://www.aed-sicad.com http://de.wikipedia.org/wiki/sicad/open http://www.esri.com/partners/apps/search/? fuseaction=overview&bp_id=3151 http://grass.osgeo.org/devel/grasshist.html 57
Domande? 58 http://creativecommons.org/licenses/by-nc-nd/3.0/