custom:external_wms_integration

Per Web Map Service (WMS) si intende una specifica tecnica definita dall'OGC, che produce dinamicamente mappe di dati spazialmente riferiti a partire da informazioni geografiche. Questo standard internazionale definisce una “mappa” come rappresentazione di informazioni geografiche restituendo un'immagine digitale idonea ad essere visualizzata su browser web.

Generalmente le mappe prodotte da un servizio WMS sono rese in un formato immagine quale PNG, GIF o JPEG, e solo occasionalmente come elementi vettoriali in formato Scalable Vector Graphics (SVG) o Web Computer Graphics Metafile (WebCGM). Altre specifiche tecniche definite dall'OGC, al contrario, restituiscono altri tipi di dato: ad esempio il Web Feature Service (WFS) restituisce dati vettoriali, e il Web Coverage Service (WCS) restituisce dati raster.

Lo standard WMS definisce tre operazioni:

restituisce metadati a livello di servizio; restituisce una mappa dai parametri geografici e dimensionali definiti; restituisce informazioni sugli oggetti della cartografia visualizzata (opzionale). Le operazioni del Web Map Service vengono invocate usando un client che supporti il protocollo HTTP, in forma di Uniform Resource Locators (URL). Il contenuto della URL dipende dalle operazioni richieste. In particolare, nel richiedere una mappa la URL indica quali informazioni devono essere visualizzate sulla mappa, quale porzione della Terra deve essere rappresentata, il sistema di coordinate desiderato, il formato e le dimensioni dell'immagine di output. Qualora due o più mappe siano prodotte con gli stessi parametri geografici e di dimensione dell'immagine, i risultati possono essere sovrapposti per produrre una mappa composita. L'uso di formati che supportano la trasparenza (GIF o PNG per esempio) permette di visualizzare le parti di mappa sottostanti; inoltre si possono richiedere mappe diverse a differenti server. In questa maniera il Web Map Service abilita la creazione di una rete di server cartografici che l'utente può utilizzare per costruire mappe personalizzate.

Generalmente un Web Map Service non è invocato direttamente; vengono utilizzate applicazioni client che forniscono all'utente controlli interattivi. Queste applicazioni client possono anche non essere web-based.

La specifica WMS è diventata standard ISO19128 nel 2005.

Nella scheda gwMap/gwLayout2D puo essere presente un apposito button nella toolbar con il quale si può sfruttare la funzionalità getFeatureInfo() per tutti i layer WMS configurati che la supportano. La funzionalità getFeatureInfo() di un servizio WMS, se erogata, permette di essere interrogata da un client alla scopo di fornire, data una posizione in mappa, le informazioni spaziali e delle feature accessorie di tutte le entità collegate a quella posizione. Il button è reso visibile a patto che ci sia almeno un layer WMS configurato nel sistema. Il button è attivo solo il WMS base layer correntemente selezionato risulti supportare la funzionalità getFeatureInfo(un'apposita chiamata getCapabilities() è effettuata a tale scopo) Se il button è attivo, al click sul button è attivata una modalità esclusiva di selezione in mappa. Ora ad ogni click in mappa, verrà effettuerà un’interrogazione al server del servizio WMS. La risposta verrà visualizzata in un apposito tooltip chiudibile, posizionato nel punto esatto della feature in mappa e solidale con essa in caso di esecuzione di 'pan' sulla mappa. Con un tooltip correntemente aperto, in caso di nuovo click in mappa verrà generata una nuova richiesta, che causerà la chiusura del vecchio tooltip, e l’eventuale apertura di un nuovo tooltip con le nuove informazioni. In caso che nessun oggetto venga trovato per un dato set di coordinate, viene visualizzata una notifica tramite message toaster. In caso di tooltip attivo esso verrà chiuso sia in caso di cambio bel base layer dall'apposito tab che in caso di attivazione di un altro mapCommand esclusivo (per esempio la selezione 'a rettangolo').

Nell'admin, nella sezione Layer, si può creare un layer di tipo WMS, specificandone tutti i parametri richesti (vedi esempio sottostante) Questo gwLayer va poi aggiunto nella lista di quelli disponibili per una determinata mappa (nell'apposita scheda di configurazione della mappa)

