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)); } }); }
public static BandImageMultiLevelSource create(RasterDataNode[] rasterDataNodes, ProgressMonitor pm) { RasterDataNode rdn = rasterDataNodes[0]; MultiLevelModel model = ImageManager.getMultiLevelModel(rdn); return create(rasterDataNodes, model, pm); }
@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)); } }); }
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); } }); }
@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 double readEnergy(Placemark pin, Band spectralBand) { final MultiLevelModel multiLevelModel = ImageManager.getMultiLevelModel(spectralBand); final AffineTransform i2mTransform = multiLevelModel.getImageToModelTransform(0); final AffineTransform m2iTransform = multiLevelModel.getModelToImageTransform(level); final Point2D modelPixel = i2mTransform.transform(pin.getPixelPos(), null); final Point2D imagePixel = m2iTransform.transform(modelPixel, null); int pinPixelX = (int) Math.floor(imagePixel.getX()); int pinPixelY = (int) Math.floor(imagePixel.getY()); return ProductUtils.getGeophysicalSampleDouble(spectralBand, pinPixelX, pinPixelY, level); }
final MultiLevelModel multiLevelModel = ImageManager.getMultiLevelModel(associatedNode); final MultiLevelSource multiLevelSource = new AbstractMultiLevelSource(multiLevelModel) { @Override
@Override public MultiLevelImage createImage(final Mask mask) { final MultiLevelModel multiLevelModel = ImageManager.getMultiLevelModel(mask); final MultiLevelSource multiLevelSource = new AbstractMultiLevelSource(multiLevelModel) { @Override public RenderedImage createImage(int level) { return VirtualBandOpImage.createMask(getExpression(mask), mask.getProduct(), ResolutionLevel.create(getModel(), level)); } }; return new VirtualBandMultiLevelImage(multiLevelSource, getExpression(mask), mask.getProduct()) { @Override public void reset() { super.reset(); mask.fireProductNodeDataChanged(); } }; }
/** * Creates the image. * * @param mask The mask which requests creation of its image. * * @return The image. */ @Override public MultiLevelImage createImage(final Mask mask) { final MultiLevelModel multiLevelModel = ImageManager.getMultiLevelModel(mask); final MultiLevelSource multiLevelSource = new AbstractMultiLevelSource(multiLevelModel) { @Override public RenderedImage createImage(int level) { return VirtualBandOpImage.createMask(getExpression(mask), mask.getProduct(), ResolutionLevel.create(getModel(), level)); } }; return new VirtualBandMultiLevelImage(multiLevelSource, getExpression(mask), mask.getProduct()) { @Override public void reset() { super.reset(); mask.fireProductNodeDataChanged(); } }; }
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; }
public void readValues() { Debug.assertNotNull(bands); for (int i = 0; i < bands.length; i++) { final Band band = bands[i]; if (placemark != null) { // position of placemark is given in image (L0) coordinates // we have to transform them to the current level final MultiLevelModel multiLevelModel = ImageManager.getMultiLevelModel(band); final AffineTransform i2mTransform = multiLevelModel.getImageToModelTransform(0); final AffineTransform m2iTransform = multiLevelModel.getModelToImageTransform(0); final Point2D modelPixel = i2mTransform.transform(placemark.getPixelPos(), null); final Point2D imagePixel = m2iTransform.transform(modelPixel, null); int pixelX = (int) Math.floor(imagePixel.getX()); int pixelY = (int) Math.floor(imagePixel.getY()); energies[i] = getSample(band, pixelX, pixelY, 0); } } IndexValidator validator = new IndexValidator() { @Override public boolean validateIndex(int index) { return energies[index] != bands[index].getGeophysicalNoDataValue(); } }; Range.computeRangeDouble(energies, validator, energyRange, ProgressMonitor.NULL); // no invalidate() call here, SpectrumDiagram does this }
private MultiLevelImage getMultiLevelImageSourceImage(final Band band, final int bandIndex) throws IOException { MultiLevelModel model = ImageManager.getMultiLevelModel(band); Assert.state(model.getLevelCount() == 1 || model.getScale(1) == 2.0);
@Override protected RenderedImage createSourceImage() { final MultiLevelModel model = ImageManager.getMultiLevelModel(this); if (hasRasterData()) { // This code is for backward compatibility only final RenderedImage image = ImageUtils.createRenderedImage(getRasterWidth(), getRasterHeight(), getRasterData()); return new DefaultMultiLevelImage(new DefaultMultiLevelSource(image, model)); } else { return new DefaultMultiLevelImage(new AbstractMultiLevelSource(model) { @Override public RenderedImage createImage(int level) { return new BandOpImage(Band.this, ResolutionLevel.create(getModel(), level)); } }); } }
/** * Tests use of Product.getNumResolutionsMax in ImageManager.getMultiLevelModel introduced in BEAM 5. * * @throws Exception */ @Test public void testGetMultiLevelModel() throws Exception { MultiLevelModel mlm1, mlm2; final Product p = new Product("P", "T", 10960, 10960); final Band b1 = p.addBand("B1", "0"); // Virtual band image --> source image set final Band b2 = p.addBand("B2", ProductData.TYPE_FLOAT32); // Normal band image --> source image NOT set mlm1 = ImageManager.getMultiLevelModel(b1); mlm2 = ImageManager.getMultiLevelModel(b2); assertEquals(0, p.getNumResolutionsMax()); assertEquals(7, mlm1.getLevelCount()); assertEquals(7, mlm2.getLevelCount()); p.setNumResolutionsMax(3); b1.getSourceImage(); mlm1 = ImageManager.getMultiLevelModel(b1); mlm2 = ImageManager.getMultiLevelModel(b2); assertEquals(3, p.getNumResolutionsMax()); assertEquals(3, mlm1.getLevelCount()); assertEquals(3, mlm2.getLevelCount()); }
@Before public void setup() { p = new Product("P", "T", 1, 1); v = new VirtualBand("V", ProductData.TYPE_INT8, 1, 1, "1"); p.addBand(v); q = new Product("Q", "T", 1, 1); w = new VirtualBand("W", ProductData.TYPE_INT8, 1, 1, "0"); q.addBand(w); final ProductManager pm = new ProductManager(); pm.addProduct(p); pm.addProduct(q); final String expression = "$1.V == $2.W"; final MultiLevelModel multiLevelModel = ImageManager.getMultiLevelModel(v); image = new VirtualBandMultiLevelImage(new AbstractMultiLevelSource(multiLevelModel) { @Override public RenderedImage createImage(int level) { return VirtualBandOpImage.createMask(expression, p, ResolutionLevel.create(getModel(), level)); } }, expression, p); }
targetProduct.setEndTime(meanTime); srcModel = ImageManager.getMultiLevelModel(sourceProduct.getBandAt(0)); targetModel = ImageManager.createMultiLevelModel(targetProduct); reprojection = new Reproject(targetModel.getLevelCount());