@Override protected RasterDataNode createRasterDataNode() { return new VirtualBand("vb", ProductData.TYPE_UINT16, 10, 10, "0"); } }
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); } } }
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; }
@Override protected RenderedImage createSourceImage() { return createVirtualSourceImage(this, getExpression()); }
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; }
/** * Creates a string defining this band object. */ @Override public String toString() { return getClass().getName() + "[" + getName() + "," + ProductData.getTypeString(getDataType()) + "," + getRasterWidth() + "," + getRasterHeight() + "]"; }
@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()); }
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); } }
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); }
final String initialExpression = "identifier_1 + oldIdentifier - identifier_3"; final String renamedExpression = "identifier_1 + newIdentifier - identifier_3"; final VirtualBand virtualBand = new VirtualBand("vb", ProductData.TYPE_UINT16, 10, 10, initialExpression); product.addBand(virtualBand); product.setModified(false); assertFalse(virtualBand.isModified()); assertEquals(initialExpression, virtualBand.getExpression()); virtualBand.updateExpression(oldIdentifier, newIdentifier); assertEquals(renamedExpression, virtualBand.getExpression()); assertTrue(virtualBand.isModified());
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 static List<RasterDataNode> getReferencedVirtualBands(final RasterDataNode node) { final Product product = node.getProduct(); final List<RasterDataNode> rasterList = new ArrayList<RasterDataNode>(); if (product != null) { for (int i = 0; i < product.getNumBands(); i++) { final Band band = product.getBandAt(i); if (band instanceof VirtualBand) { final VirtualBand virtualBand = (VirtualBand) band; if (isNodeReferencedByExpression(node, virtualBand.getExpression())) { rasterList.add(virtualBand); } } } } return rasterList; }
final int width = product.getSceneRasterWidth(); final int height = product.getSceneRasterHeight(); final VirtualBand virtualBand = new VirtualBand(bandName, type, width, height, getExpression(element)); product.addBand(virtualBand); virtualBand.setNoDataValue(getInvalidValue(element)); virtualBand.setNoDataValueUsed(getUseInvalidValue(element)); band = virtualBand; } else if (isFilterBand(element)) {
public static void storeRgbaExpressions(final Product product, final String[] rgbaExpressions) { for (int i = 0; i < RGBImageProfile.RGBA_BAND_NAMES.length; i++) { final String rgbBandName = RGBImageProfile.RGBA_BAND_NAMES[i]; final String rgbaExpression = rgbaExpressions[i]; final Band rgbBand = product.getBand(rgbBandName); final boolean expressionIsEmpty = rgbaExpression.equals(""); final boolean alphaChannel = i == 3; if (rgbBand != null) { // band already exists if (rgbBand instanceof VirtualBand) { VirtualBand virtualBand = (VirtualBand) rgbBand; virtualBand.setExpression(rgbaExpression); } else { product.removeBand(rgbBand); product.addBand(new VirtualBand(rgbBandName, ProductData.TYPE_FLOAT32, product.getSceneRasterWidth(), product.getSceneRasterHeight(), expressionIsEmpty ? "0" : rgbaExpression)); } } else { // band does not exist if (!alphaChannel || !expressionIsEmpty) { // don't add empty alpha channels product.addBand(new VirtualBand(rgbBandName, ProductData.TYPE_FLOAT32, product.getSceneRasterWidth(), product.getSceneRasterHeight(), expressionIsEmpty ? "0" : rgbaExpression)); } } } }
VirtualBand band = new VirtualBand(variableName, ProductData.TYPE_FLOAT32, product.getSceneRasterWidth(), band.setValidPixelExpression(variableValidExpr);
@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(); }
band = new VirtualBand(getBandName(), ProductData.TYPE_FLOAT32, width, height, getExpression()); setBandProperties(band, validMaskExpression); } else { expression = "(" + validMaskExpression + ") ? (" + expression + ") : NaN"; band.setSourceImage(VirtualBand.createVirtualSourceImage(band, expression));
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()); }
@Override public void visit(VirtualBand virtualBand) { if (!product.isCompatibleBandArithmeticExpression(virtualBand.getExpression())) { product.removeBand(virtualBand); String pattern = "Virtual band ''{0}'' removed from output product because it is not applicable."; /*I18N*/ messages.add(MessageFormat.format(pattern, virtualBand.getName())); } else { checkRaster(virtualBand, "virtual band"); } }
if (selectedProductNode instanceof VirtualBand) { VirtualBand virtualBand = (VirtualBand) selectedProductNode; String expression = virtualBand.getExpression(); realBand = new Band(bandName, ProductData.TYPE_FLOAT32, width, height); realBand.setDescription(createDescription(virtualBand.getDescription(), expression)); realBand.setSourceImage(virtualBand.getSourceImage()); } else if (selectedProductNode instanceof FilterBand) { FilterBand filterBand = (FilterBand) selectedProductNode;