Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Hands-on øvelser ved Kortforsyningen Partnerseminar 2005

Lignende præsentationer


Præsentationer af emnet: "Hands-on øvelser ved Kortforsyningen Partnerseminar 2005"— Præsentationens transcript:

1 Hands-on øvelser ved Kortforsyningen Partnerseminar 2005
Nye muligheder med Web Map Service – Styled Layer Descriptor og Filter Encoding Hands-on øvelser ved Kortforsyningen Partnerseminar 2005 Februar 2005

2 Udviklingen af WMS WMS+SLD+FE WMS+SLD WMS Filter Encoding Styles Yes
No Mulighed for at definere udseende for ét eller flere objekter fx ”Næstved kommune skal farves rød – de andre grå” WMS+SLD+FE Mulighed for at definere udseende for alle objekter i et tema fx ”alle motorveje skal være orange” WMS+SLD WMS Svarende til Kortforsyningen i dag. KMS har defineret udseendet af temaer (ét style pr. lag) Styles Named User

3 Eksempel WMS WMS+SLD WMS+SLD+FE

4 Layers og styles i WMS Med parameteren LAYERS vælger brugeren de temaer, kortet skal indeholde Værdien af LAYERS parameteren er en kommasepareret liste, hvor første tema i listen vises nederst i kortet, andet tema vises ovenpå første osv. Styles angiver hvilket af de prædefinerede udseender hvert lag skal have. Prædefinerede styles betyder, at udseendet af temaerne er defineret af udbyderen af tjenesten fx Kort & Matrikelstyrelsen Værdien af STYLES parameteren er en kommasepareret liste, hvor første udseende er associeret med første tema, andet udseende med andet tema osv. LAYERS=hav,land,motorveje& STYLES=hvid,graa,orange& …

5 Web Map Service uden server definerede styles
I mange WMS tjenester er der kun ét udseende til hvert tema, eller der er ét default udseende til hvert tema – dette gælder fx Kortforsyningen I disse tilfælde indeholder STYLES parameteren også en kommasepareret liste, men med tomme værdier mellem kommaerne Afhængig af WMS serveren kan den kommaseparerede liste erstattes af en tom streng I praksis har parameteren STYLES dermed ingen betydning, men den er stadig påkrævet for at være en gyldig WMS forespørgsel STYLES=,,&… STYLES=&…

6 Web Map Service med server definerede styles
Nogle WMS tjenester tilbyder brugeren at vælge mellem en række udseender for hvert tema fx kan motorveje have to udseender med navnene “sort” og “orange” Ovenstående kaldes NamedStyles i SLD sprog I tilfælde af ovenstående vil GetCapabilities responset indeholde information om dette Kortforsyningen understøtter pt. Ikke NamedStyles, men har lavet en pseudo implementering ved fx at oprette flere temaer baseret på samme data, men med forskelligt udseende fx Ejendomsskel og Ejendomsskel_gul i WMS tjenesten tomat_01 STYLES=sort&… STYLES=orange&…

7 GetCapabilities respons – eksempel med flere Styles
<Layer queryable="1"> <Name>motorveje</Name> <Title>motorveje</Title> <LatLonBoundingBox minx=" " miny=" " maxx=" " maxy=" "/> <BoundingBox SRS="EPSG:25832" minx=" " miny=" " maxx=" " maxy=" "/> <Style> <Name>sort</Name> <Title>sort</Title> </Style> <Name>orange</Name> <Title>orange</Title> </Layer>

8 Styled Layer Descriptor
OGC specifikation fra 2002 Nuværende version er 1.0.0 Kan opfattes som en udvidelse af Web Map Service specifikationen (WMS) Har bl.a. til formål at sætte brugeren i stand til at definere udseendet af indholdet i et kort fra en WMS – dette kaldes UserStyle I tilfælde af at en WMS server tillader brugeren at definere udseendet vil GetCapabilities responset indeholde information om dette <UserDefinedSymbolization SupportSLD=”0" UserLayer="0" UserStyle=”1" RemoteWFS="0"/>

