/** * {@inheritDoc} */ @Override public CoverageDataTiffImage createImage(TileRow tileRow) { return new CoverageDataTiffImage(tileRow); }
/** * {@inheritDoc} */ @Override public Double getValue(GriddedTile griddedTile, CoverageDataTiffImage image, int x, int y) { Double value = null; if (image.getDirectory() != null) { float pixelValue = image.getPixel(x, y); value = getValue(griddedTile, pixelValue); } else { value = getValue(griddedTile, image.getImageBytes(), x, y); } return value; }
/** * Set the pixel value into the image * * @param image image * @param x x coordinate * @param y y coordinate * @param pixelValue pixel value */ public void setPixelValue(CoverageDataTiffImage image, int x, int y, float pixelValue) { image.getRasters().setFirstPixelSample(x, y, pixelValue); }
byte[] tileData = tileRow.getTileData(); TestCase.assertTrue(tileData.length > 0); CoverageDataTiffImage image = new CoverageDataTiffImage(tileRow); int width = image.getWidth(); int height = image.getHeight(); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { float pixelValue = image.getPixel(x, y); pixelValuesList.add(pixelValue);
/** * Get the image bytes * * @return image bytes */ public byte[] getImageBytes() { if (imageBytes == null) { writeTiff(); } return imageBytes; }
/** * {@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; }
/** * Get the rasters, read if needed * * @return rasters */ public Rasters getRasters() { if (rasters == null) { readPixels(); } return rasters; }
/** * Get the image bytes * * @return image bytes */ public byte[] getImageBytes() { if (imageBytes == null) { writeTiff(); } return imageBytes; }
/** * 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; }
/** * Get the rasters, read if needed * * @return rasters */ public Rasters getRasters() { if (rasters == null) { readPixels(); } return rasters; }
/** * {@inheritDoc} */ @Override public Double getValue(GriddedTile griddedTile, CoverageDataTiffImage image, int x, int y) { Double value = null; if (image.getDirectory() != null) { float pixelValue = image.getPixel(x, y); value = getValue(griddedTile, pixelValue); } else { value = getValue(griddedTile, image.getImageBytes(), x, y); } return value; }
/** * 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 CoverageDataTiffImage createImage(TileRow tileRow) { return new CoverageDataTiffImage(tileRow); }
/** * {@inheritDoc} */ @Override public byte[] drawTileData(GriddedTile griddedTile, Double[][] values) { CoverageDataTiffImage image = drawTile(griddedTile, values); byte[] bytes = image.getImageBytes(); return bytes; }
/** * Get the pixel at the coordinate * * @param x x coordinate * @param y y coordinate * @return pixel value */ public float getPixel(int x, int y) { float pixel = -1; if (rasters == null) { readPixels(); } if (rasters != null) { pixel = rasters.getFirstPixelSample(x, y).floatValue(); } else { throw new GeoPackageException("Could not retrieve pixel value"); } return pixel; }
/** * Set the pixel value into the image * * @param image * image * @param x * x coordinate * @param y * y coordinate * @param pixelValue * pixel value */ public void setPixelValue(CoverageDataTiffImage image, int x, int y, float pixelValue) { image.getRasters().setFirstPixelSample(x, y, pixelValue); }
/** * 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; }
/** * Create a new image * * @param tileWidth tile width * @param tileHeight tile height * @return image */ public CoverageDataTiffImage createImage(int tileWidth, int tileHeight) { Rasters rasters = new Rasters(tileWidth, tileHeight, 1, BITS_PER_SAMPLE, TiffConstants.SAMPLE_FORMAT_FLOAT); int rowsPerStrip = rasters.calculateRowsPerStrip(TiffConstants.PLANAR_CONFIGURATION_CHUNKY); FileDirectory fileDirectory = new FileDirectory(); fileDirectory.setImageWidth(tileWidth); fileDirectory.setImageHeight(tileHeight); fileDirectory.setBitsPerSample(BITS_PER_SAMPLE); fileDirectory.setCompression(TiffConstants.COMPRESSION_NO); fileDirectory.setPhotometricInterpretation(TiffConstants.PHOTOMETRIC_INTERPRETATION_BLACK_IS_ZERO); fileDirectory.setSamplesPerPixel(SAMPLES_PER_PIXEL); fileDirectory.setRowsPerStrip(rowsPerStrip); fileDirectory.setPlanarConfiguration(TiffConstants.PLANAR_CONFIGURATION_CHUNKY); fileDirectory.setSampleFormat(TiffConstants.SAMPLE_FORMAT_FLOAT); fileDirectory.setWriteRasters(rasters); CoverageDataTiffImage image = new CoverageDataTiffImage(fileDirectory); return image; }
/** * {@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; }
/** * Get the pixel at the coordinate * * @param x * x coordinate * @param y * y coordinate * @return pixel value */ public float getPixel(int x, int y) { float pixel = -1; if (rasters == null) { readPixels(); } if (rasters != null) { pixel = rasters.getFirstPixelSample(x, y).floatValue(); } else { throw new GeoPackageException("Could not retrieve pixel value"); } return pixel; }