/** * Creates a planar image corresponding of source band, at the specified resolution. * * @param bandIndex The index of the sourceBand (0-based) * */ private PlanarImage createTileImage(final int bandIndex, final int level) throws IOException { return (PlanarImage) this.sourceBands[bandIndex].getSourceImage().getImage(level); }
/** * Creates a planar image corresponding of a tile identified by row and column, at the specified resolution. * * @param row The row of the tile (0-based) * @param col The column of the tile (0-based) * @param level The resolution level (0 = highest) */ protected PlanarImage createTileImage(int row, int col, int level) throws IOException { return (PlanarImage) sourceBands[row][col].getSourceImage().getImage(level); }
/** * Creates a planar image corresponding of a tile identified by row and column, at the specified resolution. * * @param row The row of the tile (0-based) * @param col The column of the tile (0-based) * @param level The resolution level (0 = highest) */ protected PlanarImage createTileImage(int row, int col, int level) throws IOException { return (PlanarImage) sourceBands[row][col].getSourceImage().getImage(level); }
private PlanarImage createTileImage(final int level, int index) throws IOException { return (PlanarImage) this.sourceBand[index].getSourceImage().getImage(level); }
private PlanarImage createTileImage(final int level) throws IOException { return (PlanarImage) this.sourceBand.getSourceImage().getImage(level); }
private static Tile buildTile(Band band, Rectangle rectangleToRead) { MultiLevelImage image = band.getSourceImage(); Raster awtRaster = image.getData(rectangleToRead); return new TileImpl(band, awtRaster); } }
MultiLevelImage createSourceImage(Band computedBand, Band realBand) { if (computedBand instanceof VirtualBand) { return VirtualBand.createSourceImage(realBand, ((VirtualBand) computedBand).getExpression()); }else { return computedBand.getSourceImage(); } }
private int getLevel(HashMap<Product, String> tiles, int levels) { int level = levels; for ( Map.Entry<Product, String> entry : tiles.entrySet()) { Product p = entry.getKey(); for (Band band : p.getBands()) { int bandLevel = band.getSourceImage().getModel().getLevelCount(); if (bandLevel < level) { level = bandLevel; } } } return level; }
private double computeStepX(Product product){ OptionalDouble result = Arrays.stream(product.getBands()) .mapToDouble(band -> Math.abs(band.getSourceImage().getModel().getImageToModelTransform(0).getScaleX())) .min(); if (result.isPresent()) { return result.getAsDouble(); } else { return this.pixelSizeX; } }
private double computeStepY(Product product){ OptionalDouble result = Arrays.stream(product.getBands()) .mapToDouble(band -> Math.abs(band.getSourceImage().getModel().getImageToModelTransform(0).getScaleY())) .min(); if (result.isPresent()) { return result.getAsDouble(); } else { return this.pixelSizeY; } }
private double computeTargetStepX(Product product){ OptionalDouble result = Arrays.stream(product.getBands()) .mapToDouble(band -> band.getSourceImage().getModel().getImageToModelTransform(0).getScaleX()) .min(); if (result.isPresent()) { return result.getAsDouble(); } else { return this.pixelSizeX; } }
private double computeTargetStepY(Product product){ OptionalDouble result = Arrays.stream(product.getBands()) .mapToDouble(band -> band.getSourceImage().getModel().getImageToModelTransform(0).getScaleY()) .min(); if (result.isPresent()) { double signum = Math.signum(product.getBandAt(0).getSourceImage().getModel().getImageToModelTransform(0).getScaleY()); return signum * result.getAsDouble(); } else { return this.pixelSizeY; } }
@Override public void close() throws IOException { //JAI.getDefaultInstance().getTileCache().flush(); if (product != null) { for (Band band : product.getBands()) { MultiLevelImage sourceImage = band.getSourceImage(); if (sourceImage != null) { sourceImage.reset(); sourceImage.dispose(); sourceImage = null; } } } List<Path> files = PathUtils.listFiles(tmpFolder); tmpFolder.toFile().deleteOnExit(); if (files != null) { for (Path file : files) { file.toFile().deleteOnExit(); } } super.close(); }
private int getProductLevels() { Map.Entry<Product, String> entryFirst = this.tilesMultiSpectral.entrySet().iterator().next(); int levels = entryFirst.getKey().getBandAt(0).getSourceImage().getModel().getLevelCount(); int levelsMultiSpectral = getLevel(this.tilesMultiSpectral, levels); int levelsPanchromatic = getLevel(this.tilesPanchromatic, levels); if (levelsMultiSpectral< levels){ levels = levelsMultiSpectral; } else if (levelsPanchromatic < levels) { levels = levelsPanchromatic; } if (levels > product.getNumResolutionsMax()) { product.setNumResolutionsMax(levels); } return levels; }
private double[] computeSourceProductMaximumResolution(Product sourceProduct) { AffineTransform affTransform = sourceProduct.getBandAt(0).getSourceImage().getModel().getImageToModelTransform(0); double[] productResolution = new double[] {affTransform.getScaleX(),Math.abs(affTransform.getScaleY())}; for(int index = 0;index<sourceProduct.getNumBands();index++) { affTransform = sourceProduct.getBandAt(index).getSourceImage().getModel().getImageToModelTransform(0); if(( affTransform.getScaleX() < productResolution[0])||(Math.abs(affTransform.getScaleY()) < productResolution[1])){ productResolution[0] = affTransform.getScaleX(); productResolution[1] = Math.abs(affTransform.getScaleY()); } } return productResolution; }
private void markTileDone(Band targetBand, Tile targetTile) throws IOException { boolean done; synchronized (todoLists) { MultiLevelImage sourceImage = targetBand.getSourceImage(); final List<Point> currentTodoList = getTodoList(sourceImage); currentTodoList.remove(new Point(sourceImage.XToTileX(targetTile.getMinX()), sourceImage.YToTileY(targetTile.getMinY()))); done = isDone(); } if (done) { // If we get here all tiles are written for (SubsetInfo info : subsetInfo) { if (info.productWriter instanceof DimapProductWriter) { // if we can update the header (only DIMAP) rewrite it! synchronized (info.productWriter) { info.productWriter.writeProductNodes(info.product, info.file); } } } } }
@Override public void close() throws IOException { if (product != null) { for (Band band : product.getBands()) { MultiLevelImage sourceImage = band.getSourceImage(); if (sourceImage != null) { sourceImage.reset(); sourceImage.dispose(); sourceImage = null; } } } if(inputPath != null) { inputPath.close(); } super.close(); }
private void processSentinel2() { processLandWaterMask(); Map<String, Product> inputProducts = new HashMap<>(4); inputProducts.put("l1c", sourceProduct); inputProducts.put("waterMask", waterMaskProduct); final Map<String, Object> pixelClassificationParameters = createPixelClassificationParameters(); s2ClassifProduct = GPF.createProduct(OperatorSpi.getOperatorAlias(S2IdepixClassificationOp.class), pixelClassificationParameters, inputProducts); if (computeCloudShadow || computeCloudBuffer || computeMountainShadow) { // Post Cloud Classification: cloud shadow, cloud buffer, mountain shadow computePostProcessProduct(); targetProduct = S2IdepixUtils.cloneProduct(s2ClassifProduct, true); Band cloudFlagBand = targetProduct.getBand(S2IdepixUtils.IDEPIX_CLASSIF_FLAGS); cloudFlagBand.setSourceImage(postProcessingProduct.getBand(S2IdepixUtils.IDEPIX_CLASSIF_FLAGS).getSourceImage()); } else { targetProduct = s2ClassifProduct; } // new bit masks: S2IdepixUtils.setupIdepixCloudscreeningBitmasks(targetProduct); setTargetProduct(targetProduct); }
private void attachNewDimapReaderInstance(Product product, File newFile) throws IOException { DimapProductReader productReader = (DimapProductReader) ProductIO.getProductReader(DimapProductConstants.DIMAP_FORMAT_NAME); productReader.bindProduct(newFile, product); product.setProductReader(productReader); Band[] bands = product.getBands(); for (Band band : bands) { if (band.isSourceImageSet() && band.getSourceImage().getImage(0) instanceof BandOpImage) { band.setSourceImage(null); } } }
private Band addBand(final Product product, String name, final int w, final int h, final ImageIOFile img, final int bandIndex, final String unit) throws IOException { File bandFile = getFile(img.getName()); ProductReader reader = geotiffPlugIn.createReaderInstance(); Product bandProduct = reader.readProductNodes(bandFile, null); if (bandProduct != null) { bandProducts.add(bandProduct); Band srcBand = bandProduct.getBandAt(bandIndex); if (product.containsBand(name)) { name += "2"; } Band band = new Band(name, srcBand.getDataType(), w, h); band.setNoDataValue(0); band.setNoDataValueUsed(true); band.setUnit(unit); band.setSourceImage(srcBand.getSourceImage()); product.addBand(band); return band; } return null; }