Skip to end of metadata
Go to start of metadata

You are viewing an old version of this content. View the current version.

Compare with Current View Version History

Version 1 Next »

Multi-level Source Image
Product product = new Product("test", "test", width, height);
product.setPreferredTileSize(tileSize, tileSize);
product.setNumResolutionsMax(5);
Band inputBand1 = product.addBand("input_band_1", "X * X - Y * Y", ProductData.TYPE_FLOAT64);
Band inputBand2 = product.addBand("input_band_2", "2 * X * Y", ProductData.TYPE_FLOAT64);
Band outputBand = product.addBand("output_band", ProductData.TYPE_FLOAT64);
final MultiLevelModel multiLevelModel = ImageManager.getMultiLevelModel(inputBand1);
final MultiLevelSource multiLevelSource = new AbstractMultiLevelSource(multiLevelModel) {
    @Override
    public void reset() {
        super.reset();
        outputBand.fireProductNodeDataChanged();
    }
    @Override
    public RenderedImage createImage(int level) {
        return new RasterDataNodeOpImage(outputBand, ResolutionLevel.create(getModel(), level)) {
            @Override
            protected void computeProductData(ProductData outputData, Rectangle region) throws IOException {
                int numElems = region.width * region.height;
                ProductData inputData1 = ProductData.createInstance(ProductData.TYPE_FLOAT64, numElems);
                ProductData inputData2 = ProductData.createInstance(ProductData.TYPE_FLOAT64, numElems);
                inputBand1.readRasterData(region.x, region.y, region.width, region.height, inputData1);
                inputBand2.readRasterData(region.x, region.y, region.width, region.height, inputData2);
                for (int i = 0; i < numElems; i++) {
                    double value1 = inputData1.getElemDoubleAt(i);
                    double value2 = inputData2.getElemDoubleAt(i);
                    outputData.setElemDoubleAt(i, value1 - value2);
                }
            }
        };
    }
};
outputBand.setSourceImage(new DefaultMultiLevelImage(multiLevelSource));
  • No labels