9 SLD udvider funktionaliteten i WMS
SLD understøttede WMS’ere accepterer evt. også følgende forespørgsler: GetLegendGraphic DescribeLayer GetStyles PutStyles Hvorvidt en WMS understøtter ovenstående fremgår af GetCapabilities responset, hvor metoderne vil være at finde i gruppe med <GetFeatureInfo> og <GetMap> elementerne

10 GetCapabilities respons – eksempel på DescribeLayer
<DescribeLayer> <Format>application/vnd.ogc.wms_xml</Format> <DCPType> <HTTP> <Get> <OnlineResource xlink:href=" xlink:type="simple" xmlns:xlink=" </Get> </HTTP> </DCPType> </DescribeLayer>

11 SLD – DescribeLayer Bruges til at få de detaljerede informationer om et eller flere temaer i WMS’en herunder deres attributter Benyttes primært i forbindelse med FilterEncoding, hvor man evt. ønsker at arbejde med en delmængde af objekter i et tema LAYERS=Matrikelflader,Kredse&… <?xml version="1.0" encoding="utf-8" ?> <WMS_DescribeLayerResponse version="1.1.1"> <LayerDescription wfs=" name="Matrikelflader"> <Query typename="Matrikelflader"></Query> </LayerDescription> <LayerDescription wfs=" name=”Kredse"> <Query typename=”Kredse"></Query> </WMS_DescribeLayerResponse>

12 SLD – GetLegendGraphic
Bruges til at få et raster billede indeholdende udseendet for et givent tema Benyttes primært til at kunne sammensætte signaturforklaring

13 SLD – PutStyles og GetStyles
En forespørgsel der returnerer de UserStyles, der måtte være til rådighed for et eller flere givne temaer PutStyles Gør det muligt at uploade sit eget brugerdefinerede style, som herefter indgår som NamedStyle Har lav prioritet i Kortforsyningen – alternativt gives adgang til FTP, hvori SLD dokumenter kan gemmes

14 Hvordan definerer man selv udseendet?
Man definerer det ønskede udseende ved hjælp af XML jf. SLD XML skemaet Som en tilføjelse til WMS forespørgslen skal man gøre opmærksom på ovenstående SLD dokument, så WMS serveren kan bruge dette i forbindelse med genereringen af billedet Der findes flere metoder at gøre WMS serveren opmærksom på dette: Ved at referere til et SLD dokument i WMS forespørgslen med parameteren SLD (HTTP GET) Ved at indlejre et SLD dokument i WMS forespørgslen med parameteren SLD_BODY (HTTP GET) Ved at kombinere WMS forespørgslen (XML) og SLD dokumentet (XML), som efterfølgende sendes til WMS serveren (HTTP POST)

15 GET SLD – eksempel SLD= <?xml version="1.0" encoding="UTF-8"?> <StyledLayerDescriptor version="1.0.0"> <NamedLayer> <Name>Skov</Name> <UserStyle> <Title>Skov</Title> <FeatureTypeStyle> <Rule> <PolygonSymbolizer> <Geometry> <PropertyName>skov_flade</PropertyName> </Geometry> <Fill> <CssParameter name="fill">#00cc33</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#ff3366</CssParameter> <CssParameter name="stroke-width">2</CssParameter> </Stroke> </PolygonSymbolizer> </Rule> </FeatureTypeStyle> </UserStyle> </NamedLayer> </StyledLayerDescriptor>

16 GET SLD_BODY – eksempel
SLD_BODY=<?xml version="1.0" encoding="UTF-8"?><StyledLayerDescriptor version="1.0.0"><NamedLayer><Name>Skov</Name><UserStyle><Title>Skov</Title> <FeatureTypeStyle><Rule><PolygonSymbolizer><Geometry><PropertyName>skov_flade</PropertyName></Geometry><Fill><CssParameter name="fill">#00cc33</CssParameter></Fill><Stroke><CssParameter name="stroke">#ff3366</CssParameter><CssParameter name="stroke-width">2</CssParameter></Stroke></PolygonSymbolizer></Rule></FeatureTypeStyle></UserStyle></NamedLayer></StyledLayerDescriptor>&… Værdien af SLD og SLD_BODY bør være URL encoded – ovenstående er blot for læselighedens skyld!

