MSP data model Styled Layer Descriptor (SLD)

14-15 March 2019

MarSP: 2nd Capacity Building Workshop

LUIS MIGUEL AGUDO

** GIS DEVELOPER **

  • IEO
  • IOC/UNESCO
  • JRC / EUROPEAN COMMISSION

OLVIDO TELLO ANTÓN

** GIS ANALYST**

  • INVESTIGADORA EN IEO
  • RESPONSABLE SIG EN IEO

GERARDO BRUQUE

** GIS ANALYST**

  • TÉCNICO SUPERIOR EN IEO

SLD

Styled Layer Descriptor

SLD

Styled Layer Descriptor

The Styled Layer Descriptor (SLD) is an OGC standard.

 

 

 

 

Allows for the application apply style properties to the geographic features of a web map and also allows the retrieval of the web map style legend.

1. SLD specify how feature types and layers are portrayed or rendered in WMS, WFS and WCS and are necessary to portray geospatial data of varying attributes.

 

2. SLD is an XML-based markup language and is very powerful, although somewhat complex.

 

3. Each feature type style can have multiple rules as defined by an SLD document, which act as filters controlling how styling is applied based on feature's attributes and zoom level and contain symbolizers specifying styling for points, lines, polygons, raster data and text labels

<FeatureTypeStyle>
 <Rule>
   <PointSymbolizer>
     <Graphic>
       <Mark>
         <WellKnownName>circle</WellKnownName>
         <Fill>
           <CssParameter name="fill">#FF0000</CssParameter>
         </Fill>
       </Mark>
       <Size>6</Size>
     </Graphic>
   </PointSymbolizer>
 </Rule>
</FeatureTypeStyle>
<FeatureTypeStyle>
 <Rule>
   <Name>SmallPop</Name>
   <Title>1 to 50000</Title>
   <ogc:Filter>
     <ogc:PropertyIsLessThan>
       <ogc:PropertyName>pop</ogc:PropertyName>
       <ogc:Literal>50000</ogc:Literal>
     </ogc:PropertyIsLessThan>
   </ogc:Filter>
   <PointSymbolizer>
     <Graphic>
       <Mark>
         <WellKnownName>circle</WellKnownName>
         <Fill>
           <CssParameter name="fill">#0033CC</CssParameter>
         </Fill>
       </Mark>
       <Size>8</Size>
     </Graphic>
   </PointSymbolizer>
 </Rule>
 <Rule>
   <Name>MediumPop</Name>
   <Title>50000 to 100000</Title>
   <ogc:Filter>
     <ogc:And>
       <ogc:PropertyIsGreaterThanOrEqualTo>
         <ogc:PropertyName>pop</ogc:PropertyName>
         <ogc:Literal>50000</ogc:Literal>
       </ogc:PropertyIsGreaterThanOrEqualTo>
       <ogc:PropertyIsLessThan>
         <ogc:PropertyName>pop</ogc:PropertyName>
         <ogc:Literal>100000</ogc:Literal>
       </ogc:PropertyIsLessThan>
     </ogc:And>
   </ogc:Filter>
   <PointSymbolizer>
     <Graphic>
       <Mark>
         <WellKnownName>circle</WellKnownName>
         <Fill>
           <CssParameter name="fill">#0033CC</CssParameter>
         </Fill>
       </Mark>
       <Size>12</Size>
     </Graphic>
   </PointSymbolizer>
 </Rule>
 <Rule>
   <Name>LargePop</Name>
   <Title>Greater than 100000</Title>
   <ogc:Filter>
     <ogc:PropertyIsGreaterThanOrEqualTo>
       <ogc:PropertyName>pop</ogc:PropertyName>
       <ogc:Literal>100000</ogc:Literal>
     </ogc:PropertyIsGreaterThanOrEqualTo>
   </ogc:Filter>
   <PointSymbolizer>
     <Graphic>
       <Mark>
         <WellKnownName>circle</WellKnownName>
         <Fill>
           <CssParameter name="fill">#0033CC</CssParameter>
         </Fill>
       </Mark>
       <Size>16</Size>
     </Graphic>
   </PointSymbolizer>
 </Rule>
