Table of Contents

Class CoverageMetadata

Namespace
EncDotNet.S100.Pipelines.Coverage
Assembly
EncDotNet.S100.Core.dll

File-level description of a gridded coverage, returned by Metadata: spatial extent, grid geometry, reference systems, the no-data sentinel and the value fields carried.

public class CoverageMetadata
Inheritance
CoverageMetadata
Inherited Members

Remarks

Every georeferencing member here (NativeExtent and GridMetadata) is expressed in the grid's native CRS, HorizontalCRS, because that is what the S-100 Part 10c grid attributes carry. For a projected grid (e.g. a UTM S-102 tile) the values are metres. Call GetGeographicExtent(ICrsTransformFactory) for a WGS-84 footprint.

Properties

GridMetadata

Geometry of the grid at the source's currently selected overview level (see SelectOverviewLevel(int)), in the native CRS (HorizontalCRS).

public required GridMetadata GridMetadata { get; init; }

Property Value

GridMetadata

HorizontalCRS

Identifier of the grid's horizontal CRS. The bundled sources report the dataset's EPSG code either bare (e.g. "32608") or, when the dataset declares none, as "EPSG:4326"; consumers should accept both forms (ICrsTransformFactory implementations do).

public required string HorizontalCRS { get; init; }

Property Value

string

NativeExtent

The full (level-0) grid footprint in the grid's native CRS (HorizontalCRS), derived from the grid origin, spacing and point counts: from the origin to one spacing past the last grid point on each axis.

public required BoundingBox NativeExtent { get; init; }

Property Value

BoundingBox

Remarks

BoundingBox is reused here as a plain axis-aligned rectangle: SouthLatitude / NorthLatitude hold the minimum / maximum native Y (northing for a projected CRS) and WestLongitude / EastLongitude the minimum / maximum native X (easting). They are decimal degrees only when HorizontalCRS is EPSG:4326.

Consumers that need geographic coordinates (map framing, headless render bounds, WGS-84 catalogues) must use GetGeographicExtent(ICrsTransformFactory) instead of reading this directly.

NoDataValue

Sentinel value marking cells with no data; cells equal to it are not portrayed (or are painted with NoDataColor).

public required float NoDataValue { get; init; }

Property Value

float

Spec

The product specification (name + edition) this coverage declares conformance to.

public required SpecRef Spec { get; init; }

Property Value

SpecRef

ValueFields

The value fields this coverage carries, each available as a key of Values: e.g. S-102 depth / uncertainty, S-104 waterLevelHeight / waterLevelTrend, S-111 surfaceCurrentSpeed / surfaceCurrentDirection.

public required IReadOnlyList<CoverageValueField> ValueFields { get; init; }

Property Value

IReadOnlyList<CoverageValueField>

VerticalDatum

Display label of the vertical datum the values are referenced to (e.g. "MSL").

public required string VerticalDatum { get; init; }

Property Value

string

Methods

GetGeographicExtent(ICrsTransformFactory)

Returns NativeExtent as a WGS-84 (EPSG:4326) bounding box in decimal degrees, reprojecting it through transformFactory when HorizontalCRS is projected.

public BoundingBox GetGeographicExtent(ICrsTransformFactory transformFactory)

Parameters

transformFactory ICrsTransformFactory

Factory used to build the HorizontalCRS → EPSG:4326 transform (e.g. ProjNetCrsTransformFactory). It is not called when the grid is already geographic.

Returns

BoundingBox

The geographic envelope of the grid footprint. A projected rectangle maps to a slightly curved quadrilateral, so all four native corners are reprojected and the min/max envelope is returned.

Exceptions

ArgumentNullException

transformFactory is null.