/** * Draw a coverage data image tile from the double array of coverage data values * formatted as Double[row][width] * * @param griddedTile gridded tile * @param values coverage data values as [row][width] * @return coverage data image tile */ public CoverageDataTiffImage drawTile(GriddedTile griddedTile, Double[][] values) { int tileWidth = values[0].length; int tileHeight = values.length; CoverageDataTiffImage image = createImage(tileWidth, tileHeight); for (int x = 0; x < tileWidth; x++) { for (int y = 0; y < tileHeight; y++) { Double value = values[y][x]; short pixelValue = getPixelValue(griddedTile, value); setPixelValue(image, x, y, pixelValue); } } image.writeTiff(); return image; }
/** * {@inheritDoc} */ @Override public Double[] getValues(GriddedTile griddedTile, byte[] imageBytes) { float[] pixelValues = getPixelValues(imageBytes); Double[] values = getValues(griddedTile, pixelValues); return values; }
/** * {@inheritDoc} */ @Override public Double getValue(GriddedTile griddedTile, byte[] imageBytes, int x, int y) { float pixelValue = getPixelValue(imageBytes, x, y); Double value = getValue(griddedTile, pixelValue); return value; }
float[] pixelValues = coverageData.getPixelValues(tileData); if (coverageDataValues != null) { for (int i = 0; i < pixelValues.length; i++) { float pixelValue2 = coverageData.getPixelValue(pixelValues, width, x, y); TestCase.assertEquals(pixelValue, pixelValue2); Double value = coverageData.getValue( griddedTile, pixelValue); GriddedCoverage griddedCoverage = coverageData .getGriddedCoverage(); if (coverageDataValues != null) { TestCase.assertEquals(coverageDataValues.tilePixels[y][x], TileMatrix tileMatrix = coverageData.getTileDao().getTileMatrix( tileRow.getZoomLevel()); double xDistance = tileMatrixSet.getMaxX() - tileMatrixSet.getMinX(); tileRow.getTileColumn(), tileRow.getTileRow()); CoverageDataResults coverageDataResults = coverageData .getValues(boundingBox); if (coverageDataValues != null) { TestCase.assertEquals(coverageDataValues.coverageData.length,
List<String> coverageDataTables = CoverageDataTiff.getTables(geoPackage); TestCase.assertFalse(coverageDataTables.isEmpty()); for (String tilesTable : tilesTables) { CoverageDataTiff coverageData = new CoverageDataTiff( geoPackage, tileDao); TestCase.assertTrue(coverageData.has()); coverageData.setAlgorithm(algorithm); GriddedCoverageEncodingType encoding = coverageData .getGriddedCoverage().getGridCellEncodingType(); coverageData.setEncoding(encoding); .getGriddedCoverage(); TestCase.assertNotNull(griddedCoverage); TestCase.assertTrue(griddedCoverage.getId() >= 0); List<GriddedTile> griddedTiles = coverageData.getGriddedTile(); TestCase.assertNotNull(griddedTiles); TestCase.assertFalse(griddedTiles.isEmpty()); while (tileCursor.moveToNext()) { TileRow tileRow = tileCursor.getRow(); GriddedTile griddedTile = coverageData.getGriddedTile(tileRow .getId()); testTileRow(geoPackage, coverageDataValues, coverageData,
.createTileTableWithMetadata(geoPackage, TestConstants.CREATE_COVERAGE_DATA_DB_TABLE_NAME, bbox, contentsSrs.getId(), bbox, tileMatrixSetSrs.getId()); TileDao tileDao = coverageData.getTileDao(); TileMatrixSet tileMatrixSet = coverageData.getTileMatrixSet(); .getGriddedCoverageDao(); GriddedTileDao griddedTileDao = coverageData.getGriddedTileDao(); coverageData = new CoverageDataTiff(geoPackage, tileDao); byte[] imageBytes = drawTile(coverageData, tileWidth, tileHeight, griddedCoverage, commonGriddedTile);
/** * Draw a coverage data image tile from the double array of float pixel values * formatted as float[row][width] * * @param pixelValues float pixel values as [row][width] * @return coverage data image tile */ public CoverageDataTiffImage drawTile(float[][] pixelValues) { int tileWidth = pixelValues[0].length; int tileHeight = pixelValues.length; CoverageDataTiffImage image = createImage(tileWidth, tileHeight); for (int y = 0; y < tileHeight; y++) { for (int x = 0; x < tileWidth; x++) { float pixelValue = pixelValues[y][x]; setPixelValue(image, x, y, pixelValue); } } image.writeTiff(); return image; }
/** * {@inheritDoc} */ @Override public double getValue(GriddedTile griddedTile, TileRow tileRow, int x, int y) { byte[] imageBytes = tileRow.getTileData(); double value = getValue(griddedTile, imageBytes, x, y); return value; }
break; case FLOAT: coverageData = new CoverageDataTiff(geoPackage, tileDao); break; default:
/** * Draw a coverage data image tile and format as TIFF bytes from the double * array of float pixel values formatted as float[row][width] * * @param pixelValues float pixel values as [row][width] * @return coverage data image tile bytes */ public byte[] drawTileData(float[][] pixelValues) { CoverageDataTiffImage image = drawTile(pixelValues); byte[] bytes = image.getImageBytes(); return bytes; }
.getValue(griddedTile, value); .drawTileData(coverageDataValues.tilePixels); .drawTileData(coverageDataValues.tilePixelsFlat, tileWidth, tileHeight));
/** * Constructor, used for reading a TIFF * * @param tileRow tile row */ public CoverageDataTiffImage(TileRow tileRow) { imageBytes = tileRow.getTileData(); TIFFImage tiffImage = TiffReader.readTiff(imageBytes); directory = tiffImage.getFileDirectory(); CoverageDataTiff.validateImageType(directory); width = directory.getImageWidth().intValue(); height = directory.getImageHeight().intValue(); }
/** * Draw a coverage data image tile from the double array of float pixel * values formatted as float[row][width] * * @param pixelValues * float pixel values as [row][width] * @return coverage data image tile */ public CoverageDataTiffImage drawTile(float[][] pixelValues) { int tileWidth = pixelValues[0].length; int tileHeight = pixelValues.length; CoverageDataTiffImage image = createImage(tileWidth, tileHeight); for (int y = 0; y < tileHeight; y++) { for (int x = 0; x < tileWidth; x++) { float pixelValue = pixelValues[y][x]; setPixelValue(image, x, y, pixelValue); } } image.writeTiff(); return image; }
/** * {@inheritDoc} */ @Override public double getValue(GriddedTile griddedTile, TileRow tileRow, int x, int y) { byte[] imageBytes = tileRow.getTileData(); double value = getValue(griddedTile, imageBytes, x, y); return value; }
break; case FLOAT: coverageData = new CoverageDataTiff(geoPackage, tileDao); break; default:
/** * {@inheritDoc} */ @Override public byte[] drawTileData(GriddedTile griddedTile, Double[] values, int tileWidth, int tileHeight) { CoverageDataTiffImage image = drawTile(griddedTile, values, tileWidth, tileHeight); byte[] bytes = image.getImageBytes(); return bytes; }
/** * Constructor, used for reading a TIFF * * @param tileRow * tile row */ public CoverageDataTiffImage(TileRow tileRow) { imageBytes = tileRow.getTileData(); TIFFImage tiffImage = TiffReader.readTiff(imageBytes); directory = tiffImage.getFileDirectory(); CoverageDataTiff.validateImageType(directory); width = directory.getImageWidth().intValue(); height = directory.getImageHeight().intValue(); }
/** * Draw a coverage data image tile from the flat array of coverage data values of length * tileWidth * tileHeight where each coverage data value is at: (y * tileWidth) + x * * @param griddedTile gridded tile * @param values coverage data values of length tileWidth * tileHeight * @param tileWidth tile width * @param tileHeight tile height * @return coverage data image tile */ public CoverageDataTiffImage drawTile(GriddedTile griddedTile, Double[] values, int tileWidth, int tileHeight) { CoverageDataTiffImage image = createImage(tileWidth, tileHeight); for (int x = 0; x < tileWidth; x++) { for (int y = 0; y < tileHeight; y++) { Double value = values[(y * tileWidth) + x]; float pixelValue = getPixelValue(griddedTile, value); setPixelValue(image, x, y, pixelValue); } } image.writeTiff(); return image; }
/** * {@inheritDoc} */ @Override public Double[] getValues(GriddedTile griddedTile, byte[] imageBytes) { float[] pixelValues = getPixelValues(imageBytes); Double[] values = getValues(griddedTile, pixelValues); return values; }
/** * {@inheritDoc} */ @Override public Double getValue(GriddedTile griddedTile, byte[] imageBytes, int x, int y) { float pixelValue = getPixelValue(imageBytes, x, y); Double value = getValue(griddedTile, pixelValue); return value; }