private static void setFlagCoding(final Element element, final Band band, Product product) { final String codingName = element.getChildTextTrim(DimapProductConstants.TAG_FLAG_CODING_NAME); if (codingName != null) { final FlagCoding flagCoding = product.getFlagCodingGroup().get(codingName); if (flagCoding != null) { band.setSampleCoding(flagCoding); } } }
private static void setIndexCoding(Element element, Band band, Product product) { final String codingName = element.getChildTextTrim(DimapProductConstants.TAG_INDEX_CODING_NAME); if (codingName != null) { final IndexCoding indexCoding = product.getIndexCodingGroup().get(codingName); if (indexCoding != null) { band.setSampleCoding(indexCoding); } } }
private static ImageInfo createIndexedImageInfo(Product product, Band band, IndexColorModel colorModel) { final IndexCoding indexCoding = new IndexCoding("color_map"); final int colorCount = colorModel.getMapSize(); final ColorPaletteDef.Point[] points = new ColorPaletteDef.Point[colorCount]; for (int j = 0; j < colorCount; j++) { final String name = String.format("I%3d", j); indexCoding.addIndex(name, j, ""); points[j] = new ColorPaletteDef.Point(j, new Color(colorModel.getRGB(j)), name); } product.getIndexCodingGroup().add(indexCoding); band.setSampleCoding(indexCoding); return new ImageInfo(new ColorPaletteDef(points, points.length)); }
private static void setFlagCoding(Band band, FlagCoding flagCoding, boolean rename, String pattern) { if (flagCoding != null) { String flagCodingName = flagCoding.getName(); if (rename) { flagCodingName = pattern.replace(SOURCE_NAME_REFERENCE, flagCodingName); } final Product product = band.getProduct(); if (!product.getFlagCodingGroup().contains(flagCodingName)) { addFlagCoding(product, flagCoding, flagCodingName); } band.setSampleCoding(product.getFlagCodingGroup().get(flagCodingName)); } }
private static void setIndexCoding(Band band, IndexCoding indexCoding, boolean rename, String pattern) { if (indexCoding != null) { String indexCodingName = indexCoding.getName(); if (rename) { indexCodingName = pattern.replace(SOURCE_NAME_REFERENCE, indexCodingName); } final Product product = band.getProduct(); if (!product.getIndexCodingGroup().contains(indexCodingName)) { addIndexCoding(product, indexCoding, indexCodingName); } band.setSampleCoding(product.getIndexCodingGroup().get(indexCodingName)); } }
private static ImageInfo createIndexedImageInfo(Product product, TIFFRenderedImage baseImage, Band band) { final IndexColorModel colorModel = (IndexColorModel) baseImage.getColorModel(); final IndexCoding indexCoding = new IndexCoding("color_map"); final int colorCount = colorModel.getMapSize(); final ColorPaletteDef.Point[] points = new ColorPaletteDef.Point[colorCount]; for (int j = 0; j < colorCount; j++) { final String name = String.format("I%3d", j); indexCoding.addIndex(name, j, ""); points[j] = new ColorPaletteDef.Point(j, new Color(colorModel.getRGB(j)), name); } product.getIndexCodingGroup().add(indexCoding); band.setSampleCoding(indexCoding); return new ImageInfo(new ColorPaletteDef(points, points.length)); }
@Override public void decode(ProfileReadContext ctx, Product p) throws IOException { final Band[] bands = p.getBands(); for (Band band : bands) { String variableName = ReaderUtils.getVariableName(ctx.getNetcdfFile(), band); final FlagCoding flagCoding = readFlagCoding(ctx, variableName); if (flagCoding != null) { p.getFlagCodingGroup().add(flagCoding); band.setSampleCoding(flagCoding); } } }
private void handleIndexCoding(Band sourceBand, Band targetBand, boolean renameComponents, String renamePattern) { if(sourceBand.getIndexCoding() != null) { targetBand.getProduct().getIndexCodingGroup().remove(targetBand.getIndexCoding()); targetBand.setSampleCoding(null); } setIndexCoding(targetBand, sourceBand.getIndexCoding(), renameComponents, renamePattern); }
/** * Creates the flag bands and the associated coding. */ private void createFlagBands() { if (getHeader().areFlagsPresent()) { createFlagCodings(); Band band = new Band(AtsrConstants.NADIR_FLAGS_NAME, ProductData.TYPE_INT16, AtsrConstants.ATSR_SCENE_RASTER_WIDTH, AtsrConstants.ATSR_SCENE_RASTER_HEIGHT); band.setDescription(AtsrConstants.NADIR_FLAGS_DESCRIPTION); band.setSampleCoding(_flagCodingNadir); addBand(band); if (!getHeader().isNadirOnly()) { band = new Band(AtsrConstants.FORWARD_FLAGS_NAME, ProductData.TYPE_INT16, AtsrConstants.ATSR_SCENE_RASTER_WIDTH, AtsrConstants.ATSR_SCENE_RASTER_HEIGHT); band.setDescription(AtsrConstants.FORWARD_FLAGS_DESCRIPTION); band.setSampleCoding(_flagCodingForward); addBand(band); } } }
private static void setFlagCoding(Band band, FlagCoding flagCoding) { if (flagCoding != null) { final String flagCodingName = flagCoding.getName(); final Product product = band.getProduct(); if (!product.getFlagCodingGroup().contains(flagCodingName)) { addFlagCoding(product, flagCoding); } band.setSampleCoding(product.getFlagCodingGroup().get(flagCodingName)); } }
private void handleFlagCoding(Band sourceBand, Band targetBand, boolean renameComponents, String renamePattern) { if(sourceBand.getFlagCoding() != null) { targetBand.getProduct().getFlagCodingGroup().remove(targetBand.getFlagCoding()); targetBand.setSampleCoding(null); } setFlagCoding(targetBand, sourceBand.getFlagCoding(), renameComponents, renamePattern); }
@Override public void decode(ProfileReadContext ctx, Product p) throws IOException { final Band[] bands = p.getBands(); for (Band band : bands) { String varName = EscapeStrings.backslashEscape(band.getName(), NetcdfFile.reservedSectionSpec); Variable variable = ctx.getNetcdfFile().findVariable(varName); final IndexCoding indexCoding = readIndexCoding(variable, band.getName()); if (indexCoding != null) { p.getIndexCodingGroup().add(indexCoding); band.setSampleCoding(indexCoding); } } }
@Override public void decode(ProfileReadContext ctx, Product p) throws IOException { final Band[] bands = p.getBands(); for (Band band : bands) { NetcdfFile netcdfFile = ctx.getNetcdfFile(); String variableName = ReaderUtils.getVariableName(netcdfFile, band); final Variable variable = netcdfFile.getRootGroup().findVariable(variableName); final IndexCoding indexCoding = readIndexCoding(variable, band.getName() + "_index_coding"); if (indexCoding != null) { p.getIndexCodingGroup().add(indexCoding); band.setSampleCoding(indexCoding); } } }
protected void addFlagCodingAndBitmaskDef() { BandReader bandReader = avhrrFile.createFlagBandReader(); Band flagsBand = new Band(bandReader.getBandName(), bandReader .getDataType(), avhrrFile.getProductWidth(), avhrrFile .getProductHeight()); FlagCoding fc = new FlagCoding(bandReader.getBandName()); fc.setDescription("Flag coding for AVHRR data quality"); addFlagAndBitmaskDef(fc, FLAG_QS, FLAG_QS_DESC, 0); addFlagAndBitmaskDef(fc, FLAG_SCANLINE, FLAG_SCANLINE_DESC, 1); addFlagAndBitmaskDef(fc, FLAG_3B, FLAG_SCANLINE_DESC, 2); addFlagAndBitmaskDef(fc, FLAG_4, FLAG_SCANLINE_DESC, 3); addFlagAndBitmaskDef(fc, FLAG_5, FLAG_SCANLINE_DESC, 4); addFlagAndBitmaskDef(fc, FLAG_SYNC, FLAG_SYNC_DESC, 5); flagsBand.setSampleCoding(fc); product.getFlagCodingGroup().add(fc); product.addBand(flagsBand); bandReaders.put(flagsBand, bandReader); }
private static void attachSynthesisQualityFlagBand(Product probavProduct, Product flagProduct) { FlagCoding probavSmFlagCoding = new FlagCoding(ProbaVConstants.SM_FLAG_BAND_NAME); ProbaVUtils.addSynthesisQualityFlags(probavSmFlagCoding); ProbaVUtils.addSynthesisQualityMasks(probavProduct); probavProduct.getFlagCodingGroup().add(probavSmFlagCoding); final Band smFlagBand = probavProduct.addBand(ProbaVConstants.SM_FLAG_BAND_NAME, ProductData.TYPE_INT16); smFlagBand.setDescription("PROBA-V Synthesis SM Flags"); smFlagBand.setSampleCoding(probavSmFlagCoding); ProbaVSynthesisBitMaskOp bitMaskOp = new ProbaVSynthesisBitMaskOp(); bitMaskOp.setParameterDefaultValues(); bitMaskOp.setSourceProduct("sourceProduct", flagProduct); Product bitMaskProduct = bitMaskOp.getTargetProduct(); smFlagBand.setSourceImage(bitMaskProduct.getBand(ProbaVConstants.SM_FLAG_BAND_NAME).getSourceImage()); }
private static void attachL1cQualityFlagBand(Product probavProduct, Product flagProduct, String sourceQualityBandName) { final String targetQualityFlagBandName = sourceQualityBandName + "_FLAGS"; FlagCoding probavL1cQualityFlagCoding = new FlagCoding(targetQualityFlagBandName); ProbaVUtils.addL1cQualityFlags(probavL1cQualityFlagCoding, sourceQualityBandName); ProbaVUtils.addL1cQualityMasks(probavProduct, sourceQualityBandName, targetQualityFlagBandName); probavProduct.getFlagCodingGroup().add(probavL1cQualityFlagCoding); final Band l1cQualityFlagBand = probavProduct.addBand(targetQualityFlagBandName, ProductData.TYPE_UINT8); l1cQualityFlagBand.setDescription("PROBA-V L1C Quality Flags"); l1cQualityFlagBand.setSampleCoding(probavL1cQualityFlagCoding); ProbaVL1cBitMaskOp bitMaskOp = new ProbaVL1cBitMaskOp(); bitMaskOp.setParameterDefaultValues(); bitMaskOp.setParameter("sourceQualityBandName", sourceQualityBandName); bitMaskOp.setParameter("targetQualityFlagBandName", targetQualityFlagBandName); bitMaskOp.setSourceProduct("sourceProduct", flagProduct); Product bitMaskProduct = bitMaskOp.getTargetProduct(); l1cQualityFlagBand.setSourceImage(bitMaskProduct.getBand(targetQualityFlagBandName).getSourceImage()); }
private Product createProduct(FlagCoding fc, int i) { Product p3 = new Product("p" + i, "t" + i, 16, 16); p3.setRefNo(i); p3.getFlagCodingGroup().add(fc); p3.addBand("f", ProductData.TYPE_UINT8).setSampleCoding(fc); p3.addBand("q", ProductData.TYPE_UINT32); p3.addBand("l", ProductData.TYPE_UINT32).setValidPixelExpression("f.LAND && !f.INVALID"); p3.addBand("w", ProductData.TYPE_UINT32).setValidPixelExpression("f.WATER && !f.INVALID"); p3.addBand("c", ProductData.TYPE_UINT32).setValidPixelExpression("f.CLOUD && !f.INVALID"); return p3; }
private void attachIndexCodedBand() { final Band band = createDataBand(0, 1, INDEX_CODED_BAND_NAME); final IndexCoding indexCoding = new IndexCoding(INDEX_CODING_NAME); indexCoding.addIndex("i0", 0, "i0"); indexCoding.addIndex("i1", 1, "i1"); band.setSampleCoding(indexCoding); ColorPaletteDef.Point[] points = new ColorPaletteDef.Point[2]; points[0] = new ColorPaletteDef.Point(0, Color.RED); points[1] = new ColorPaletteDef.Point(1, Color.GREEN); ColorPaletteDef colors = new ColorPaletteDef(points); band.setImageInfo(new ImageInfo(colors)); product.getIndexCodingGroup().add(indexCoding); product.addBand(band); }
public void testValidMaskExpressionIsAdjustedIfNodeNameChanged() { final RasterDataNode rasterDataNode = createRasterDataNode(); rasterDataNode.setValidPixelExpression("flagsBand.f1 || not flagsBand.f2"); final Product product = new Product("p", "NoType", rasterDataNode.getRasterWidth(), rasterDataNode.getRasterHeight()); addRasterDataNodeToProduct(product, rasterDataNode); final FlagCoding flagCoding = new FlagCoding("f"); flagCoding.addFlag("f1", 0x01, "descr"); flagCoding.addFlag("f2", 0x02, "descr"); final Band flagsBand = product.addBand("flagsBand", ProductData.TYPE_INT8); flagsBand.setSampleCoding(flagCoding); product.getFlagCodingGroup().add(flagCoding); flagsBand.setName("flags"); final String currentExpression = rasterDataNode.getValidPixelExpression(); final String expectedExpression = "flags.f1 || not flags.f2"; assertEquals("name is not changed", expectedExpression, currentExpression); }
private Product createProduct() { Product product = new Product("test", "test", PW, PH); TiePointGrid latGrid = new TiePointGrid("latGrid", GW, GH, 0.5f, 0.5f, S, S, createLatGridData()); TiePointGrid lonGrid = new TiePointGrid("lonGrid", GW, GH, 0.5f, 0.5f, S, S, createLonGridData()); product.addTiePointGrid(latGrid); product.addTiePointGrid(lonGrid); Band latBand = product.addBand("latBand", ProductData.TYPE_FLOAT32); Band lonBand = product.addBand("lonBand", ProductData.TYPE_FLOAT32); latBand.setRasterData(ProductData.createInstance(createBandData(latGrid))); lonBand.setRasterData(ProductData.createInstance(createBandData(lonGrid))); final FlagCoding flagCoding = new FlagCoding("flags"); flagCoding.addFlag("valid", 0, "valid pixel"); product.getFlagCodingGroup().add(flagCoding); Band flagomatBand = product.addBand("flagomat", ProductData.TYPE_UINT8); flagomatBand.setRasterData(ProductData.createInstance(ProductData.TYPE_UINT8, PW * PH)); flagomatBand.setSampleCoding(flagCoding); product.setGeoCoding(new TiePointGeoCoding(latGrid, lonGrid, Datum.WGS_84)); return product; }