@Override protected void computeProductData(ProductData productData, Rectangle destRect) throws IOException { final int sourceWidth = getRasterDataNode().getSceneRasterWidth(); final int sourceHeight = getRasterDataNode().getSceneRasterHeight(); final int targetWidth = destRect.width; final int targetHeight = destRect.height; final int sourceX0 = getSourceX(destRect.x); final int sourceY0 = getSourceY(destRect.y); final int[] sourceXs = getSourceCoords(sourceWidth, targetWidth); final int[] sourceYs = getSourceCoords(sourceHeight, targetHeight); int elemIndex = 0; for (int j = 0; j < targetHeight; j++) { final int sourceY = sourceY0 + sourceYs[j]; for (int i = 0; i < targetWidth; i++) { productData.setElemDoubleAt(elemIndex, computeSample(sourceX0 + sourceXs[i], sourceY)); elemIndex++; } } }
@Before public void setUp() throws Exception { Band b = new Band("b", ProductData.TYPE_FLOAT32, 1600, 800); im0 = new MyRasterDataNodeSampleOpImage(b, 0, 1.0); assertEquals(1600, im0.getWidth()); assertEquals(800, im0.getHeight()); assertEquals(5, im0.getNumXTiles()); assertEquals(2, im0.getNumYTiles()); im4 = new MyRasterDataNodeSampleOpImage(b, 4, 10.0); assertEquals(160, im4.getWidth()); assertEquals(80, im4.getHeight()); assertEquals(1, im4.getNumXTiles()); assertEquals(1, im4.getNumYTiles()); }
@Test public void testItOnLevel0Tile00() throws Exception { Raster data = im0.getData(new Rectangle(0, 0, 100, 100)); assertEquals(0, data.getSample(0, 0, 0)); assertEquals(99, data.getSample(99, 0, 0)); assertEquals(99 * Y_FACTOR, data.getSample(0, 99, 0)); assertEquals(99 * Y_FACTOR + 99, data.getSample(99, 99, 0)); }
@Test public void testItOnLevel0TileNN() throws Exception { Raster data = im0.getData(new Rectangle(1500, 700, 100, 100)); assertEquals(700 * Y_FACTOR + 1500, data.getSample(1500, 700, 0)); assertEquals(700 * Y_FACTOR + 1500 + 99, data.getSample(1500 + 99, 700, 0)); assertEquals((700 + 99) * Y_FACTOR + 1500, data.getSample(1500, 700 + 99, 0)); assertEquals((700 + 99) * Y_FACTOR + 1500 + 99, data.getSample(1500 + 99, 700 + 99, 0)); }
@Test public void testItOnLevel4() throws Exception { Raster data = im4.getData(); assertEquals(0, data.getSample(0, 0, 0)); assertEquals(100, data.getSample(100 / 10, 0, 0)); assertEquals(100 * Y_FACTOR, data.getSample(0, 100 / 10, 0)); assertEquals(100 * Y_FACTOR + 100, data.getSample(100 / 10, 100 / 10, 0)); }