Table of Contents

Class PickAttribute

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

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.

public sealed class PickAttribute
Inheritance
PickAttribute
Inherited Members

Remarks

Trees are formed by populating Children: complex attributes are surfaced as a parent PickAttribute (with the complex-attribute code/name and an empty value) plus one child per sub-attribute. Decoding obeys the S-100 Edition 5.2.1 Part 5 Feature Catalogue (ISO 19110): simple-attribute codes resolve to their human-readable name, listed-value codes resolve to their label.

Fields

NavigationNoticeCode

The Code of a not-for-navigation notice row (NavigationNotice(string)): "notice".

public const string NavigationNoticeCode = "notice"

Field Value

string

Properties

Children

Sub-attributes of a complex attribute. Empty for simple attributes and for leaf rows of a complex attribute.

public IReadOnlyList<PickAttribute> Children { get; init; }

Property Value

IReadOnlyList<PickAttribute>

Code

The raw on-the-wire attribute or sub-attribute code (e.g. "OBJNAM", "CATPIB").

public required string Code { get; init; }

Property Value

string

DateTimeRangeValue

Optional typed time-range backing this attribute (start, end). Same contract as DateTimeValue.

public (DateTime Start, DateTime End)? DateTimeRangeValue { get; init; }

Property Value

(DateTime Start, DateTime End)?

DateTimeValue

Optional typed timestamp value backing this attribute. When set, presentation layers should re-format the value through their own date/time formatter rather than relying on RawValue or DisplayValue. RawValue still carries an ISO 8601 representation for non-UI consumers (serialization, MCP, tests).

public DateTime? DateTimeValue { get; init; }

Property Value

DateTime?

DepthMetresValue

Optional typed depth value (canonical metres) backing this attribute. When set, presentation layers should re-format the value through the active mariner DepthUnit setting (S-100 Part 9 ยง4.2) rather than relying on RawValue or DisplayValue. RawValue still carries the unit-less numeric metres representation for non-UI consumers (serialization, MCP, tests).

public double? DepthMetresValue { get; init; }

Property Value

double?

DisplayName

The label most viewers want to render: Name when available, otherwise Code.

public string DisplayName { get; }

Property Value

string

DisplayText

The value most viewers want to render: DisplayValue when available, otherwise RawValue.

public string DisplayText { get; }

Property Value

string

DisplayValue

Friendly display value resolved through the dataset's Feature Catalogue (e.g. listed-value label), or null when no decoding applies.

public string? DisplayValue { get; init; }

Property Value

string

ExternalText

The resolved textual content of the external text file named by a fileReference attribute (S-100 Edition 5.2.1 Part 5; S-101 Feature Catalogue simple attribute fileReference, aliases TXTDSC / NTXTDS), or null when this row is not a file reference or the referenced file could not be resolved from the dataset's exchange set. RawValue still carries the referenced file name. Presentation layers (e.g. the viewer's pick report) surface this as expandable text, mirroring how an ECDIS lets the mariner read an externally referenced textual description.

public string? ExternalText { get; init; }

Property Value

string

HasExternalText

true when ExternalText carries resolved content from an external text file referenced by this attribute.

public bool HasExternalText { get; }

Property Value

bool

IsNavigationNotice

true when this row is the product's not-for-navigation notice rather than a value of the feature, e.g. "Weather model data, not for navigation." on a weather grid pick. Non-viewer callers (MCP, CLI) show it as an ordinary row; a host that already leads its pick report with its own notice for the product hides it so the notice reads once (#1096).

public bool IsNavigationNotice { get; init; }

Property Value

bool

Name

Human-readable attribute name resolved through the dataset's Feature Catalogue, or null when no FC was available or the code is not defined.

public string? Name { get; init; }

Property Value

string

RawValue

The unmodified value as written in the dataset.

public required string RawValue { get; init; }

Property Value

string

Methods

NavigationNotice(string)

A not-for-navigation notice row: NavigationNoticeCode, named "Notice", with text as its value and IsNavigationNotice set.

public static PickAttribute NavigationNotice(string text)

Parameters

text string

The notice, e.g. "Weather model data, not for navigation.".

Returns

PickAttribute

The notice row.