protected ChannelsHandler() { super(RasterParser.this.factory); this.selection = sym.getChannelSelection(); }
/** * Returns an int[] containing the indices of the coverage bands that are used for the * symbolizer's selection channels * * @param symbolizer The input symbolizer * @return the band indices array (null if no channel selection was present in symbolizer) */ public static int[] getBandIndicesFromSelectionChannels(RasterSymbolizer symbolizer) { int[] bandIndices = null; ChannelSelection channelSelection = symbolizer.getChannelSelection(); if (channelSelection != null) { SelectedChannelType[] channels = channelSelection.getSelectedChannels(); if (channels != null) { bandIndices = new int[channels.length]; for (int i = 0; i < channels.length; i++) { // Note that in channel selection, channels start at index 1 bandIndices[i] = channels[i].getChannelName().evaluate(null, Integer.class) - 1; } } } return bandIndices; } }
/** * Takes into account that the band selection has been delegated down to the reader by producing * a new channel selection * * @param symbolizer * @return */ public static RasterSymbolizer setupSymbolizerForBandsSelection(RasterSymbolizer symbolizer) { ChannelSelection selection = symbolizer.getChannelSelection(); final SelectedChannelType[] originalChannels = selection.getSelectedChannels(); if (originalChannels != null) { int i = 0; SelectedChannelType[] channels = new SelectedChannelType[originalChannels.length]; for (SelectedChannelType originalChannel : originalChannels) { // Remember, channel indices start from 1 SelectedChannelTypeImpl channel = new SelectedChannelTypeImpl(); channel.setChannelName(Integer.toString(i + 1)); channel.setContrastEnhancement(originalChannel.getContrastEnhancement()); channels[i] = channel; i++; } ChannelSelectionUpdateStyleVisitor channelsUpdateVisitor = new ChannelSelectionUpdateStyleVisitor(channels); symbolizer.accept(channelsUpdateVisitor); return (RasterSymbolizer) channelsUpdateVisitor.getCopy(); } return symbolizer; }
@Override public void visit(RasterSymbolizer raster) { ChannelSelection channelSelection = copy(raster.getChannelSelection()); ColorMap colorMap = copy(raster.getColorMap()); ContrastEnhancement ce = copy(raster.getContrastEnhancement()); String geometryProperty = raster.getGeometryPropertyName(); Symbolizer outline = copy(raster.getImageOutline()); Expression overlap = copy(raster.getOverlap()); ShadedRelief shadedRelief = copy(raster.getShadedRelief()); Expression newOpacity = ff.literal(opacity); RasterSymbolizer copy = sf.createRasterSymbolizer( geometryProperty, newOpacity, channelSelection, overlap, colorMap, ce, shadedRelief, outline); if (STRICT && !copy.equals(raster)) { throw new IllegalStateException( "Was unable to duplicate provided raster:" + raster); } pages.push(copy); } };
@Override protected void encode(RasterSymbolizer sym) { put("opacity", sym.getOpacity()); if (!emptyColourMap(sym.getColorMap())) { inline(new ColorMapEncoder(sym.getColorMap())); } if (!emptyContrastEnhancement(sym.getContrastEnhancement())) { inline(new ContrastEnhancementEncoder(sym.getContrastEnhancement())); } if (!emptyChannelSelection(sym.getChannelSelection())) { inline(new ChannelSelectionEncoder(sym.getChannelSelection())); } super.encode(sym); }
protected ChannelsHandler() { super(RasterParser.this.factory); this.selection = sym.getChannelSelection(); }
@Override public void visit(RasterSymbolizer raster) { if (raster.getChannelSelection() != null) { raster.getChannelSelection().accept(this); } if (raster.getColorMap() != null) { raster.getColorMap().accept(this); } if (raster.getContrastEnhancement() != null) { raster.getContrastEnhancement().accept(this); } if (raster.getDescription() != null) { raster.getDescription().accept(this); } if (raster.getImageOutline() != null) { raster.getImageOutline().accept(this); } if (raster.getShadedRelief() != null) { raster.getShadedRelief().accept(this); } }
public void visit(RasterSymbolizer raster) { RasterSymbolizer copy = sf.createRasterSymbolizer(); copy.setChannelSelection(copy(raster.getChannelSelection())); copy.setColorMap(copy(raster.getColorMap())); copy.setContrastEnhancement(copy(raster.getContrastEnhancement())); copy.setGeometry(copy(raster.getGeometry())); copy.setUnitOfMeasure(raster.getUnitOfMeasure()); copy.setImageOutline(copy(raster.getImageOutline())); copy.setOpacity(copy(raster.getOpacity())); copy.setOverlapBehavior(raster.getOverlapBehavior()); copy.setShadedRelief(copy(raster.getShadedRelief())); if (STRICT && !copy.equals(raster)) { throw new IllegalStateException("Was unable to duplicate provided raster:" + raster); } pages.push(copy); }
public RasterSymbolizerBuilder reset(RasterSymbolizer symbolizer) { if (symbolizer == null) { return reset(); } opacity = symbolizer.getOpacity(); channelSelection.reset(symbolizer.getChannelSelection()); colorMap.reset(symbolizer.getColorMap()); contrast.reset(symbolizer.getContrastEnhancement()); if (symbolizer.getImageOutline() instanceof LineSymbolizer) { this.outline = new LineSymbolizerBuilder() .reset((LineSymbolizer) symbolizer.getImageOutline()); } else if (symbolizer.getImageOutline() instanceof PolygonSymbolizer) { this.outline = new PolygonSymbolizerBuilder() .reset((PolygonSymbolizer) symbolizer.getImageOutline()); } unset = false; return this; }
prevNode = currNode; final ChannelSelection cs = rs.getChannelSelection(); csNode.visit(cs);
symbolizer = GridCoverageRenderer.setupSymbolizerForBandsSelection(symbolizer); ChannelSelection cs = symbolizer.getChannelSelection(); SelectedChannelType[] postBandSelectionChannels = cs.getRGBChannels(); for (int i = 0; i < 3; i++) {
/** * Test to ensure that updating the channels duplicates the raster sybmolizer with the new rgb * channels */ public void testSetRasterRGBChannels() { RasterSymbolizer rs = sb.createRasterSymbolizer(); Style s = sb.createStyle(rs); SelectedChannelType red = sf.createSelectedChannelType("red", sf.createContrastEnhancement(ff.literal(0.2))); SelectedChannelType green = sf.createSelectedChannelType( "green", sf.createContrastEnhancement(ff.literal(0.4))); SelectedChannelType blue = sf.createSelectedChannelType("blue", sf.createContrastEnhancement(ff.literal(0.7))); SLD.setChannelSelection(s, new SelectedChannelType[] {red, green, blue}, null); assertNull(SLD.rasterSymbolizer(s).getChannelSelection().getGrayChannel()); assertNotNull(SLD.rasterSymbolizer(s).getChannelSelection().getRGBChannels()); SelectedChannelType[] selectedChannels = SLD.rasterSymbolizer(s).getChannelSelection().getRGBChannels(); assertEquals("red", selectedChannels[0].getChannelName().evaluate(null, String.class)); assertEquals("green", selectedChannels[1].getChannelName().evaluate(null, String.class)); assertEquals("blue", selectedChannels[2].getChannelName().evaluate(null, String.class)); assertNotSame(SLD.rasterSymbolizer(s), rs); } }
if (raster.getChannelSelection() != null) { final ChannelSelection cs = raster.getChannelSelection(); if (cs.getGrayChannel() != null) { start("ChannelSelection");
@Override protected ContrastEnhancement getContrastEnhancement(RasterSymbolizer rasterSymbolizer) { if (rasterSymbolizer != null) { ChannelSelection channelSelection = rasterSymbolizer.getChannelSelection(); if (channelSelection != null) { SelectedChannelType greyChannel = channelSelection.getGrayChannel(); if (greyChannel != null) { return greyChannel.getContrastEnhancement(); } } } return null; }
@Override protected ContrastEnhancement getContrastEnhancement(RasterSymbolizer rasterSymbolizer) { if (rasterSymbolizer != null) { ChannelSelection channelSelection = rasterSymbolizer.getChannelSelection(); if (channelSelection != null) { SelectedChannelType[] rgbChannels = channelSelection.getRGBChannels(); if (rgbChannels != null) { if (rgbChannels[2] != null) { return rgbChannels[2].getContrastEnhancement(); } } } } return null; }
@Override protected ContrastEnhancement getContrastEnhancement(RasterSymbolizer rasterSymbolizer) { if (rasterSymbolizer != null) { ChannelSelection channelSelection = rasterSymbolizer.getChannelSelection(); if (channelSelection != null) { SelectedChannelType[] rgbChannels = channelSelection.getRGBChannels(); if (rgbChannels != null) { if (rgbChannels[0] != null) { return rgbChannels[0].getContrastEnhancement(); } } } } return null; }
@Override protected ContrastEnhancement getContrastEnhancement(RasterSymbolizer rasterSymbolizer) { if (rasterSymbolizer != null) { ChannelSelection channelSelection = rasterSymbolizer.getChannelSelection(); if (channelSelection != null) { SelectedChannelType[] rgbChannels = channelSelection.getRGBChannels(); if (rgbChannels != null) { if (rgbChannels[1] != null) { return rgbChannels[1].getContrastEnhancement(); } } } } return null; }
private ChannelSelection getChannelSelection(LayerInfo layer) throws IOException { Style style = layer.getDefaultStyle().getStyle(); List<FeatureTypeStyle> fts = style.featureTypeStyles(); assertEquals(1, fts.size()); List<Rule> rules = fts.get(0).rules(); assertEquals(1, rules.size()); List<Symbolizer> symbolizers = rules.get(0).symbolizers(); assertEquals(1, symbolizers.size()); RasterSymbolizer rs = (RasterSymbolizer) symbolizers.get(0); return rs.getChannelSelection(); }
@Override protected void encode(RasterSymbolizer sym) { put("opacity", sym.getOpacity()); if (!emptyColourMap(sym.getColorMap())) { inline(new ColorMapEncoder(sym.getColorMap())); } if (!emptyContrastEnhancement(sym.getContrastEnhancement())) { inline(new ContrastEnhancementEncoder(sym.getContrastEnhancement())); } if (!emptyChannelSelection(sym.getChannelSelection())) { inline(new ChannelSelectionEncoder(sym.getChannelSelection())); } super.encode(sym); }
public void visit(RasterSymbolizer raster) { RasterSymbolizer copy = sf.createRasterSymbolizer(); copy.setChannelSelection( copy( raster.getChannelSelection() )); copy.setColorMap( copy( raster.getColorMap() )); copy.setContrastEnhancement( copy( raster.getContrastEnhancement())); copy.setGeometry(copy(raster.getGeometry())); copy.setUnitOfMeasure(raster.getUnitOfMeasure()); copy.setImageOutline( copy( raster.getImageOutline())); copy.setOpacity( copy( raster.getOpacity() )); copy.setOverlap( copy( raster.getOverlap())); copy.setShadedRelief( copy( raster.getShadedRelief())); if( STRICT && !copy.equals( raster )){ throw new IllegalStateException("Was unable to duplicate provided raster:"+raster ); } pages.push(copy); }