</FeatureTypeStyle>
<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.opengis.net/sld" xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd" version="1.0.0" >
  <NamedLayer>
    <Name>Prueba</Name>
    <UserStyle>
      <FeatureTypeStyle>
        <FeatureTypeName>Feature</FeatureTypeName>
        <Rule>
          <MinScaleDenominator>50000</MinScaleDenominator>
          <Name>No Warning</Name>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>warning_group_code_ext</ogc:PropertyName>
              <ogc:Literal>0</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill" >
                <ogc:Literal>#EBEBEB</ogc:Literal>
              </CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke" >
                <ogc:Literal>#000000</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-opacity" >
                <ogc:Literal>0.5</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-width" >
                <ogc:Literal>1.0</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-linecap" >
                <ogc:Literal>butt</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-linejoin" >
                <ogc:Literal>bevel</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-dashoffset" >
                <ogc:Literal>0.0</ogc:Literal>
              </CssParameter>
            </Stroke>
          </PolygonSymbolizer>
        </Rule>
        <Rule>
          <Name>Watch</Name>
          <MinScaleDenominator>50000</MinScaleDenominator>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>warning_group_code_ext</ogc:PropertyName>
              <ogc:Literal>1</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>          
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill" >
                <ogc:Literal>#FFFF66</ogc:Literal>
              </CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke" >
                <ogc:Literal>#000000</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-opacity" >
                <ogc:Literal>0.5</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-width" >
                <ogc:Literal>1.0</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-linecap" >
                <ogc:Literal>butt</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-linejoin" >
                <ogc:Literal>bevel</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-dashoffset" >
                <ogc:Literal>0.0</ogc:Literal>
              </CssParameter>
            </Stroke>
          </PolygonSymbolizer>
        </Rule>
        <Rule>
          <Name>Watch Exceptional</Name>
          <MinScaleDenominator>50000</MinScaleDenominator>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>warning_group_code_ext</ogc:PropertyName>
              <ogc:Literal>11</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill" >
                <ogc:Literal>#FFFF66</ogc:Literal>
              </CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke" >
                <ogc:Literal>#000000</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-opacity" >
                <ogc:Literal>0.5</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-width" >
                <ogc:Literal>1.0</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-linecap" >
                <ogc:Literal>butt</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-linejoin" >
                <ogc:Literal>bevel</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-dashoffset" >
                <ogc:Literal>0.0</ogc:Literal>
              </CssParameter>
            </Stroke>
          </PolygonSymbolizer>
          <PolygonSymbolizer>
            <Fill>
              <GraphicFill>
                <Graphic>
                  <Mark>
                    <WellKnownName>shape://slash</WellKnownName>
                    <Stroke>
                      <CssParameter name="stroke">#007D00</CssParameter>
                      <CssParameter name="stroke-width">1</CssParameter>
                    </Stroke>
                  </Mark>
                  <Size>8</Size>
                </Graphic>
              </GraphicFill>
            </Fill>
          </PolygonSymbolizer>
        </Rule>
        <Rule>
          <Name>Alert</Name>
          <MinScaleDenominator>50000</MinScaleDenominator>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>warning_group_code_ext</ogc:PropertyName>
              <ogc:Literal>2</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>          
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill" >
                <ogc:Literal>#FFCC00</ogc:Literal>
              </CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke" >
                <ogc:Literal>#000000</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-opacity" >
                <ogc:Literal>0.5</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-width" >
                <ogc:Literal>1.0</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-linecap" >
                <ogc:Literal>butt</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-linejoin" >
                <ogc:Literal>bevel</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-dashoffset" >
                <ogc:Literal>0.0</ogc:Literal>
              </CssParameter>
            </Stroke>
          </PolygonSymbolizer>
        </Rule>
        <Rule>
          <Name>Alert Exceptional</Name>
          <MinScaleDenominator>50000</MinScaleDenominator>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>warning_group_code_ext</ogc:PropertyName>
              <ogc:Literal>12</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>          
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill" >
                <ogc:Literal>#FFCC00</ogc:Literal>
              </CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke" >
                <ogc:Literal>#000000</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-opacity" >
                <ogc:Literal>0.5</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-width" >
                <ogc:Literal>1.0</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-linecap" >
                <ogc:Literal>butt</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-linejoin" >
                <ogc:Literal>bevel</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-dashoffset" >
                <ogc:Literal>0.0</ogc:Literal>
              </CssParameter>
            </Stroke>
          </PolygonSymbolizer>
          <PolygonSymbolizer>
            <Fill>
              <GraphicFill>
                <Graphic>
                  <Mark>
                    <WellKnownName>shape://slash</WellKnownName>
                    <Stroke>
                      <CssParameter name="stroke">#007D00</CssParameter>
                      <CssParameter name="stroke-width">1</CssParameter>
                    </Stroke>
                  </Mark>
                  <Size>8</Size>
                </Graphic>
              </GraphicFill>
            </Fill>
          </PolygonSymbolizer>
        </Rule>
        <Rule>
          <Name>Alarm</Name>
          <MinScaleDenominator>50000</MinScaleDenominator>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>warning_group_code_ext</ogc:PropertyName>
              <ogc:Literal>3</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>          
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill" >
                <ogc:Literal>#CC0000</ogc:Literal>
              </CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke" >
                <ogc:Literal>#000000</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-opacity" >
                <ogc:Literal>0.5</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-width" >
                <ogc:Literal>1.0</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-linecap" >
                <ogc:Literal>butt</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-linejoin" >
                <ogc:Literal>bevel</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-dashoffset" >
                <ogc:Literal>0.0</ogc:Literal>
              </CssParameter>
            </Stroke>
          </PolygonSymbolizer>
        </Rule>
        <Rule>
          <Name>Alarm Exceptional</Name>
          <MinScaleDenominator>50000</MinScaleDenominator>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>warning_group_code_ext</ogc:PropertyName>
              <ogc:Literal>13</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>          
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill" >
                <ogc:Literal>#CC0000</ogc:Literal>
              </CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke" >
                <ogc:Literal>#000000</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-opacity" >
                <ogc:Literal>0.5</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-width" >
                <ogc:Literal>1.0</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-linecap" >
                <ogc:Literal>butt</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-linejoin" >
                <ogc:Literal>bevel</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-dashoffset" >
                <ogc:Literal>0.0</ogc:Literal>
              </CssParameter>
            </Stroke>
          </PolygonSymbolizer>
          <PolygonSymbolizer>
            <Fill>
              <GraphicFill>
                <Graphic>
                  <Mark>
                    <WellKnownName>shape://slash</WellKnownName>
                    <Stroke>
                      <CssParameter name="stroke">#007D00</CssParameter>
                      <CssParameter name="stroke-width">1</CssParameter>
                    </Stroke>
                  </Mark>
                  <Size>8</Size>
                </Graphic>
              </GraphicFill>
            </Fill>
          </PolygonSymbolizer>
        </Rule>
        <Rule>
          <Name>Failed</Name>
          <MinScaleDenominator>50000</MinScaleDenominator>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>warning_group_code_ext</ogc:PropertyName>
              <ogc:Literal>4</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>          
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill" >
                <ogc:Literal>#8B0000</ogc:Literal>
              </CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke" >
                <ogc:Literal>#000000</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-opacity" >
                <ogc:Literal>0.5</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-width" >
                <ogc:Literal>1.0</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-linecap" >
                <ogc:Literal>butt</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-linejoin" >
                <ogc:Literal>bevel</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-dashoffset" >
                <ogc:Literal>0.0</ogc:Literal>
              </CssParameter>
            </Stroke>
          </PolygonSymbolizer>
        </Rule>
        <Rule>
          <Name>Failed Exceptional</Name>
          <MinScaleDenominator>50000</MinScaleDenominator>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>warning_group_code_ext</ogc:PropertyName>
              <ogc:Literal>14</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>          
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill" >
                <ogc:Literal>#8B0000</ogc:Literal>
              </CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke" >
                <ogc:Literal>#000000</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-opacity" >
                <ogc:Literal>0.5</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-width" >
                <ogc:Literal>1.0</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-linecap" >
                <ogc:Literal>butt</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-linejoin" >
                <ogc:Literal>bevel</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-dashoffset" >
                <ogc:Literal>0.0</ogc:Literal>
              </CssParameter>
            </Stroke>
          </PolygonSymbolizer>
          <PolygonSymbolizer>
            <Fill>
              <GraphicFill>
                <Graphic>
                  <Mark>
                    <WellKnownName>shape://slash</WellKnownName>
                    <Stroke>
                      <CssParameter name="stroke">#007D00</CssParameter>
                      <CssParameter name="stroke-width">1</CssParameter>
                    </Stroke>
                  </Mark>
                  <Size>8</Size>
                </Graphic>
              </GraphicFill>
            </Fill>
          </PolygonSymbolizer>
        </Rule>
        <Rule>
          <Name>No Assessment</Name>
          <MinScaleDenominator>50000</MinScaleDenominator>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>warning_group_code_ext</ogc:PropertyName>
              <ogc:Literal>5</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>          
          <PolygonSymbolizer>
            <Fill>
              <CssParameter name="fill" >
                <ogc:Literal>#FFFFFF</ogc:Literal>
              </CssParameter>
            </Fill>
            <Stroke>
              <CssParameter name="stroke" >
                <ogc:Literal>#000000</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-opacity" >
                <ogc:Literal>0.5</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-width" >
                <ogc:Literal>1.0</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-linecap" >
                <ogc:Literal>butt</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-linejoin" >
                <ogc:Literal>bevel</ogc:Literal>
              </CssParameter>
              <CssParameter name="stroke-dashoffset" >
                <ogc:Literal>0.0</ogc:Literal>
              </CssParameter>
            </Stroke>
          </PolygonSymbolizer>
        </Rule>        
        <Rule>
          <Name>Exceptional</Name>
          <MinScaleDenominator>50000</MinScaleDenominator>
          <ogc:Filter>
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>warning_group_code_ext</ogc:PropertyName>
              <ogc:Literal>6</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>          
          <PolygonSymbolizer>
            <Fill>
              <GraphicFill>
                <Graphic>
                  <Mark>
                    <WellKnownName>shape://slash</WellKnownName>
                    <Stroke>
                      <CssParameter name="stroke">#007D00</CssParameter>
                      <CssParameter name="stroke-width">1</CssParameter>
                    </Stroke>
                  </Mark>
                  <Size>8</Size>
                </Graphic>
              </GraphicFill>
            </Fill>
          </PolygonSymbolizer>
        </Rule>        
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

