org.esa.beam.framework.dataio
Class ProductIO

java.lang.Object
  extended by org.esa.beam.framework.dataio.ProductIO

public class ProductIO
extends Object

The ProductIO class provides several utility methods concerning data I/O for remote sensing data products.

For example, a product can be read in using a single method call:

      Product product =  ProductIO.readProduct("test.prd");
 
and written out in a similar way:
      ProductIO.writeProduct(product, "HDF5", "test.h5", null);
 

Version:
$Revision$ $Date$
Author:
Norman Fomferra, Sabine Embacher

Field Summary
static String DEFAULT_FORMAT_NAME
          The name of the default product format.
 
Method Summary
static ProductReader getProductReader(String formatName)
          Gets a product reader for the given format name.
static ProductReader getProductReaderForFile(File file)
          Deprecated. Since BEAM 4.10. Use getProductReaderForInput(Object) instead.
static ProductReader getProductReaderForInput(Object input)
          Tries to find a product reader instance suitable for the given input.
static ProductWriter getProductWriter(String formatName)
          Gets a product writer for the given format name.
static String[] getProductWriterExtensions(String formatName)
          Gets an array of writer product file extensions for the given format name.
static Product readProduct(File file)
          Reads the data product specified by the given file.
static Product readProduct(File file, String... formatNames)
          Reads the data product specified by the given file.
static Product readProduct(String filePath)
          Reads the data product specified by the given file path.
static void writeProduct(Product product, File file, String formatName, boolean incremental)
          Writes a product with the specified format to the given file.
static void writeProduct(Product product, File file, String formatName, boolean incremental, com.bc.ceres.core.ProgressMonitor pm)
          Writes a product with the specified format to the given file.
static void writeProduct(Product product, String filePath, String formatName)
          Writes a product with the specified format to the given file path.
static void writeProduct(Product product, String filePath, String formatName, com.bc.ceres.core.ProgressMonitor pm)
          Writes a product with the specified format to the given file path.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_FORMAT_NAME

public static final String DEFAULT_FORMAT_NAME
The name of the default product format.

See Also:
Constant Field Values
Method Detail

getProductReader

public static ProductReader getProductReader(String formatName)
Gets a product reader for the given format name.

Parameters:
formatName - the product format name
Returns:
a suitable product reader or null if none was found

getProductWriterExtensions

public static String[] getProductWriterExtensions(String formatName)
Gets an array of writer product file extensions for the given format name.

Parameters:
formatName - the format name
Returns:
an array of extensions or null if the format does not exist

getProductWriter

public static ProductWriter getProductWriter(String formatName)
Gets a product writer for the given format name.

Parameters:
formatName - the product format name
Returns:
a suitable product writer or null if none was found

readProduct

public static Product readProduct(File file,
                                  String... formatNames)
                           throws IOException
Reads the data product specified by the given file.

The returned product will be associated with a reader capable of decoding the file (also see Product.productReader). If more than one appropriate reader exists in the registry, the returned product will be associated with the reader which is the most preferred according to the product format names supplied as last argument. If no reader capable of decoding the file is capable of handling any of these product formats, the returned product will be associated with the first reader found in the registry which is capable of decoding the file.

The method does not automatically load band raster data, so Band.rasterData will always be null for all bands in the product returned by this method.

Parameters:
file - the data product file
formatNames - a list of product format names defining the preference, if more than one reader found in the registry is capable of decoding the file.
Returns:
a data model as an in-memory representation of the given product file or null, if no appropriate reader was found for the given product file
Throws:
IOException - if an I/O error occurs
Since:
4.9
See Also:
readProduct(String), readProduct(File)

readProduct

public static Product readProduct(String filePath)
                           throws IOException
Reads the data product specified by the given file path.

The product returned will be associated with the reader appropriate for the given file format (see also Product.productReader).

The method does not automatically read band data, thus Band.rasterData will always be null for all bands in the product returned by this method.

Parameters:
filePath - the data product file path
Returns:
a data model as an in-memory representation of the given product file or null if no appropriate reader was found for the given product file
Throws:
IOException - if an I/O error occurs
See Also:
readProduct(File)

readProduct

public static Product readProduct(File file)
                           throws IOException
Reads the data product specified by the given file.

