private int getImageLevel(RenderedImage image) { if (image instanceof SingleBandedOpImage) { SingleBandedOpImage sboi = (SingleBandedOpImage) image; return sboi.getLevel(); } return -1; }
/** * Creates a new raster containing solely no-data (non-interpretable data, missing data) samples. The raster's * data buffer is filled with the given no-data value. * <p/> * The raster's origin is (0, 0). In order to translate the raster, * use {@link Raster#createTranslatedChild(int x, int y)}. * * @param noDataValue The no-data value used to fill the data buffer * of the raster created. * @return the raster created. * @see {@link NoDataRaster}. */ protected NoDataRaster createNoDataRaster(double noDataValue) { final Raster raster = createWritableRaster(getSampleModel(), new Point(0, 0)); final DataBuffer buffer = raster.getDataBuffer(); for (int i = 0; i < buffer.getSize(); i++) { buffer.setElemDouble(i, noDataValue); } return new NoDataRaster(raster); }
private SingleBandedOpImage(ImageLayout layout, int sourceWidth, int sourceHeight, Map configuration, ResolutionLevel level) { super(layout, configuration, layout.getSampleModel(null), layout.getMinX(null), layout.getMinY(null), layout.getWidth(null), layout.getHeight(null)); levelImageSupport = new LevelImageSupport(sourceWidth, sourceHeight, level); if (getTileCache() == null) { setTileCache(JAI.getDefaultInstance().getTileCache()); } }
@Override public Raster computeTile(int tileX, int tileY) { final Term term = parseExpression(); if (addDataToReferredRasterDataSymbols(getTileRect(tileX, tileY), term)) { termMap.put(new Point(tileX, tileY), term); return super.computeTile(tileX, tileY); } else { if (noDataRaster == null) { synchronized (this) { if (noDataRaster == null) { noDataRaster = createNoDataRaster(fillValue == null ? 0.0 : fillValue.doubleValue()); } } } return noDataRaster.createTranslatedChild(tileXToX(tileX), tileYToY(tileY)); } }