@Override protected RasterDataNode createRasterDataNode() { return new TiePointGrid("dafault", 2, 2, 0, 0, 1, 1, new float[]{1f, 2f, 3f, 4f}); }
private TiePointGrid addTiePointGrid(Product product, String name, String units, int height, float[] data, int discontinuity) { final TiePointGrid grid = new TiePointGrid(name, TIE_POINT_GRID_WIDTH, height, TIE_POINT_OFFSET_X + 0.5f, 0.5f, TIE_POINT_SAMPLING_X, 1, data, discontinuity); grid.setUnit(units); product.addTiePointGrid(grid); return grid; }
/** * Parses a complete tie point grid and adds it to the tie poinzts grids vector */ private void parseTiePointGrid(String tiePtName, String description) throws IOException { TiePointGrid grid = null; int arraySize = ATSR_TIE_PT_GRID_WIDTH * ATSR_TIE_PT_GRID_HEIGHT; float[] fData = parseFloatArray(ANGLE_PARAMETER_SIZE, arraySize); grid = new TiePointGrid(tiePtName, ATSR_TIE_PT_GRID_WIDTH, ATSR_TIE_PT_GRID_HEIGHT, ATSR_TIE_PT_OFFS_X, 0, ATSR_TIE_PT_SUBS_X, ATSR_TIE_PT_SUBS_Y, fData); grid.setUnit(ANGLE_UNIT); if (description != null) { grid.setDescription(description); } _tiePointGrids.add(grid); } }
private TiePointGeoCoding createTestGeoCoding() { GeoPos[] targetCoords = createCoords(); int numCoords = targetCoords.length; float[] lats = new float[numCoords]; float[] lons = new float[numCoords]; for (int i = 0; i < numCoords; i++) { lats[i] = targetCoords[i].lat; lons[i] = targetCoords[i].lon; } TiePointGrid latGrid = new TiePointGrid("lat", gridW, gridH, 0.0f, 0.0f, stepX, stepY, lats); TiePointGrid lonGrid = new TiePointGrid("lon", gridW, gridH, 0.0f, 0.0f, stepX, stepY, lons, TiePointGrid.DISCONT_AT_180); return new TiePointGeoCoding(latGrid, lonGrid, Datum.WGS_84); }
public static void testDiscontinuity() { final TiePointGrid tp1 = new TiePointGrid("tp1", 2, 2, 0, 0, 1, 1, new float[]{0, 20, 180, 150}, true); assertEquals(TiePointGrid.DISCONT_AT_180, tp1.getDiscontinuity()); final TiePointGrid tp2 = new TiePointGrid("tp2", 2, 2, 0, 0, 1, 1, new float[]{150, 0, -20, 20}, true); assertEquals(TiePointGrid.DISCONT_AT_180, tp2.getDiscontinuity()); final TiePointGrid tp3 = new TiePointGrid("tp3", 2, 2, 0, 0, 1, 1, new float[]{0, 278, 180, 46}, true); assertEquals(TiePointGrid.DISCONT_AT_360, tp3.getDiscontinuity()); final TiePointGrid tp4 = new TiePointGrid("tp4", 2, 2, 0, 0, 1, 1, new float[]{-4, 0, 278, 180}, true); assertEquals(TiePointGrid.DISCONT_AT_360, tp4.getDiscontinuity()); }
private static void setTiePointGeoCoding(final Product product) { final TiePointGrid latGrid = new TiePointGrid("lat", 3, 3, 0.5f, 0.5f, 5, 5, new float[]{ 85, 84, 83, 75, 74, 73, 65, 64, 63 }); final TiePointGrid lonGrid = new TiePointGrid("lon", 3, 3, 0.5f, 0.5f, 5, 5, new float[]{ -15, -5, 5, -16, -6, 4, -17, -7, 3 }); product.addTiePointGrid(latGrid); product.addTiePointGrid(lonGrid); product.setGeoCoding(new TiePointGeoCoding(latGrid, lonGrid, org.esa.beam.framework.dataop.maptransf.Datum.WGS_84)); }
private static TiePointGrid createTiePointGrid(String name, int sceneW, int sceneH, int stepX, int stepY, int offX, int offY) { final int gridWidth = sceneW / stepX + 1; final int gridHeight = sceneH / stepY + 1; final float[] floats = new float[gridWidth * gridHeight]; for (int i = 0; i < floats.length; i++) { floats[i] = i * 3.54f; } final TiePointGrid tpg = new TiePointGrid(name, gridWidth, gridHeight, offX, offY, stepX, stepY, floats); tpg.setDescription(name + "-Description"); tpg.setUnit(name + "-unit"); return tpg; }
private Product createSourceProduct() { final Product sourceProduct = new Product("sp", "spt", 4, 4); sourceProduct.addBand("b1", ProductData.TYPE_INT32); sourceProduct.addTiePointGrid(new TiePointGrid("tpg1", 3, 3, 0, 0, 2, 2, new float[]{ 0.1f, 0.2f, 0.3f, 0.2f, 0.3f, 0.4f, 0.3f, 0.4f, 0.5f, })); return sourceProduct; }
public void testRequiresGeoCoding() { final TiePointGrid latGrid = new TiePointGrid("lat", 2, 2, 0, 0, 1, 1, new float[]{1, 2, 3, 4}); final TiePointGrid lonGrid = new TiePointGrid("lon", 2, 2, 0, 0, 1, 1, new float[]{1, 2, 3, 4}); final TiePointGeoCoding geoCoding = new TiePointGeoCoding(latGrid, lonGrid, Datum.WGS_84); try { new TiePointGridPointing(geoCoding, null, null, null, null, null); // OK } catch (Exception e) { fail(); } try { new TiePointGridPointing(null, null, null, null, null, null); fail(); } catch (Exception e) { // OK } }
static Product createSourceProduct(int sourceProductCounter, float value) { final Product p = new Product("P" + sourceProductCounter, "T", 2, 2); final TiePointGrid latitude = new TiePointGrid("latitude", 2, 2, 0.5F, 0.5F, 1.0F, 1.0F, new float[]{ 1.0F, 1.0F, 0.0F, 0.0F, }); final TiePointGrid longitude = new TiePointGrid("longitude", 2, 2, 0.5F, 0.5F, 1.0F, 1.0F, new float[]{ 0.0F, 1.0F, 0.0F, 1.0F, }); p.addTiePointGrid(latitude); p.addTiePointGrid(longitude); p.setGeoCoding(new TiePointGeoCoding(latitude, longitude)); p.addBand("chl", value + ""); return p; }
public static TiePointGrid createZenithFromElevationAngleTiePointGrid(TiePointGrid elevationAngleGrid) { final float[] elevationAngles = elevationAngleGrid.getTiePoints(); final float[] zenithAngles = new float[elevationAngles.length]; for (int i = 0; i < zenithAngles.length; i++) { zenithAngles[i] = 90.0f - elevationAngles[i]; } return new TiePointGrid(elevationAngleGrid.getName(), elevationAngleGrid.getRasterWidth(), elevationAngleGrid.getRasterHeight(), elevationAngleGrid.getOffsetX(), elevationAngleGrid.getOffsetY(), elevationAngleGrid.getSubSamplingX(), elevationAngleGrid.getSubSamplingY(), zenithAngles); }
public TiePointGrid cloneTiePointGrid() { final float[] srcTiePoints = this.getTiePoints(); final float[] destTiePoints = new float[srcTiePoints.length]; System.arraycopy(srcTiePoints, 0, destTiePoints, 0, srcTiePoints.length); TiePointGrid clone = new TiePointGrid(this.getName(), this.getRasterWidth(), this.getRasterHeight(), this.getOffsetX(), this.getOffsetY(), this.getSubSamplingX(), this.getSubSamplingY(), destTiePoints, this.getDiscontinuity()); clone.setUnit(getUnit()); clone.setDescription(getDescription()); return clone; }
@Test public void testThatAddBandThrowExceptionIfNameIsNotUnique() { final Product product = new Product("p", "t", 1, 1); product.addBand("band1", ProductData.TYPE_FLOAT32); product.addTiePointGrid(new TiePointGrid("grid", 1, 1, 0, 0, 1, 1, new float[]{0.0f})); try { product.addBand("band1", ProductData.TYPE_FLOAT32); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { assertTrue(e.getMessage().indexOf("name") > -1); } try { product.addBand("grid", ProductData.TYPE_FLOAT32); fail("IllegalArgumentException expected"); } catch (IllegalArgumentException e) { assertTrue(e.getMessage().indexOf("name") > -1); } }
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; }
private Product createProduct() { Product product = new Product("test", "test", PW, PH); TiePointGrid latGrid = new TiePointGrid("latGrid", GW, GH, 0.5f, 0.5f, S, S, createLatGridData()); TiePointGrid lonGrid = new TiePointGrid("lonGrid", GW, GH, 0.5f, 0.5f, S, S, createLonGridData()); product.addTiePointGrid(latGrid); product.addTiePointGrid(lonGrid); Band latBand = product.addBand("latBand", ProductData.TYPE_FLOAT32); Band lonBand = product.addBand("lonBand", ProductData.TYPE_FLOAT32); latBand.setRasterData(ProductData.createInstance(createBandData(latGrid))); lonBand.setRasterData(ProductData.createInstance(createBandData(lonGrid))); product.setGeoCoding(new TiePointGeoCoding(latGrid, lonGrid, Datum.WGS_84)); return product; }
private void createSourceProduct() throws Exception { sourceProduct = new Product("source", "t", 50, 50); final TiePointGrid latGrid = new TiePointGrid("latGrid", 2, 2, 0.5f, 0.5f, 49, 49, LATS); final TiePointGrid lonGrid = new TiePointGrid("lonGrid", 2, 2, 0.5f, 0.5f, 49, 49, LONS); sourceProduct.addTiePointGrid(latGrid); sourceProduct.addTiePointGrid(lonGrid); sourceProduct.setGeoCoding(new TiePointGeoCoding(latGrid, lonGrid)); sourceProduct.setStartTime(ProductData.UTC.parse("02-Jan-2008 10:15:10")); sourceProduct.setEndTime(ProductData.UTC.parse("02-Jan-2008 10:45:50")); Band floatDataBand = sourceProduct.addBand(FLOAT_BAND_NAME, ProductData.TYPE_FLOAT32); floatDataBand.setRasterData(createDataFor(floatDataBand)); floatDataBand.setSynthetic(true); Band intDataBand = sourceProduct.addBand(INT_BAND_NAME, ProductData.TYPE_INT16); intDataBand.setRasterData(createDataFor(intDataBand)); intDataBand.setSynthetic(true); }
private Product createSourceProduct(int w, int h) throws ParseException { Product sourceProduct = new Product("TEST.N1", "MER_RR__1P", w, h); sourceProduct.setStartTime(ProductData.UTC.parse("17-Jan-2008 12:13:27")); sourceProduct.setEndTime(ProductData.UTC.parse("17-Jan-2008 13:16:28")); Band rad08 = sourceProduct.addBand("radiance_8", ProductData.TYPE_INT16); Band rad10 = sourceProduct.addBand("radiance_10", ProductData.TYPE_INT16); rad08.setSourceImage(ConstantDescriptor.create(1.0f * w, 1.0f * h, new Short[]{2000}, null)); rad10.setSourceImage(ConstantDescriptor.create(1.0f * w, 1.0f * h, new Short[]{3000}, null)); rad08.setScalingFactor(0.01); rad10.setScalingFactor(0.01); TiePointGrid lat = new TiePointGrid("latitude", w, h, 0, 0, 1, 1, new float[w * h]); TiePointGrid lon = new TiePointGrid("longitude", w, h, 0, 0, 1, 1, new float[w * h]); sourceProduct.addTiePointGrid(lat); sourceProduct.addTiePointGrid(lon); sourceProduct.setGeoCoding(new TiePointGeoCoding(lat, lon)); return sourceProduct; }
public void testWriteProductNodes_TiePointGrid() { Product product = new Product("name", BeamConstants.MERIS_FR_L1B_PRODUCT_TYPE_NAME, 50, 25); float[] expectedArray = getTiePointData(10, 5); TiePointGrid tiePointGrid = new TiePointGrid("name", 10, 5, 0, 0, 5, 5, expectedArray); product.addTiePointGrid(tiePointGrid); try { _productWriter.writeProductNodes(product, _outputFile); _productWriter.close(); } catch (IOException e) { fail("IOException not expected"); } float[] currentArray = getCurrentByteArray(tiePointGrid); assertEquals(expectedArray.length, currentArray.length); for (int i = 0; i < expectedArray.length; i++) { assertEquals(expectedArray[i], currentArray[i], 1e-8f); } }
private Product createProduct() { Product product = new Product("test", "test", PW, PH); TiePointGrid latGrid = new TiePointGrid("latGrid", GW, GH, 0.5f, 0.5f, S, S, createLatGridData()); TiePointGrid lonGrid = new TiePointGrid("lonGrid", GW, GH, 0.5f, 0.5f, S, S, createLonGridData()); product.addTiePointGrid(latGrid); product.addTiePointGrid(lonGrid); Band latBand = product.addBand("latBand", ProductData.TYPE_FLOAT32); Band lonBand = product.addBand("lonBand", ProductData.TYPE_FLOAT32); latBand.setRasterData(ProductData.createInstance(createBandData(latGrid))); lonBand.setRasterData(ProductData.createInstance(createBandData(lonGrid))); final FlagCoding flagCoding = new FlagCoding("flags"); flagCoding.addFlag("valid", 0, "valid pixel"); product.getFlagCodingGroup().add(flagCoding); Band flagomatBand = product.addBand("flagomat", ProductData.TYPE_UINT8); flagomatBand.setRasterData(ProductData.createInstance(ProductData.TYPE_UINT8, PW * PH)); flagomatBand.setSampleCoding(flagCoding); product.setGeoCoding(new TiePointGeoCoding(latGrid, lonGrid, Datum.WGS_84)); return product; }
public void testExtrapolation() { TiePointGrid grid = new TiePointGrid("x", 3, 5, 0.5f, 0.5f, 4, 2, _tiePoints); assertEquals(-0.75F, grid.getPixelFloat(-1, -1), _eps); assertEquals(+0.50F, grid.getPixelFloat(4, -1), _eps); assertEquals(+1.75F, grid.getPixelFloat(9, -1), _eps); assertEquals(+1.75F, grid.getPixelFloat(-1, 4), _eps); assertEquals(+3.00F, grid.getPixelFloat(4, 4), _eps); assertEquals(+4.25F, grid.getPixelFloat(9, 4), _eps); assertEquals(+4.25F, grid.getPixelFloat(-1, 9), _eps); assertEquals(+5.50F, grid.getPixelFloat(4, 9), _eps); assertEquals(+6.75F, grid.getPixelFloat(9, 9), _eps); }