Geoserver, protocollo WMS - laboratorio di...

33
Geoserver, protocollo WMS Como 22/01/2007 Geoserver, un server OpenSDI a standard OGC Andrea Aime Geoserver lead developer The Open Planning Project

Transcript of Geoserver, protocollo WMS - laboratorio di...

Page 1: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

Geoserver, protocollo WMS

Como 22/01/2007Geoserver, un server OpenSDI a standard OGC

Andrea Aime

Geoserver lead developerThe Open Planning Project

Page 2: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

2

WMS, Web Map Service

Protocollo per la creazione di mappe a standard OGC

Abbiamo una idea di layer e di stile, ma non è noto cosa siano internamenteNel caso di Geosever, un layer è un feature type WFS o una coverage WCSLo stile è sempre una descrizione in SLD (Styled Layer Descriptor)

Supportato il protocollo WMS 1.1.1, ma non l'1.3 (non è prevista una sua realizzazione).CITE compliant

Page 3: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

3

WMS, operazioni

GetCapabilities

GetMapGetFeatureInfo

GetLegendGraphicDescribeLayerGetStyle

PutStyle

WMS

Estensioni SLD a WMS

Page 4: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

WMS

Page 5: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

5

WMS GetCapabilities

E' analoga alle GetCapabilities di WFS e WCS

La risposta elenca I soliti metadati sul serverLe chiamate supportateL'elenco dei layer, con lo stile di default e l'elenco dei sistemi di riferimento in cui possono essere restituiti

La parte relativa ai layer è interessante per quanto riguarda i sistemi di riferimentoL'elenco dei layer è gerarchico, si può definire un layer padre astratto che contiene definizioni comuni ai layer figli

Geoserver usa questa capacità per fornire una sola volta il lungo elenco di SRS supportati

Page 6: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

6