17 POST WMS+SLD – eksempel
<?xml version="1.0" encoding="UTF-8"?> <ogc:GetMap service="WMS" version="1.2"> <StyledLayerDescriptor version="1.0.0"> <NamedLayer> <Name>Skov</Name> <UserStyle> <Title>Skov</Title> <FeatureTypeStyle> <Rule> …. </Rule> </FeatureTypeStyle> </UserStyle> </NamedLayer> </StyledLayerDescriptor> <BoundingBox srsName= <gml:coord> <gml:X>550000</gml:X> <gml:Y> </gml:X> </gml:coord> <gml:X>551000</gml:X> <gml:Y> </gml:X> </BoundingBox> <Output> <Format>image/png</Format> <Transparent>false</Transparent> <Size> <Width>500</Width> <Height>500</Height> </Size> </Output> <Exceptions>application/vnd.ogc.se_xml</Exception> </ogc:GetMap>

18 Fordele og ulemper ved de tre metoder
Beskrivelse Fordele Ulemper GET SLD SLD dokument refereres til med parameteren SLD Mulighed for at benytte SLD som en slags style bibliotek Muligt at redigere med XML editor Internet overførsel af SLD dokument fra SLD vært til WMS Forholdsvist statisk GET SLD_BODY SLD dokument indlejret i URL’en med parameteren SLD_BODY Ekstern reference unødvendig Begrænset Internet transfer Dynamisk GET metode har en begrænsning i antal karakterer, så SLD skal være simpel POST SLD+WMS SLD og WMS kombineret i XML, der sendes til WMS server Ekstern reference unødvendig Begrænset Internet transfer Dynamisk Det er kun WMS versioner nyere end 1.1.1, der understøtter HTTP POST. Det er dermed endnu ikke så udbredt

19 SLD dokumentstruktur – generelt 1/2
StyledLayerDescriptor PointSymbolizer (1-1) or UserLayer (0-) LineSymbolizer (1-1) or or NamedLayer (0-) PolygonSymbolizer (1-1) or NamedStyle (0-) TextSymbolizer (1-1) or or UserStyle (0-) RasterSymbolizer (1-1) FeatureTypeStyle (1-) Rule (1-) Adskillige XML elementer og attributter kan være udeladt i ovenstående

20 SLD dokumentstruktur – generelt 2/2
<?xml version="1.0" encoding="UTF-8"?> <StyledLayerDescriptor version="1.0.0"> <NamedLayer> <Name>Skov</Name> <UserStyle> <Title>Skov</Title> <FeatureTypeStyle> <Rule> <PolygonSymbolizer> <Fill> <CssParameter name="fill">#00cc33</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#ff3366</CssParameter> <CssParameter name="stroke-width">2</CssParameter> </Stroke> </PolygonSymbolizer> </Rule> </FeatureTypeStyle> </UserStyle> </NamedLayer> </StyledLayerDescriptor>

21 SLD dokumentstruktur – Symbolizers 1/2
PolygonSymbolizer Geometry (0-1) Fill (0-1) Stroke (0-1) Fill GraphicFill (0-1) CssParameter (0-) Stroke CssParameter (0-) GraphicFill (0-1) GraphicStroke (0-1) or

22 SLD dokumentstruktur – Symbolizers 2/2
<?xml version="1.0" encoding="UTF-8"?> <StyledLayerDescriptor version="1.0.0"> <NamedLayer> <Name>Skov</Name> <UserStyle> <Title>Skov</Title> <FeatureTypeStyle> <Rule> <PolygonSymbolizer> <Fill> <CssParameter name="fill">#00cc33</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#ff3366</CssParameter> <CssParameter name="stroke-width">2</CssParameter> </Stroke> </PolygonSymbolizer> </Rule> </FeatureTypeStyle> </UserStyle> </NamedLayer> </StyledLayerDescriptor>

