Class WriteOp

java.lang.Object
org.esa.snap.core.gpf.Operator
org.esa.snap.core.gpf.common.WriteOp

@OperatorMetadata(alias="Write", category="Input-Output", version="1.3", authors="Marco Zuehlke, Norman Fomferra", copyright="(c) 2010 by Brockmann Consult", description="Writes a data product to a file.", autoWriteDisabled=true) public class WriteOp extends Operator
This standard operator is used to store a data product to a specified file location.

It is used by the framework, e.g. the gpt command line tool, to write target products.

It may also be used by clients to write out break-point product files. This is done by placing a WriteOp node after any node in a processing graph:

 <node id="anyNodeId">
     <operator>Write</operator>
     <sources>
         <source>${anySourceNodeId}</source>
     </sources>
     <parameters>
         <file>/home/norman/eo-data/output/test.nc</file>
         <formatName>NetCDF</formatName>
         <deleteOutputOnFailure>true</deleteOutputOnFailure>
         <writeEntireTileRows>true</writeEntireTileRows>
         <clearCacheAfterRowWrite>true</clearCacheAfterRowWrite>
     </parameters>
 </node>
 

Clients may also use this operator in a programmatic way:

   WriteOp writeOp = new WriteOp(sourceProduct, file, formatName);
   writeOp.setDeleteOutputOnFailure(true);
   writeOp.setWriteEntireTileRows(true);
   writeOp.writeProduct(progressMonitor);
 
Since:
BEAM 4.2
  • Constructor Details

    • WriteOp

      public WriteOp()
    • WriteOp

      public WriteOp(Product sourceProduct, File file, String formatName)
  • Method Details

    • getFile

      public File getFile()
    • setFile

      public void setFile(File file)
    • getFormatName

      public String getFormatName()
    • setIncremental

      public void setIncremental(boolean incremental)
    • setFormatName

      public void setFormatName(String formatName)
    • isDeleteOutputOnFailure

      public boolean isDeleteOutputOnFailure()
    • setDeleteOutputOnFailure

      public void setDeleteOutputOnFailure(boolean deleteOutputOnFailure)
    • isWriteEntireTileRows

      public boolean isWriteEntireTileRows()
    • setWriteEntireTileRows

      public void setWriteEntireTileRows(boolean writeEntireTileRows)
    • isClearCacheAfterRowWrite

      public boolean isClearCacheAfterRowWrite()
    • setClearCacheAfterRowWrite

      public void setClearCacheAfterRowWrite(boolean clearCacheAfterRowWrite)
    • canComputeTile

      public boolean canComputeTile()
      Description copied from class: Operator
      Determines whether this operator's computeTileStack method can be used.

      The default implementation of this method checks if the this operator's class overrides the Operator.computeTileStack method.

      Overrides:
      canComputeTile in class Operator
      Returns:
      true if so.
    • canComputeTileStack

      public boolean canComputeTileStack()
      Description copied from class: Operator
      Determines whether this operator's computeTileStack method can be used.

      The default implementation of this method checks if the this operator's class overrides the Operator.computeTileStack method.

      Overrides:
      canComputeTileStack in class Operator
      Returns:
      true if so.
    • writeProduct

      public void writeProduct(ProgressMonitor pm)
      Writes the source product.
      Parameters:
      pm - A progress monitor.
    • initialize

      public void initialize() throws OperatorException
      Description copied from class: Operator
      Initializes this operator and sets the one and only target product.

      The target product can be either defined by a field of type Product annotated with the TargetProduct annotation or by calling Operator.setTargetProduct(org.esa.snap.core.datamodel.Product) method.

      This method shall never be called directly. The framework calls this method after it has created an instance of this Operator. This will occur only once durting the lifetime of an Operator instance. If not already done, calling the Operator.getTargetProduct() will always trigger a call to the initialize() method.

      Any client code that must be performed before computation of tile data should be placed here.

      Specified by:
      initialize in class Operator
      Throws:
      OperatorException - If an error occurs during operator initialisation.
      See Also:
    • doExecute

      public void doExecute(ProgressMonitor pm)
      Description copied from class: Operator
      Executes the operator.

      For operators that compute raster data tiles, the method is usually a no-op. Other operators might perform their main work in this method, e.g. perform some image analysis such as extracting statistics and other features from data products.

      Don't call this method directly. The framework may call this method

      1. once before the very first tile is computed, or
      2. as a result of a call to Operator.execute(ProgressMonitor).

      The default implementation only progresses the progress monitor.

      Overrides:
      doExecute in class Operator
      Parameters:
      pm - A progress monitor to be notified for long-running tasks.
    • computeTile

      public void computeTile(Band targetBand, Tile targetTile, ProgressMonitor pm) throws OperatorException
      Description copied from class: Operator
      Called by the framework in order to compute a tile for the given target band.

      The default implementation throws a runtime exception with the message "not implemented".

      This method shall never be called directly.

      Overrides:
      computeTile in class Operator
      Parameters:
      targetBand - The target band.
      targetTile - The current tile associated with the target band to be computed.
      pm - A progress monitor which should be used to determine computation cancellation requests.
      Throws:
      OperatorException - If an error occurs during computation of the target raster.
    • computeTileStack

      public void computeTileStack(Map<Band,Tile> targetTiles, Rectangle targetRectangle, ProgressMonitor pm) throws OperatorException
      Description copied from class: Operator
      Called by the framework in order to compute the stack of tiles for the given target bands.

      The default implementation throws a runtime exception with the message "not implemented".

      This method shall never be called directly.

      Overrides:
      computeTileStack in class Operator
      Parameters:
      targetTiles - The current tiles to be computed for each target band.
      targetRectangle - The area in pixel coordinates to be computed (same for all rasters in targetRasters).
      pm - A progress monitor which should be used to determine computation cancellation requests.
      Throws:
      OperatorException - If an error occurs during computation of the target rasters.
    • dispose

      public void dispose()
      Description copied from class: Operator
      Releases the resources the operator has acquired during its lifetime. The default implementation does nothing.

      Overrides should make sure to call super.dispose() as well.

      Overrides:
      dispose in class Operator