Namespace EncDotNet.S100.Datasets.Pipelines
Classes
- CapDatasetProcessor
Pipeline processor for CAP 1.2 marine weather warnings (design note
docs/design/weather-sources.md§6.1): one CAP alert, an Atom feed of them, or the NWS GeoJSON form fromapi.weather.gov/alerts, read by CapReader. CAP isn't an S-100 product, and its warnings aren't for navigation.
- CoverageExtent
Computes the geographic (WGS84, EPSG:4326) footprint of a coverage grid, reprojecting from the grid's native CRS when that CRS is projected (e.g. an S-102 tile in UTM zone 31N). S-100 gridded coverages name their georeferencing attributes
gridOrigin*/gridSpacing*Latitudinal/*Longitudinalregardless of CRS, so for a projected grid those values are native metres (northing/easting), not degrees — a rawBoundingBoxbuilt from them is not WGS84.
- CoveragePickHelper
Shared coverage-sampling helper used by the per-spec processors when servicing GetCoverageInfo(double, double, DateTime?). Reprojects a WGS84 click position into the coverage's native CRS, locates the containing grid cell, and samples a single-cell GridRegion from the supplied ICoverageSource.
- CoveragePickHelper.SamplePoint
Result of a single-cell coverage sample.
- DatasetForecastRun
The model run a forecast dataset belongs to (design note
docs/design/weather-sources.md§8.4), reported by ForecastRun.
- DatasetPipelineFactory
Detects a dataset's product — each ProductRegistration claims its own files — and creates the appropriate IDatasetProcessor.
- DatasetProcessorLease
Keeps one processor owned by a DatasetProcessorOwner alive while a caller uses it.
- DatasetProcessorOwner
Owns loaded dataset processors by their host-stable MapDatasetId.
- DatasetProcessorServices
The shared, product-agnostic dependencies a per-product registration closes over when it constructs an IDatasetProcessor. A single instance is built once by DatasetPipelineFactory from the managers it was given and passed to every registration, so — exactly as before the registry existed — the portrayal / feature-catalogue parse caches survive for the lifetime of the managers rather than per processor.
- DatasetProcessorSourceRequest
A dataset stored inside an IAssetSource, addressed for processor construction by a DatasetProcessorFromSource.
- EcdisCategoryMapper
Maps a cross-spec EcdisDisplayCategory to the per-spec
displayModeid declared in that spec's bundled portrayal catalogue. Specs that only declare a single mode (typically justStandardDisplay) fall back tonullfor non-Standard categories — meaning "no mode filter, render everything", matching the bundled catalogue's authoring intent.
- EcdisDisplayExtensions
Extensions that apply EcdisDisplaySettings to a freshly-constructed per-spec vector portrayal catalogue. Called by every vector dataset processor immediately after it builds the catalogue and before
VectorPipelineconsumes it.
- EcdisDisplaySettings
Cross-spec ECDIS display settings carried on every RenderContext. Producers (the viewer) populate this from
EcdisDisplayState; consumers (per-spec processors) apply it to their IVectorPortrayalCatalogue via ApplyTo(EcdisDisplaySettings, IVectorPortrayalCatalogue).
- ExchangeSetLoadResult
Result of attempting to load a single dataset from an exchange set. Either Processor is non-null on success, or Error is non-null on failure. Never both null.
- ExchangeSetLoader
Bulk-loads every dataset declared in an ExchangeSet's catalogue, routing each one through DatasetPipelineFactory. Errors are captured per-dataset rather than thrown so a single bad dataset does not abort the load.
- ExchangeSetProgress
Per-dataset progress event raised by ExchangeSetLoader.
- ExternalTextFileResolver
Resolves the textual content of an externally referenced text file (named by an S-100
fileReferenceattribute — S-101 Feature Catalogue, aliasTXTDSC/NTXTDS) from the dataset's exchange-set IAssetSource. When the exchange-set catalogue'ssupportFileDiscoveryMetadatais supplied, the referenced file is located through it first (the canonical ECDIS mechanism); otherwise the file is looked up relative to the dataset's own directory, then at the exchange-set root, then under a siblingSUPPORT_FILES/supportdirectory (the S100_ROOT exchange-set layout).
- FeatureGeometryHit
A single vector feature found at a geographic point by HitTestFeatures(double, double, double) — the reusable, renderer-neutral unit of a geographic pick. Carries just enough to rank the hit and to resolve the full FeatureInfo from the same processor via GetFeatureInfoAt(int) (collision-free) or GetFeatureInfo(string).
- FeatureInfo
Feature information returned by a pick / object-info operation.
- FeatureInfoBuilder
Shared helpers for assembling PickAttribute trees from the (simple-attribute dictionary + complex-attribute list) shape that every GML dataset reader exposes today. Centralised here so each product processor's
GetFeatureInfoimplementation stays a thin adapter.
- FeatureReference
An xlink-style reference from one feature to another within the same dataset. Promoted from per-spec reference types (e.g.
S125InformationReference,GmlReference) so that the pick UI can offer uniform "follow reference" navigation across all GML-encoded products.
- FeatureSummary
Lightweight feature descriptor returned by EnumerateFeatures().
- GmlDatasetProcessorBase<TFeature>
Abstract base class for GML-based dataset processors that share the standard S-100 Part 9 vector portrayal pipeline template: parse → catalogue setup → FeatureXML projection → XSLT pipeline → Mapsui display-list rendering.
- GmlDatasetProcessorBase<TFeature>.SupplementalPortrayal
Drawing instructions and their pre-resolved assets from a supplemental portrayal source (see BuildSupplementalPortrayalAsync(RenderContext?, CancellationToken)).
- GribDatasetProcessor
Pipeline processor for GRIB2 wind and wave grids (NOAA GFS and GFS-Wave, ECMWF open data), read by GribWeatherDataset and drawn, sampled and picked by WeatherGridProcessorBase. Weather model data isn't an S-100 product and isn't for navigation.
- HeadlessCompositeInput
One dataset's contribution to a headless composite: exactly one of a Mapsui-free vector or coverage portrayal result, plus its S-98 active flag.
- HeadlessCompositeOptions
Options controlling a headless composite render.
- HeadlessCompositeScene
A headless composite whose S-98 ordering, suppression and scene lowering are already done, ready to paint against any number of viewports. Build one with Prepare(IReadOnlyList<HeadlessCompositeInput>, HeadlessCompositeOptions?) when rendering the same datasets many times, as a tile pyramid does.
- HeadlessCompositor
Mapsui-free multi-layer S-100 compositor. Given a set of pre-built, renderer-neutral portrayal results (vector and/or coverage), the compositor drives the renderer-neutral S-98 ordering / suppression engine (LayerStackBuilder + IInteroperabilityAuthority), lowers each ordered sub-layer into a Skia CompositeLayer, and paints them against one shared Viewport via HeadlessCompositeRenderer — reproducing, without Mapsui, the cross-dataset draw order and depth suppression the viewer applies (e.g. the canonical S-101-under-S-102 interleave, S-98 Annex A §A-6.9.1).
- HeadlessTile
One rendered XYZ tile.
- HeadlessTileOptions
Options for HeadlessTileRenderer.
- HeadlessTileRenderer
Renders a prepared HeadlessCompositeScene as XYZ Web-Mercator raster tiles (see XyzTileGrid).
- IceEggCode
A render-ready projection of an S-411 sea-ice / lake-ice feature's WMO / SIGRID-3 "egg code": the up-to-four stacked rows of the oval plus the special values that convention reports outside the oval.
- IceEggCodeBuilder
Builds a render-ready IceEggCode from the raw S-411 sea-ice / lake-ice WMO attributes (
iceact,iceapc,icesod,iceflz,snowDepth).
- IceEggValue
A single value cell in an IceEggCode diagram, carrying the raw display token, its semantic Role, and the source attribute code it was derived from (for hover definitions).
- MapDataset
Immutable, renderer- and UI-neutral snapshot of one loaded dataset's map state.
- MapDatasetSubLayer
Renderer-neutral display state for one portrayal sub-layer of a loaded dataset.
- MapPresentationState
Immutable, renderer-neutral snapshot of the presentation choices shared by every dataset on an S-100 map.
- NavigationalWarningBulletin
What an in-force bulletin lists: the warnings of its series in force when it was published (S-124 Edition 2.0.0 §8.1.3, a
ReferenceswithreferenceCategory3), or none (noMessageOnHand, §8.1.4).
- NavigationalWarningBulletinReport
The latest in-force bulletin of a series, and what it lists that isn't loaded (S-124 Edition 2.0.0 §9.2.2: "an indication should be given").
- NavigationalWarningFeature
A navigational warning part as a dataset lists it: the feature that carries it and its message. Returned by GetNavigationalWarnings().
- NavigationalWarningInfo
The message of a navigational warning part, projected for object information UIs: identification, type, validity, area and the full text in every language the dataset gives (S-124
NavwarnPartread through itsNavwarnPreambleheader).
- NavigationalWarningReference
A navigational warning's identifier in its series: the series name, the warning number and the year, as a cancellation refers to it.
- NavigationalWarningSet
Every loaded navigational warning, judged together: a warning's status depends on the others, which may cancel it or, as an in-force bulletin, leave it out (S-124 Edition 2.0.0 §9.2.1, §9.3).
- NavigationalWarningState
A navigational warning's status at a time, and why.
- NavigationalWarningText
One language of a navigational warning's message text.
- NavigationalWarningValidity
A period when a navigational warning applies. Either end may be open.
- NetCdfDatasetProcessor
Pipeline processor for NetCDF-CF wind and wave grids: NetCDF-4 (on PureHDF) and NetCDF-3 (classic and 64-bit offset, the format of ERDDAP's
.ncoutput), read by NetCdfWeatherDataset and drawn, sampled and picked by WeatherGridProcessorBase. Weather model data isn't an S-100 product and isn't for navigation.
- PickAttribute
One row in a feature's pick / object-info attribute display. Carries both the raw on-the-wire shape (Code / RawValue) and a Feature-Catalogue-decoded shape (Name / DisplayValue) so a viewer can show the friendly form by default while keeping the raw values available in tooltips.
- PickOrder
The pick report's order (S-98 15.1; S-164 FeatureInformation2): features with the highest drawing priority in the portrayal first, and at equal priority points, then curves, then surfaces. A feature with no drawing priority (not drawn at the current settings, or from a dataset with no portrayal) comes after every drawn one.
- PickValueFormatter
Formats a pick-report value as S-98 15.1 asks: numbers without padding and followed by their unit of measure, and dates as
DD-MMM-YYYYwith English month abbreviations. The value type and unit come from the feature catalogue's simple attribute (S-100 Part 5).
- PortrayalBasis
What a product is drawn from: an S-100 portrayal catalogue (Catalogue), or a portrayal this library defines in code because the product's specification defines none (Application(string)). A Portrayal trait, so hosts label the portrayal from the registry rather than from a list of spec names.
- PortrayalBasis.ApplicationBasis
A product drawn by a portrayal SoundCharts defines itself, because the specification defines none, so it isn't IHO symbology.
- PortrayalBasis.CatalogueBasis
A product drawn from its S-100 portrayal catalogue.
- ProductRegistration
Registers one product with a ProductRegistry: the canonical spec string it handles (e.g.
"S-101", or a non-S-100 format name such as"GRIB2"), the two ways to construct its processor (from a file path, and from an IAssetSource), how to recognise its files, and the product traits hosts need to treat it correctly. The traits replace theswitches on spec names that used to be spread across the hosts (metadata reading, catalog projection, default S-98 planes, portrayal labelling), so a new product is one registration plus one processor and the hosts don't change.
- ProductRegistry
A mutable, product-agnostic map of canonical spec string (e.g.
"S-101","GRIB2") to the ProductRegistration that knows how to recognise, construct and describe that product. DatasetPipelineFactory resolves against a registry instead of a hard-codedswitch, and hosts read product traits (IsS100, Portrayal, the default S-98 planes…) from it rather than switching on spec names, so a host can enable a subset of products — e.g. an S-101-only viewer — or add its own without changing. Use AddAllS100Products(ProductRegistry) for the batteries-included set.
- ProductRegistryExtensions
Fluent registration helpers for ProductRegistry.
- RenderContext
The render options passed to dataset processors. One record serves every product; each processor reads the options it honours and ignores the rest.
- S100FeatureGeometry
The encoding- and renderer-neutral geometry of a single vector feature, in WGS-84 lat/lon — the reusable complement to FeatureInfo (attributes) resolved for the same feature. Returned by GetFeatureGeometryAt(int) so a host can highlight or outline a picked feature without reaching into a product's feature model.
- S100IssueTime
Combines an S-100 HDF5 dataset's
issueDateandissueTimeroot attributes (S-100 Part 10c) into one UTC time. Producers write them in several forms:20210414/2026-10-03for the date, and135227Z,13:52:27or17:36:13.871916for the time, with an optionalZor UTC offset.
- S100Products
The built-in per-product ProductRegistrations for every S-100 product this library ships a processor for, and helpers to register them. This is the one place that knows how each product's processor is constructed, how its files are recognised, and its traits (metadata reader, catalog payload, default S-98 planes, portrayal basis); it replaces the former hard-coded
switches in DatasetPipelineFactory and the hosts. A host that wants every product calls AddAllS100Products(ProductRegistry) (the default Default does this, and adds the weather formats of WeatherProducts); a host that wants a subset registers only the products it needs.
- S101DatasetProcessor
IDatasetProcessor for IHO S-101 Electronic Navigational Chart cells (S-100 Part 10a ISO 8211 encoding), portrayed through the S-101 Part 9A Lua portrayal catalogue. Also serves S-401 Inland ENC, which shares the encoding and portrayal model, by constructing it with
spec: "S-401"so it resolves the S-401 catalogues.
- S101ExchangeSetLoadItem
One planned load operation: either a single dataset, an S-101 base cell with its ordered in-set updates, or an orphan update with no base.
- S101ExchangeSetUpdatePlan
Groups an exchange set's catalogue entries so that each S-101 base cell is loaded together with the sequential update files (
….001,….002, …) that target the same cell within the same exchange set.
- S101FilesystemUpdateDiscovery
Discovers S-101 sequential update files (
….001,….002, …) that sit alongside a base cell (….000) on the local file system, so a command-line caller pointed at a loose base cell can render it at its up-to-date state. This is the file-system analogue of S101ExchangeSetUpdatePlan (which groups updates from an exchange-set catalogue). S-101 / S-100 Part 10a.
- S102DatasetProcessor
IDatasetProcessor for IHO S-102 Bathymetric Surface HDF5 datasets. Exposes the depth grid as an ICoveragePortrayalSource portrayed through the S-102 Lua portrayal catalogue, and renders headless images through the Skia coverage core.
- S104DatasetProcessor
Pipeline processor for S-104 water-level datasets. Branches between dcf2 (regular grid → coverage layer) and dcf1/dcf8 positioned station series (station-glyph point layer; S-100 Part 10c §10.2.1).
- S111DatasetProcessor
Pipeline processor for S-111 surface-currents datasets. Branches between dcf2 (regular grid → coverage + arrow layers) and dcf1/dcf3/dcf8 positioned station/node series (station-arrow point layers; S-111 Edition 2.0.0 §10.2.2.6–10.2.2.9).
- S122DatasetProcessor
IDatasetProcessor for IHO S-122 Marine Protected Areas GML datasets. Drives the standard S-100 Part 9 XSLT vector portrayal pipeline inherited from GmlDatasetProcessorBase<TFeature>.
- S124DatasetProcessor
IDatasetProcessor for IHO S-124 Navigational Warnings GML datasets. Drives the standard S-100 Part 9 XSLT vector portrayal pipeline inherited from GmlDatasetProcessorBase<TFeature>.
- S125DatasetProcessor
Dataset processor that loads an S-125 Marine Aids to Navigation GML dataset, executes the bundled XSLT portrayal pipeline, and produces a Mapsui layer ready for display in the viewer.
- S127DatasetProcessor
IDatasetProcessor for IHO S-127 (Marine Resources and Services) GML datasets. Drives the standard S-100 Part 9 vector portrayal pipeline followed by the unified Mapsui display-list renderer.
- S128DatasetProcessor
IDatasetProcessor for IHO S-128 Catalogue of Nautical Products GML datasets. Drives the standard S-100 Part 9 XSLT vector portrayal pipeline inherited from GmlDatasetProcessorBase<TFeature> and exposes the parsed catalogue through Dataset.
- S129DatasetProcessor
IDatasetProcessor for IHO S-129 Under Keel Clearance Management GML datasets. Drives the standard S-100 Part 9 XSLT vector portrayal pipeline inherited from GmlDatasetProcessorBase<TFeature>, then fills any under-keel-clearance areas the portrayal left unfilled (see PostProcessInstructions(IReadOnlyList<DrawingInstruction>)).
- S131DatasetProcessor
IDatasetProcessor for IHO S-131 Marine Harbour Infrastructure GML datasets. Drives the S-100 Part 9A Lua portrayal pipeline (the same engine used by S-101), combining GML data reading with Lua-based portrayal — a first in this codebase.
- S201DatasetProcessor
Dataset processor that loads an S-201 Aids to Navigation Information GML dataset, executes the bundled XSLT portrayal pipeline, and produces a Mapsui layer ready for display in the viewer.
- S411DatasetProcessor
IDatasetProcessor for S-411 Ice Information GML datasets, accepting both the JCOMM operational encoding and the IHO sample encoding. Drives the standard S-100 Part 9 XSLT vector portrayal pipeline inherited from GmlDatasetProcessorBase<TFeature> and adds the WMO ice "egg code" to sea-ice and lake-ice pick reports.
- S411DisplayModes
Shared registry of the three S-411 sea-ice portrayal display modes (S-411 Ed 1.2.1; PC Ed 2.0.0, S-100 Part 9 §11.7). A single S-411 dataset carries the full WMO egg code per polygon, so the same data can be portrayed as total concentration, stage of development, or a provisional navigational preview. This helper is the single source of truth for the spec-native mode ids, their friendly CLI tokens, and the provisional marker, so the CLI (
render --display-mode/info) and the Avalonia viewer selector agree on the mapping.
- S421DatasetProcessor
IDatasetProcessor for IHO S-421 Route Plan GML datasets. Drives the standard S-100 Part 9 XSLT vector portrayal pipeline inherited from GmlDatasetProcessorBase<TFeature> and exposes route xlink references as navigable links in pick reports.
- S57DatasetProcessor
Renders an S-57 ENC base cell by translating it in-memory to an S101Document and reusing the S-101 portrayal pipeline. A maritime ENC is translated into, and portrayed with, S-101; an inland ENC (DSID
PRSP= InlandElectronicNavigationalChart) is translated into S-401 and portrayed with the S-401 catalogues (issue #608), provided the host has an S-401 portrayal catalogue (otherwise it falls back to S-101). Either way the product identity stays S-57. Symbology is S-100 (not S-52); coverage is breadth-first.
- StationTimeSeriesChannel
A single value series within a StationTimeSeriesSnapshot.
- StationTimeSeriesSnapshot
Full time-series snapshot for a single fixed station, projected out of the per-product station model (S-104
WaterLevelStation, S-111SurfaceCurrentStation) into a product-agnostic shape that the viewer can render in a chart without referencing the per-product dataset assemblies.
- SupportedSpecEditions
The set of product specification editions this application supports for each S-100 product, keyed by canonical spec name (
"S-NNN").
- TimeSemantics
How a time-varying dataset behaves on the timeline (design note
docs/design/weather-sources.md§8.4): what its steps are, which step it draws between steps, and how long a step stays valid. Reported by TimeSemantics, so a host needs no per-product rules.
- WarningValidity
The in-force rule shared by every kind of warning the map draws: whether a warning applies at a time, judged on its validity ranges and cancellation date alone. S-124 navigational warnings (StatusAt(DateTimeOffset)) and CAP weather warnings both use it, so a warning starts and ends at the same instant whatever its format.
- WeatherDatasetContent
One entry of what a weather file holds (Contents), for
infooutput: a parameter of the grid set, or something the reader left out of it.
- WeatherGridProcessorBase
The format-neutral part of a weather grid processor: everything after the reader has produced a WeatherGridSet. The NetCDF-CF processor (NetCdfDatasetProcessor) and the GRIB2 processor (GribDatasetProcessor) derive from it and only open their files (design note weather-sources.md §3.3).
- WeatherProducts
The built-in ProductRegistrations for weather data, formats that aren't S-100 products (design note weather-sources.md §3.1, §3.2 and §6.1): GRIB2 and NetCDF-CF model grids, and CAP weather warnings. They're kept apart from S100Products so a host can register the S-100 products without them (AddAllS100Products(ProductRegistry)); CreateDefaultRegistry(), and so Default, includes both.
Structs
- DatasetHeader
The leading bytes of a dataset file and its extension, read once by DatasetPipelineFactory and handed to each product's DatasetBytesMatcher.
- DepthAdjustmentSample
A water level that applies at a point.
- FeatureInfoBuilder.AttributeRow
One attribute row of an ISO 8211 encoded feature or information record (S-100 Part 10a ATTR field): its code, its value (empty for a complex attribute) and the 1-based position of its parent row in the same list (
PAIX; 0 for a top-level attribute).
- FeatureInfoBuilder.ComplexAttributeRow
Describes a complex attribute's sub-rows in shape-agnostic terms; each spec reader exposes its own concrete
ComplexAttributetype with this same payload.
- GmlRootInfo
A cheap, parse-once view of a GML dataset's root element, handed to each product's DatasetGmlMatcher so it can recognize its own documents without re-parsing. Real-world S-100 GML datasets declare their product through the root element's namespace, the root's local name, an S-100
productIdentifierelement, or — for generically-rooted<DataSet>documents — a namespace declared on the root's attributes.
- Hdf5RootInfo
A view of an HDF5 file's root group, handed to each product's DatasetHdf5Matcher. The root
productSpecificationattribute is read once up front; any other root attribute can be read with ReadStringAttribute(string), which is only valid while the matcher runs (the factory closes the file afterwards), so a matcher must not keep the value.
- Iso8211RootInfo
A cheap, parse-once view of an ISO 8211 dataset's envelope, handed to each product's DatasetIso8211Matcher so it can recognize its own datasets without re-reading the file. S-100 ISO 8211 products (S-101, S-401) declare themselves in the
DSIDfield'sPRSPsubfield (e.g.INT.IHO.S-401.1.2). Legacy S-57 is identified instead by the presence of itsDSPMfield; itsPRSPholds a small integer naming the S-57 product specification (1for a maritime ENC,10for an inland ENC), not an S-100 product identifier (S-57 Ed 3.1 Part 3 §7.3.1.1; S-100 Edition 5.2.1 Part 10a).
- MapDatasetId
Stable, renderer-neutral identity for one dataset loaded into a map.
- S102DepthProbe
A single S-102 bathymetric sample at a geographic point, resolved to metres (positive down) by SampleBaseDepth(double, double). This is the CRS-aware live-sampling result the viewer feeds into its depth assimilation as the highest-priority base-depth candidate.
- TileBlock
A block of adjacent tiles at one zoom level that is rendered as one image (a metatile) and then cut into its tiles.
Interfaces
- IChartDepthCell
A loaded chart cell (S-101, S-401, or S-57 translated to either) that a point depth lookup ranks against overlapping cells and samples soundings from, as the viewer's pick report does (issues #938, #1040).
- ICoverageSampler
Capability implemented by coverage dataset processors (and the catalog payloads that carry their data) whose values can be read at a point: S-102 depths, S-104 water levels and S-111 surface currents today, weather grids later. Lets the MCP
sample_coverageandsample_coverage_alongtools sample a product without knowing its specification.
- IDatasetProcessor
Processes a dataset file and exposes feature/coverage pick info, enumeration, and validation. Rendering is performed separately by a renderer that consumes the processor's portrayal-output seam (e.g.
IVectorPortrayalSource/ICoveragePortrayalSource), so this abstraction carries no renderer (Mapsui) type. Constructed once per file.
- IDatasetProcessorFactory
Creates an IDatasetProcessor for a dataset on the local file system, without the caller having to know which S-100 product the file belongs to or how that product's processor is constructed. This is the renderer-neutral, product-agnostic seam a reusable host (e.g. the Mapsui
Map.AddS100extension) depends on so it can turn a dropped file into a processor while referencing neither the concreteDatasetPipelineFactorynor any per-product assembly.DatasetPipelineFactoryis the built-in implementation.
- IDateDependentDatasetProcessor
Capability implemented by dataset processors whose portrayal can draw some instructions only at some times (S-100 Part 9
timeValid, such as S-101 features with a fixed or periodic date range). They draw at PortrayalTime.
- IDepthAdjustableProcessor
A processor whose portrayal changes with DepthAdjustment. A host re-renders only these processors when the water level it applies changes, for example as the Timeline moves.
- IDepthAdjustment
A water level to add to charted depths across the chart (S-98 Appendix D, water level adjustment). A depth processor that honours it portrays
d + hinstead of the charteddwherever At(double, double, int?) gives anh, and the charted depth everywhere else.
- IDisplayModeAwareDatasetProcessor
Capability implemented by dataset processors whose portrayal catalogue declares one or more S-100 Part 9 §11.7 display modes — alternative looks selectable over a single dataset (e.g. S-411 sea ice offers concentration, stage-of-development and navigational modes). Lets callers (e.g. the CLI
infocommand) enumerate the available modes without reflecting over concrete processor or catalogue types.
- IHeadlessImageRenderer
Capability implemented by dataset processors that can rasterise their portrayal to a standalone SKBitmap through the headless, backend-agnostic Skia core (vector products via
HeadlessVectorRenderer; coverage products via the direct Skia coverage / arrow renderers) — bypassing Mapsui entirely.
- ITimeAwareDatasetProcessor
Capability implemented by dataset processors whose portrayal varies over a discrete set of forecast / observation time steps (S-104 water levels, S-111 surface currents, and S-411 sea ice). Lets callers (e.g. the CLI) map a user-supplied time-step index to a concrete DateTime without reflecting over concrete processor types.
Enums
- EcdisDisplayCategory
The four ECDIS standard display categories (S-100 Part 9 §11.7, S-101 §10.4). The viewer exposes these as a cross-spec selection and EcdisCategoryMapper resolves each to a per-spec display-mode id.
- IceEggValueRole
Semantic role of a single value shown in a WMO / SIGRID-3 ice "egg code" diagram (S-411 Edition 1.2.1 Annex A — sea-ice / lake-ice concentration, stage of development, and form of ice). The role tells a renderer where the value belongs in the oval (or outside it) and lets object-information UIs attach the correct hover definition without re-deriving it from position.
- NavigationalWarningStatus
Whether a navigational warning applies at a given time.
- NavigationalWarningStatusReason
Why a navigational warning has the status StatusAt(NavigationalWarningInfo, DateTimeOffset) gives.
- S101LoadItemKind
Kind of a single S101ExchangeSetLoadItem produced when planning how to load S-101 cells (and their sequential updates) from an exchange set.
- TimeStepKind
What a time-varying dataset's time steps are.
- TimeStepSelection
Which time step a dataset draws when the map time falls between steps.
Delegates
- DatasetBytesMatcher
Decides, from a file's leading bytes and its extension, whether the file belongs to a particular product. Contributed per ProductRegistration by formats with a signature of their own (GRIB2 starts with
GRIB, NetCDF-3 withCDF\x01), alongside the envelope matchers (DatasetIso8211Matcher, DatasetGmlMatcher, DatasetHdf5Matcher). DatasetPipelineFactory consults it for every file no envelope matcher claimed, whatever its extension, so a matcher must check the signature and treat the extension as a hint at most.Matchers must be mutually exclusive: each recognizes only its own format's signature, so the result does not depend on the order registrations are enumerated.
- DatasetDataOpener
Opens a dataset's bytes into the typed LoadedDatasetData payload a LoadedDataset carries. The caller owns
streamand disposes it.
- DatasetGmlMatcher
Decides, from the root element of a GML-encoded dataset, whether the document belongs to a particular product. Contributed per ProductRegistration so a GML product is recognized in the same place it is constructed, rather than in a central
switchinside DatasetPipelineFactory. The factory reads the document's root once (see GmlRootInfo) and returns the spec of the first registered product whose matcher claims it. Returns true when the document belongs to the registering product.Matchers must be mutually exclusive: each recognizes only its own product's namespace / local name /
productIdentifier, so at most one matcher claims any valid single-product dataset. Because of this the result does not depend on the order registrations are enumerated (the registry is unordered). Behavior on a malformed document that declares more than one product's namespace is unspecified.
- DatasetHdf5Matcher
Decides, from the root group of an HDF5 file, whether the file belongs to a particular product. Contributed per ProductRegistration so an HDF5 product is recognized in the same place it is constructed — the HDF5 sibling of DatasetIso8211Matcher and DatasetGmlMatcher. The factory opens the file once (see Hdf5RootInfo) and returns the spec of the first registered product whose matcher claims it; an HDF5 file nobody claims is unknown.
Matchers must be mutually exclusive: the S-100 coverage products each claim the files whose root
productSpecificationattribute declares them (S-100 Part 10c), so the result does not depend on the order registrations are enumerated.
- DatasetIso8211Matcher
Decides, from the envelope of an ISO 8211-encoded dataset, whether the file belongs to a particular product. Contributed per ProductRegistration so an ISO 8211 product is recognized in the same place it is constructed, rather than in a central
switchinside DatasetPipelineFactory. The factory reads the envelope once (see Iso8211RootInfo) and returns the spec of the first registered product whose matcher claims it. Returns true when the file belongs to the registering product.This is the ISO 8211 sibling of DatasetGmlMatcher: the
.000extension is shared by legacy S-57, S-101, and S-401 (inland ENC), so the extension alone cannot route the file.Matchers must be mutually exclusive: S-57 claims the files carrying the S-57-only
DSPMfield, while the S-100 products claim their own declaredPRSPproduct identifier. At most one matcher claims any valid dataset, so the result does not depend on the order registrations are enumerated (the registry is unordered).
- DatasetProcessorFromPath
Builds an IDatasetProcessor for a dataset on the local file system, given the shared
servicesand the datasetpath.
- DatasetProcessorFromSource
Builds an IDatasetProcessor for a dataset stored inside an IAssetSource (e.g. an exchange-set folder or ZIP), given the shared
servicesand therequest.