final float ssY = _lonGrid.getSubSamplingY(); final float[] latFloats = (float[]) _latGrid.getDataElems(); final float[] lonFloats = (float[]) _lonGrid.getDataElems();
final float ssY = lonGrid.getSubSamplingY(); final float[] latFloats = (float[]) latgrid.getDataElems(); final float[] lonFloats = (float[]) lonGrid.getDataElems();
@Override public void encode(ProfileWriteContext ctx, Product p) throws IOException { for (TiePointGrid tiePointGrid : p.getTiePointGrids()) { final int y = tiePointGrid.getRasterHeight(); final int x = tiePointGrid.getRasterWidth(); final int[] shape = new int[]{y, x}; final Array values = Array.factory(DataType.FLOAT, shape, tiePointGrid.getDataElems()); String variableName = ReaderUtils.getVariableName(tiePointGrid); ctx.getNetcdfFileWriteable().findVariable(variableName).writeFully(values); } } }
@Test public void testTiePointFlipping_Both() throws IOException { final Product flipped = ProductFlipper.createFlippedProduct(product, ProductFlipper.FLIP_BOTH, "b", "b"); final TiePointGrid flippedT1 = flipped.getTiePointGrid("t1"); final float[] expectedT1 = { 0.4f, 0.2f, 0.3f, 0.4f, 0.9f, 0.8f, 0.4f, 0.3f, 0.6f }; assertTrue(Arrays.equals(expectedT1, (float[]) flippedT1.getDataElems())); assertEquals(4, flippedT1.getOffsetX(), 1.0e-6); assertEquals(6, flippedT1.getOffsetY(), 1.0e-6); final TiePointGrid flippedT2 = flipped.getTiePointGrid("t3"); assertEquals(7, flippedT2.getOffsetX(), 1.0e-6); assertEquals(9, flippedT2.getOffsetY(), 1.0e-6); GeneralPath[] flippedPath = ProductUtils.createGeoBoundaryPaths(flipped); assertEquals(1, flippedPath.length); final Rectangle2D expBounds = geoBoundaryPath[0].getBounds2D(); final Rectangle2D actualBounds = flippedPath[0].getBounds2D(); assertEquals(expBounds.getMinX(), actualBounds.getMinX(), 1.0e-6); assertEquals(expBounds.getMinY(), actualBounds.getMinY(), 1.0e-6); assertEquals(expBounds.getMaxX(), actualBounds.getMaxX(), 1.0e-6); assertEquals(expBounds.getMaxY(), actualBounds.getMaxY(), 1.0e-6); }
@Test public void testTiePointFlipping_Vertical() throws IOException { final Product flipped = ProductFlipper.createFlippedProduct(product, ProductFlipper.FLIP_VERTICAL, "v", "v"); final TiePointGrid flippedT1 = flipped.getTiePointGrid("t1"); final float[] expectedT1 = { 0.3f, 0.2f, 0.4f, 0.8f, 0.9f, 0.4f, 0.6f, 0.3f, 0.4f }; assertTrue(Arrays.equals(expectedT1, (float[]) flippedT1.getDataElems())); assertEquals(0, flippedT1.getOffsetX(), 1.0e-6); assertEquals(6, flippedT1.getOffsetY(), 1.0e-6); assertEquals(5, flippedT1.getSubSamplingX(), 1.0e-6); assertEquals(5, flippedT1.getSubSamplingY(), 1.0e-6); final TiePointGrid flippedT2 = flipped.getTiePointGrid("t3"); assertEquals(1, flippedT2.getOffsetX(), 1.0e-6); assertEquals(9, flippedT2.getOffsetY(), 1.0e-6); assertEquals(3, flippedT2.getSubSamplingX(), 1.0e-6); assertEquals(3, flippedT2.getSubSamplingY(), 1.0e-6); GeneralPath[] flippedPath = ProductUtils.createGeoBoundaryPaths(flipped); assertEquals(1, flippedPath.length); final Rectangle2D expBounds = geoBoundaryPath[0].getBounds2D(); final Rectangle2D actualBounds = flippedPath[0].getBounds2D(); assertEquals(expBounds.getMinX(), actualBounds.getMinX(), 1.0e-6); assertEquals(expBounds.getMinY(), actualBounds.getMinY(), 1.0e-6); assertEquals(expBounds.getMaxX(), actualBounds.getMaxX(), 1.0e-6); assertEquals(expBounds.getMaxY(), actualBounds.getMaxY(), 1.0e-6); }
@Test public void testTiePointFlipping_Horizontal() throws IOException { final Product flipped = ProductFlipper.createFlippedProduct(product, ProductFlipper.FLIP_HORIZONTAL, "h", "h"); final TiePointGrid flippedT1 = flipped.getTiePointGrid("t1"); final float[] expectedT1 = { 0.4f, 0.3f, 0.6f, 0.4f, 0.9f, 0.8f, 0.4f, 0.2f, 0.3f }; assertTrue(Arrays.equals(expectedT1, (float[]) flippedT1.getDataElems())); assertEquals(4, flippedT1.getOffsetX(), 1.0e-6); assertEquals(0, flippedT1.getOffsetY(), 1.0e-6); assertEquals(5, flippedT1.getSubSamplingX(), 1.0e-6); assertEquals(5, flippedT1.getSubSamplingY(), 1.0e-6); final TiePointGrid flippedT2 = flipped.getTiePointGrid("t3"); assertEquals(7, flippedT2.getOffsetX(), 1.0e-6); assertEquals(1, flippedT2.getOffsetY(), 1.0e-6); assertEquals(3, flippedT2.getSubSamplingX(), 1.0e-6); assertEquals(3, flippedT2.getSubSamplingY(), 1.0e-6); GeneralPath[] flippedPath = ProductUtils.createGeoBoundaryPaths(flipped); assertEquals(1, flippedPath.length); final Rectangle2D expBounds = geoBoundaryPath[0].getBounds2D(); final Rectangle2D actualBounds = flippedPath[0].getBounds2D(); assertEquals(expBounds.getMinX(), actualBounds.getMinX(), 1.0e-6); assertEquals(expBounds.getMinY(), actualBounds.getMinY(), 1.0e-6); assertEquals(expBounds.getMaxX(), actualBounds.getMaxX(), 1.0e-6); assertEquals(expBounds.getMaxY(), actualBounds.getMaxY(), 1.0e-6); }
assertEquals(4.0f, sourceProduct.getTiePointGridAt(0).getSubSamplingX(), 1.0e-5); assertEquals(5.0f, sourceProduct.getTiePointGridAt(0).getSubSamplingY(), 1.0e-5); assertEquals(tpg1tp, sourceProduct.getTiePointGridAt(0).getDataElems()); assertEquals("tpg2n", sourceProduct.getTiePointGridAt(1).getName()); assertEquals(4, sourceProduct.getTiePointGridAt(1).getRasterWidth()); assertEquals(5.0f, sourceProduct.getTiePointGridAt(1).getSubSamplingX(), 1.0e-5); assertEquals(4.0f, sourceProduct.getTiePointGridAt(1).getSubSamplingY(), 1.0e-5); assertEquals(tpg2tp, sourceProduct.getTiePointGridAt(1).getDataElems()); assertEquals(4.0f, targetProduct.getTiePointGridAt(0).getSubSamplingX(), 1.0e-5); assertEquals(5.0f, targetProduct.getTiePointGridAt(0).getSubSamplingY(), 1.0e-5); assertTrue(Arrays.equals(tpg1tp, (float[]) targetProduct.getTiePointGridAt(0).getDataElems())); assertEquals("tpg2n", targetProduct.getTiePointGridAt(1).getName()); assertEquals(4, targetProduct.getTiePointGridAt(1).getRasterWidth()); assertEquals(5.0f, targetProduct.getTiePointGridAt(1).getSubSamplingX(), 1.0e-5); assertEquals(4.0f, targetProduct.getTiePointGridAt(1).getSubSamplingY(), 1.0e-5); assertTrue(Arrays.equals(tpg2tp, (float[]) targetProduct.getTiePointGridAt(1).getDataElems()));