Qui la documentazione ufficiale di tutti i parametri dello standard.

Sotto la lista dei parametri ammessi nella configurazione del gwLayer (molti di questi parametri vengono popolati in automatico) In generale tutti quelli ammessi dalle specifiche delle seguenti chiamate (essi verranno riversati cosi come sono nella chiamate al server WMS)

Parametri per chiamata specifica

getMap()

Parameter	Required?	Description
service		Yes		Service name. Value is WMS.
version		Yes		Service version. Value is one of 1.0.0, 1.1.0, 1.1.1, 1.3.0.
request		Yes		Operation name. Value is GetMap.
layers		Yes		Layers to display on map. Value is a comma-separated list of layer names.
styles		Yes		Styles in which layers are to be rendered. Value is a comma-separated list of style names, or empty if default styling is required. Style names may be empty in the list, to use default layer styling.
srs or crs	Yes		Spatial Reference System for map output. Value is in form EPSG:nnn. crs is the parameter key used in WMS 1.3.0.
bbox		Yes		Bounding box for map extent. Value is minx,miny,maxx,maxy in units of the SRS.
width		Yes		Width of map output, in pixels.
height		Yes		Height of map output, in pixels.
format		Yes		Format for the map output. See WMS output formats for supported values.
transparent	No		Whether the map background should be transparent. Values are true or false. Default is false
bgcolor		No		Background color for the map image. Value is in the form RRGGBB. Default is FFFFFF (white).
exceptions	No		Format in which to report exceptions. Default value is  application/vnd.ogc.se_xml.
time		No		Time value or range for map data. See Time Support in GeoServer WMS for more information.
sld		No		A URL referencing a StyledLayerDescriptor XML file which controls or enhances map layers and styling
sld_body	No		A URL-encoded StyledLayerDescriptor XML document which controls or enhances map layers and styling

getCapabilities()

Parameter	Required?	Description
service		Yes		Service name. Value is WMS.
version		Yes		Service version. Value is one of 1.0.0, 1.1.0, 1.1.1, 1.3.0.
request		Yes		Operation name. Value is GetCapabilities.

getFeatureInfo()

Parameter	Required?	Description
service		Yes		Service name. Value is WMS.
version		Yes		Service version. Value is one of 1.0.0, 1.1.0, 1.1.1, 1.3.0.
request		Yes		Operation name. Value is GetFeatureInfo.
layers		Yes		See GetMap
styles		Yes		See GetMap
srs or crs	Yes		See GetMap
bbox		Yes		See GetMap
width		Yes		See GetMap
height		Yes		See GetMap
query_layers	Yes		Comma-separated list of one or more layers to query.
info_format	No		Format for the feature information response. See below for values.
feature_count	No		Maximum number of features to return. Default is 1.
x or i		Yes		X ordinate of query point on map, in pixels. 0 is left side. i is the parameter key used in WMS 1.3.0.
y or j		Yes		Y ordinate of query point on map, in pixels. 0 is the top. j is the parameter key used in WMS 1.3.0.
exceptions	No		Format in which to report exceptions. The default value is  application/vnd.ogc.se_xml.

info_format

I formati del paramtro 'info_format' che sono gestiti da Geoweb alla risposta della getFeatureInfo() sono:

  • application/vnd.ogc.gml (questo è anche il default con cui vengono fatto le richieste se non si specifica il parametro)
  • application/json
  • text/html
  • text/plain

Tutti gli altri formati verranno di fatto mostrati come testo grezzo nel formato in cui arrivano dal server.

srs/crs

In caso di uso della 'version' 1.3.0 il parametro del sistema di riferimento passa da 'srs' a 'crs'

Parametri fuori specifica

