Table of Contents

EncDotNet.S100.DynamicSources.Ais

Concrete IDynamicFeatureSource for AIS targets, plus the driver-agnostic IAisMessageSource abstraction.

Packaging: this library is not currently published to NuGet. Consume it via project reference, or through the desktop viewer.

What ships here

Type Purpose
IAisMessageSource / IAisSubscription Subscription-based contract over a producer of decoded AIS messages. Drivers (aisstream.io WebSocket, local antenna NMEA, recorded-log replay) implement this interface.
AisSubscriptionRequest / AisMessageKinds Spatial / MMSI / ship-type-class filters and message-family selector.
AisPositionReport / AisStaticVoyageData / AisTargetLost Decoded AIS payloads — denormalised so callers don't see message-type numbers.
AisShipType / AisShipTypeClass (+ ToClass, ToKindToken) Raw shiptype codes and the ITU-R M.1371-5 Table 53 display buckets used in DynamicFeature.Kind.
AisNavigationStatus Navigation status enum per ITU-R M.1371-5 §3.3.7.2.1.
AisDimensions Hull dimensions (A/B/C/D) folded into length/beam/bow-offset/port-offset.
AisDynamicFeatureSource The actual IDynamicFeatureSource — projects each position report to a DynamicFeature, merges per-MMSI static / voyage data, and ages stale targets.

Architecture

Three-layer split with the wire format isolated to driver assemblies:

[recorded log | local antenna | aggregator service]
   │   wire bytes
   ▼
[driver assembly (e.g. .Drivers.AisStreamIo)]
   │   IAisMessageSource (this assembly)
   ▼
[AisDynamicFeatureSource]
   │   IDynamicFeatureSource
   ▼
[viewer / sample]

AisDynamicFeatureSource consumes only typed records and is unit-testable without any wire-format fixtures.

Renderer key

The source advertises RendererKey = "vessel.ais". Register a matching IDynamicFeatureRenderer in EncDotNet.S100.Renderers.Mapsui (the AisVesselRenderer, ships separately).

See also

  • docs/design/ais-source.md — full design notes.
  • docs/design/dynamic-feature-source.md — base abstractions.
  • docs/design/ais-zoom-gated-subscription.md — viewer-side gate that defers the first subscription until the visible viewport has shrunk below a configurable span.
  • EncDotNet.S100.DynamicSources.Ais.Drivers.AisStreamIo — production driver.