23 Hands-on øvelser – Styles Layer Descriptor
Line Symbolizer Polygon Symbolizer Point Symbolizer Text Symbolizer – Polygon Text Symbolizer – Point

24 Styled Layer Descriptor – Line Symbolizer
<?xml version="1.0" encoding="UTF-8"?> <StyledLayerDescriptor version="1.0.0" xmlns:sld=" <NamedLayer> <Name>Motorvej</Name> <UserStyle> <FeatureTypeStyle> <Rule> <LineSymbolizer> <Stroke> <CssParameter name="stroke">#ff3366</CssParameter> <CssParameter name="stroke-width">5.0</CssParameter> <CssParameter name="stroke-dasharray">10 5</CssParameter> </Stroke> </LineSymbolizer> </Rule> </FeatureTypeStyle> </UserStyle> </NamedLayer> </StyledLayerDescriptor> SLD: sld_line.xml SLD spec. side 33-38 styles=&bbox=565000, ,570000, &sld=

25 Styled Layer Descriptor – Polygon Symbolizer
<?xml version="1.0" encoding="UTF-8"?> <StyledLayerDescriptor version="1.0.0" xmlns:sld=" <NamedLayer> <Name>Skov</Name> <UserStyle> <FeatureTypeStyle> <Rule> <PolygonSymbolizer> <Fill> <CssParameter name="fill">#00cc33</CssParameter> </Fill> <Stroke> <CssParameter name="stroke">#ff3366</CssParameter> <CssParameter name="stroke-width">2</CssParameter> </Stroke> </PolygonSymbolizer> </Rule> </FeatureTypeStyle> </UserStyle> </NamedLayer> </StyledLayerDescriptor> SLD: sld_polygon.xml SLD spec. side 38-40 Fredskov&styles=&bbox=565000, ,570000, &sld=

26 Styled Layer Descriptor – Point Symbolizer
<?xml version="1.0" encoding="UTF-8"?> <StyledLayerDescriptor version="1.0.0" xmlns:sld=" <NamedLayer> <Name>Fredskov</Name> <UserStyle> <Title>Fredskov</Title> <FeatureTypeStyle> <Rule> <PointSymbolizer> <Graphic> <Mark> <WellKnownName>star</WellKnownName> <Fill> <CssParameter name="fill">#33ccff</CssParameter> </Fill> </Mark> <Size>6</Size> </Graphic> </PointSymbolizer> </Rule> </FeatureTypeStyle> </UserStyle> </NamedLayer> </StyledLayerDescriptor> SLD: sld_point.xml SLD spec. side 40-44 &styles=&bbox=565000, ,570000, &sld=

27 Styles Layser Descriptor – Text Symbolizer (Polygon)
</PolygonSymbolizer> <TextSymbolizer> <Label>Navn</Label> <Font> <CssParameter name="font-family">Arial</CssParameter> <CssParameter name="font-size">12</CssParameter </Font> <Fill> <CssParameter name="fill">#006600</CssParameter> </Fill> </TextSymbolizer> </Rule> </FeatureTypeStyle> </UserStyle> </NamedLayer> </StyledLayerDescriptor> SLD: sld_polygontext.xml SLD spec. side 45-49

28 Styles Layser Descriptor – Text Symbolizer (Point)
<TextSymbolizer> <Label>FIX_KORT</Label> <LabelPlacement> <PointPlacement> <AnchorPoint> <AnchorPointX>1</AnchorPointX> <AnchorPointY>1</AnchorPointY> </AnchorPoint> <Displacement> <DisplacementX>0</DisplacementX> <DisplacementY>0</DisplacementY> </Displacement> <Rotation>0</Rotation> </PointPlacement> </LabelPlacement> <Font> <CssParameter name="font-family">Arial</CssParameter> <CssParameter name="font-size">6</CssParameter> </Font> <Fill> <CssParameter name="fill">#3300cc</CssParameter> </Fill> </TextSymbolizer> SLD: sld_pointtext.xml SLD spec. side 45-49 Fixpunkt&styles=&bbox=565000, ,570000, &sld=

