Table of Contents

Namespace EncDotNet.S100.Core

Classes

CachingAssetSource

Wraps another IAssetSource and memoises the bytes of each asset on first read. Intended for read-only sources whose contents are immutable for the lifetime of the source (EmbeddedAssetSource, packaged exchange sets opened in Read, on-disk spec content).

DatasetMetadata

Lightweight, product-agnostic description of a dataset obtained without fully reading or portraying it — the output of a dataset reader's ReadMetadata "peek" path. Carries only the facts a host needs to place a dataset on the map and decide whether it is worth loading in full: its declared specification, geographic extent, and (where the encoding models them) display-scale window and temporal coverage.

FileSystemAssetSource

An asset source backed by a local file system directory.

HdfDeclaredSpec

Resolves the declared product specification of an HDF5 dataset (the root productSpecification attribute, S-100 Part 10c §10.2.1) into a strongly-typed SpecRef.

SpecCompatibility

Helpers for matching a requested SpecRef against an available CatalogueRef. The match policy is supplied by the caller — providers themselves do not apply hidden fallback rules.

SpecName

Helpers for normalising S-100 product specification short names into the canonical "S-NNN" form (e.g. "S-101", "S-102"), and the closed set of non-S-100 format names a product may be registered under (Grib2, NetCdf, Cap).

SpecVersionAssessment

A user-facing assessment of how the product specification edition a dataset declares relates to the edition(s) of that product this application actually implements.

ZipAssetSource

An asset source backed by a ZIP archive.

Structs

AssetBytes

A read-only, in-memory view of an asset previously read from an IAssetSource. Backed by a ReadOnlyMemory<T> so cache hits can be served without copying.

CatalogueRef

Identity of a single Feature Catalogue or Portrayal Catalogue instance — the pair (name, version) declared inside the catalogue's metadata (<S100FC:productId> + <S100FC:versionNumber> for FCs; equivalent fields for PCs).

DisplayScaleRange

A display-scale window expressed as denominator bounds. The Minimum denominator is the coarsest scale (largest number) at which content is intended to display; the Maximum denominator is the finest (smallest number). Either bound may be null when only one end is specified. Mirrors the S-101 DataCoverage minimumDisplayScale / maximumDisplayScale pair (S-101 FC §3.1.1; S-100 Part 17).

SpecRef

Identity of a single S-100 product specification edition — the pair (name, edition) that a dataset declares conformance to (e.g. S-101 / 1.2.0).

SpecVersion

A three-component S-100 version of the form <major>.<minor>.<clarification>, with the compatibility semantics defined by S-100 Edition 5.2.1 Part 2 §6 (Maintenance):

  • Major — backward-incompatible change.
  • Minor — backward-compatible addition (new feature classes, attributes, code-list entries, etc.).
  • Clarification — editorial change with no semantic impact on the data model.

This is not Semantic Versioning despite its similar shape — there are no pre-release tags, no build metadata, and clarification-level differences are interchangeable for compatibility purposes.

TimeCoverage

The temporal span a dynamic dataset covers, from its earliest to its latest time step (inclusive). Used to gate a dataset's visibility against a global clock without reading its per-step payload.

Interfaces

IAssetSource

Provides read access to assets within a source (e.g. a file system directory or ZIP archive).

ICatalogueProvider<TCatalogue>

Provides catalogue artifacts (Feature Catalogues, Portrayal Catalogues, or anything else identified by a SpecRef) to dataset processors and other pipeline consumers.

Enums

SpecMatchKind

The relationship between a declared dataset version and the version of the catalogue resolved for it.

SpecMatchPolicy

Match policies governing whether a CatalogueRef is considered acceptable for a given SpecRef. The rules follow S-100 Edition 5.2.1 Part 2 §6 (Maintenance) — see SpecVersion for the underlying compatibility semantics.