/** * Creates an instance of this class for the given region and terms. * * @param offsetX the X-offset of the region. * @param offsetY the Y-offset of the region. * @param regionWidth the width of the region. * @param regionHeight the height of the region. * @param terms an array of terms. * @param pm a monitor to inform the user about progress */ public RasterDataLoop(final int offsetX, final int offsetY, final int regionWidth, final int regionHeight, final Term[] terms, final ProgressMonitor pm) { this(new RasterDataEvalEnv(offsetX, offsetY, regionWidth, regionHeight), terms, pm); }
@Test public void testMJDSymbol_no_time() throws Exception { final Product product = new Product("name", "type", 10, 10); MoreFuncs.MJD mjd = new MoreFuncs.MJD(product); assertTrue(Double.isNaN(mjd.evalD(new RasterDataEvalEnv(-1, -1, -1, -1)))); } }
final int rowCount = destRect.height; final int pixelCount = colCount * rowCount; final RasterDataEvalEnv env = new RasterDataEvalEnv(destRect.x, destRect.y, colCount, rowCount, getLevelImageSupport());
@Test public void testMJDSymbol() throws Exception { final Product product = new Product("name", "type", 10, 10); ProductData.UTC startTime = ProductData.UTC.parse("01-Jan-2010 00:00:00"); ProductData.UTC endTime = ProductData.UTC.parse("01-Jan-2010 10:00:00"); product.setStartTime(startTime); product.setEndTime(endTime); MoreFuncs.MJD mjd = new MoreFuncs.MJD(product); RasterDataEvalEnv rasterEnv = new RasterDataEvalEnv(0, 0, 10, 10); assertEquals(startTime.getMJD(), mjd.evalD(rasterEnv), 1E-6); rasterEnv = new RasterDataEvalEnv(9, 0, 10, 10); assertEquals(startTime.getMJD(), mjd.evalD(rasterEnv), 1E-6); rasterEnv = new RasterDataEvalEnv(0, 9, 10, 10); assertEquals(endTime.getMJD(), mjd.evalD(rasterEnv), 1E-6); rasterEnv = new RasterDataEvalEnv(9, 9, 10, 10); assertEquals(endTime.getMJD(), mjd.evalD(rasterEnv), 1E-6); rasterEnv = new RasterDataEvalEnv(-1, 4, 10, 10); double centralTime = (startTime.getMJD() * 5 + endTime.getMJD() * 4) / 9; assertEquals(centralTime, mjd.evalD(rasterEnv), 1E-6); }
public void testThatPerformanceIsSufficient() throws ParseException, IOException { final Band flags = new Band("flags", ProductData.TYPE_INT8, 1, 1); final SingleFlagSymbol s1 = new SingleFlagSymbol("flags.WATER", flags, 0x01); final SingleFlagSymbol s2 = new SingleFlagSymbol("flags.LAND", flags, 0x02); final SingleFlagSymbol s3 = new SingleFlagSymbol("flags.CLOUD", flags, 0x04); final int[] dataElems = new int[]{-1}; s1.setData(dataElems); s2.setData(dataElems); s3.setData(dataElems); final DefaultNamespace namespace = new DefaultNamespace(); namespace.registerSymbol(s1); namespace.registerSymbol(s2); namespace.registerSymbol(s3); final String code = "(flags.WATER OR flags.LAND) AND NOT flags.CLOUD"; final Term term = new ParserImpl(namespace, true).parse(code); final RasterDataEvalEnv evalEnv = new RasterDataEvalEnv(0, 0, 1, 1); long t1 = System.currentTimeMillis(); for (int i = 0; i < MAX_NUM_TEST_LOOPS; i++) { } long t2 = System.currentTimeMillis(); for (int i = 0; i < MAX_NUM_TEST_LOOPS; i++) { term.evalI(evalEnv); } long t3 = System.currentTimeMillis(); long dt = (t3 - t2) - (t2 - t1); long numOps = Math.round(MAX_NUM_TEST_LOOPS * (1000.0 / dt)); // System.out.println("numOps = " + numOps); assertTrue(String.format("Low evaluation performance detected (%d ops/s for term \"%s\"): Term implementation change?", numOps, code), numOps > MIN_NUM_OPS_PER_SECOND); }
final RasterDataEvalEnv env = new RasterDataEvalEnv(rect.x, rect.y, rect.width, rect.height); pm.beginTask("Evaluating expression", rect.height); try {
public void testConstructor() { final RasterDataEvalEnv env = new RasterDataEvalEnv(20, 14, 238, 548); assertEquals(20, env.getPixelX()); assertEquals(14, env.getPixelY()); assertEquals(0, env.getElemIndex()); assertEquals(20, env.getOffsetX()); assertEquals(14, env.getOffsetY()); assertEquals(238, env.getRegionWidth()); assertEquals(548, env.getRegionHeight()); }
public void testDefaultConstructor() { final RasterDataEvalEnv env = new RasterDataEvalEnv(0, 0, 1, 1); assertEquals(0, env.getPixelX()); assertEquals(0, env.getPixelY()); assertEquals(0, env.getElemIndex()); assertEquals(0, env.getOffsetX()); assertEquals(0, env.getOffsetY()); assertEquals(1, env.getRegionWidth()); assertEquals(1, env.getRegionHeight()); }
public void testXY() { final RasterDataEvalEnv env = new RasterDataEvalEnv(50, 20, 200, 100); assertEquals(0, env.getElemIndex()); assertEquals(50, env.getPixelX()); assertEquals(20, env.getPixelY()); env.setElemIndex(1); assertEquals(1, env.getElemIndex()); assertEquals(50 + 1, env.getPixelX()); assertEquals(20, env.getPixelY()); env.setElemIndex(200 + 2); assertEquals(200 + 2, env.getElemIndex()); assertEquals(50 + 2, env.getPixelX()); assertEquals(20 + 1, env.getPixelY()); env.setElemIndex(70 * 200 + 110); assertEquals(70 * 200 + 110, env.getElemIndex()); assertEquals(50 + 110, env.getPixelX()); assertEquals(20 + 70, env.getPixelY()); } }