WMS GetCapabilities, i layer<Layer> <Title>My GeoServer WMS</Title> <Abstract>This is a description of your Web Map Server.</Abstract> <!--common SRS:--> <SRS>EPSG:4326</SRS> <!--All supported EPSG projections:--> <SRS>EPSG::2000</SRS> <!-- altri 3000 e più SRS... --> <SRS>EPSG::69036405</SRS> <LatLonBoundingBox minx="-180.0" miny="-90.0" maxx="180.0" maxy="90.0" /> <Layer queryable="1"> <Name>topp:tasmania_roads</Name> <Title>tasmania_roads_Type</Title> ... <SRS>EPSG:4326</SRS> <!-- WKT definition of this CRS: GEOGCS["WGS 84", DATUM["World Geodetic System 1984", SPHEROID["WGS 84", 6378137.0, 298.257223563, AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326"]], PRIMEM["Greenwich", 0.0, AUTHORITY["EPSG","8901"]], UNIT["degree", 0.017453292519943295], AXIS["Geodetic longitude", EAST], AXIS["Geodetic latitude", NORTH], AUTHORITY["EPSG","4326"]]--> <LatLonBoundingBox minx="145.19754" miny="-43.423512" maxx="148.27298000000002" maxy="-40.852802" /> <BoundingBox SRS="EPSG:4326" minx="145.19754" miny="-43.423512" maxx="148.27298000000002" maxy="-40.852802" /> <Style> ... </Style> </Layer>

Layer generale

Singolo layer

Page 7: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

7

WMS GetCapabilities, time and dimension

La specifica WMS permette di allegare “dimensioni” ai layer, in modo da poter estrarre una specifica vista“Time” viene usata per layer di cui si dispongono varie versioni, valide in diversi istanti temporali“Elevation” consente invece di accedere allo stesso layer “affettato” su una certa quota (da voxel a semplice raster, ad esempio)

Geoserver non supporta queste estensioni al momento, probabilmente verranno aggiunte nella versione 1.6.x

Page 8: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

8

WMS GetMap

Permette di ottenere una mappa specificando nella chiamata:

Un elenco di layer da visualizzareUn elenco di stili (può essere vuoto per adottare gli stili di defalt)L'area da visualizzareLa dimensione dell'immagineIl formato di immagine restituitoIl colore di sfondo, l'eventuale trasparenza dell'immagine

Lo standard base richiede di supportare le richieste di tipo GET, Geoserver ha una estensione che consente di usare anche POST (per richieste molto lunghe/complesse)

Page 9: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

9

GetMap, esempio

http://localhost:8080/geoserver/wms?&request=GetMap&bbox=-130,24,-66,50&layers=topp:states&styles=population&Format=image/png&width=550&height=250

Page 10: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

10

GetMap, esempio 2

http://localhost:8080/geoserver/wms?request=GetMap&layers=tiger:poly_landmarks,tiger:tiger_roads,tiger:poi&bbox=-74.01,40.70,-73.98,40.73&format=image/png&width=800&height=800&srs=EPSG:4326

Antialiasing

Risoluzione conflitti etichette

Page 11: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

11

GetMap, formati supportati

Dal documento GetCapabilities di Geoserver 1.5.x (in blu le novità non presenti in 1.4.0):

image/jpegimage/png (png 24 bit)image/gifimage/tiff

image/geotiff

image/svg+xmlapplication/pdf

application/vnd.google-earth.kml+xmlapplication/vnd.google-earth.kmz

Raster classici

Raster georeferenziati

Vettoriali

Google Earth

Page 12: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

12

GetFeatureInfo

Permette di realizzare un tool “info”, ovvero sapere cosa c'é in un determinato punto e quali sono le sue proprietà

Si possono interrogare solo i layer con queryable=”true” nella risposta di GetCapabilities

Vari formati di uscita, puro testo e un HTML fissoI layer di tipo raster al momento non sono interrogabiliNella prossima release (1.6) aggiungeremo un sistema di templating per consentire di ottenere output ad hoc per la propria applicazione

Page 13: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

13

GetFeatureInfo, esempio

http://localhost:8080/geoserver/wms?request=GetFeatureInfo&bbox=-130,24,-66,50&&layers=topp:states&styles=population&format=jpeg&width=550&height=250&info_format=text/plain&query_layers=topp:states&x=170&y=160

Results for FeatureType 'states':--------------------------------------------the_geom = [GEOMETRY (MultiPolygon) with 153 points]STATE_NAME = ArizonaSTATE_FIPS = 04SUB_REGION = MtnSTATE_ABBR = AZLAND_KM = 294333.462WATER_KM = 942.772PERSONS = 3665228.0FAMILIES = 940106.0HOUSHOLD = 1368843.0MALE = 1810691.0FEMALE = 1854537.0WORKERS = 1358263.0DRVALONE = 1178320.0CARPOOL = 239083.0PUBTRANS = 32856.0EMPLOYED = 1603896.0UNEMPLOY = 123902.0SERVICE = 455896.0MANUAL = 185109.0P_MALE = 0.494P_FEMALE = 0.506SAMP_POP = 468178.0--------------------------------------------

Page 14: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

SLD, Styled Layer Descriptor

Page 15: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

15

SLD, Styled Layer Descriptor

SLD è una sofisticata specifica OGC per la vestizione di layer vettoriali e rasterE' molto flessibile, anche se nella sua generalità risulta di difficile comprensione e non ha sintassi semplificate per i tipi di rendering più comuni

Una volta presa padronanza dello strumento si possono realizzare styling piuttosto sofisticatiSi tratta di documenti XML, dove vengono riusate sia le specifiche GML che le specifiche Filter

Page 16: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

16

SLD schema, UserStyle, FeatureTypeStyle, Rule

Un foglio di stile definisce stili per diversi FeatureType

Ogni regola descrive come vestire le Feature che soddisfano un certo filtro OGC, in un certo intervallo di scale

Ogni FeatureType viene vestitoapplicando in sequenza una o più regole

Il Symbolizer contiene le informazioni di vestizione

Page 17: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

17

SLD schema, line symbolizer

Il “tratto” può essere semplice o grafico. Le proprietà CSS sono:● color, width, opacity (elementi base)● lineJoin, lineCap (fine linea e congiunzioni)● dashArray, dashOffset (per definire stili a tratti)

Si applica solo a tipi lineari (linestring, multilinestring, ring)

Page 18: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

18

SLD schema, polygon symbolizer

Si applica solo a tipi poligonali (polygon, multipolyon, ring)

Page 19: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

19

SLD schema, point symbolizer

Un punto si può vestire con una forma nota (Mark, sono cerchio, quadrato, ecc.) o con un file esterno (png, gif, svg, ecc.)

Un punto si può vestire con una forma nota (Mark, sono cerchio, quadrato, ecc.) o con un file esterno (png, gif, svg, ecc.)

Si sceglie quale geometria vestire.Il point symbolizer si applica a tutte le geometrie (viene trovato un punto adatto nel caso in cui non sia un punto semplice).

Page 20: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

20

SLD schema, text symbolizer

Si applica a tutti i tipi di geometriaIl centroide viene scelto automaticamenteAbbiamo un semplice algoritmo di risoluzione dei conflitti (il primo vince)

Da notare che l'etichetta può essere un attributo o il risultato di una espressione complessa (calcoli, concatenazioni di stringhe)

Page 21: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

21

SLD Schema, Raster symbolizer

Specifica piuttosto riccaAl momento Geoserver supporta color map e opacity

Page 22: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

22

Come creare file SLD

SLD è potente, ma allo stesso tempo, è una giungla...

Per crearlo si possono adottare varie strategie:Usare un editor SLD capace di creare gli stili più comuni. Udig ne possiede uno.Usare un editor XML con supporto per XML schema, in grado di creare uno scheletro di partenza e di auto-completare il codicePartire da esempi già fatti e effettuare piccole modifiche

Page 23: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

23

Esempi SLD, linea semplice

<?xml version="1.0" encoding="ISO-8859-1"?><StyledLayerDescriptor version="1.0.0" xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd" xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <NamedLayer> <Name>Default Line</Name> <UserStyle> <FeatureTypeStyle> <Rule> <LineSymbolizer> <Stroke> <CssParameter name="stroke">#AA3333</CssParameter> <CssParameter name="stroke-width">2</CssParameter> </Stroke> </LineSymbolizer> </Rule> </FeatureTypeStyle> </UserStyle> </NamedLayer></StyledLayerDescriptor>Una semplice linea, colore definito come in HTML, spessore 2.Si applica a qualunque feature type, poiché non abbiamo specificato un nome di feature type.Un color chooser online: http://www.december.com/html/spec/colorchooser.html

Page 24: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

24

Esempi SLD, con etichette

...<FeatureTypeStyle> <Rule> <LineSymbolizer> <Stroke> <CssParameter name="stroke">#50B050</CssParameter> <CssParameter name="stroke-width">2</CssParameter> </Stroke> </LineSymbolizer> <TextSymbolizer> <Label> <ogc:PropertyName>TYPE</ogc:PropertyName> </Label> <Font> <CssParameter name="font-family">Times New Roman</CssParameter> <CssParameter name="font-size">16</CssParameter> <CssParameter name="font-weight">bold</CssParameter> </Font> <LabelPlacement> <LinePlacement> <PerpendicularOffset>5</PerpendicularOffset> </LinePlacement> </LabelPlacement> </TextSymbolizer> </Rule></FeatureTypeStyle>....

Page 25: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

25

Esempi SLD, con filtri

<FeatureTypeStyle> <!-- Rule 1 --> <Rule> <ogc:Filter> <ogc:Not> <ogc:PropertyIsEqualTo> <ogc:PropertyName>TYPE</ogc:PropertyName> <ogc:Literal>highway</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Not> </ogc:Filter> <LineSymbolizer> <Stroke> <CssParameter name="stroke">#50B050</CssParameter> <CssParameter name="stroke-width">2</CssParameter> </Stroke> </LineSymbolizer> <TextSymbolizer> <Label> <ogc:PropertyName>TYPE</ogc:PropertyName> </Label> <Font> <CssParameter name="font-family">Times New Roman</CssParameter> <CssParameter name="font-size">12</CssParameter> <CssParameter name="font-weight">bold</CssParameter> </Font> </TextSymbolizer> </Rule> .... continua --->

Page 26: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

26

Esempi SLD, con filtri, 2

<Rule> <ogc:Filter> <ogc:PropertyIsEqualTo> <ogc:PropertyName>TYPE</ogc:PropertyName> <ogc:Literal>highway</ogc:Literal> </ogc:PropertyIsEqualTo> </ogc:Filter> <LineSymbolizer> <Stroke> <CssParameter name="stroke">#444444</CssParameter> <CssParameter name="stroke-width">8</CssParameter> <CssParameter name="stroke-linecap">round</CssParameter> </Stroke> </LineSymbolizer> <LineSymbolizer> <Stroke> <CssParameter name="stroke">#999999</CssParameter> <CssParameter name="stroke-width">4</CssParameter> <CssParameter name="stroke-linecap">round</CssParameter> </Stroke> </LineSymbolizer> ... continua -->

Page 27: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

27

Esempi SLD, con filtri, 3

<TextSymbolizer> <Label> <ogc:PropertyName>TYPE</ogc:PropertyName> </Label> <Font> <CssParameter name="font-family">Times New Roman</CssParameter> <CssParameter name="font-size">18</CssParameter> <CssParameter name="font-weight">bold</CssParameter> </Font> <Halo> <Radius> <ogc:Literal>2</ogc:Literal> </Radius> <Fill> <CssParameter name="fill">#FFF88B</CssParameter> <CssParameter name="fill-opacity">0.85</CssParameter> </Fill> </Halo> <Fill> <CssParameter name="fill">#FF0000</CssParameter> </Fill> </TextSymbolizer></Rule>That's all folks!

Page 28: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

28

Esempi SLD, raster symbolizer

<FeatureTypeStyle> <Rule> <RasterSymbolizer> <Opacity>1.0</Opacity> <ColorMap> <ColorMapEntry color="#000000" quantity="-500" opacity="0.0"/> <ColorMapEntry color="#00ff00" quantity="-500" /> <ColorMapEntry color="#00fa00" quantity="-417" /> ... <ColorMapEntry color="#c85000" quantity="1400" /> <ColorMapEntry color="#be4100" quantity="1600" /> <ColorMapEntry color="#963000" quantity="2000" /> <ColorMapEntry color="#3c0200" quantity="3000" /> <ColorMapEntry color="#ffffff" quantity="5000" /> <ColorMapEntry color="#ffffff" quantity="13000" /> </ColorMap> </RasterSymbolizer>...

Gtopo30 w020n90, particolare vestito con la color map specificata nell'SLD

Page 29: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

29

Sigma, un esempio complesso

Demo di sigma.openplans.org

Le strade principali sono un layer Postgis di alcuni gigabyte, con tre geometrie a tre diversi livelli di generalizzazione, e vari attributiIl foglio di stile che le disegna contiene 21 FeatureTypeStyle, ciascuno con una o più regoleSceglie lo styling in base alla scala (e di conseguenza adotta la geometria più adatta) e alle caratteristiche della stradaIn totale, è oltre 2000 righe... di fatto è un piccolo programma

Page 30: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

WMS – estensioni SLD

Page 31: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

31

DescribeLayer

Quando si scrive un SLD, occorre conoscere gli attributi dei feature type e le caratteristiche delle grid coverage

Queste informazioni sono fornite dai rispettivi servizi WFS e WCS

DescribeLayer consente di chiedere dove trovare il layer nel WFS e nel WCS, o se al contrario questo non è possibile (layer che rappresentano raggruppamenti di altri layer, ad esempio)

http://localhost:8080/geoserver/wms?request=DescribeLayer&layers=topp:tasmania_roads<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE WMS_DescribeLayerResponse SYSTEM ...><WMS_DescribeLayerResponse version="1.0.0"> <LayerDescription name="topp:tasmania_roads" wfs="http://localhost:8080/geoserver/wfs/WfsDispatcher?"> <Query typeName="topp:tasmania_roads" /> </LayerDescription></WMS_DescribeLayerResponse>

Page 32: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

32

GetStyle/PutStyle/GetLegendGraphic

GetStyle e PutStyle consentono rispettivamente di ottenere il codice SLD di uno stile, e di caricare un nuovo stile sul server

Un client avanzato può sfruttare questa possibilità per ottenere un rendering specifico per le sue necessità

GetLegendGraphic permette di ottenere elementi grafici per creare la legenda di una mappa

Page 33: Geoserver, protocollo WMS - laboratorio di geomaticageomatica.como.polimi.it/corsi/sw_gis/4_WMS.pdf · The Open Planning Project. 2 WMS, Web Map Service Protocollo per la creazione

33

Pratica

Preview di layer in MapBuilder

Caricamento di SLDSemplice uso di OpenLayer per ottenere mappe tiledUso di uDig per visualizzare mappe e creare SLD