29 Filter Encoding OGC specifikation fra 2001
Oprindeligt en del af WFS specifikation, men nu udskilt i sin egen Nuværende version er 1.0.0 Fungerer sammen med Styled Layer Descriptor (SLD) og Web Feature Service (WFS) m.fl. Sætter brugeren i stand til at arbejde med en delmængde af geodata (udover BoundingBox), dvs. der kan differentieres på objektniveau og ikke blot temaniveau

30 Mange filtreringsmuligheder
Rumlige filtre Bruges til at filtrere objekter baseret på deres rumlige placering og udstrækning Equals, Disjoint, Touches, Within, Overlaps, Crosses, Instersects… Sammenlignings filtre Benyttes til at filtrere objekter baseret på deres attributværdier PropertyIsEqualTo, PropertyIsGreaterThan, PropertyIsLessThan… Logiske filtre Gør det muligt at kombinere flere filtre And, Or, Not

31 Filter Encoding – SLD dokumentstruktur 1/2
Filter i SLD indgår altid som child til elementet <Rule> og dermed på linje med Symbolizerne Elementets navn er <Filter> eller <ElseFilter> Indholdet i <Filter> er relateret til Filter Encoding XML skemaet – namespace præfix er derfor ofte nødvendig Rule Filter (0-1) ElseFilter (0-1) Adskillige XML elementer og attributter kan være udeladt i ovenstående

32 Filter Encoding – SLD dokumentstruktur 2/2
<Rule> <Filter> <ogc:PropertyIsEqualTo> <ogc:PropertyName>MAS_MATRNR</ogc:PropertyName> <ogc:Literal>1r</ogc:Literal> </ogc:PropertyIsEqualTo> </Filter> <PolygonSymbolizer> <Stroke> <CssParameter name="stroke">#000000</CssParameter> <CssParameter name="stroke-width">1</CssParameter> </Stroke> <Fill> <CssParameter name="fill">#FFFF00</CssParameter> <CssParameter name="fill-opacity">1</CssParameter> </Fill> </PolygonSymbolizer> <TextSymbolizer> <Label>MAS_MATRNR</Label> <Font> <CssParameter name="font-family">Arial</CssParameter> <CssParameter name="font-size">10</CssParameter> </Font> <CssParameter name="fill">#000000</CssParameter> </TextSymbolizer> </Rule>

33 Hands-on øvelser: Styles Layer Descriptor & Filter Encoding
PropertyIsEqualTo – Highlight af objekt baseret på attributværdi PropertyIsGreaterThan – Interval rendering baseret på attributværdi Intersect – Highlight af objekt baseret på rumlig filtrering Dwithin - Highlight af objekter baseret på afstand til position (buffer)

34 Styled Layer Desctiptor & Filter – Highlight
<?xml version="1.0" encoding="ISO "?> <StyledLayerDescriptor version="1.0.0" xmlns=" xmlns:ogc=" <NamedLayer> <Name>Bygning</Name> <UserStyle> <Name>Highlight</Name> <FeatureTypeStyle> <FeatureTypeName>Bygning</FeatureTypeName> <Rule> <PolygonSymbolizer> <Stroke> <CssParameter name="stroke">#000000</CssParameter> <CssParameter name="stroke-width">1</CssParameter> </Stroke> <Fill> <CssParameter name="fill">#CCCCCC</CssParameter> <CssParameter name="fill-opacity">1</CssParameter> </Fill> </PolygonSymbolizer> </Rule> <Filter> <ogc:PropertyIsEqualTo> <ogc:PropertyName>Id_nr</ogc:PropertyName> <ogc:Literal> </ogc:Literal> </ogc:PropertyIsEqualTo> </Filter>… SLD: fe_highlightbygning.xml Filter Encoding spec. side 11-13, 20