<Rule>

Styling rules define the portrayal of features. A rule combines a filter with any number of symbolizers. Features for which the filter condition evaluates as true are rendered using the symbolizers in the rule.

<Rule>

<Filter>

A filter is the mechanism in SLD for specifying conditions. They are similar in functionality to the SQL “WHERE” clause. Filters are used within Rules to determine which styles should be applied to which features in a data set. The filter language used by SLD follows the OGC Filter Encoding standard.

 

A filter condition is specified by using a comparison operator or a spatial operator, or two or more of these combined by logical operators.

<Filter>

  • <PropertyIsEqualTo>
  • <PropertyIsNotEqualTo>
  • <PropertyIsLessThan>
  • <PropertyIsLessThanOrEqualTo>
  • <PropertyIsGreaterThan>
  • <PropertyIsGreaterThanOrEqualTo>

Comparison operators:

<PropertyIsEqualTo>
   <PropertyName>NAME</PropertyName>
   <Literal>New York</Literal>
</PropertyIsEqualTo>

<Filter>

  • <Intersects>
  • <Equals>
  • <Disjoint>
  • <Touches>
  • <Within>
  • <Overlaps>
  • <Crosses>
  • <Intersects>
  • <Contains>

Spatial operators​:

<Intersects>
   <PropertyName>GEOMETRY</PropertyName>
   <Literal>
      <gml:Point>
         <gml:coordinates>1 1</gml:coordinates>
      </gml:Point>
   </Literal>
