Class Operations


  • public class Operations
    extends Object
    Convenience, type-safe, methods for applying some common operations on coverage objects. All methods wrap their arguments in a parameter value group and delegate the work to the processor's doOperation method. This convenience class do not brings any new functionalities, but brings type-safety when the operation is know at compile time. For operation unknown at compile time (e.g. for an operation selected by users in some widget), use the processor directly.
    Since:
    2.2
    Author:
    Martin Desruisseaux (IRD)
    See Also:
    org.geotools.coverage.processing.operation
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static Operations DEFAULT
      The default instance.
    • Constructor Summary

      Constructors 
      Constructor Description
      Operations​(RenderingHints hints)
      Creates a new instance using the specified hints.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      Coverage absolute​(Coverage source)
      Computes the mathematical absolute value of each sample value.
      Coverage add​(Coverage source, double[] constants)
      Adds constants (one for each band) to every sample values of the source coverage.
      Coverage add​(Coverage source0, Coverage source1)
      Returns the sum between two coverages
      GridCoverage affine​(GridCoverage source, AffineTransform transform, Interpolation interpolation, double[] noDataValues)
      Translates and resizes an image.
      Coverage crop​(Coverage source, Bounds envelope)
      Crops the image to a specified rectangular area.
      Coverage crop​(Coverage source, Geometry roi)
      Crops the image to a specified clipping area
      Coverage divideBy​(Coverage source, double[] constants)
      Divides every sample values of the source coverage by constants (one for each band).
      protected Coverage doOperation​(String operationName, Coverage source)
      Applies a process operation with default parameters.
      protected Coverage doOperation​(String operationName, Coverage source, String argumentName1, Object argumentValue1)
      Applies a process operation with one parameter.
      protected Coverage doOperation​(String operationName, Coverage source, String argumentName1, Object argumentValue1, String argumentName2, Object argumentValue2)
      Applies process operation with two parameters.
      protected Coverage doOperation​(String operationName, Coverage source, String argumentName1, Object argumentValue1, String argumentName2, Object argumentValue2, String argumentName3, Object argumentValue3)
      Applies a process operation with three parameters.
      protected Coverage doOperation​(String operationName, Coverage source, String argumentName1, Object argumentValue1, String argumentName2, Object argumentValue2, String argumentName3, Object argumentValue3, String argumentName4, Object argumentValue4)
      Applies a process operation with four parameters.
      protected Coverage doOperation​(String operationName, Coverage source, String argumentName1, Object argumentValue1, String argumentName2, Object argumentValue2, String argumentName3, Object argumentValue3, String argumentName4, Object argumentValue4, String argumentName5, Object argumentValue5)
      Applies a process operation with five parameters.
      protected Coverage doOperation​(String operationName, Coverage source, String argumentName1, Object argumentValue1, String argumentName2, Object argumentValue2, String argumentName3, Object argumentValue3, String argumentName4, Object argumentValue4, String argumentName5, Object argumentValue5, String argumentName6, Object argumentValue6)
      Applies a process operation with six parameters.
      protected Coverage doOperation​(String operationName, Coverage source0, Coverage source1)
      Applies a process binary operation on two coverages with default parameters.
      Coverage exp​(Coverage source)
      Takes the exponential of the sample values of a coverage.
      Coverage extrema​(Coverage source)
      Finds the maximum and minimum pixel values for each band within that region of the coverage.
      GridCoverage filteredSubsample​(GridCoverage source)
      Subsamples an image using the default values.
      GridCoverage filteredSubsample​(GridCoverage source, int scaleX, int scaleY, float[] qsFilter)
      Subsamples an image by integral factors.
      GridCoverage filteredSubsample​(GridCoverage source, int scaleX, int scaleY, float[] qsFilter, Interpolation interpolation)
      Subsamples an image by integral factors.
      GridCoverage interpolate​(GridCoverage source, String type)
      Specifies the interpolation type to be used to interpolate values for points which fall between grid cells.
      GridCoverage interpolate​(GridCoverage source, Interpolation type)
      Specifies the interpolation type to be used to interpolate values for points which fall between grid cells.
      GridCoverage interpolate​(GridCoverage source, Interpolation[] types)
      Specifies the interpolation types to be used to interpolate values for points which fall between grid cells.
      Coverage invert​(Coverage source)
      Inverts the sample values of a coverage.
      Coverage log​(Coverage source)
      Takes the natural logarithm of the sample values of a coverage.
      Coverage multiply​(Coverage source, double[] constants)
      Multiplies every sample values of the source coverage by constants (one for each band).
      Coverage multiply​(Coverage source0, Coverage source1)
      Returns the multiplication between two coverages
      GridCoverage nodataFilter​(GridCoverage source)
      Replaces NaN values by the weighted average of neighbors values.
      GridCoverage nodataFilter​(GridCoverage source, int padding, int validityThreshold)
      Replaces NaN values by the weighted average of neighbors values.
      Coverage resample​(Coverage source, CoordinateReferenceSystem crs)
      Resamples a coverage to the specified coordinate reference system.
      Coverage resample​(GridCoverage source, Bounds envelope, Interpolation interpolationType)
      Resamples a grid coverage to the specified envelope.
      Coverage resample​(GridCoverage source, CoordinateReferenceSystem crs, GridGeometry gridGeometry, Interpolation interpolationType)
      Resamples a grid coverage to the specified coordinate reference system and grid geometry.
      Coverage resample​(GridCoverage source, CoordinateReferenceSystem crs, GridGeometry gridGeometry, Interpolation interpolationType, double[] backgroundValues)
      Resamples a grid coverage to the specified coordinate reference system and grid geometry.
      Coverage rescale​(Coverage source, double[] constants, double[] offsets)
      Maps the sample values of a coverage from one range to another range.
      GridCoverage scale​(GridCoverage source, double xScale, double yScale, double xTrans, double yTrans)
      Translates and resizes an image.
      GridCoverage scale​(GridCoverage source, double xScale, double yScale, double xTrans, double yTrans, Interpolation interpolation)
      Translates and resizes an image.
      Coverage selectSampleDimension​(Coverage source, int[] sampleDimensions)
      Chooses N sample dimensions from a coverage and copies their sample data to the destination grid coverage in the order specified.
      GridCoverage subsampleAverage​(GridCoverage source, double scaleX, double scaleY)
      Subsamples an image by averaging over a moving window
      Coverage subtract​(Coverage source, double[] constants)
      Subtracts constants (one for each band) from every sample values of the source coverage.
      Coverage subtractFrom​(Coverage source, double[] constants)
      Subtracts every sample values of the source coverage from constants (one for each band).
      GridCoverage warp​(GridCoverage source, Warp warp)
      Warps an image.
      GridCoverage warp​(GridCoverage source, Warp warp, Interpolation interpolation)
      Translates and resizes an image.
      • Methods inherited from class Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • DEFAULT

        public static final Operations DEFAULT
        The default instance.
    • Constructor Detail

      • Operations

        public Operations​(RenderingHints hints)
        Creates a new instance using the specified hints.
        Parameters:
        hints - The hints, or null if none.
    • Method Detail

      • rescale

        public Coverage rescale​(Coverage source,
                                double[] constants,
                                double[] offsets)
                         throws CoverageProcessingException
        Maps the sample values of a coverage from one range to another range.
        Parameters:
        source - The source coverage.
        constants - The constants to multiply to each band.
        offsets - The constants to add to each band.
        Throws:
        CoverageProcessingException - if the operation can't be applied.
        See Also:
        Rescale
      • nodataFilter

        public GridCoverage nodataFilter​(GridCoverage source)
                                  throws CoverageProcessingException
        Replaces NaN values by the weighted average of neighbors values. This method uses the default padding and validity threshold.
        Parameters:
        source - The source coverage.
        Throws:
        CoverageProcessingException - if the operation can't be applied.
        See Also:
        org.geotools.coverage.processing.operation.NodataFilter
      • nodataFilter

        public GridCoverage nodataFilter​(GridCoverage source,
                                         int padding,
                                         int validityThreshold)
                                  throws CoverageProcessingException
        Replaces NaN values by the weighted average of neighbors values.
        Parameters:
        source - The source coverage.
        padding - The number of pixels above, below, to the left and to the right of central NaN pixel to use for computing the average. The default value is 1.
        validityThreshold - The minimal number of valid values required for computing the average. The NaN value will be replaced by the average only if the number of valid value is greater than or equals to this threshold. The default value is 4.
        Throws:
        CoverageProcessingException - if the operation can't be applied.
        See Also:
        org.geotools.coverage.processing.operation.NodataFilter
      • interpolate

        public GridCoverage interpolate​(GridCoverage source,
                                        String type)
                                 throws CoverageProcessingException
        Specifies the interpolation type to be used to interpolate values for points which fall between grid cells. The default value is nearest neighbor. The new interpolation type operates on all sample dimensions.
        Parameters:
        source - The source coverage.
        type - The interpolation type. Possible values are "NearestNeighbor", "Bilinear" and "Bicubic".
        Throws:
        CoverageProcessingException - if the operation can't be applied.
        See Also:
        Interpolate
      • interpolate

        public GridCoverage interpolate​(GridCoverage source,
                                        Interpolation type)
                                 throws CoverageProcessingException
        Specifies the interpolation type to be used to interpolate values for points which fall between grid cells. The default value is nearest neighbor. The new interpolation type operates on all sample dimensions.
        Parameters:
        source - The source coverage.
        type - The interpolation type as a JAI interpolation object.
        Throws:
        CoverageProcessingException - if the operation can't be applied.
        See Also:
        Interpolate
      • interpolate

        public GridCoverage interpolate​(GridCoverage source,
                                        Interpolation[] types)
                                 throws CoverageProcessingException
        Specifies the interpolation types to be used to interpolate values for points which fall between grid cells. The first element in the array is the primary interpolation. All other elements are fallback to be used if the primary interpolation returns a NaN value. See Interpolate operation for details.
        Parameters:
        source - The source coverage.
        types - The interpolation types and their fallback.
        Throws:
        CoverageProcessingException - if the operation can't be applied.
        See Also:
        Interpolate
      • resample

        public Coverage resample​(GridCoverage source,
                                 CoordinateReferenceSystem crs,
                                 GridGeometry gridGeometry,
                                 Interpolation interpolationType)
                          throws CoverageProcessingException
        Resamples a grid coverage to the specified coordinate reference system and grid geometry.
        Parameters:
        source - The source coverage.
        crs - The target coordinate reference system, or null for keeping it unchanged.
        gridGeometry - The grid geometry, or null for a default one.
        interpolationType - The interpolation type, or null for the default one.
        Throws:
        CoverageProcessingException - if the operation can't be applied.
        See Also:
        Resample
      • resample

        public Coverage resample​(GridCoverage source,
                                 CoordinateReferenceSystem crs,
                                 GridGeometry gridGeometry,
                                 Interpolation interpolationType,
                                 double[] backgroundValues)
                          throws CoverageProcessingException
        Resamples a grid coverage to the specified coordinate reference system and grid geometry.
        Parameters:
        source - The source coverage.
        crs - The target coordinate reference system, or null for keeping it unchanged.
        gridGeometry - The grid geometry, or null for a default one.
        interpolationType - The interpolation type, or null for the default one.
        backgroundValues - The backgroundValues, or null for the default one.
        Throws:
        CoverageProcessingException - if the operation can't be applied.
        See Also:
        Resample
      • scale

        public GridCoverage scale​(GridCoverage source,
                                  double xScale,
                                  double yScale,
                                  double xTrans,
                                  double yTrans)
                           throws CoverageProcessingException
        Translates and resizes an image.
        Parameters:
        source - The source coverage.
        xScale - The scale factor along the x axis.
        yScale - The scale factor along the y axis.
        xTrans - The translation along the x axis.
        yTrans - The translation along the x axis.
        Throws:
        CoverageProcessingException - if the operation can't be applied.
        Since:
        2.3
        See Also:
        Scale
      • affine

        public GridCoverage affine​(GridCoverage source,
                                   AffineTransform transform,
                                   Interpolation interpolation,
                                   double[] noDataValues)
                            throws CoverageProcessingException
        Translates and resizes an image.
        Parameters:
        source - The source coverage.
        transform - the AffineTransform
        interpolation - The interpolation to use, or null for the default.
        noDataValues - the no data values to be applied
        Throws:
        CoverageProcessingException - if the operation can't be applied.
        Since:
        2.3
        See Also:
        Scale
      • scale

        public GridCoverage scale​(GridCoverage source,
                                  double xScale,
                                  double yScale,
                                  double xTrans,
                                  double yTrans,
                                  Interpolation interpolation)
                           throws CoverageProcessingException
        Translates and resizes an image.
        Parameters:
        source - The source coverage.
        xScale - The scale factor along the x axis.
        yScale - The scale factor along the y axis.
        xTrans - The translation along the x axis.
        yTrans - The translation along the x axis.
        interpolation - The interpolation to use, or null for the default.
        Throws:
        CoverageProcessingException - if the operation can't be applied.
        Since:
        2.3
        See Also:
        Scale
      • warp

        public GridCoverage warp​(GridCoverage source,
                                 Warp warp,
                                 Interpolation interpolation)
                          throws CoverageProcessingException
        Translates and resizes an image.
        Parameters:
        source - The source coverage.
        warp - The scale factor along the x axis.
        interpolation - The interpolation to use, or null for the default.
        Throws:
        CoverageProcessingException - if the operation can't be applied.
        Since:
        2.3
        See Also:
        Scale
      • filteredSubsample

        public GridCoverage filteredSubsample​(GridCoverage source,
                                              int scaleX,
                                              int scaleY,
                                              float[] qsFilter)
                                       throws CoverageProcessingException
        Subsamples an image by integral factors.
        Parameters:
        source - The source coverage.
        scaleX - The scale factor along the x axis. The default value is 2.
        scaleY - The scale factor along the y axis. The default value is 2.
        qsFilter - The filter. Default to a quadrant symmetric filter generated from a Gaussian kernel
        Throws:
        CoverageProcessingException - if the operation can't be applied.
        Since:
        2.3
        See Also:
        FilteredSubsample
      • filteredSubsample

        public GridCoverage filteredSubsample​(GridCoverage source,
                                              int scaleX,
                                              int scaleY,
                                              float[] qsFilter,
                                              Interpolation interpolation)
                                       throws CoverageProcessingException
        Subsamples an image by integral factors.
        Parameters:
        source - The source coverage.
        scaleX - The scale factor along the x axis. The default value is 2.
        scaleY - The scale factor along the y axis. The default value is 2.
        qsFilter - The filter. Default to a quadrant symmetric filter generated from a Gaussian kernel
        interpolation - The interpolation to use, or null for the default.
        Throws:
        CoverageProcessingException - if the operation can't be applied.
        Since:
        2.3
        See Also:
        FilteredSubsample
      • doOperation

        protected final Coverage doOperation​(String operationName,
                                             Coverage source0,
                                             Coverage source1)
                                      throws OperationNotFoundException,
                                             CoverageProcessingException
        Applies a process binary operation on two coverages with default parameters. This is a helper method for implementation of various convenience methods in this class.
        Parameters:
        operationName - Name of the operation to be applied to the coverage.
        source0 - The first source coverage.
        source1 - The second source coverage.
        Returns:
        The result as a coverage.
        Throws:
        OperationNotFoundException - if there is no operation named operationName.
        CoverageProcessingException - if the operation can't be applied.
      • doOperation

        protected final Coverage doOperation​(String operationName,
                                             Coverage source,
                                             String argumentName1,
                                             Object argumentValue1,
                                             String argumentName2,
                                             Object argumentValue2)
                                      throws OperationNotFoundException,
                                             InvalidParameterNameException,
                                             CoverageProcessingException
        Applies process operation with two parameters. This is a helper method for implementation of various convenience methods in this class.
        Parameters:
        operationName - Name of the operation to be applied to the coverage.
        source - The source coverage.
        argumentName1 - The name of the first parameter to setParameterValue.
        argumentValue1 - The value for the first parameter.
        argumentName2 - The name of the second parameter to setParameterValue.
        argumentValue2 - The value for the second parameter.
        Returns:
        The result as a coverage.
        Throws:
        OperationNotFoundException - if there is no operation named operationName.
        InvalidParameterNameException - if there is no parameter with the specified name.
        CoverageProcessingException - if the operation can't be applied.
      • doOperation

        protected final Coverage doOperation​(String operationName,
                                             Coverage source,
                                             String argumentName1,
                                             Object argumentValue1,
                                             String argumentName2,
                                             Object argumentValue2,
                                             String argumentName3,
                                             Object argumentValue3)
                                      throws OperationNotFoundException,
                                             InvalidParameterNameException,
                                             CoverageProcessingException
        Applies a process operation with three parameters. This is a helper method for implementation of various convenience methods in this class.
        Parameters:
        operationName - Name of the operation to be applied to the coverage.
        source - The source coverage.
        argumentName1 - The name of the first parameter to setParameterValue.
        argumentValue1 - The value for the first parameter.
        argumentName2 - The name of the second parameter to setParameterValue.
        argumentValue2 - The value for the second parameter.
        argumentName3 - The name of the third parameter to setParameterValue.
        argumentValue3 - The value for the third parameter.
        Returns:
        The result as a coverage.
        Throws:
        OperationNotFoundException - if there is no operation named operationName.
        InvalidParameterNameException - if there is no parameter with the specified name.
        CoverageProcessingException - if the operation can't be applied.
      • doOperation

        protected final Coverage doOperation​(String operationName,
                                             Coverage source,
                                             String argumentName1,
                                             Object argumentValue1,
                                             String argumentName2,
                                             Object argumentValue2,
                                             String argumentName3,
                                             Object argumentValue3,
                                             String argumentName4,
                                             Object argumentValue4)
                                      throws OperationNotFoundException,
                                             InvalidParameterNameException,
                                             CoverageProcessingException
        Applies a process operation with four parameters. This is a helper method for implementation of various convenience methods in this class.
        Parameters:
        operationName - Name of the operation to be applied to the coverage.
        source - The source coverage.
        Returns:
        The result as a coverage.
        Throws:
        OperationNotFoundException - if there is no operation named operationName.
        InvalidParameterNameException - if there is no parameter with the specified name.
        CoverageProcessingException - if the operation can't be applied.
        Since:
        2.3
      • doOperation

        protected final Coverage doOperation​(String operationName,
                                             Coverage source,
                                             String argumentName1,
                                             Object argumentValue1,
                                             String argumentName2,
                                             Object argumentValue2,
                                             String argumentName3,
                                             Object argumentValue3,
                                             String argumentName4,
                                             Object argumentValue4,
                                             String argumentName5,
                                             Object argumentValue5)
                                      throws OperationNotFoundException,
                                             InvalidParameterNameException,
                                             CoverageProcessingException
        Applies a process operation with five parameters. This is a helper method for implementation of various convenience methods in this class.
        Parameters:
        operationName - Name of the operation to be applied to the coverage.
        source - The source coverage.
        Returns:
        The result as a coverage.
        Throws:
        OperationNotFoundException - if there is no operation named operationName.
        InvalidParameterNameException - if there is no parameter with the specified name.
        CoverageProcessingException - if the operation can't be applied.
        Since:
        2.3
      • doOperation

        protected final Coverage doOperation​(String operationName,
                                             Coverage source,
                                             String argumentName1,
                                             Object argumentValue1,
                                             String argumentName2,
                                             Object argumentValue2,
                                             String argumentName3,
                                             Object argumentValue3,
                                             String argumentName4,
                                             Object argumentValue4,
                                             String argumentName5,
                                             Object argumentValue5,
                                             String argumentName6,
                                             Object argumentValue6)
                                      throws OperationNotFoundException,
                                             InvalidParameterNameException,
                                             CoverageProcessingException
        Applies a process operation with six parameters. This is a helper method for implementation of various convenience methods in this class.
        Parameters:
        operationName - Name of the operation to be applied to the coverage.
        source - The source coverage.
        Returns:
        The result as a coverage.
        Throws:
        OperationNotFoundException - if there is no operation named operationName.
        InvalidParameterNameException - if there is no parameter with the specified name.
        CoverageProcessingException - if the operation can't be applied.
        Since:
        2.3