public AbstractRaster interPolate( AbstractRaster sourceRaster, int dstWidth, int dstHeight ) {
SimpleRaster simpleSourceRaster = sourceRaster.getAsSimpleRaster();
RasterData srcData = simpleSourceRaster.getReadOnlyRasterData();
RasterGeoReference srcREnv = simpleSourceRaster.getRasterReference();
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 );
WarpPolynomial warp = createWarp( dstWidth, dstHeight, srcREnv, dstREnv );
warpTransform( warp, interpolation, dstData );
return new SimpleRaster( dstData, sourceRaster.getEnvelope(), dstREnv,
(ResourceMetadata) sourceRaster.getMetadata() );
}