double w = currentRaster.getColumns(); double h = currentRaster.getRows(); RasterData data = this.currentRaster.getReadOnlyRasterData();
public SimpleRaster applyFilter() { RasterData rasterData = currentRaster.getReadOnlyRasterData(); RasterData outData = rasterData.createCompatibleWritableRasterData( new RasterRect( 0, 0, outWidth, outHeight ),
@Override public void setSubRaster( double x, double y, int dstBand, AbstractRaster source ) { // calculate position in RasterData int offset[] = getRasterReference().getRasterCoordinate( x, y ); getRasterData().setSubset( offset[0], offset[1], dstBand, 0, source.getAsSimpleRaster().getReadOnlyRasterData() ); }
@Override public void setSubRaster( Envelope env, int dstBand, AbstractRaster source ) { // calculate position in RasterData RasterRect rect = getRasterReference().convertEnvelopeToRasterCRS( env ); getRasterData().setSubset( rect.x, rect.y, dstBand, 0, source.getAsSimpleRaster().getReadOnlyRasterData() ); }
@Override public void setSubRaster( double x, double y, AbstractRaster source ) { // calculate position in RasterData int offset[] = getRasterReference().getRasterCoordinate( x, y ); RasterData sourceRD = source.getAsSimpleRaster().getReadOnlyRasterData(); getRasterData().setSubset( offset[0], offset[1], sourceRD.getColumns(), sourceRD.getRows(), sourceRD ); }
/** * Interpolates the given raster to retrieve a raster with the given width and height. * * @param sourceRaster * the raster to get an interpolation version from * @param dstWidth * the width (columns) of the resulting raster * @param dstHeight * the height (rows) of the resulting raster * @return the interpolated raster */ public AbstractRaster interPolate( AbstractRaster sourceRaster, int dstWidth, int dstHeight ) { SimpleRaster simpleSourceRaster = sourceRaster.getAsSimpleRaster(); RasterData srcData = simpleSourceRaster.getReadOnlyRasterData(); RasterGeoReference srcREnv = simpleSourceRaster.getRasterReference(); // interpolation is needed. Interpolation interpolation = InterpolationFactory.getInterpolation( interpolationType, srcData ); RasterRect rr = new RasterRect( 0, 0, dstWidth, dstHeight ); RasterData dstData = srcData.createCompatibleWritableRasterData( rr, null ); RasterGeoReference dstREnv = RasterGeoReference.create( sourceRaster.getRasterReference().getOriginLocation(), sourceRaster.getEnvelope(), dstWidth, dstHeight ); // use warp to calculate the correct sample positions in the source raster. // the warp is a cubic polynomial function created of 100 points in the dstEnvelope. This function will map // points from the source crs to the target crs very accurate. WarpPolynomial warp = createWarp( dstWidth, dstHeight, srcREnv, dstREnv ); warpTransform( warp, interpolation, dstData ); return new SimpleRaster( dstData, sourceRaster.getEnvelope(), dstREnv, (ResourceMetadata) sourceRaster.getMetadata() ); }
RasterData srcData = simpleSourceRaster.getReadOnlyRasterData(); RasterGeoReference srcREnv = simpleSourceRaster.getRasterReference();