public void write(OutputStream outStream) { try { long t0 = System.currentTimeMillis(); GeoTiffWriteParams wp = new GeoTiffWriteParams(); wp.setCompressionMode(GeoTiffWriteParams.MODE_EXPLICIT); wp.setCompressionType("LZW"); ParameterValueGroup params = new GeoTiffFormat().getWriteParameters(); params.parameter(AbstractGridFormat.GEOTOOLS_WRITE_PARAMS.getName().toString()).setValue(wp); new GeoTiffWriter(outStream).write(coverage, (GeneralParameterValue[]) params.values().toArray(new GeneralParameterValue[1])); //new GeoTiffWriter(outStream).write(coverage, null); //wasn't this line writing twice and trashing compressed version? long t1 = System.currentTimeMillis(); LOG.debug("wrote geotiff in {}msec", t1-t0); } catch (Exception e) { LOG.error("exception while preparing geotiff : {}", e.getMessage()); throw new WebApplicationException(e); } } };
public void writeGeotiff(String fileName, ResultSet results) { LOG.info("writing geotiff."); float[][] imagePixelData = new float[rows][cols]; for (int row = 0; row < rows; row++) { for (int col = 0; col < cols; col++) { int index = row * cols + col; float pixel = (float) (results.results[index]); if (unitySeconds > 0) pixel /= unitySeconds; imagePixelData[row][col] = pixel; } } GridCoverage2D coverage = new GridCoverageFactory().create("OTPAnalyst", imagePixelData, refEnvelope); try { GeoTiffWriteParams wp = new GeoTiffWriteParams(); wp.setCompressionMode(GeoTiffWriteParams.MODE_EXPLICIT); wp.setCompressionType("LZW"); ParameterValueGroup params = new GeoTiffFormat().getWriteParameters(); params.parameter(AbstractGridFormat.GEOTOOLS_WRITE_PARAMS.getName().toString()).setValue(wp); GeoTiffWriter writer = new GeoTiffWriter(new File(fileName)); writer.write(coverage, (GeneralParameterValue[]) params.values().toArray(new GeneralParameterValue[1])); } catch (Exception e) { LOG.error("exception while writing geotiff.", e); } LOG.info("done writing geotiff."); }
GridCoverage2D test = factory.create("test", bi, envelope); ByteArrayOutputStream bos = new ByteArrayOutputStream(); GeoTiffWriter writer = new GeoTiffWriter(bos); writer.write(test, null); writer.dispose();
/** * Retrieves a {@link GeoTiffWriter} or <code>null</code> if the provided <code>destination * </code> is suitable. * * <p>This file does not use hints in the construction of the geotiff reader. * * @param destination must be a GeoTiff File * @return a GeoTiffReader object initialized to the specified File. */ @Override public GridCoverageWriter getWriter(Object destination) { try { return new GeoTiffWriter(destination); } catch (IOException e) { if (LOGGER.isLoggable(Level.WARNING)) LOGGER.log(Level.WARNING, e.getLocalizedMessage(), e); return null; } }
/** * Retrieves a {@link GeoTiffWriter} or <code>null</code> if the provided <code>destination * </code> is suitable. * * <p>This file does not use hints in the construction of the geotiff reader. * * @param destination must be a GeoTiff File * @param hints Hints to pass the hypothetic {@link GridCoverageReader} to control its * behaviour. * @return a GeoTiffReader object initialized to the specified File. */ @Override public GridCoverageWriter getWriter(Object destination, Hints hints) { try { return new GeoTiffWriter(destination, hints); } catch (IOException e) { if (LOGGER.isLoggable(Level.WARNING)) LOGGER.log(Level.WARNING, e.getLocalizedMessage(), e); return null; } }
GeoTiffWriter writer = new GeoTiffWriter(testFile); writer.write(coverage, null);
/** * Retrieves a {@link GeoTiffWriter} or <code>null</code> if the provided * <code>destination</code> is suitable. * * This file does not use hints in the construction of the geotiff reader. * * @param destination * must be a GeoTiff File * * @return a GeoTiffReader object initialized to the specified File. */ @Override public GridCoverageWriter getWriter(Object destination) { try { return new GeoTiffWriter(destination); } catch (IOException e) { if (LOGGER.isLoggable(Level.WARNING)) LOGGER.log(Level.WARNING, e.getLocalizedMessage(), e); return null; } }
GeoTiffWriter writer = new GeoTiffWriter(coverageFile); final GeoTiffFormat format = new GeoTiffFormat(); final GeoTiffWriteParams wp = new GeoTiffWriteParams();
GeoTiffWriter writer = new GeoTiffWriter(coverageFile); final GeoTiffFormat format = new GeoTiffFormat(); final GeoTiffWriteParams wp = new GeoTiffWriteParams();
/** * Retrieves a {@link GeoTiffWriter} or <code>null</code> if the provided * <code>destination</code> is suitable. * * This file does not use hints in the construction of the geotiff reader. * * @param destination * must be a GeoTiff File * @param hints * Hints to pass the hypothetic {@link GridCoverageReader} to * control its behaviour. * * @return a GeoTiffReader object initialized to the specified File. */ @Override public GridCoverageWriter getWriter(Object destination, Hints hints) { try { return new GeoTiffWriter(destination, hints); } catch (IOException e) { if (LOGGER.isLoggable(Level.WARNING)) LOGGER.log(Level.WARNING, e.getLocalizedMessage(), e); return null; } }
@Override public Object write(File f) throws KlabException { if (!(f.toString().endsWith(".tif") || f.toString().endsWith(".tiff"))) { throw new KlabUnsupportedOperationException("raster coverage: only GeoTIFF format is supported for now"); } GeoTiffWriter gtw; try { gtw = new GeoTiffWriter(f); gtw.write(coverage, null); } catch (IOException e) { throw new KlabIOException(e); } return null; }
geoTiffWriter = new GeoTiffWriter(outputFile); writeGeotiff(geoTiffWriter, coverage); geoTiffWriter.dispose();
public void formatImageOutputStream(RenderedImage image, OutputStream outStream) throws WmsException, IOException { // crating a grid coverage final GridCoverage2D gc = factory.create("geotiff", image, new GeneralEnvelope(mapContext.getAreaOfInterest())); // tiff if (LOGGER.isLoggable(Level.FINE)) { LOGGER.fine("Writing tiff image ..."); } // get the one required by the GetMapRequest final String format = getOutputFormat(); // do we want it to be 8 bits? if (format.equalsIgnoreCase("image/geotiff8") || (this.mapContext.getPaletteInverter() != null)) { image = forceIndexed8Bitmask(image); } // writing it out final ImageOutputStream imageOutStream = ImageIO.createImageOutputStream(outStream); final GeoTiffWriter writer = new GeoTiffWriter(imageOutStream); writer.write(gc, null); imageOutStream.flush(); imageOutStream.close(); if (LOGGER.isLoggable(Level.FINE)) { LOGGER.fine("Writing tiff image done!"); } }
/** Write this grid out in GeoTIFF format */ public void writeGeotiff (OutputStream out) { try { float[][] data = new float[height][width]; for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { data[y][x] = (float) grid[x][y]; } } ReferencedEnvelope env = getMercatorEnvelopeMeters(); GridCoverage2D coverage = new GridCoverageFactory().create("GRID", data, env); GeoTiffWriteParams wp = new GeoTiffWriteParams(); wp.setCompressionMode(GeoTiffWriteParams.MODE_EXPLICIT); wp.setCompressionType("LZW"); ParameterValueGroup params = new GeoTiffFormat().getWriteParameters(); params.parameter(AbstractGridFormat.GEOTOOLS_WRITE_PARAMS.getName().toString()).setValue(wp); GeoTiffWriter writer = new GeoTiffWriter(out); writer.write(coverage, params.values().toArray(new GeneralParameterValue[1])); writer.dispose(); out.close(); } catch (Exception e) { throw new RuntimeException(e); } }
@DescribeResult(name = "coverageLocation", description = "URL at which raster can be accessed") public URL execute( @DescribeParameter(name = "coverage", description = "Input raster") GridCoverage2D coverage) throws IOException { final File file = File.createTempFile(coverage.getName().toString(), ".tif", storage.getStorage()); // TODO check file prior to writing GeoTiffWriter writer = new GeoTiffWriter(file); // setting the write parameters for this geotiff final ParameterValueGroup params = new GeoTiffFormat().getWriteParameters(); params.parameter(AbstractGridFormat.GEOTOOLS_WRITE_PARAMS.getName().toString()).setValue( DEFAULT_WRITE_PARAMS); final GeneralParameterValue[] wps = (GeneralParameterValue[]) params.values().toArray( new GeneralParameterValue[1]); try { writer.write(coverage, wps); } finally { try { writer.dispose(); } catch (Exception e) { // we tried, no need to fuss around this one } } return storage.getURL(file); }
/** Write this grid out in GeoTIFF format */ public void writeGeotiff (OutputStream out) { try { float[][] data = new float[height][width]; for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { data[y][x] = (float) grid[x][y]; } } ReferencedEnvelope env = getMercatorEnvelopeMeters(); GridCoverage2D coverage = new GridCoverageFactory().create("GRID", data, env); GeoTiffWriteParams wp = new GeoTiffWriteParams(); wp.setCompressionMode(GeoTiffWriteParams.MODE_EXPLICIT); wp.setCompressionType("LZW"); ParameterValueGroup params = new GeoTiffFormat().getWriteParameters(); params.parameter(AbstractGridFormat.GEOTOOLS_WRITE_PARAMS.getName().toString()).setValue(wp); GeoTiffWriter writer = new GeoTiffWriter(out); writer.write(coverage, params.values().toArray(new GeneralParameterValue[1])); writer.dispose(); out.close(); } catch (Exception e) { throw new RuntimeException(e); } }
writer = new GeoTiffWriter(imageOutStream); writer.write(gc, null); } finally {
@DescribeResult(name = "coverageLocation", description = "URL at which raster can be accessed") public URL execute( @DescribeParameter(name = "coverage", description = "Input raster") GridCoverage2D coverage) throws IOException { String fileName = coverage.getName().toString() + ".tif"; final Resource resource = resources.getOutputResource(null, fileName); // setting the write parameters for this geotiff final ParameterValueGroup params = new GeoTiffFormat().getWriteParameters(); params.parameter(AbstractGridFormat.GEOTOOLS_WRITE_PARAMS.getName().toString()) .setValue(DEFAULT_WRITE_PARAMS); final GeneralParameterValue[] wps = params.values().toArray(new GeneralParameterValue[1]); // TODO check file prior to writing try (OutputStream os = resource.out()) { GeoTiffWriter writer = new GeoTiffWriter(os); try { writer.write(coverage, wps); } finally { writer.dispose(); } } return new URL(resources.getOutputResourceUrl(fileName, "image/tiff")); } }
params.parameter(AbstractGridFormat.GEOTOOLS_WRITE_PARAMS.getName().toString()).setValue(wp); GeoTiffWriter writer = new GeoTiffWriter(out);
params.parameter(AbstractGridFormat.GEOTOOLS_WRITE_PARAMS.getName().toString()).setValue(wp); GeoTiffWriter writer = new GeoTiffWriter(out);