[Geoserver-users] Dealing with edges of data for GeoServer LineSymbolizer

Hello all,

I posted this question 2 months ago on GIS stackexchange, but no answer. Hoping someone on here might know. Thanks for your time.

I am creating contour lines of the ocean using the GEBCO gridded bathy data tiff (depth every 15 arcsecs) and a SDL style with LineSymbolizer. All looks good apart from at the edge of the data where the contour lines close at the edges. Is there a way to get LineSymbolizer (and TextSymbolizer) not to render the isolines on the edge of the data?

enter image description here

<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
  xsi:schemaLocation=["http://www.opengis.net/sld StyledLayerDescriptor.xsd"](http://www.opengis.net/sldStyledLayerDescriptor.xsd)
  xmlns=["http://www.opengis.net/sld"](http://www.opengis.net/sld)
  xmlns:ogc=["http://www.opengis.net/ogc"](http://www.opengis.net/ogc)
  xmlns:xlink=["http://www.w3.org/1999/xlink"](http://www.w3.org/1999/xlink)
  xmlns:xsi=["http://www.w3.org/2001/XMLSchema-instance"](http://www.w3.org/2001/XMLSchema-instance)>
  <NamedLayer>
    <Name>contour_dem</Name>
    <UserStyle>
      <Title>Bathymetry Contours</Title>
      <Abstract>Bathymetry contours produced from the GEBCO 15 arc-second gridded bathymetry</Abstract>
      <FeatureTypeStyle>
        <Transformation>
          <ogc:Function name="ras:Contour">
            <ogc:Function name="parameter">
              <ogc:Literal>data</ogc:Literal>
            </ogc:Function>
            <ogc:Function name="parameter">
              <ogc:Literal>levels</ogc:Literal>
              <ogc:Literal>0</ogc:Literal>
              <ogc:Literal>-100</ogc:Literal>
              <ogc:Literal>-200</ogc:Literal>
              <ogc:Literal>-300</ogc:Literal>
              <ogc:Literal>-400</ogc:Literal>
              <ogc:Literal>-500</ogc:Literal>
              ...
              <ogc:Literal>-11000</ogc:Literal>
              <ogc:Literal>-12000</ogc:Literal>
            </ogc:Function>
          </ogc:Function>
        </Transformation>
        ...
        <Rule>
          <Name>low</Name>
          <Title>Low Res Contours</Title>
          <ogc:Filter>
            <ogc:Or>
              <ogc:PropertyIsEqualTo>
                <ogc:PropertyName>value</ogc:PropertyName>
                <ogc:Literal>-1000</ogc:Literal>
              </ogc:PropertyIsEqualTo>
              <ogc:PropertyIsEqualTo>
                <ogc:PropertyName>value</ogc:PropertyName>
                <ogc:Literal>-6000</ogc:Literal>
              </ogc:PropertyIsEqualTo>
            </ogc:Or>
          </ogc:Filter>
          <LineSymbolizer>
            <Stroke>
              <CssParameter name="stroke">#000000</CssParameter>
              <CssParameter name="stroke-width">1</CssParameter>
            </Stroke>
          </LineSymbolizer>
          <TextSymbolizer>
            <Label>
              <ogc:PropertyName>value</ogc:PropertyName>
            </Label>
            <Font>
              <CssParameter name="font-family">Arial</CssParameter>
              <CssParameter name="font-style">Normal</CssParameter>
              <CssParameter name="font-size">10</CssParameter>
            </Font>
            <LabelPlacement>
              <LinePlacement/>
            </LabelPlacement>
            <Halo>
              <Radius>
                <ogc:Literal>2</ogc:Literal>
              </Radius>
              <Fill>
                <CssParameter name="fill">#FFFFFF</CssParameter>
                <CssParameter name="fill-opacity">0.6</CssParameter>
              </Fill>
            </Halo>
            <Fill>
              <CssParameter name="fill">#000000</CssParameter>
            </Fill>
            <Priority>2000</Priority>
            <VendorOption name="followLine">true</VendorOption>
            <VendorOption name="repeat">100</VendorOption>
            <VendorOption name="maxDisplacement">50</VendorOption>
            <VendorOption name="maxAngleDelta">30</VendorOption>
          </TextSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

Jack:

I expect this is not a case of if anyone knows, but if anyone has reported this as a feature request yet.

Thoughts:

  • Does the problem go away if you zoom in (is the problem just the edges of the dataset bounds, or is the problem at the end of the draw area).
  • If you set your layer bounds to less than the whole world, does the artifact still show up at the edge of the dataset? (Or edge of the draw area).
···


Jody Garnett