Geoserver SLD styling issue with external graphics and attribute rules
Asked Answered
M

3

5

I am creating a SLD for Geoserver wms layer. The SLD validates without error but the icons will not show in the map. I am using attribute based rules to compare strings to have the correct image show for the correct feature. Here is my code and thanks for any help!

<?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>Upper Shore Image Points</Name>
<UserStyle>
  <Title>Vendor Points</Title>
  <FeatureTypeStyle>
  <Rule>
   <Name>Famers Market</Name>
    <Title>All Farmers Markets</Title>
      <ogc:Filter>
        <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
           <ogc:PropertyName>type</ogc:PropertyName>
           <ogc:Literal>farmers maket vendor</ogc:Literal>
         </ogc:PropertyIsLike>
       </ogc:Filter>
      <PointSymbolizer>
        <Graphic>
          <ExternalGraphic>
            <OnlineResource
              xlink:type="simple"
              xlink:href="Farmers Markets.jpg" />
            <Format>image/jpeg</Format>
          </ExternalGraphic>
          <Size>32</Size>
        </Graphic>
      </PointSymbolizer>
    </Rule>
   <Rule>
   <Name>Fruit and Vegetable</Name>
    <Title>All Fruit and Vegetable</Title>
      <ogc:Filter>
        <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
           <ogc:PropertyName>type</ogc:PropertyName>
           <ogc:Literal>Fruit and Vegetable Farm</ogc:Literal>
         </ogc:PropertyIsLike>
       </ogc:Filter>
      <PointSymbolizer>
        <Graphic>
          <ExternalGraphic>
            <OnlineResource
              xlink:type="simple"
              xlink:href="Fruit and Vegetable Farms.jpg" />
            <Format>image/jpeg</Format>
          </ExternalGraphic>
          <Size>32</Size>
        </Graphic>
      </PointSymbolizer>
    </Rule>
 <Rule>
   <Name>Horse Stable</Name>
    <Title>All Horse Stables</Title>
      <ogc:Filter>
        <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
           <ogc:PropertyName>type</ogc:PropertyName>
           <ogc:Literal>Horse Stable</ogc:Literal>
         </ogc:PropertyIsLike>
       </ogc:Filter>
      <PointSymbolizer>
        <Graphic>
          <ExternalGraphic>
            <OnlineResource
              xlink:type="simple"
              xlink:href="Horse Stable.jpg" />
            <Format>image/jpeg</Format>
          </ExternalGraphic>
          <Size>32</Size>
        </Graphic>
      </PointSymbolizer>
    </Rule>
     <Rule>
   <Name>Wool Products</Name>
    <Title>All Wool Products</Title>
      <ogc:Filter>
        <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
           <ogc:PropertyName>type</ogc:PropertyName>
           <ogc:Literal>Wool Products</ogc:Literal>
         </ogc:PropertyIsLike>
       </ogc:Filter>
      <PointSymbolizer>
        <Graphic>
          <ExternalGraphic>
            <OnlineResource
              xlink:type="simple"
              xlink:href="Wool Products.jpg" />
            <Format>image/jpeg</Format>
          </ExternalGraphic>
          <Size>32</Size>
        </Graphic>
      </PointSymbolizer>
    </Rule>
     <Rule>
   <Name>Restaurant</Name>
    <Title>All Restaurants</Title>
      <ogc:Filter>
        <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
           <ogc:PropertyName>type</ogc:PropertyName>
           <ogc:Literal>Restaurant</ogc:Literal>
         </ogc:PropertyIsLike>
       </ogc:Filter>
      <PointSymbolizer>
        <Graphic>
          <ExternalGraphic>
            <OnlineResource
              xlink:type="simple"
              xlink:href="Restaurant.jpg" />
            <Format>image/jpeg</Format>
          </ExternalGraphic>
          <Size>32</Size>
        </Graphic>
      </PointSymbolizer>
    </Rule>
     <Rule>
   <Name>Coffee Roasting</Name>
    <Title>All Coffee Roasting</Title>
      <ogc:Filter>
        <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
           <ogc:PropertyName>type</ogc:PropertyName>
           <ogc:Literal>Coffee Roasting</ogc:Literal>
         </ogc:PropertyIsLike>
       </ogc:Filter>
      <PointSymbolizer>
        <Graphic>
          <ExternalGraphic>
            <OnlineResource
              xlink:type="simple"
              xlink:href="Coffee Roasting.jpg" />
            <Format>image/jpeg</Format>
          </ExternalGraphic>
          <Size>32</Size>
        </Graphic>
      </PointSymbolizer>
    </Rule>
     <Rule>
   <Name>Charter Service</Name>
    <Title>All Charter Services</Title>
      <ogc:Filter>
        <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
           <ogc:PropertyName>type</ogc:PropertyName>
           <ogc:Literal>Charter Service</ogc:Literal>
         </ogc:PropertyIsLike>
       </ogc:Filter>
      <PointSymbolizer>
        <Graphic>
          <ExternalGraphic>
            <OnlineResource
              xlink:type="simple"
              xlink:href="Charter Service.jpg" />
            <Format>image/jpeg</Format>
          </ExternalGraphic>
          <Size>32</Size>
        </Graphic>
      </PointSymbolizer>
    </Rule>
     <Rule>
   <Name>Apiary</Name>
    <Title>All Apiaries</Title>
      <ogc:Filter>
        <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
           <ogc:PropertyName>type</ogc:PropertyName>
           <ogc:Literal>Apiary</ogc:Literal>
         </ogc:PropertyIsLike>
       </ogc:Filter>
      <PointSymbolizer>
        <Graphic>
          <ExternalGraphic>
            <OnlineResource
              xlink:type="simple"
              xlink:href="Apiary.jpg" />
            <Format>image/jpeg</Format>
          </ExternalGraphic>
          <Size>32</Size>
        </Graphic>
      </PointSymbolizer>
    </Rule>
     <Rule>
   <Name>Vineyard</Name>
    <Title>All Vineyards</Title>
      <ogc:Filter>
        <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
           <ogc:PropertyName>type</ogc:PropertyName>
           <ogc:Literal>Vineyard</ogc:Literal>
         </ogc:PropertyIsLike>
       </ogc:Filter>
      <PointSymbolizer>
        <Graphic>
          <ExternalGraphic>
            <OnlineResource
              xlink:type="simple"
              xlink:href="Vineyard.jpg" />
            <Format>image/jpeg</Format>
          </ExternalGraphic>
          <Size>32</Size>
        </Graphic>
      </PointSymbolizer>
    </Rule>
     <Rule>
   <Name>Retail Seafood</Name>
    <Title>All Retail Seafood</Title>
      <ogc:Filter>
        <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
           <ogc:PropertyName>type</ogc:PropertyName>
           <ogc:Literal>Retail Seafood</ogc:Literal>
         </ogc:PropertyIsLike>
       </ogc:Filter>
      <PointSymbolizer>
        <Graphic>
          <ExternalGraphic>
            <OnlineResource
              xlink:type="simple"
              xlink:href="Retail Seafood.jpg" />
            <Format>image/jpeg</Format>
          </ExternalGraphic>
          <Size>32</Size>
        </Graphic>
      </PointSymbolizer>
    </Rule>
     <Rule>
   <Name>Bakery</Name>
    <Title>All Bakeries</Title>
      <ogc:Filter>
        <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
           <ogc:PropertyName>type</ogc:PropertyName>
           <ogc:Literal>Bakery</ogc:Literal>
         </ogc:PropertyIsLike>
       </ogc:Filter>
      <PointSymbolizer>
        <Graphic>
          <ExternalGraphic>
            <OnlineResource
              xlink:type="simple"
              xlink:href="Bakery.jpg" />
            <Format>image/jpeg</Format>
          </ExternalGraphic>
          <Size>32</Size>
        </Graphic>
      </PointSymbolizer>
    </Rule>
     <Rule>
       <Name>Dairy/Eggs</Name>
       <Title>All Dairy/ Eggs</Title>
      <ogc:Filter>
        <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
           <ogc:PropertyName>type</ogc:PropertyName>
          <ogc:Literal>Dairy/Eggs</ogc:Literal>
         </ogc:PropertyIsLike>
       </ogc:Filter>
      <PointSymbolizer>
        <Graphic>
          <ExternalGraphic>
            <OnlineResource
              xlink:type="simple"
              xlink:href="Dairy_Eggs.jpg" />
            <Format>image/jpeg</Format>
          </ExternalGraphic>
          <Size>32</Size>
        </Graphic>
      </PointSymbolizer>
    </Rule>
     <Rule>
   <Name>Christmas Tree Farm</Name>
    <Title>All Christmas Tree Farms</Title>
      <ogc:Filter>
        <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
           <ogc:PropertyName>type</ogc:PropertyName>
           <ogc:Literal>Christmas Tree Farm</ogc:Literal>
         </ogc:PropertyIsLike>
       </ogc:Filter>
      <PointSymbolizer>
        <Graphic>
          <ExternalGraphic>
            <OnlineResource
              xlink:type="simple"
              xlink:href="Christmas Tree Farm.jpg" />
            <Format>image/jpeg</Format>
          </ExternalGraphic>
          <Size>32</Size>
        </Graphic>
      </PointSymbolizer>
    </Rule>
     <Rule>
       <Name>Grains</Name>
       <Title>All Grain Farms</Title>
      <ogc:Filter>
        <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
           <ogc:PropertyName>type</ogc:PropertyName>
          <ogc:Literal>Grains</ogc:Literal>
         </ogc:PropertyIsLike>
       </ogc:Filter>
      <PointSymbolizer>
        <Graphic>
          <ExternalGraphic>
            <OnlineResource
              xlink:type="simple"
              xlink:href="Grains.jpg" />
            <Format>image/jpeg</Format>
          </ExternalGraphic>
          <Size>32</Size>
        </Graphic>
      </PointSymbolizer>
    </Rule>
     <Rule>
   <Name>Meat Products</Name>
    <Title>All Meat Products</Title>
      <ogc:Filter>
        <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
           <ogc:PropertyName>type</ogc:PropertyName>
           <ogc:Literal>Meat Products</ogc:Literal>
         </ogc:PropertyIsLike>
       </ogc:Filter>
      <PointSymbolizer>
        <Graphic>
          <ExternalGraphic>
            <OnlineResource
              xlink:type="simple"
              xlink:href="Meat.jpg" />
            <Format>image/jpeg</Format>
          </ExternalGraphic>
          <Size>32</Size>
        </Graphic>
      </PointSymbolizer>
    </Rule>
     <Rule>
   <Name>Nursery</Name>
    <Title>All Nurseries</Title>
      <ogc:Filter>
        <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
           <ogc:PropertyName>type</ogc:PropertyName>
           <ogc:Literal>Nursery</ogc:Literal>
         </ogc:PropertyIsLike>
       </ogc:Filter>
      <PointSymbolizer>
        <Graphic>
          <ExternalGraphic>
            <OnlineResource
              xlink:type="simple"
              xlink:href="Nursery.jpg" />
            <Format>image/jpeg</Format>
          </ExternalGraphic>
          <Size>32</Size>
        </Graphic>
      </PointSymbolizer>
    </Rule>
     <Rule>
   <Name>Petting Zoo</Name>
    <Title>All Petting Zoos</Title>
      <ogc:Filter>
        <ogc:PropertyIsLike wildCard="*" singleChar="." escape="!">
           <ogc:PropertyName>type</ogc:PropertyName>
           <ogc:Literal>Petting Zoo</ogc:Literal>
         </ogc:PropertyIsLike>
       </ogc:Filter>
      <PointSymbolizer>
        <Graphic>
          <ExternalGraphic>
            <OnlineResource
              xlink:type="simple"
              xlink:href="Petting Zoo.jpg" />
            <Format>image/jpeg</Format>
          </ExternalGraphic>
          <Size>32</Size>
        </Graphic>
      </PointSymbolizer>
    </Rule>
  </FeatureTypeStyle>
</UserStyle>

Melodramatic answered 2/5, 2013 at 19:16 Comment(0)
D
12

I realize this post is old but maybe someone will benefit from my answer.

I didn't succeed in using relative image paths so I turned to using URL paths.

Put image(s) in $GEOSERVER_DATA_DIR/styles and reference it with http://localhost:8081/geoserver/styles/some_image.png

For example

<ExternalGraphic>
  <OnlineResource xlink:type="simple" xlink:href="http://localhost:8081/geoserver/styles/some_image.png"/>
  <Format>image/png</Format>
</ExternalGraphic>
Domesday answered 24/10, 2014 at 11:44 Comment(1)
Thanks a lot. I wasn't able to access images in any other way.Labyrinthodont
B
0

Nice answer, but you need to change the 8081 to 8080 assuming the geoserver instance is working on port 8080

Betatron answered 27/6, 2015 at 8:19 Comment(0)
I
0

you can put your image in style folder

Internationalism answered 12/6, 2016 at 9:56 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.