Package org.apache.sis.storage.earthobservation

## Class LandsatStore

- Object
- - DataStore
  - - LandsatStore

- All Implemented Interfaces:
    `AutoCloseable`, `Resource`, `Localized`

      public class LandsatStore
      extends DataStore

  Parses Landsat metadata as ISO 19115 Metadata object. Landsat data are distributed as a collection of TIFF files, together with a single text file like below:

  >     GROUP = L1_METADATA_FILE
  >       GROUP = METADATA_FILE_INFO
  >         ORIGIN = "Image courtesy of the U.S. Geological Survey"
  >         REQUEST_ID = "0501403126384_00011"
  >         LANDSAT_SCENE_ID = "LC81230522014071LGN00"
  >         FILE_DATE = 2014-03-12T06:06:35Z
  >         STATION_ID = "LGN"
  >         PROCESSING_SOFTWARE_VERSION = "LPGS_2.3.0"
  >       END_GROUP = METADATA_FILE_INFO
  >       GROUP = PRODUCT_METADATA
  >         DATA_TYPE = "L1T"
  >         ELEVATION_SOURCE = "GLS2000"
  >         OUTPUT_FORMAT = "GEOTIFF"
  >         SPACECRAFT_ID = "LANDSAT_8"
  >         SENSOR_ID = "OLI_TIRS"
  >         etc...

  This class reads the content from the given input until the first occurrence of the `END` keyword. Lines beginning with the `#` character (ignoring spaces) are treated as comment lines and ignored.
  Since:
    0.8

  Defined in the `sis-earth-observation` module

- - ### Field Summary

    - ### Fields inherited from class DataStore

      `listeners, provider`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `LandsatStore​(LandsatStoreProvider provider, StorageConnector connector)` | Creates a new Landsat store from the given file, URL, stream or character reader.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `<T extends StoreEvent> void` | `addListener​(Class<T> eventType, StoreListener<? super T> listener)` | Registers a listener to notify when the specified kind of event occurs in this data store.
    `void` | `close()` | Closes this Landsat store and releases any underlying resources.
    `Optional<GenericName>` | `getIdentifier()` | Returns the value associated to `LANDSAT_SCENE_ID` in the Landsat metadata file.
    `Metadata` | `getMetadata()` | Returns information about the dataset as a whole.
    `Optional<ParameterValueGroup>` | `getOpenParameters()` | Returns the parameters used to open this Landsat data store.

    - ### Methods inherited from class DataStore

      `addWarningListener, findResource, getDisplayName, getLocale, getProvider, removeListener, removeWarningListener, setLocale, toString`

    - ### Methods inherited from class Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### LandsatStore

          public LandsatStore​(LandsatStoreProvider provider,
                              StorageConnector connector)
                       throws DataStoreException

      Creates a new Landsat store from the given file, URL, stream or character reader. This constructor invokes `StorageConnector​.closeAllExcept(Object)`, keeping open only the needed resource.
      Parameters:
        `provider` - the factory that created this `DataStore` instance, or `null` if unspecified.
        `connector` - information about the storage (URL, stream, reader instance, etc).
      Throws:
        `DataStoreException` - if an error occurred while opening the Landsat file.

  - ### Method Detail

    - #### getOpenParameters

          public Optional<ParameterValueGroup> getOpenParameters()

      Returns the parameters used to open this Landsat data store. The parameters are described by `LandsatStoreProvider​.getOpenParameters()` and contains at least a parameter named "location" with a `URI` value. The return value may be empty if the storage input can not be described by a URI (for example a Landsat file reading directly from a `ReadableByteChannel`).
      Specified by:
        `getOpenParameters` in class `DataStore`
      Returns:
        parameters used for opening this data store.
      Since:
        0.8
      See Also:
        `DataStoreProvider​.getOpenParameters()`

    - #### getIdentifier

          public Optional<GenericName> getIdentifier()
                                              throws DataStoreException

      Returns the value associated to `LANDSAT_SCENE_ID` in the Landsat metadata file. This value is fetched from `getMetadata()/​identificationInfo/​citation/​identifier`.
      Specified by:
        `getIdentifier` in interface `Resource`
      Overrides:
        `getIdentifier` in class `DataStore`
      Returns:
        the identifier fetched from metadata, or `null` if none.
      Throws:
        `DataStoreException` - if an error occurred while reading the metadata.
      Since:
        1.0
      See Also:
        `DataStore​.getMetadata()`, `DataStore​.getDisplayName()`

    - #### getMetadata

          public Metadata getMetadata()
                               throws DataStoreException

      Returns information about the dataset as a whole. The returned metadata object can contain information such as the spatiotemporal extent of the dataset, contact information about the creator or distributor, data quality, usage constraints and more.
      Specified by:
        `getMetadata` in interface `Resource`
      Specified by:
        `getMetadata` in class `DataStore`
      Returns:
        information about the dataset.
      Throws:
        `DataStoreException` - if an error occurred while reading the metadata.
      See Also:
        `DataStore​.getIdentifier()`

    - #### addListener

          public <T extends StoreEvent> void addListener​(Class<T> eventType,
                                                         StoreListener<? super T> listener)

      Registers a listener to notify when the specified kind of event occurs in this data store. The current implementation of this data store can emit only `WarningEvent`s; any listener specified for another kind of events will be ignored.
      Specified by:
        `addListener` in interface `Resource`
      Overrides:
        `addListener` in class `DataStore`
      Type Parameters:
        `T` - compile-time value of the `eventType` argument.
      Parameters:
        `eventType` - type of `StoreEvent` to listen (can not be `null`).
        `listener` - listener to notify about events.

    - #### close

          public void close()
                     throws DataStoreException

      Closes this Landsat store and releases any underlying resources.
      Specified by:
        `close` in interface `AutoCloseable`
      Specified by:
        `close` in class `DataStore`
      Throws:
        `DataStoreException` - if an error occurred while closing the Landsat file.