</Intersects>

The following filter selects features with a geometry that intersects the point (1,1)

<Filter>

  • <And>
  • <Or>
  • <Not>

Logical operators:

<And>
 <PropertyIsEqualTo>
  <PropertyName>NAME</PropertyName>
  <Literal>New York</Literal>
 </PropertyIsEqualTo>
 <Intersects>
  <PropertyName>GEOMETRY</PropertyName>
  <Literal>
     <gml:Point>
         <gml:coordinates>1 1</gml:coordinates>
     </gml:Point>
  </Literal>
 </Intersects>
</And>
<FeatureTypeStyle>
 <Rule>
   <PointSymbolizer>
     <Graphic>
       <Mark>
         <WellKnownName>circle</WellKnownName>
         <Fill>
           <CssParameter name="fill">#FF0000</CssParameter>
         </Fill>
       </Mark>
       <Size>6</Size>
     </Graphic>
   </PointSymbolizer>
   <TextSymbolizer>
     <Label>
       <ogc:PropertyName>name</ogc:PropertyName>
     </Label>
     <Font>
       <CssParameter name="font-family">Arial</CssParameter>
       <CssParameter name="font-size">12</CssParameter>
       <CssParameter name="font-style">normal</CssParameter>
       <CssParameter name="font-weight">bold</CssParameter>
     </Font>
     <LabelPlacement>
       <PointPlacement>
         <AnchorPoint>
           <AnchorPointX>0.5</AnchorPointX>
           <AnchorPointY>0.0</AnchorPointY>
         </AnchorPoint>
         <Displacement>
           <DisplacementX>0</DisplacementX>
           <DisplacementY>25</DisplacementY>
         </Displacement>
         <Rotation>-45</Rotation>
       </PointPlacement>
     </LabelPlacement>
     <Fill>
       <CssParameter name="fill">#990099</CssParameter>
     </Fill>
   </TextSymbolizer>
 </Rule>
