Table of Contents

Class S411SeaIceInventory

Namespace
EncDotNet.S100.Datasets.S411.DataModel
Assembly
EncDotNet.S100.Datasets.S411.dll

Strongly-typed projection of an S411Dataset as an inventory of sea-ice and lake-ice features (S-411 Edition 1.2.1).

public sealed class S411SeaIceInventory
Inheritance
S411SeaIceInventory
Inherited Members

Remarks

The projection mirrors the S-128 / S-201 pattern: a static From(S411Dataset, out IReadOnlyList<ProjectionDiagnostic>) factory walks the source feature bag and produces typed subclasses of S411IceFeature (S411SeaIce, S411LakeIce, S411Iceberg, S411IceEdge, S411IceLead, S411IceThickness, S411SnowCover, S411StageOfMelt) with S411DataCoverage broken out separately and everything else landing on S411OtherFeature.

Feature-type normalisation maps the JCOMM lowercase short codes (seaice, lacice, icebrg, icelne, icethk, snwcvr, stgmlt, …) to the canonical PascalCase Feature Catalogue class names (SeaIce, LakeIce, Iceberg, IceEdge, …). Both the JCOMM and IHO sample shapes therefore land on the same typed subclass, and consumers can dispatch on NormalizedFeatureType without caring which shape the dataset was emitted in.

S-411 has no information types and no xlink cross-references, so the projection does not need an XlinkResolver. The projection still threads a ProjectionContext so attribute-parse failures ("attribute.parse.int", "attribute.parse.double") surface as diagnostics rather than exceptions.

The projection only throws when the source dataset has no features at all.

Properties

DataCoverages

Data-coverage features describing the area for which the dataset carries ice information.

public required IReadOnlyList<S411DataCoverage> DataCoverages { get; init; }

Property Value

IReadOnlyList<S411DataCoverage>

DatasetIdentifier

The dataset identifier carried by the source GML root element.

public string? DatasetIdentifier { get; init; }

Property Value

string

IceFeatures

All ice features in the dataset, polymorphic over the typed S411IceFeature subclasses (excluding S411DataCoverage, which has its own list).

public required IReadOnlyList<S411IceFeature> IceFeatures { get; init; }

Property Value

IReadOnlyList<S411IceFeature>

IssueDate

The dataset's issue / observation timestamp, copied verbatim from IssueDate.

public DateTime? IssueDate { get; init; }

Property Value

DateTime?

OtherFeatures

Features whose feature type was not recognised as one of the dedicated typed subclasses — they round-trip as S411OtherFeature entries with all attributes preserved on ExtraAttributes.

public required IReadOnlyList<S411OtherFeature> OtherFeatures { get; init; }

Property Value

IReadOnlyList<S411OtherFeature>

ProductIdentifier

The S-411 product identifier (typically "S-411").

public string? ProductIdentifier { get; init; }

Property Value

string

Source

The originating feature-bag dataset.

public required S411Dataset Source { get; init; }

Property Value

S411Dataset

Methods

From(S411Dataset, out IReadOnlyList<ProjectionDiagnostic>)

Projects a feature-bag S411Dataset into the typed data model. Issues encountered during projection are reported via diagnostics; the projection only throws when the source dataset has no features at all.

public static S411SeaIceInventory From(S411Dataset dataset, out IReadOnlyList<ProjectionDiagnostic> diagnostics)

Parameters

dataset S411Dataset

The source dataset.

diagnostics IReadOnlyList<ProjectionDiagnostic>

Receives the projection diagnostics as an immutable snapshot.

Returns

S411SeaIceInventory

Exceptions

ArgumentNullException

If dataset is null.

InvalidOperationException

If dataset has no features.