The product returned will be associated with the reader appropriate for the given file format (see also Product.productReader).

The method does not automatically read band data, thus Band.rasterData will always be null for all bands in the product returned by this method.

Parameters:
file - the data product file
Returns:
a data model as an in-memory representation of the given product file or null if no appropriate reader was found for the given product file
Throws:
IOException - if an I/O error occurs
See Also:
readProduct(String)

getProductReaderForFile

@Deprecated
public static ProductReader getProductReaderForFile(File file)
Deprecated. Since BEAM 4.10. Use getProductReaderForInput(Object) instead.

Returns a product reader instance for the given file if any registered product reader can decode the given file.

Parameters:
file - the file to decode.
Returns:
a product reader for the given file or null if the file cannot be decoded.

getProductReaderForInput

public static ProductReader getProductReaderForInput(Object input)
Tries to find a product reader instance suitable for the given input. The method returns null, if no registered product reader can handle the given input value.

The input may be of any type, but most likely it will be a file path given by a String or File value. Some readers may also directly support an ImageInputStream object.

Parameters:
input - the input object.
Returns:
a product reader for the given input or null if no registered reader can handle the it.
See Also:
ProductReaderPlugIn.getDecodeQualification(Object), ProductReader.readProductNodes(Object, ProductSubsetDef)

writeProduct

public static void writeProduct(Product product,
                                String filePath,
                                String formatName)
                         throws IOException
Writes a product with the specified format to the given file path.

The method also writes all band data to the file. Therefore the band data must either

  • be completely loaded (Band.rasterData is not null)
  • or the product must be associated with a product reader (Product.productReader is not null) so that unloaded data can be reloaded.
  • .

    Parameters:
    product - the product, must not be null
    filePath - the file path
    formatName - the name of a supported product format, e.g. "HDF5". If null, the default format "BEAM-DIMAP" will be used
    Throws:
    IOException - if an IOException occurs

    writeProduct

    public static void writeProduct(Product product,
                                    String filePath,
                                    String formatName,
                                    com.bc.ceres.core.ProgressMonitor pm)
                             throws IOException
    Writes a product with the specified format to the given file path.

    The method also writes all band data to the file. Therefore the band data must either

  • be completely loaded (Band.rasterData is not null)
  • or the product must be associated with a product reader (Product.productReader is not null) so that unloaded data can be reloaded.
  • .

    Parameters:
    product - the product, must not be null
    filePath - the file path
    formatName - the name of a supported product format, e.g. "HDF5". If null, the default format "BEAM-DIMAP" will be used
    pm - a monitor to inform the user about progress
    Throws:
    IOException - if an IOException occurs

    writeProduct

    public static void writeProduct(Product product,
                                    File file,
                                    String formatName,
                                    boolean incremental)
                             throws IOException
    Writes a product with the specified format to the given file.

    The method also writes all band data to the file. Therefore the band data must either

  • be completely loaded (Band.rasterData is not null)
  • or the product must be associated with a product reader (Product.productReader is not null) so that unloaded data can be reloaded.
  • .

    Parameters:
    product - the product, must not be null
    file - the product file , must not be null
    formatName - the name of a supported product format, e.g. "HDF5". If null, the default format "BEAM-DIMAP" will be used
    incremental - switch the product writer in incremental mode or not.
    Throws:
    IOException - if an IOException occurs

    writeProduct

    public static void writeProduct(Product product,
                                    File file,
                                    String formatName,
                                    boolean incremental,
                                    com.bc.ceres.core.ProgressMonitor pm)
                             throws IOException
    Writes a product with the specified format to the given file.

    The method also writes all band data to the file. Therefore the band data must either

  • be completely loaded (Band.rasterData is not null)
  • or the product must be associated with a product reader (Product.productReader is not null) so that unloaded data can be reloaded.
  • .

    Parameters:
    product - the product, must not be null
    file - the product file , must not be null
    formatName - the name of a supported product format, e.g. "HDF5". If null, the default format "BEAM-DIMAP" will be used
    incremental - switch the product writer in incremental mode or not.
    pm - a monitor to inform the user about progress
    Throws:
    IOException - if an IOException occurs


    Copyright © 2002-2013 Brockmann Consult GmbH. All Rights Reserved.