</FeatureTypeStyle>
<FeatureTypeStyle>
 <Rule>
   <LineSymbolizer>
     <Stroke>
       <CssParameter name="stroke">#0000FF</CssParameter>
       <CssParameter name="stroke-width">1</CssParameter>
       <CssParameter name="stroke-dasharray">10 10</CssParameter>
     </Stroke>
   </LineSymbolizer>
   <LineSymbolizer>
     <Stroke>
       <GraphicStroke>
         <Graphic>
           <Mark>
             <WellKnownName>circle</WellKnownName>
             <Stroke>
               <CssParameter name="stroke">#000033</CssParameter>
               <CssParameter name="stroke-width">1</CssParameter>
             </Stroke>
           </Mark>
           <Size>5</Size>
         </Graphic>
       </GraphicStroke>
       <CssParameter name="stroke-dasharray">5 15</CssParameter>
       <CssParameter name="stroke-dashoffset">7.5</CssParameter>
     </Stroke>
   </LineSymbolizer>
 </Rule>
</FeatureTypeStyle>
<FeatureTypeStyle>
 <Rule>
   <Name>SmallPop</Name>
   <Title>Less Than 200,000</Title>
   <ogc:Filter>
     <ogc:PropertyIsLessThan>
       <ogc:PropertyName>pop</ogc:PropertyName>
       <ogc:Literal>200000</ogc:Literal>
     </ogc:PropertyIsLessThan>
   </ogc:Filter>
   <PolygonSymbolizer>
     <Fill>
       <CssParameter name="fill">#66FF66</CssParameter>
     </Fill>
   </PolygonSymbolizer>
 </Rule>
 <Rule>
   <Name>MediumPop</Name>
   <Title>200,000 to 500,000</Title>
   <ogc:Filter>
     <ogc:And>
       <ogc:PropertyIsGreaterThanOrEqualTo>
         <ogc:PropertyName>pop</ogc:PropertyName>
         <ogc:Literal>200000</ogc:Literal>
       </ogc:PropertyIsGreaterThanOrEqualTo>
       <ogc:PropertyIsLessThan>
         <ogc:PropertyName>pop</ogc:PropertyName>
         <ogc:Literal>500000</ogc:Literal>
       </ogc:PropertyIsLessThan>
     </ogc:And>
   </ogc:Filter>
   <PolygonSymbolizer>
     <Fill>
       <CssParameter name="fill">#33CC33</CssParameter>
     </Fill>
   </PolygonSymbolizer>
 </Rule>
 <Rule>
   <Name>LargePop</Name>
   <Title>Greater Than 500,000</Title>
   <ogc:Filter>
     <ogc:PropertyIsGreaterThan>
       <ogc:PropertyName>pop</ogc:PropertyName>
       <ogc:Literal>500000</ogc:Literal>
     </ogc:PropertyIsGreaterThan>
   </ogc:Filter>
   <PolygonSymbolizer>
     <Fill>
       <CssParameter name="fill">#009900</CssParameter>
     </Fill>
   </PolygonSymbolizer>
 </Rule>
