Class CoverageProcessor

Object
CoverageProcessor

public class CoverageProcessor extends Object
Base class for coverage processor implementations.
Since:
2.2
Author:
Martin Desruisseaux (IRD), Simone Giannecchini, GeoSolutions S.A.S.
  • Field Details

    • LOGGER

      public static final Logger LOGGER
      The logger for coverage processing operations.
    • OPERATION

      public static final Level OPERATION
      The logging level for reporting coverage operations. This level is equals or slightly lower than Level.INFO.
    • hints

      protected final Hints hints
      The rendering hints for JAI operations (never null). This field is usually given as argument to OperationJAI methods.
    • registry

      protected final FactoryRegistry registry
      The service registry for finding Operation implementations.
  • Constructor Details

    • CoverageProcessor

      public CoverageProcessor()
      Constructs a coverage processor.
    • CoverageProcessor

      public CoverageProcessor(RenderingHints hints)
      Constructs a default coverage processor. The scanForPlugins() method will be automatically invoked the first time an operation is required. Additional operations can be added by subclasses with the addOperation(org.geotools.api.coverage.processing.Operation) method. Rendering hints will be initialized with the following hints:

      Parameters:
      hints - A set of additional rendering hints, or null if none.
  • Method Details

    • getInstance

      public static CoverageProcessor getInstance()
      Returns a default processor instance.

      Note: this is a temporary method, until we have GeoAPI interface for coverage processor and a factory finder for their implementations.

    • getInstance

      public static CoverageProcessor getInstance(Hints hints)
      Returns a default processor instance.

      Note: this is a temporary method, until we have GeoAPI interface for coverage processor and a factory finder for their implementations.

    • updateProcessors

      public static void updateProcessors()
      This method is called when the user has registered another OperationDescriptor for an operation and requires to update the various CoverageProcessors.
    • removeOperationFromProcessors

      public static void removeOperationFromProcessors(String operationName)
      This method is called when the user has registered another OperationDescriptor and must remove the old operation instance from the processors.
      Parameters:
      operationName - Name of the operation to remove
    • getLocale

      public Locale getLocale()
      The locale for logging message or reporting errors. The default implementations returns the default locale. Subclasses can override this method if a different locale is wanted.
    • listOperations

      public void listOperations(Writer out) throws IOException
      Lists a summary of all operations to the specified stream.
      Parameters:
      out - The destination stream.
      Throws:
      IOException - if an error occured will writing to the stream.
    • printOperations

      public void printOperations(Writer out, String[] names) throws OperationNotFoundException, IOException
      Prints a description of operations to the specified stream. If the names array is non-null, then only the specified operations are printed. Otherwise, all operations are printed. The description details include operation names and lists of parameters.
      Parameters:
      out - The destination stream.
      names - The operation to print, or an empty array for none, or null for all.
      Throws:
      IOException - if an error occured will writing to the stream.
      OperationNotFoundException - if an operation named in names was not found.
    • addOperation

      protected void addOperation(Operation operation) throws IllegalStateException
      Add the specified operation to this processor. This method is usually invoked at construction time before this processor is made accessible.
      Parameters:
      operation - The operation to add.
      Throws:
      IllegalStateException - if an operation already exists with the same name.
    • removeOperation

      protected void removeOperation(Operation operation)
      Removes the specified operation to this processor. This method is usually invoked at construction time before this processor is made accessible.
      Parameters:
      operation - The operation to remove.
    • getOperations

      public Collection<Operation> getOperations()
      Retrieves grid processing operations information. Each operation information contains the name of the operation as well as a list of its parameters.
    • getOperation

      public Operation getOperation(String name) throws OperationNotFoundException
      Returns the operation for the specified name.
      Parameters:
      name - Name of the operation (case insensitive).
      Returns:
      The operation for the given name.
      Throws:
      OperationNotFoundException - if there is no operation for the specified name.
    • getRenderingHint

      public final Object getRenderingHint(RenderingHints.Key key)
      Returns a rendering hint.
      Parameters:
      key - The hint key (e.g. Hints.JAI_INSTANCE).
      Returns:
      The hint value for the specified key, or null if there is no hint for the specified key.
    • doOperation

      public Coverage doOperation(ParameterValueGroup parameters, Hints hints)
      Applies a process operation to a coverage. The default implementation checks if source coverages use an interpolation, and then invokes AbstractOperation.doOperation(org.geotools.api.parameter.ParameterValueGroup, org.geotools.util.factory.Hints). If all source coverages used the same interpolation, then this interpolation is applied to the resulting coverage (except if the resulting coverage has already an interpolation).
      Parameters:
      parameters - Parameters required for the operation. The easiest way to construct them is to invoke operation.getParameters() and to modify the returned group.
      Returns:
      The result as a coverage.
      Throws:
      OperationNotFoundException - if there is no operation for the parameter group name.
    • doOperation

      public Coverage doOperation(ParameterValueGroup parameters) throws OperationNotFoundException
      Applies a process operation to a coverage. The default implementation checks if source coverages use an interpolation, and then invokes AbstractOperation.doOperation(org.geotools.api.parameter.ParameterValueGroup, org.geotools.util.factory.Hints). If all source coverages used the same interpolation, then this interpolation is applied to the resulting coverage (except if the resulting coverage has already an interpolation).
      Parameters:
      parameters - Parameters required for the operation. The easiest way to construct them is to invoke operation.getParameters() and to modify the returned group.
      Returns:
      The result as a coverage.
      Throws:
      OperationNotFoundException - if there is no operation for the parameter group name.
    • scanForPlugins

      public void scanForPlugins()
      Scans for factory plug-ins on the application class path. This method is needed because the application class path can theoretically change, or additional plug-ins may become available. Rather than re-scanning the classpath on every invocation of the API, the class path is scanned automatically only on the first invocation. Clients can call this method to prompt a re-scan. Thus this method need only be invoked by sophisticated applications which dynamically make new plug-ins available at runtime.
    • main

      public static void main(String[] args)
      Dumps to the standard output stream a list of operations for the default processor. If no argument is provided, then only a summary of operations is printed. If arguments are provided, then the operation parameters are printed for all operation names given in arguments. This method can been invoked from the command line. For example:
       java org.geotools.coverage.processing.DefaultProcessor Interpolate
       
      Note for Windows users: If the output contains strange symbols, try to supply an "-encoding" argument. Example:
       java org.geotools.coverage.processing.DefaultProcessor -encoding Cp850
       
      The codepage number (850 in the previous example) can be fetch from the DOS command line by entering the "chcp" command with no arguments.
    • getParameter

      public static Object getParameter(ParameterBlockJAI parameters, String paramName)