35 Styled Layer Desctiptor & Filter - Intervalrendering
<Rule> <ogc:Filter> <ogc:PropertyIsGreaterThan> <ogc:PropertyName>REG_AREAL</ogc:PropertyName> <ogc:Literal>500</ogc:Literal> </ogc:PropertyIsGreaterThan> </ogc:Filter> <PolygonSymbolizer> <Stroke> <CssParameter name="stroke">#000000</CssParameter> <CssParameter name="stroke-width">1</CssParameter> </Stroke> <Fill> <CssParameter name="fill">#FFFF99</CssParameter> <CssParameter name="fill-opacity">1</CssParameter> </Fill> </PolygonSymbolizer> </Rule> <ogc:Literal>1000</ogc:Literal> SLD: fe_interval.xml Filter Encoding spec. side 11-13, 20 Fredskov&styles=&bbox=565000, ,570000, &sld=

36 Styled Layer Desctiptor & Filter – Highlight
<Rule> <PolygonSymbolizer> <Stroke> <CssParameter name="stroke">#000000</CssParameter> <CssParameter name="stroke-width">1</CssParameter> </Stroke> <Fill> <CssParameter name="fill">#CCCCCC</CssParameter> <CssParameter name="fill-opacity">1</CssParameter> </Fill> </PolygonSymbolizer> </Rule> <Filter> <Intersect> <gml:Polygon srsName="EPSG:25832"> <gml:outerBoundaryIs> <gml:LinearRing> <gml:coordinates>575183, , , , </gml:coordinates> </gml:LinearRing> </gml:outerBoundaryIs> </gml:Polygon> </Intersect> </Filter> SLD: fe_intersectbygning.xml Filter Encoding spec. side 9-11

37 Styled Layer Desctiptor & Filter – Dwithin (buffer)
<Filter> <ogc:DWithin> <gml:Point srsName="EPSG:25832"> <gml:coordinates>575183, </gml:coordinates> </gml:Point> <ogc:Distance units="meters">80</ogc:Distance> </ogc:DWithin> </Filter> <PolygonSymbolizer> <Stroke> <CssParameter name="stroke">#000000</CssParameter> <CssParameter name="stroke-width">1</CssParameter> </Stroke> <Fill> <CssParameter name="fill">#FFFF00</CssParameter> <CssParameter name="fill-opacity">1</CssParameter> </Fill> </PolygonSymbolizer> SLD: fe_dwithinbygning.xml Filter Encoding spec. side 9-11

38 Styled Layer Desctiptor & Filter – And (filter kombination)
<Rule> <Filter> <ogc:And> <ogc:PropertyIsGreaterThan> <!– kun matrikler > 5000 m2 --> <ogc:PropertyName>REG_AREAL</ogc:PropertyName> <ogc:Literal>5000</ogc:Literal> </ogc:PropertyIsGreaterThan> <ogc:PropertyIsLessThanOrEqualTo> <!– må ikke indeholde vej --> <ogc:PropertyName>VEJ_AREAL</ogc:PropertyName> <ogc:Literal>0</ogc:Literal> </ogc:PropertyIsLessThanOrEqualTo> </ogc:And> </Filter> <PolygonSymbolizer> <Stroke> <CssParameter name="stroke">#000000</CssParameter> <CssParameter name="stroke-width">1</CssParameter> </Stroke> <Fill> <CssParameter name="fill">#FF0000</CssParameter> <CssParameter name="fill-opacity">1</CssParameter> </Fill> SLD: fe_and.xml Filter Encoding spec. side 13-14, 23


Download ppt "Hands-on øvelser ved Kortforsyningen Partnerseminar 2005"

Lignende præsentationer


Annoncer fra Google