Package org.apache.sis.storage

## Interface DataSet

- All Superinterfaces:
    `Resource`
  All Known Subinterfaces:
    `FeatureSet`, `GridCoverageResource`, `WritableFeatureSet`

      public interface DataSet
      extends Resource

  Collection of features that share a common set of attributes or properties. Features may be organized in coverages, but not necessarily. The common set of properties is described by feature types, grid geometries or sample dimensions, depending on the `DataSet` subtype. The actual values are provided by methods defined in `DataSet` subtypes.
  Example: the features contained in a `DataSet` could be all bridges in a city. A `DataSet` can be associated to one `FeatureType` which specifies that all bridges shall have `"construction date"` and `"height"` attributes, and an arbitrary amount of `Feature` instances which contains the actual values for all bridges in the dataset.
  Metadata
  Datasets should have `metadata` / `metadataScope` / `resourceScope` sets to `ScopeCode​.DATASET`. If this datasets is part of a series or an `Aggregate`, the aggregate name should be declared as the parent metadata. That parent metadata is often the same instance than `DataStore​.getMetadata()`.
  Since:
    0.8

  Defined in the `sis-storage` module

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `Optional<Envelope>` | `getEnvelope()` | Returns the spatiotemporal extent of this resource in its most natural coordinate reference system.

    - ### Methods inherited from interface Resource

      `addListener, getIdentifier, getMetadata, removeListener`

- - ### Method Detail

    - #### getEnvelope

          Optional<Envelope> getEnvelope()
                                  throws DataStoreException

      Returns the spatiotemporal extent of this resource in its most natural coordinate reference system. The following relationship to Resource.getMetadata() should hold (departures may exist):
      - The envelope should be contained in the union of all geographic, vertical or temporal extents described by `metadata` / `identificationInfo` / `extent`.
      - The coordinate reference system should be one of the instances returned by `referenceSystemInfo`.
      The envelope should use the coordinate reference system (CRS) that most closely matches the geometry of the resource storage. It is often a projected CRS, but other types like engineering CRS are also allowed. If this resource uses many different CRS with none of them covering all data, then the envelope should use a global system (typically a geographic CRS).

      The returned envelope is not necessarily the smallest bounding box encompassing all data. If the smallest envelope is too costly to compute, this method may conservatively return a larger envelope.

      Returns:
        the spatiotemporal resource extent. May be absent if none or too costly to compute.
      Throws:
        `DataStoreException` - if an error occurred while reading or computing the envelope.