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)); } } } }
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); } }
@Test public void imageIsUpdated() { assertTrue(0 == image.getImage(0).getData().getSample(0, 0, 0)); w.setExpression("1"); assertTrue(0 != image.getImage(0).getData().getSample(0, 0, 0)); }
virtualBand.setExpression(paramVBExpression.getValueAsText());