private MultiLevelImage createNaNReplacedImage(final MultiLevelImage projectedImage, MultiLevelModel targetModel, final double value) { return new DefaultMultiLevelImage(new AbstractMultiLevelSource(targetModel) { @Override public RenderedImage createImage(int targetLevel) { return new ReplaceNaNOpImage(projectedImage.getImage(targetLevel), value); } }); }
@Override public void dispose() { for (final Product key : nodeMap.keySet()) { key.removeProductNodeListener(this); } nodeMap.clear(); super.dispose(); }
private MultiLevelImage createNaNReplacedImage(final MultiLevelImage projectedImage, final double value) { return new DefaultMultiLevelImage(new AbstractMultiLevelSource(targetModel) { @Override public RenderedImage createImage(int targetLevel) { return new ReplaceNaNOpImage(projectedImage.getImage(targetLevel), value); } }); }
@Override public void dispose() { VectorDataNode vectorDataNode = vectorDataReference.get(); if (vectorDataNode != null) { Product product = vectorDataNode.getProduct(); if (product != null) { product.removeProductNodeListener(this); } } vectorDataReference.clear(); super.dispose(); }
@Override protected RenderedImage createSourceImage() { final MultiLevelModel model = ImageManager.getMultiLevelModel(this); return new DefaultMultiLevelImage(new AbstractMultiLevelSource(model) { @Override public RenderedImage createImage(int level) { return new TiePointGridOpImage(TiePointGrid.this, ResolutionLevel.create(getModel(), level)); } }); }
@Override // @Loggable public MultiLevelImage createSourceImage(L1BBandInfo tileBandInfo) { BandL1bSceneMultiLevelSource bandScene = new BandL1bSceneMultiLevelSource(sceneDescription, tileBandInfo, imageToModelTransform); SystemUtils.LOG.log(Level.parse(S2Config.LOG_SCENE), "BandScene: " + bandScene); return new DefaultMultiLevelImage(bandScene); } }
private MultiLevelImage createLog10ScaledImage(final MultiLevelImage projectedImage) { return new DefaultMultiLevelImage(new AbstractMultiLevelSource(projectedImage.getModel()) { @Override public RenderedImage createImage(int level) { return new Log10OpImage(projectedImage.getImage(level)); } }); }
private static DefaultMultiLevelImage createLatitudeSourceImage(final Orthorectifier orthorectifier, final Band band) { return new DefaultMultiLevelImage(new AbstractMultiLevelSource(ImageManager.getMultiLevelModel(band)) { @Override protected RenderedImage createImage(final int level) { return new LatitudeSourceImage(orthorectifier, band, ResolutionLevel.create(getModel(), level)); } }); }
private static RenderedImage createElevationSourceImage(final ElevationModel dem, final GeoCoding geoCoding, final Band band) { return new DefaultMultiLevelImage(new AbstractMultiLevelSource(ImageManager.getMultiLevelModel(band)) { @Override protected RenderedImage createImage(final int level) { return new ElevationSourceImage(dem, geoCoding, band, ResolutionLevel.create(getModel(), level)); } }); }
private static DefaultMultiLevelImage createLongitudeSourceImage(final Orthorectifier orthorectifier, final Band band) { return new DefaultMultiLevelImage(new AbstractMultiLevelSource(ImageManager.getMultiLevelModel(band)) { @Override protected RenderedImage createImage(final int level) { return new LongitudeSourceImage(orthorectifier, band, ResolutionLevel.create(getModel(), level)); } }); }
private static MultiLevelImage replaceInvalidValuesByNaN(final RasterDataNode rasterDataNode, final MultiLevelImage srcImage, final MultiLevelImage maskImage, final Number fillValue) { final MultiLevelModel multiLevelModel = getMultiLevelModel(rasterDataNode); return new DefaultMultiLevelImage(new AbstractMultiLevelSource(multiLevelModel) { @Override public RenderedImage createImage(int sourceLevel) { return new FillConstantOpImage(srcImage.getImage(sourceLevel), maskImage.getImage(sourceLevel), fillValue); } }); }
private static RenderedImage createElevationSourceImage(final ElevationModel dem, final GeoCoding geoCoding, final Band band) { return new DefaultMultiLevelImage(new AbstractMultiLevelSource(band.createMultiLevelModel()) { @Override protected RenderedImage createImage(final int level) { return new ElevationSourceImage(dem, geoCoding, band, ResolutionLevel.create(getModel(), level)); } }); }
@Override public MultiLevelImage createSourceImage(BandInfo bandInfo) { TileIndexMultiLevelSource tileIndex = new TileIndexMultiLevelSource(sceneDescription, bandInfo, imageToModelTransform); SystemUtils.LOG.fine("TileIndex: " + tileIndex); return new DefaultMultiLevelImage(tileIndex); } }
private MultiLevelImage createLog10ScaledImage(final MultiLevelImage projectedImage) { return new DefaultMultiLevelImage(new AbstractMultiLevelSource(projectedImage.getModel()) { @Override public RenderedImage createImage(int level) { return new Log10OpImage(projectedImage.getImage(level)); } }); }
@Override // @Loggable public MultiLevelImage createSourceImage(L1BBandInfo tileBandInfo) { TileIndexMultiLevelSource bandScene = new TileIndexMultiLevelSource(sceneDescription, tileBandInfo, imageToModelTransform); SystemUtils.LOG.log(Level.parse(S2Config.LOG_SCENE), "BandScene: " + bandScene); return new DefaultMultiLevelImage(bandScene); } }
@Override protected RenderedImage createSourceImage() { final MultiLevelModel model = ImageManager.getMultiLevelModel(this); final AbstractMultiLevelSource multiLevelSource = new AbstractMultiLevelSource(model) { @Override protected RenderedImage createImage(int level) { ImageManager imageManager = ImageManager.getInstance(); RenderingHints rh = new RenderingHints(JAI.KEY_BORDER_EXTENDER, BorderExtender.createInstance( BorderExtenderCopy.BORDER_COPY)); PlanarImage geophysicalImage = imageManager.getGeophysicalImage(getSource(), level); int dataBufferType = getDataType() == ProductData.TYPE_FLOAT64 ? DataBuffer.TYPE_DOUBLE : DataBuffer.TYPE_FLOAT; geophysicalImage = FormatDescriptor.create(geophysicalImage, dataBufferType, null); PlanarImage validMaskImage = imageManager.getValidMaskImage(getSource(), level); if (validMaskImage != null) { geophysicalImage = new FillConstantOpImage(geophysicalImage, validMaskImage, Float.NaN); } return createSourceLevelImage(geophysicalImage, level, rh); } }; return new DefaultMultiLevelImage(multiLevelSource); }
private MultiLevelImage createGeophysicalImage() { return new DefaultMultiLevelImage(new GenericMultiLevelSource(getSourceImage()) { @Override protected RenderedImage createImage(RenderedImage[] sourceImages, int level) { final RenderedImage source = sourceImages[0]; final double factor = getScalingFactor(); final double offset = getScalingOffset(); final ScalingType scalingType = getScalingType(); final InterpretationType interpretationType = getInterpretationType(); final int sourceDataType = source.getSampleModel().getDataType(); final int targetDataType = ReinterpretDescriptor.getTargetDataType(sourceDataType, factor, offset, scalingType, interpretationType); final SampleModel sampleModel = new SingleBandedSampleModel(targetDataType, source.getSampleModel().getWidth(), source.getSampleModel().getHeight()); final ImageLayout imageLayout = ReinterpretDescriptor.createTargetImageLayout(source, sampleModel); return ReinterpretDescriptor.create(source, factor, offset, scalingType, interpretationType, new RenderingHints(JAI.KEY_IMAGE_LAYOUT, imageLayout)); } }); }
public MultiLevelImage getMaskImage(final String expression, final Product product) { synchronized (maskImageMap) { final MaskKey key = new MaskKey(product, expression); MultiLevelImage mli = maskImageMap.get(key); if (mli == null) { MultiLevelSource mls = new AbstractMultiLevelSource(createMultiLevelModel(product)) { @Override public RenderedImage createImage(int level) { return VirtualBandOpImage.createMask(expression, product, ResolutionLevel.create(getModel(), level)); } }; mli = new DefaultMultiLevelImage(mls); product.addProductNodeListener(rasterDataChangeListener); maskImageMap.put(key, mli); } return mli; } }
private static MultiLevelImage replaceNoDataValueByNaN(final RasterDataNode rasterDataNode, final MultiLevelImage srcImage, final double noDataValue, final Number newValue) { final MultiLevelModel multiLevelModel = getMultiLevelModel(rasterDataNode); final int targetDataType = ImageManager.getDataBufferType(rasterDataNode.getGeophysicalDataType()); return new DefaultMultiLevelImage(new AbstractMultiLevelSource(multiLevelModel) { @Override public RenderedImage createImage(int sourceLevel) { return new ReplaceValueOpImage(srcImage, noDataValue, newValue, targetDataType); } }); }
private MultiLevelImage toMultiLevelImage(RenderedImage sourceImage) { MultiLevelImage mli; if (sourceImage instanceof MultiLevelImage) { mli = (MultiLevelImage) sourceImage; } else { MultiLevelModel model = ImageManager.getMultiLevelModel(this); mli = new DefaultMultiLevelImage(new DefaultMultiLevelSource(sourceImage, model)); } return mli; }