</FeatureTypeStyle>
<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:se="http://www.opengis.net/se" version="1.1.0" xmlns:ogc="http://www.opengis.net/ogc" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd" xmlns:xlink="http://www.w3.org/1999/xlink">
  <NamedLayer>
    <se:Name>MSP_Arinaga_Zonning</se:Name>
    <UserStyle>
      <se:Name>MSP_Arinaga_Zonning</se:Name>
      <se:FeatureTypeStyle>
        <se:Rule>
          <se:Name>AgriculturalProductionForOwnConsumption</se:Name>
          <se:Description>
            <se:Title>Agricultural Production For Own Consumption</se:Title>
          </se:Description>
          <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>hilucsLandUse1.href</ogc:PropertyName>
              <ogc:Literal>http://www.geoportal.ulpgc.es/registro/plannedLandUse/HilucsExt/1_1_3_AgriculturalProductionForOwnConsumption.html</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <se:PolygonSymbolizer>
            <se:Fill>
              <se:SvgParameter name="fill">#e6e66e</se:SvgParameter>
            </se:Fill>
            <se:Stroke>
              <se:SvgParameter name="stroke">#232323</se:SvgParameter>
              <se:SvgParameter name="stroke-width">1</se:SvgParameter>
              <se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
            </se:Stroke>
          </se:PolygonSymbolizer>
        </se:Rule>
        <se:Rule>
          <se:Name>OtherMiningAndQuarrying</se:Name>
          <se:Description>
            <se:Title>Other Mining And Quarrying</se:Title>
          </se:Description>
          <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>hilucsLandUse1.href</ogc:PropertyName>
              <ogc:Literal>http://www.geoportal.ulpgc.es/registro/plannedLandUse/HilucsExt/1_3_3_OtherMiningAndQuarrying.html</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <se:PolygonSymbolizer>
            <se:Fill>
              <se:SvgParameter name="fill">#6ee66e</se:SvgParameter>
            </se:Fill>
            <se:Stroke>
              <se:SvgParameter name="stroke">#232323</se:SvgParameter>
              <se:SvgParameter name="stroke-width">1</se:SvgParameter>
              <se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
            </se:Stroke>
          </se:PolygonSymbolizer>
        </se:Rule>
        <se:Rule>
          <se:Name>AquacultureSeaWater</se:Name>
          <se:Description>
            <se:Title>Aquaculture Sea Water</se:Title>
          </se:Description>
          <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>hilucsLandUse1.href</ogc:PropertyName>
              <ogc:Literal>http://www.geoportal.ulpgc.es/registro/plannedLandUse/HilucsExt/1_4_1_1_AquacultureSeaWater.html</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <se:PolygonSymbolizer>
            <se:Fill>
              <se:SvgParameter name="fill">#00c5ff</se:SvgParameter>
            </se:Fill>
            <se:Stroke>
              <se:SvgParameter name="stroke">#232323</se:SvgParameter>
              <se:SvgParameter name="stroke-width">1</se:SvgParameter>
              <se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
            </se:Stroke>
          </se:PolygonSymbolizer>
        </se:Rule>
        <se:Rule>
          <se:Name>LightEndProductIndustry</se:Name>
          <se:Description>
            <se:Title>Light End Product Industry</se:Title>
          </se:Description>
          <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>hilucsLandUse1.href</ogc:PropertyName>
              <ogc:Literal>http://www.geoportal.ulpgc.es/registro/plannedLandUse/HilucsExt/2_3_LightEndProductIndustry.html</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <se:PolygonSymbolizer>
            <se:Fill>
              <se:SvgParameter name="fill">#55ff00</se:SvgParameter>
            </se:Fill>
            <se:Stroke>
              <se:SvgParameter name="stroke">#004da8</se:SvgParameter>
              <se:SvgParameter name="stroke-width">2</se:SvgParameter>
              <se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
            </se:Stroke>
          </se:PolygonSymbolizer>
        </se:Rule>
        <se:Rule>
          <se:Name>RenewableEnergyProductionWind</se:Name>
          <se:Description>
            <se:Title>Renewable Energy Production Wind</se:Title>
          </se:Description>
          <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>hilucsLandUse1.href</ogc:PropertyName>
              <ogc:Literal>http://www.geoportal.ulpgc.es/registro/plannedLandUse/HilucsExt/2_4_4_1_RenewableEnergyProductionWind.html</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <se:PolygonSymbolizer>
            <se:Fill>
              <se:SvgParameter name="fill">#6464c8</se:SvgParameter>
            </se:Fill>
            <se:Stroke>
              <se:SvgParameter name="stroke">#004da8</se:SvgParameter>
              <se:SvgParameter name="stroke-width">2</se:SvgParameter>
              <se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
            </se:Stroke>
          </se:PolygonSymbolizer>
        </se:Rule>
        <se:Rule>
          <se:Name>PublicAdministrationDefenceAndSocialSecurityServices</se:Name>
          <se:Description>
            <se:Title>Public Administration Defence And Social Security Services</se:Title>
          </se:Description>
          <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>hilucsLandUse1.href</ogc:PropertyName>
              <ogc:Literal>http://www.geoportal.ulpgc.es/registro/plannedLandUse/HilucsExt/3_3_1_PublicAdministrationDefenceAndSocialSecurityServices.html</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <se:PolygonSymbolizer>
            <se:Fill>
              <se:SvgParameter name="fill">#969696</se:SvgParameter>
            </se:Fill>
            <se:Stroke>
              <se:SvgParameter name="stroke">#ff0000</se:SvgParameter>
              <se:SvgParameter name="stroke-width">2</se:SvgParameter>
              <se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
            </se:Stroke>
          </se:PolygonSymbolizer>
        </se:Rule>
        <se:Rule>
          <se:Name>AirTransport</se:Name>
          <se:Description>
            <se:Title>Air Transport</se:Title>
          </se:Description>
          <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>hilucsLandUse1.href</ogc:PropertyName>
              <ogc:Literal>http://www.geoportal.ulpgc.es/registro/plannedLandUse/HilucsExt/4_1_3_AirTransport.html</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <se:PolygonSymbolizer>
            <se:Fill>
              <se:SvgParameter name="fill">#ffd9ee</se:SvgParameter>
            </se:Fill>
            <se:Stroke>
              <se:SvgParameter name="stroke">#ffffff</se:SvgParameter>
              <se:SvgParameter name="stroke-width">1</se:SvgParameter>
              <se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
            </se:Stroke>
          </se:PolygonSymbolizer>
        </se:Rule>
        <se:Rule>
          <se:Name>WaterTransport</se:Name>
          <se:Description>
            <se:Title>Water Transport</se:Title>
          </se:Description>
          <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>hilucsLandUse1.href</ogc:PropertyName>
              <ogc:Literal>http://www.geoportal.ulpgc.es/registro/plannedLandUse/HilucsExt/4_1_4_WaterTransport.html</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <se:PolygonSymbolizer>
            <se:Fill>
              <se:SvgParameter name="fill">#ff73df</se:SvgParameter>
            </se:Fill>
            <se:Stroke>
              <se:SvgParameter name="stroke">#ffffff</se:SvgParameter>
              <se:SvgParameter name="stroke-width">1</se:SvgParameter>
              <se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
            </se:Stroke>
          </se:PolygonSymbolizer>
        </se:Rule>
        <se:Rule>
          <se:Name>MarineTrafficLanes</se:Name>
          <se:Description>
            <se:Title>Marine Traffic Lanes</se:Title>
          </se:Description>
          <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>hilucsLandUse1.href</ogc:PropertyName>
              <ogc:Literal>http://www.geoportal.ulpgc.es/registro/plannedLandUse/HilucsExt/4_2_6_MarineTrafficLanes.html</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <se:PolygonSymbolizer>
            <se:Fill>
              <se:SvgParameter name="fill">#df73ff</se:SvgParameter>
            </se:Fill>
            <se:Stroke>
              <se:SvgParameter name="stroke">#ffffff</se:SvgParameter>
              <se:SvgParameter name="stroke-width">1</se:SvgParameter>
              <se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
            </se:Stroke>
          </se:PolygonSymbolizer>
        </se:Rule>
        <se:Rule>
          <se:Name>SubmarineCableTelecom</se:Name>
          <se:Description>
            <se:Title>Submarine Cable Telecom</se:Title>
          </se:Description>
          <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>hilucsLandUse1.href</ogc:PropertyName>
              <ogc:Literal>http://www.geoportal.ulpgc.es/registro/plannedLandUse/HilucsExt/4_3_5_2_SubmarineCableTelecom.html</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <se:PolygonSymbolizer>
            <se:Fill>
              <se:SvgParameter name="fill">#8400a8</se:SvgParameter>
            </se:Fill>
            <se:Stroke>
              <se:SvgParameter name="stroke">#ffffff</se:SvgParameter>
              <se:SvgParameter name="stroke-width">1</se:SvgParameter>
              <se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
            </se:Stroke>
          </se:PolygonSymbolizer>
        </se:Rule>
        <se:Rule>
          <se:Name>OutfallsGullyries</se:Name>
          <se:Description>
            <se:Title>Outfalls Gullyries</se:Title>
          </se:Description>
          <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>hilucsLandUse1.href</ogc:PropertyName>
              <ogc:Literal>http://www.geoportal.ulpgc.es/registro/plannedLandUse/HilucsExt/4_3_6_OutfallsGullyries.html</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <se:PolygonSymbolizer>
            <se:Fill>
              <se:SvgParameter name="fill">#a80084</se:SvgParameter>
            </se:Fill>
            <se:Stroke>
              <se:SvgParameter name="stroke">#ffffff</se:SvgParameter>
              <se:SvgParameter name="stroke-width">1</se:SvgParameter>
              <se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
            </se:Stroke>
          </se:PolygonSymbolizer>
        </se:Rule>
        <se:Rule>
          <se:Name>PermanentResidentialUse</se:Name>
          <se:Description>
            <se:Title>Permanent Residential Use</se:Title>
          </se:Description>
          <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>hilucsLandUse1.href</ogc:PropertyName>
              <ogc:Literal>http://www.geoportal.ulpgc.es/registro/plannedLandUse/HilucsExt/5_1_PermanentResidentialUse.html</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <se:PolygonSymbolizer>
            <se:Fill>
              <se:SvgParameter name="fill">#ff0000</se:SvgParameter>
            </se:Fill>
            <se:Stroke>
              <se:SvgParameter name="stroke">#ffff00</se:SvgParameter>
              <se:SvgParameter name="stroke-width">1</se:SvgParameter>
              <se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
            </se:Stroke>
          </se:PolygonSymbolizer>
        </se:Rule>
        <se:Rule>
          <se:Name>TransitionalAreas</se:Name>
          <se:Description>
            <se:Title>Transitional Areas</se:Title>
          </se:Description>
          <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>hilucsLandUse1.href</ogc:PropertyName>
              <ogc:Literal>http://www.geoportal.ulpgc.es/registro/plannedLandUse/HilucsExt/6_1_TransitionalAreas.html</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <se:PolygonSymbolizer>
            <se:Fill>
              <se:SvgParameter name="fill">#000000</se:SvgParameter>
            </se:Fill>
            <se:Stroke>
              <se:SvgParameter name="stroke">#004c73</se:SvgParameter>
              <se:SvgParameter name="stroke-width">1</se:SvgParameter>
              <se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
            </se:Stroke>
          </se:PolygonSymbolizer>
        </se:Rule>
        <se:Rule>
          <se:Name>LandAreasNotInOtherEconomicUse</se:Name>
          <se:Description>
            <se:Title>Land Areas Not In Other Economic Use</se:Title>
          </se:Description>
          <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>hilucsLandUse1.href</ogc:PropertyName>
              <ogc:Literal>http://www.geoportal.ulpgc.es/registro/plannedLandUse/HilucsExt/6_3_1_LandAreasNotInOtherEconomicUse.html</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <se:PolygonSymbolizer>
            <se:Fill>
              <se:SvgParameter name="fill">#dcdcdc</se:SvgParameter>
            </se:Fill>
            <se:Stroke>
              <se:SvgParameter name="stroke">#004c73</se:SvgParameter>
              <se:SvgParameter name="stroke-width">1</se:SvgParameter>
              <se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
            </se:Stroke>
          </se:PolygonSymbolizer>
        </se:Rule>
        <se:Rule>
          <se:Name>AreasWithoutAnySpecifiedPlannedUse</se:Name>
          <se:Description>
            <se:Title>Areas Without Any Specified Planned Use</se:Title>
          </se:Description>
          <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>hilucsLandUse1.href</ogc:PropertyName>
              <ogc:Literal>http://www.geoportal.ulpgc.es/registro/plannedLandUse/HilucsExt/6_5_AreasWithoutAnySpecifiedPlannedUse.html</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <se:PolygonSymbolizer>
            <se:Fill>
              <se:SvgParameter name="fill">#bee8ff</se:SvgParameter>
            </se:Fill>
            <se:Stroke>
              <se:SvgParameter name="stroke">#004c73</se:SvgParameter>
              <se:SvgParameter name="stroke-width">1</se:SvgParameter>
              <se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
            </se:Stroke>
          </se:PolygonSymbolizer>
        </se:Rule>
        <se:Rule>
          <se:Name>MarineProtectedArea</se:Name>
          <se:Description>
            <se:Title>Marine Protected Area</se:Title>
          </se:Description>
          <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
            <ogc:PropertyIsEqualTo>
              <ogc:PropertyName>hilucsLandUse1.href</ogc:PropertyName>
              <ogc:Literal>http://www.geoportal.ulpgc.es/registro/plannedLandUse/HilucsExt/6_7_1_MarineProtectedArea.html</ogc:Literal>
            </ogc:PropertyIsEqualTo>
          </ogc:Filter>
          <se:PolygonSymbolizer>
            <se:Fill>
              <se:SvgParameter name="fill">#e69800</se:SvgParameter>
            </se:Fill>
            <se:Stroke>
              <se:SvgParameter name="stroke">#004c73</se:SvgParameter>
              <se:SvgParameter name="stroke-width">1</se:SvgParameter>
              <se:SvgParameter name="stroke-linejoin">bevel</se:SvgParameter>
            </se:Stroke>
          </se:PolygonSymbolizer>
        </se:Rule>
      </se:FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

The OGC Styled Layer Descriptor (SLD) is used in INSPIRE in both View Services (along with the INSPIRE Profile of ISO 19128) and is present in INSPIRE's data specifications.

Luis Miguel Agudo

lmagudo@gmail.com

MSP data model Styled Layer Descriptor (SLD)

By Luis Miguel Agudo Bravo

MSP data model Styled Layer Descriptor (SLD)

  • 591