@Override protected RasterDataNode createRasterDataNode() { return new VirtualBand("vb", ProductData.TYPE_UINT16, 10, 10, "0"); } }
private static void addMaskToProduct(String maskExpr, Product product, Map<Product, List<Band>> addedBands) { VirtualBand band = new VirtualBand(BINNING_MASK_NAME, ProductData.TYPE_UINT8, product.getSceneRasterWidth(), product.getSceneRasterHeight(), StringUtils.isNotNullAndNotEmpty(maskExpr) ? maskExpr : "true"); product.addBand(band); if (!addedBands.containsKey(product)) { addedBands.put(product, new ArrayList<Band>()); } addedBands.get(product).add(band); }
protected static RasterDataNode addVirtualBand(Product product, String bandName, int dataType, String expression) { final Band band = new VirtualBand(bandName, dataType, 10, 10, expression); product.addBand(band); return band; }
/** * Creates a new band with the given name and data type and adds it to this product and returns it. * The new band's samples are computed from the given band maths expression. * * @param bandName the new band's name * @param expression the band maths expression * @param dataType the raster data type, must be one of the multiple <code>ProductData.TYPE_<i>X</i></code> * constants * * @return the new band which has just been added * * @since BEAM 4.9 */ public Band addBand(final String bandName, final String expression, final int dataType) { final Band band = new VirtualBand(bandName, dataType, getSceneRasterWidth(), getSceneRasterHeight(), expression); addBand(band); return band; }
private Band createTestBand(int type, int w, int h, double offset) { final Product product = createTestProduct(w, h); final Band band = new VirtualBand("V", type, w, h, "(Y-0.5) * " + w + " + (X-0.5) - " + offset); product.addBand(band); return band; }
@Override protected void setUp() throws Exception { final Product product = new Product("x", "y", 2, 3); r = new VirtualBand("r", ProductData.TYPE_FLOAT32, 2, 3, "0"); g = new VirtualBand("g", ProductData.TYPE_FLOAT32, 2, 3, "0"); b = new VirtualBand("b", ProductData.TYPE_FLOAT32, 2, 3, "0"); product.addBand(r); product.addBand(g); product.addBand(b); r.ensureRasterData(); g.ensureRasterData(); b.ensureRasterData(); }
private static int getBandIndex(Product product, String expression, String virtualBandName) { final int index; if (product.getBand(expression) != null) { index = product.getBandIndex(expression); } else { final VirtualBand virtualBand = new VirtualBand(virtualBandName, ProductData.TYPE_FLOAT32, product.getSceneRasterWidth(), product.getSceneRasterHeight(), expression); product.addBand(virtualBand); index = product.getBandIndex(virtualBand.getName()); } return index; }
@Before public void setup() { Product product = new Product("P", "T", 10, 10); product.setFileLocation(new File(String.format("out/%s.dim", product.getName()))); band = new VirtualBand("V", ProductData.TYPE_INT32, 10, 10, "42"); product.addBand(band); productManager = new ProductManager(); productManager.addProduct(product); }
@Override public void initialize() { targetProduct = new Product("name", "desc", RASTER_WIDTH, RASTER_HEIGHT); targetProduct.addBand("OperatorBand", ProductData.TYPE_INT8); targetProduct.addBand("ConstantBand", ProductData.TYPE_INT8).setSourceImage(new BufferedImage(RASTER_WIDTH, RASTER_HEIGHT, BufferedImage.TYPE_BYTE_INDEXED)); targetProduct.addBand(new VirtualBand("VirtualBand", ProductData.TYPE_FLOAT32, RASTER_WIDTH, RASTER_HEIGHT, "OperatorBand + ConstantBand")); targetProduct.setPreferredTileSize(2, 2); }
protected Band createZeroFilledBand(int channel, String namePrefix) { final String name = namePrefix + CH_STRINGS[channel]; final VirtualBand band = new VirtualBand(name, ProductData.TYPE_FLOAT32, avhrrFile.getProductWidth(), avhrrFile.getProductHeight(), "0"); band.setUnit("-"); band.setDescription("Zero-filled placeholder for " + name + ", no data available"); band.setSpectralBandIndex(channel); band.setSpectralBandwidth(CH_BANDWIDTHS[channel]); band.setSpectralWavelength(CH_WAVELENGTHS[channel]); band.setValidPixelExpression(null); band.setNoDataValueUsed(true); band.setNoDataValue(0.0); return band; }
private static void addVirtualBandToProduct(Product product, String nrcsBandName, String nrcsExpression, String nrcsUnit, String nrcsDescription) { Band nrcsBand = product.getBand(nrcsBandName); if (nrcsBand instanceof VirtualBand) { VirtualBand vNrcsBand = (VirtualBand) nrcsBand; vNrcsBand.setExpression(nrcsExpression); vNrcsBand.setUnit(nrcsUnit); vNrcsBand.setDescription(nrcsDescription); } else { VirtualBand vNrcsBand = new VirtualBand(nrcsBandName, ProductData.TYPE_FLOAT32, product.getSceneRasterWidth(), product.getSceneRasterHeight(), nrcsExpression); vNrcsBand.setUnit(nrcsUnit); vNrcsBand.setDescription(nrcsDescription); product.addBand(vNrcsBand); } }
public void testVirtualBandExpressionsAreUpdateIfForeignNodeNameChanged() { final Product product1 = new Product("P1", "t", 1, 1); final VirtualBand p1v1 = new VirtualBand("P1V1", ProductData.TYPE_FLOAT32, 1, 1, "42"); product1.addBand(p1v1); final Product product2 = new Product("P2", "t", 1, 1); final VirtualBand p2v1 = new VirtualBand("P2V1", ProductData.TYPE_FLOAT32, 1, 1, "$1.P1V1"); product2.addBand(p2v1); final Product product3 = new Product("P3", "t", 1, 1); final VirtualBand p3v1 = new VirtualBand("P3V1", ProductData.TYPE_FLOAT32, 1, 1, "$1.P1V1 + $2.P2V1"); product3.addBand(p3v1); _productManager.addProduct(product1); _productManager.addProduct(product2); _productManager.addProduct(product3); p1v1.setName("TheAnswer"); assertEquals("$1.TheAnswer", p2v1.getExpression()); assertEquals("$1.TheAnswer + $2.P2V1", p3v1.getExpression()); }
private void addVirtualBands(Product product) { final int sceneRasterWidth = product.getSceneRasterWidth(); final int sceneRasterHeight = product.getSceneRasterHeight(); VirtualBand virtualBand = new VirtualBand("vb1", ProductData.TYPE_FLOAT32, sceneRasterWidth, sceneRasterHeight, "radiance_8"); virtualBand.setNoDataValue(3f); virtualBand.setNoDataValueUsed(true); virtualBand.setDescription("VirtualBand-Description"); product.addBand(virtualBand); }
@Override public void initialize() throws OperatorException { Product product = new Product("X", "Y", w, h); product.addBand(new Band("A", ProductData.TYPE_INT32, w, h)); product.addBand(new Band("B", ProductData.TYPE_INT32, w, h)); product.addBand(new VirtualBand("C", ProductData.TYPE_INT32, w, h, "A*B")); setTargetProduct(product); } }
@Test public void testCreateLayerWithSingleRaster() { final RasterImageLayerType layerType = (RasterImageLayerType) getLayerType(); final Product product = new Product("N", "T", 10, 10); final Band raster = new VirtualBand("A", ProductData.TYPE_INT32, 10, 10, "42"); product.addBand(raster); final ImageLayer imageLayer = (ImageLayer) layerType.createLayer(raster, null); assertNotNull(imageLayer.getMultiLevelSource()); }
@Test public void testWriteReadVirtualBandIsNotExcludedInProduct() throws IOException { final VirtualBand virtualBand = new VirtualBand("VB", ProductData.TYPE_FLOAT32, outProduct.getSceneRasterWidth(), outProduct.getSceneRasterHeight(), "X * Y"); outProduct.addBand(virtualBand); final Product inProduct = writeReadProduct(); assertEquals(2, inProduct.getNumBands()); assertNotNull(inProduct.getBand("VB")); }
public void testExprAndTerm() { final Product product = new Product("p", "t", 10, 10); final VirtualBand virtualBand = new VirtualBand("vb", ProductData.TYPE_FLOAT32, 10, 10, "1.0"); product.addBand(virtualBand); assertEquals("1.0", virtualBand.getExpression()); try { virtualBand.readRasterDataFully(ProgressMonitor.NULL); } catch (IOException e) { fail("IOException not expected"); } for (int y = 0; y < 10; y++) { for (int x = 0; x < 10; x++) { assertEquals(1.0f, virtualBand.getPixelFloat(x, y), 1e-6f); } } }
public void testBitmaskDefExpressionsAreUpdateIfForeignNodeNameChanged() { final Product product1 = new Product("P1", "t", 1, 1); final VirtualBand p1v1 = new VirtualBand("P1V1", ProductData.TYPE_FLOAT32, 1, 1, "42"); product1.addBand(p1v1); final Product product2 = new Product("P2", "t", 1, 1); final BitmaskDef p2bd = new BitmaskDef("P2BD", "P2-Bitmask", "$1.P1V1 == 42.0", Color.RED, 0.5f); product2.addBitmaskDef(p2bd); _productManager.addProduct(product1); _productManager.addProduct(product2); p1v1.setName("TheAnswer"); assertEquals("$1.TheAnswer == 42.0", p2bd.getExpr()); }
@Test public void testExpressionIsChangedIfANodeNameIsChanged() { final Product product = new Product("p", "t", 10, 10); final VirtualBand virtualBand = new VirtualBand("vb", ProductData.TYPE_FLOAT32, 10, 10, "band1 + band2 - band3"); final File fileLocation = new File("dummy.dim"); product.setFileLocation(fileLocation); product.addBand(virtualBand); product.addBand("band1", ProductData.TYPE_FLOAT32); product.addBand("band2", ProductData.TYPE_FLOAT32); product.addBand("band3", ProductData.TYPE_FLOAT32); product.getBand("band1").setName("b1"); assertEquals("Name 'band1' is not changed", "b1 + band2 - band3", virtualBand.getExpression()); assertSame(fileLocation, product.getFileLocation()); }
@Override public void initialize() { int width = sourceProduct.getSceneRasterWidth(); int height = sourceProduct.getSceneRasterHeight(); PlanarImage constImage = ConstantDescriptor.create((float) width, (float) height, new Float[]{66.6f}, null); targetProduct = new Product("name", "desc", width, height); targetProduct.addBand("OperatorBand", ProductData.TYPE_INT8); targetProduct.addBand("ConstantBand", ProductData.TYPE_FLOAT32).setSourceImage(constImage); targetProduct.addBand(new VirtualBand("VirtualBand", ProductData.TYPE_FLOAT32, width, height, "OperatorBand + ConstantBand")); ProductUtils.copyBand(sourceProduct.getBandAt(0).getName(), sourceProduct, targetProduct, true); }