Table of Contents

Class SubLayerStackItem

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

One sub-layer's slot in the S-98 cross-dataset stack — the renderer-neutral successor to the Mapsui-tied LayerStackEntry. A SubLayerStackItem carries everything the IInteroperabilityAuthority needs to order and suppress sub-layers across all loaded datasets, plus a StackPayload a renderer turns into a drawable layer, with no dependency on any rendering backend (issue #398).

public sealed record SubLayerStackItem : IEquatable<SubLayerStackItem>
Inheritance
SubLayerStackItem
Implements
Inherited Members

Constructors

SubLayerStackItem(StackPayload, S98DisplayPlane, int, string, string?, string?)

One sub-layer's slot in the S-98 cross-dataset stack — the renderer-neutral successor to the Mapsui-tied LayerStackEntry. A SubLayerStackItem carries everything the IInteroperabilityAuthority needs to order and suppress sub-layers across all loaded datasets, plus a StackPayload a renderer turns into a drawable layer, with no dependency on any rendering backend (issue #398).

public SubLayerStackItem(StackPayload Payload, S98DisplayPlane Plane, int WithinPlanePriority, string SourceDatasetId, string? SourceFeatureType = null, string? ExtensionId = null)

Parameters

Payload StackPayload

The Mapsui-free portrayal slice to draw (vector instructions or a coverage sub-layer). S-98 suppression may replace this with a filtered payload.

Plane S98DisplayPlane

The S-98 display plane this sub-layer lives in (S-98 Annex A §4.4.1 + §A-3.2.1.1). Assigned by the producing processor, possibly overridden by an Interoperability Catalogue rule.

WithinPlanePriority int

Intra-plane ordering hint, ascending — lower draws first. For vector products this is the S-100 Part 9 §10 drawingPriority; for coverage products a processor-chosen integer (e.g. arrows above colour band).

SourceDatasetId string

Stable identifier for the source dataset (typically the file name or exchange-set relative path). Used as the stable-sort tiebreaker and the suppression join key against LoadedDatasetInfo.

SourceFeatureType string

Optional feature type code when the item is a per-feature-type slice (e.g. the S-101 area / line split). Null for whole-layer items.

ExtensionId string

Optional IC-declared custom plane identifier (S-98 Annex A §A-3.2.1.1). When set, the authority slots the item by the catalogue's order rather than by Plane. Always null for PR-L1.

Properties

ExtensionId

Optional IC-declared custom plane identifier (S-98 Annex A §A-3.2.1.1). When set, the authority slots the item by the catalogue's order rather than by Plane. Always null for PR-L1.

public string? ExtensionId { get; init; }

Property Value

string

Payload

The Mapsui-free portrayal slice to draw (vector instructions or a coverage sub-layer). S-98 suppression may replace this with a filtered payload.

public StackPayload Payload { get; init; }

Property Value

StackPayload

Plane

The S-98 display plane this sub-layer lives in (S-98 Annex A §4.4.1 + §A-3.2.1.1). Assigned by the producing processor, possibly overridden by an Interoperability Catalogue rule.

public S98DisplayPlane Plane { get; init; }

Property Value

S98DisplayPlane

SourceDatasetId

Stable identifier for the source dataset (typically the file name or exchange-set relative path). Used as the stable-sort tiebreaker and the suppression join key against LoadedDatasetInfo.

public string SourceDatasetId { get; init; }

Property Value

string

SourceFeatureType

Optional feature type code when the item is a per-feature-type slice (e.g. the S-101 area / line split). Null for whole-layer items.

public string? SourceFeatureType { get; init; }

Property Value

string

SourceScaleDenominator

The source cell's ranking scale denominator — its compilation scale where the product declares one, otherwise its coarsest intended display-scale denominator; a proxy for its navigational-purpose (usage) band, used to break ties between overlapping cells of different scales within the same Plane and WithinPlanePriority. A smaller denominator means a larger-scale (finer) cell, which must paint on top of a smaller-scale (coarser) cell of the same feature content (S-101 FC §3.1.1 DataCoverage.minimumDisplayScale; S-57 DSPM compilation scale CSCL, S-57 Appendix B.1 §7.3.1.1). Without this the tie falls through to dataset load order, which is non-deterministic under viewport-driven lazy loading (issue #464). null when the producing dataset carries no usable cell-wide scale (e.g. GML and coverage products); such items are treated as coarsest and preserve their relative load order among themselves.

public int? SourceScaleDenominator { get; init; }

Property Value

int?

Remarks

Kept as an init-only property rather than a primary-constructor parameter so appending it does not change the generated constructor signature — that keeps the public record binary-compatible with callers compiled against the earlier six-parameter constructor.

WithinPlanePriority

Intra-plane ordering hint, ascending — lower draws first. For vector products this is the S-100 Part 9 §10 drawingPriority; for coverage products a processor-chosen integer (e.g. arrows above colour band).

public int WithinPlanePriority { get; init; }

Property Value

int