[Geoserver-devel] [JIRA] (GEOS-7235) Raster styling: ChannelSelection overriding transparency

Michael Scholz created an issue

GeoServer / ImprovementGEOS-7235

Raster styling: ChannelSelection overriding transparency

Issue Type:

ImprovementImprovement

Affects Versions:

2.8.0

Assignee:

Unassigned

Components:

WMS

Created:

08/Oct/15 6:19 PM

Environment:

Ubuntu 14.04 Server x64, Oracle Java 1.7, Native JAI

Labels:

WMS SLD alpha transparency RasterSymbolizer

Priority:

MediumMedium

Reporter:

Michael Scholz

Having imagery data to render as WMS I want to use the <ContrastEnhancement> of the <RasterSymbolizer> to enhance the image’s contrast. To make my nodata-values transparent for the WMS output, my input raster has either defined a 4th alpha band or I define “InputTransparentColor” to 000000 in the layer properties of a 3-band rgb-raster accordingly (gdal dstnodata = 0). It works very well with the default raster style. But consider a custom style with contrast enhancement like this:

<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0" 
 xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/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>raster_contrast</Name>
    <UserStyle>
      <Title>Raster Contrast Enhancement</Title>
      <Abstract>Raster style with custom contrast adjustment</Abstract>
      <FeatureTypeStyle>
        <Rule>
          <Name>rule1</Name>
          <Title>Opaque Raster</Title>
          <Abstract>A raster with 100% opacity and custom contrast</Abstract>
          <RasterSymbolizer>
            <Opacity>1.0</Opacity>
            <ChannelSelection>
              <RedChannel>
                <SourceChannelName>1</SourceChannelName>
                <ContrastEnhancement>
                  <Normalize>
                    <VendorOption name="algorithm">StretchToMinimumMaximum</VendorOption>
                    <VendorOption name="minValue">33</VendorOption>
                    <VendorOption name="maxValue">227</VendorOption>
                  </Normalize>
                  <GammaValue>0.6</GammaValue>
                </ContrastEnhancement>
              </RedChannel>
              <GreenChannel>
                <SourceChannelName>2</SourceChannelName>
                <ContrastEnhancement>
                  <Normalize>
                    <VendorOption name="algorithm">StretchToMinimumMaximum</VendorOption>
                    <VendorOption name="minValue">44</VendorOption>
                    <VendorOption name="maxValue">225</VendorOption>
                  </Normalize>
                  <GammaValue>0.6</GammaValue>
                </ContrastEnhancement>                
              </GreenChannel>
              <BlueChannel>
                <SourceChannelName>3</SourceChannelName>
                <ContrastEnhancement>
                  <Normalize>
                    <VendorOption name="algorithm">StretchToMinimumMaximum</VendorOption>
                    <VendorOption name="minValue">46</VendorOption>
                    <VendorOption name="maxValue">227</VendorOption>
                  </Normalize>
                  <GammaValue>0.6</GammaValue>
                </ContrastEnhancement>                
              </BlueChannel>
            </ChannelSelection>            
          </RasterSymbolizer>
        </Rule>
      </FeatureTypeStyle>
    </UserStyle>
  </NamedLayer>
</StyledLayerDescriptor>

Using this style the transparent areas are being ignored and rendered black (r,g,b=0,0,0), even tough the corresponding alpha channel states 0 at the clicked coordinate. As I understand, the <ChannelSelection> of this SLD will strip out the alpha channel which GeoServer uses to render transparency. If the default raster style can handle alpha without problems it would be nice to combine it with <ChannelSelection> and <ContrastEnhancement> somehow. Can this be achieved on SLD level or within GeoServer?

Add Comment

Add Comment

This message was sent by Atlassian JIRA (v7.0.0-OD-07-011#70107-sha1:db940e9)

Atlassian logo