try
{
GridDatatype subset = this.coverage.makeSubset( tRange, zRange, bboxLatLonRect, 1, 1, 1 );
Array data = subset.readDataSlice( 0, 0, -1, -1 );
GeotiffWriter writer = new GeotiffWriter( tifFile.getPath() );
writer.writeGrid( this.dataset.getDataset(), subset, data, format == Request.Format.GeoTIFF );
writer.close();
}
catch ( InvalidRangeException e )
{
log.error( "writeCoverageDataToFile(): Failed to subset coverage <" + this.coverage.getFullName() + "> along time axis <" + timeRange + ">: " + e.getMessage() );
throw new WcsException( WcsException.Code.CoverageNotDefined, "", "Failed to subset coverage [" + this.coverage.getFullName() + "]." );
}
catch ( IOException e )
{
log.error( "writeCoverageDataToFile(): Failed to write file for requested coverage <" + this.coverage.getFullName() + ">: " + e.getMessage() );
throw new WcsException( WcsException.Code.UNKNOWN, "", "Problem creating coverage [" + this.coverage.getFullName() + "]." );
}
return tifFile;
}
else if ( format == Request.Format.NetCDF3 )
{
File dir = new File( getDiskCache().getRootDirectory() );
File ncFile = File.createTempFile( "WCS", ".nc", dir );
if ( log.isDebugEnabled() )
log.debug( "writeCoverageDataToFile(): ncFile=" + ncFile.getPath() );
//GridDatatype gridDatatype = this.coverage.getGridDatatype().makeSubset( );
NetcdfCFWriter writer = new NetcdfCFWriter();
writer.makeFile( ncFile.getPath(), this.dataset.getDataset(),
Collections.singletonList( this.coverage.getFullName() ),
bboxLatLonRect, 1,
zRange,
timeRange, 1,
true );