Alcuni servizi WMS possono avere parametri obbligatori, fuori specifica generale. Questi possono essere aggiunti nei seguenti modi equivalenti:

  • come option (ospitato dall'input 'Opzioni' nell'admin)
  • come queryString nell'url base (ospitato dall'input 'Parametro' nell'admin) (quindi divise dall'url base da un ? nel caso di primo parametro, e da un & nel caso dei successivi. Es: url_base?param1=aaa&param2=bbb)

In fase di inizializzazione della funzionalità in mappa, nel webclient, vengono anche effettuati una serie di controlli atti a segnalare e correggere eventuali errori di configurazione nel gwAdmin. Fra questi:

  • uso nella configurazione del gwLayer di un 'layers' contenente uno o pi layer non riconosciuti da quanto dichiarato nel gwtCapabilities() del servizio WMS
  • uso nella configurazione del gwLayer di un 'format' non supportato da quanto dichiarato nel gwtCapabilities() del servizio WMS
  • uso nella configurazione del gwLayer di un 'info_format' non supportato da quanto dichiarato nel gwtCapabilities() del servizio WMS

Policy CORS

Esiste una policy di sicurezza (Same origin policy) che potrebbe impedire il corretto funzionamento di tale funzionalità da dentro geoweb. In pratica vengono bloccate le richieste fatte al server WMS provenienti da geoweb (in quanto è un dominio diverso da quello che eroga il servizio WMS) Per ovviare a ciò ci sono piu possibilità:

  • specificare nell'implementazione dei servizi esposti dal WMS un header che abilita le richieste provenienti dallo specifico dominio dove è installato geoweb
Access-Control-Allow-Origin: http://192.168.0.1/webclient
  • specificare nell'implementazione dei servizi esposti dal WMS un header che abilita le richieste provenienti da tutti i domini
Access-Control-Allow-Origin: *
  • configurare sul server del servizio WMS un proxy
  • far si che geoweb e server del servizio WMS siano sulla stessa macchina

Tipicamente per queste opzioni vanno coinvolti i sistemisti o gli sviluppatori del servizio wms.

Ecco un esempio di configurazione funzionante (con header Access-Control-Allow-Origin: *)

Configurazione in admin:

Nome:

wms_free_test_getFeatureInfo

Tipo:

WMS

Paramatero:

http://wms.pcn.minambiente.it/ogc

Opzioni:

{
	map: '/ms_ogc/WMS_v1.3/Vettoriali/Accelerazioni_Confronto_ERS_ENVISAT_Descending.map',
	layers: 'PI.CONFRONTOERSENVISAT.DESCENDING',
	//srs: 'EPSG:3857',
	crs: 'EPSG:3857',
	format: 'image/png',
	//info_format: 'text/plain',
	info_format: 'application/vnd.ogc.gml',
	feature_count: 1,
	encodeBBOX: true,
	version: '1.3.0',
	exceptions: 'XML'
}

Estratto dalla proposta preliminare per il Comune di Firenze:

La configurazione dei layer WMS sarà effettuata parte su Mapguide Maesto e parte sul Geoweb Admin. Su Maestro verrà gestita la parte di immagine, creando appositi layer WMS.

  • verranno creati utilizzando i parametri esposti dalla API WMS getMap()
  • potranno essere aggiunti alla legenda della mappa, beneficiando di tutti gli strumenti di raggruppamento in cartelle ivi disponibili.

Su Geoweb Admin verrà mantenuta la parte di configurazione relativa al recupero delle informazioni sulle feature

  • i layer WMS verranno configurati nella sezione 'Sfondi Cartografici' della 'Gestione Mappe'. Questi gwLayer saranno di tipo 'WMS'
  • verranno creati utilizzando i parametri esposti dalla API WMS GetFeatureInfo()
  • questi layer non verranno visualizzati nella apposita scheda degli sfondi cartografici (in quanto inglobati nel tab che ospita la legenda di Mapguide)
  • custom/external_wms_integration.txt
  • Ultima modifica: 2019/11/06 09:42
  • (modifica esterna)