/** * Sets the preferred tile size which may be used for a the {@link java.awt.image.RenderedImage rendered image} * created for a {@link RasterDataNode} of this product. * * @param tileWidth the preferred tile width * @param tileHeight the preferred tile height * * @see #setPreferredTileSize(java.awt.Dimension) */ public void setPreferredTileSize(int tileWidth, int tileHeight) { setPreferredTileSize(new Dimension(tileWidth, tileHeight)); }
public static void configurePreferredTileSize(Product product) { Dimension newSize = getConfiguredTileSize(product, System.getProperty(SYSPROP_READER_TILE_WIDTH), System.getProperty(SYSPROP_READER_TILE_HEIGHT)); if (newSize != null) { Dimension oldSize = product.getPreferredTileSize(); if (oldSize == null) { product.setPreferredTileSize(newSize); getSystemLogger().fine(String.format("Product '%s': tile size set to %d x %d pixels", product.getName(), newSize.width, newSize.height)); } else if (!oldSize.equals(newSize)) { product.setPreferredTileSize(newSize); getSystemLogger().fine(String.format("Product '%s': tile size set to %d x %d pixels, was %d x %d pixels", product.getName(), newSize.width, newSize.height, oldSize.width, oldSize.height)); } } }
/** * Copies the source product's preferred tile size (if any) to the target product. * * @param sourceProduct The source product. * @param targetProduct The target product. */ public static void copyPreferredTileSize(Product sourceProduct, Product targetProduct) { final Dimension preferredTileSize = sourceProduct.getPreferredTileSize(); if (preferredTileSize != null) { final Rectangle targetRect = new Rectangle(targetProduct.getSceneRasterWidth(), targetProduct.getSceneRasterHeight()); final Rectangle tileRect = new Rectangle(preferredTileSize).intersection(targetRect); targetProduct.setPreferredTileSize(tileRect.width, tileRect.height); } }
private void setPreferredTiling(Product product) throws IOException { final Dimension dimension; if (isBadTiling()) { dimension = JAIUtils.computePreferredTileSize(imageReader.getWidth(FIRST_IMAGE), imageReader.getHeight(FIRST_IMAGE), 1); } else { dimension = new Dimension(imageReader.getTileWidth(FIRST_IMAGE), imageReader.getTileHeight(FIRST_IMAGE)); } if (isGlobalShifted180) { product.setPreferredTileSize(new Dimension(imageReader.getWidth(FIRST_IMAGE), imageReader.getHeight(FIRST_IMAGE))); } else { product.setPreferredTileSize(dimension); } }
@Override public void initialize() throws OperatorException { product = new Product(getClass().getSimpleName(), getClass().getSimpleName(), 10, 10); product.addBand("band_1", ProductData.TYPE_INT32); product.setPreferredTileSize(new Dimension(10, 5)); }
private void setPreferredTiling(Product product) throws IOException { final Dimension dimension; if (isBadTiling(imageReader)) { dimension = JAIUtils.computePreferredTileSize(imageReader.getWidth(FIRST_IMAGE), imageReader.getHeight(FIRST_IMAGE), 1); } else { dimension = new Dimension(imageReader.getTileWidth(FIRST_IMAGE), imageReader.getTileHeight(FIRST_IMAGE)); } product.setPreferredTileSize(dimension); }
@Test public void testPreferredTileSizeProperty() { Product product; product = new Product("A", "B", 1000, 2000); assertEquals(null, product.getPreferredTileSize()); product.setPreferredTileSize(new Dimension(128, 256)); assertEquals(new Dimension(128, 256), product.getPreferredTileSize()); product.setPreferredTileSize(new Dimension(300, 400)); assertEquals(new Dimension(300, 400), product.getPreferredTileSize()); product.setPreferredTileSize(null); assertEquals(null, product.getPreferredTileSize()); }
private void initProduct() { final File productFile = new File(getInput().toString()); final String productName = FileUtils.getFilenameWithoutExtension(productFile); String productType = "BINNED"; Attribute titleAttribute = netcdfFile.findGlobalAttribute("title"); if (titleAttribute != null) { productType = titleAttribute.getStringValue(); } product = new Product(productName, productType, sceneRasterWidth, sceneRasterHeight, this); product.setFileLocation(productFile); product.setAutoGrouping("adg:aph:atot:bbp:bl_Rrs:chlor_a:Rrs:water"); product.setStartTime(extractStartTime(netcdfFile)); product.setEndTime(extractEndTime(netcdfFile)); product.setPreferredTileSize(sceneRasterWidth, 64); }
private void initTargetProduct() throws OperatorException { Class<? extends Operator> operatorClass = operator.getClass(); initTargetProduct(operatorClass); if (targetProduct == null) { final String message = formatExceptionMessage("No target product set."); throw new OperatorException(message); } if (targetProduct.getProductReader() == null) { targetProduct.setProductReader(new OperatorProductReader(this)); } if (GPF.KEY_TILE_SIZE.isCompatibleValue(renderingHints.get(GPF.KEY_TILE_SIZE))) { targetProduct.setPreferredTileSize((Dimension) renderingHints.get(GPF.KEY_TILE_SIZE)); } }
@Test public void testManyTilesOneBand() { Product sourceProduct = createSourceProduct(); sourceProduct.setPreferredTileSize(50, 50); Operator op = new TestOP(sourceProduct); OperatorExecutor operatorExecutor = OperatorExecutor.create(op); operatorExecutor.execute(ProgressMonitor.NULL); assertEquals(9, recordingTileScheduler.recordedCalls.size()); assertEquals(4, recordingTileScheduler.requestedTileIndices.size()); assertEquals(new Point(0, 0), recordingTileScheduler.requestedTileIndices.get(0)); assertEquals(new Point(1, 0), recordingTileScheduler.requestedTileIndices.get(1)); assertEquals(new Point(0, 1), recordingTileScheduler.requestedTileIndices.get(2)); assertEquals(new Point(1, 1), recordingTileScheduler.requestedTileIndices.get(3)); }
@Override public void initialize() throws OperatorException { Product product = new Product("N", "T", 16, 16); product.addBand("B1", ProductData.TYPE_FLOAT32); product.addBand("B2", ProductData.TYPE_FLOAT32); product.setPreferredTileSize(4, 4); //System.out.println("product = " + product); target = product; }
@Before public void before() { final Product product = new Product("P", "T", 1024, 1024); band = product.addBand("pixX", "((Y-0.5) * 1024) + (X-0.5)"); product.setPreferredTileSize(512, 512); }
@Override public void initialize() { targetProduct = new Product("name", "desc", RASTER_WIDTH, RASTER_HEIGHT); targetProduct.addBand("OperatorBand", ProductData.TYPE_INT8); targetProduct.addBand("ConstantBand", ProductData.TYPE_INT8).setSourceImage(new BufferedImage(RASTER_WIDTH, RASTER_HEIGHT, BufferedImage.TYPE_BYTE_INDEXED)); targetProduct.addBand(new VirtualBand("VirtualBand", ProductData.TYPE_FLOAT32, RASTER_WIDTH, RASTER_HEIGHT, "OperatorBand + ConstantBand")); targetProduct.setPreferredTileSize(2, 2); }
private Product createProduct(File inputFile) { final String name = FileUtils.getFilenameWithoutExtension(inputFile); final String type = "CHRIS_M" + chrisFile.getGlobalAttribute(ChrisConstants.ATTR_NAME_CHRIS_MODE, 0); final Product product = new Product(name, type, sceneRasterWidth, sceneRasterHeight, this); product.setFileLocation(chrisFile.getFile()); setStartAndEndTimes(product); addMetadataElements(product); addRciAndMaskBands(product); addFlagCodingsAndMasks(product); // due to mask refinement the preferred tile size has full size product.setPreferredTileSize(sceneRasterWidth, sceneRasterHeight); return product; }
@Test public void testWriteProduct() throws Exception { StackOp stackOp = new StackOp(); Product source = new Product("name", "type", 1000, 1000); source.setPreferredTileSize(200, 200); stackOp.setSourceProduct(source); Product targetProduct = stackOp.getTargetProduct(); File outputFile = GlobalTestConfig.getBeamTestDataOutputFile("GPFFacadeTest/testWriteProduct.dim"); try { outputFile.getParentFile().mkdirs(); GPF.writeProduct(targetProduct, outputFile, "BEAM-DIMAP", false, true, ProgressMonitor.NULL); } finally { FileUtils.deleteTree(outputFile.getParentFile()); } assertEquals(5*5, stackOp.computeTileStackCounter.get()); }
@Test public void testWriteProductWithCacheClearing() throws Exception { StackOp stackOp = new StackOp(); Product source = new Product("name", "type", 1000, 1000); source.setPreferredTileSize(200, 200); stackOp.setSourceProduct(source); Product targetProduct = stackOp.getTargetProduct(); File outputFile = GlobalTestConfig.getBeamTestDataOutputFile("GPFFacadeTest/testWriteProduct.dim"); try { outputFile.getParentFile().mkdirs(); GPF.writeProduct(targetProduct, outputFile, "BEAM-DIMAP", true, true, ProgressMonitor.NULL); } finally { FileUtils.deleteTree(outputFile.getParentFile()); } assertEquals(5*5, stackOp.computeTileStackCounter.get()); }
public void testGetConfiguredTileSize_PrefSizeSet() { Product product = new Product("a", "b", 1121, 9281); product.setPreferredTileSize(256, 512); assertEquals(null, AbstractProductReader.getConfiguredTileSize(product, null, null)); assertEquals(new Dimension(1121, 512), AbstractProductReader.getConfiguredTileSize(product, "*", null)); assertEquals(new Dimension(32, 512), AbstractProductReader.getConfiguredTileSize(product, "32", null)); assertEquals(new Dimension(256, 9281), AbstractProductReader.getConfiguredTileSize(product, null, "*")); assertEquals(new Dimension(1121, 9281), AbstractProductReader.getConfiguredTileSize(product, "*", "*")); assertEquals(new Dimension(32, 9281), AbstractProductReader.getConfiguredTileSize(product, "32", "*")); assertEquals(new Dimension(256, 64), AbstractProductReader.getConfiguredTileSize(product, null, "64")); assertEquals(new Dimension(1121, 64), AbstractProductReader.getConfiguredTileSize(product, "*", "64")); assertEquals(new Dimension(32, 64), AbstractProductReader.getConfiguredTileSize(product, "32", "64")); }
@Override protected Product readProductNodesImpl() throws IOException { final Product product = new Product("N", "T", IMAGE_W, IMAGE_H); product.setPreferredTileSize(TILE_SIZE, TILE_SIZE); createBand(product, "B_INT8", ProductData.TYPE_INT8, 1.0, -8.0); createBand(product, "B_UINT8", ProductData.TYPE_UINT8, 1.0, 8.0); createBand(product, "B_INT16", ProductData.TYPE_INT16, 1.0, -16.0); createBand(product, "B_UINT16", ProductData.TYPE_UINT16, 1.0, 16.0); createBand(product, "B_INT32", ProductData.TYPE_INT32, 1.0, -32.0); createBand(product, "B_UINT32", ProductData.TYPE_UINT32, 1.0, 32.0); createBand(product, "B_FLOAT32", ProductData.TYPE_FLOAT32, 1.0, 32.5); createBand(product, "B_FLOAT64", ProductData.TYPE_FLOAT64, 1.0, 64.5); return product; }
@Test public void testTileSetSamples() throws Exception { ImageLayout value = new ImageLayout(); value.setTileWidth(200); value.setTileHeight(200); Product p = new Product("N", "T", 1121, 705); p.setPreferredTileSize(200, 200); Band b = p.addBand("b", "0"); RenderedImage image = b.getSourceImage().getImage(0); Raster raster = image.getTile(3, 0); TileImpl tile = new TileImpl(b, raster); tile.setSamples(new float[200*200]); } }
private static Product createProduct() throws Exception { Product product = new Product("p", "t", 32, 256); final TiePointGrid lat = new TiePointGrid("lat", 2, 2, 0f, 0f, 32f, 256f, new float[]{+40f, +40f, -40f, -40f}); final TiePointGrid lon = new TiePointGrid("lon", 2, 2, 0f, 0f, 32f, 256f, new float[]{-80f, +80f, -80f, +80f}); product.addTiePointGrid(lat); product.addTiePointGrid(lon); product.setGeoCoding(new TiePointGeoCoding(lat, lon)); product.setPreferredTileSize(32, 16); product.setStartTime(ProductData.UTC.parse("2003-01-01", "yyyy-MM-dd")); product.setEndTime(ProductData.UTC.parse("2003-01-02", "yyyy-MM-dd")); return product; }