Class 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$
    • 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)
      • readProduct

        public static Product readProduct​(File file,
                                          ProductSubsetDef subsetDef)
                                   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
        subsetDef - the subset of a product
        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
      • 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,
                                        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,
                                        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
      • readLevelBandRasterData

        public static void readLevelBandRasterData​(AbstractProductReader reader,
                                                   Band destBand,
                                                   LevelImageSupport lvlSupport,
                                                   Rectangle destRect,
                                                   ProductData destBuffer)
                                            throws IOException
        This method is not part of the official API and might change in the future.

        The method directly delegates to AbstractProductReader.readProductNodesImpl() which is not publicly available.

        This overcomes a short coming in the current API. A reader can be used with a SubsetDef but this can not be changed dynamically.

        Parameters:
        reader - the reader to read from
        destBand - the band which shall be read
        lvlSupport - defines the level (resolution) within the level image pyramid which shall be read
        destRect - the rectangular area which shall be filled with data
        destBuffer - the buffer where to put the data
        Throws:
        IOException - in case an error occurs during reading