EncDotNet.S100.Datasets.S101
0.12.0
See the version list below for details.
dotnet add package EncDotNet.S100.Datasets.S101 --version 0.12.0
NuGet\Install-Package EncDotNet.S100.Datasets.S101 -Version 0.12.0
<PackageReference Include="EncDotNet.S100.Datasets.S101" Version="0.12.0" />
<PackageVersion Include="EncDotNet.S100.Datasets.S101" Version="0.12.0" />
<PackageReference Include="EncDotNet.S100.Datasets.S101" />
paket add EncDotNet.S100.Datasets.S101 --version 0.12.0
#r "nuget: EncDotNet.S100.Datasets.S101, 0.12.0"
#:package EncDotNet.S100.Datasets.S101@0.12.0
#addin nuget:?package=EncDotNet.S100.Datasets.S101&version=0.12.0
#tool nuget:?package=EncDotNet.S100.Datasets.S101&version=0.12.0
EncDotNet.S100.Datasets.S101
Reader and Lua portrayal pipeline for S-101 Electronic Navigational Chart (ENC) datasets.
Overview
This library reads S-101 datasets encoded in ISO 8211 format and executes the S-100 Part 9A Lua portrayal pipeline to produce drawing instructions. Key types include:
S101Dataset— parsed ENC dataset containing features from ISO 8211 records.S101Document,S101DocumentReader— low-level ISO 8211 record parsing.S101LuaRuleExecutor—ILuaRuleExecutorimplementation that orchestrates the Lua portrayal pipeline (loadsmain.lua, callsPortrayalMain(), parses and post-processes the emitted instructions).S101PortrayalCatalogue—IVectorPortrayalCatalogueimplementation that loads XSLT/Lua rules, symbols, line styles, area fills, and color palettes.S101VectorSource—IVectorSourceimplementation for the vector pipeline.DrawingInstructionParser— parses the semicolon-separated key:value strings emitted by the Lua portrayal pipeline into the unifiedDrawingInstructionhierarchy fromEncDotNet.S100.Core. Honours text alignment (TextAlignHorizontal/TextAlignVertical), mm offsets (LocalOffset), foreground / background colour with optional transparency, line placement, and theAugmentedPoint:GeographicCRS,…anchor override used by SOUNDG / DepthNoBottomFound rules. Augmented line geometry (AugmentedRay,ArcByRadius,AugmentedPath) is fully supported — sector-light limit lines and arcs, directional-light rays, and all-around-light circles are tessellated into polylines and carried throughLineInstruction.CoordinatesOverrideto the renderer.
Bundled-adapter Lua patches
content/S101/pc/ stays byte-identical to the upstream IHO S-101
portrayal catalogue. When upstream Lua has a defect that breaks
real-world cells, S101LuaRuleExecutor ships a small adapter patch
that monkey-patches the offending global rather than editing the
bundled catalogue. Current patches:
contains— restores a missing global the upstream catalogue relies on without defining.GetFeatureName/PortrayFeatureName— upstream gates name selection on bothnameANDnameUsage, but the S-101 FC declaresnameUsagewith multiplicity0..1. Cells that omit it are FC-conformant but rendered nameless. The patch treats a missingnameUsageas the default1while preserving the original language-matching semantics, so area / point feature names (BuiltUpArea, SeaAreaNamedWaterArea, churches, …) emit correctly.
If upstream fixes a defect, the corresponding patch is dropped.
Validation
A bundled rule pack
(EncDotNet.S100.Datasets.S101.Validation.S101DatasetRules.Default)
evaluates a typed view over an S101Document against the S-101
Edition 2.0.0 checklist and emits a ValidationReport of findings.
The view types under Validation/ (S101DatasetView,
S101FeatureView, S101AttributeView) are the spec-aligned façade
the pack reads from — they keep rule code decoupled from the raw
S101FeatureRecord shape so a future typed DataModel projection
can replace them without rewriting the rules.
The pack is invoked automatically by S101DatasetProcessor.Validate()
and can also be run directly:
var view = S101DatasetView.From(document, decoder);
var report = S101DatasetRules.Default.Run(view);
| Rule id | Severity | Checks |
|---|---|---|
S101-R-1.1 |
Error | Feature type code resolves to an FC acronym. |
S101-R-1.2 |
Error | Attribute code resolves AND is bound to the host feature class (walks the FC SuperType chain). |
S101-R-2.1 |
Error | FOID uniqueness — one finding per duplicate, with the first occurrence as anchor. |
S101-R-3.1 |
Error | Spatial associations resolve into the correct record dictionary (point, curve, surface, composite curve). |
S101-R-3.2 |
Error | Surface ring closure plus rejection of rings with fewer than three distinct points. |
S101-R-3.3 |
Error | Composite curve continuity (end of segment N equals start of segment N+1). |
S101-R-4.1 |
Warning | Enumerated attribute values fall in the FC-declared domain. |
S101-R-5.1 |
Warning | Resolved (lat, lon) coordinates lie in WGS-84 ranges. |
S101-R-5.2 |
Warning | Information associations resolve to a known information record. |
S101-PROJ-PARSE |
— | Placeholder reserving the namespace for future parser-diagnostic findings; body intentionally empty. |
The same S101DatasetRules.Default entry point is reused by S-57
post-translation delegation (see
EncDotNet.S100.Datasets.S57),
with findings rebadged as S101-as-S57/<rule-id> so the user can
tell which layer of the pipeline a problem came from.
Record types
S101DocumentReader parses the following ISO 8211 record types:
| Tag | Record type | Notes |
|---|---|---|
| DSID | Dataset identification | Version, edition, product spec |
| DSSI | Dataset structure info | COMF / SOMF scaling factors |
| PRID | Point | Single 2D coordinate |
| MRID | MultiPoint | 3D sounding arrays via C3IL field (VCID leader + YCOO/XCOO/ZCOO repeating group) |
| CRID | Curve segment | Ordered coordinate sequences |
| CCID | Composite curve | References to curve segments |
| SRID | Surface | Ring-based polygon geometry |
| FRID | Feature | Object class, attributes, spatial associations |
| IRID | Information type | Metadata records referenced by features |
Installation
dotnet add package EncDotNet.S100.Datasets.S101
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- EncDotNet.Iso8211 (>= 0.4.3)
- EncDotNet.S100.Core (>= 0.12.0)
- EncDotNet.S100.Features (>= 0.12.0)
- EncDotNet.S100.Portrayals (>= 0.12.0)
-
net8.0
- EncDotNet.Iso8211 (>= 0.4.3)
- EncDotNet.S100.Core (>= 0.12.0)
- EncDotNet.S100.Features (>= 0.12.0)
- EncDotNet.S100.Portrayals (>= 0.12.0)
NuGet packages (4)
Showing the top 4 NuGet packages that depend on EncDotNet.S100.Datasets.S101:
| Package | Downloads |
|---|---|
|
EncDotNet.S100.Renderers.Mapsui
Libraries for manipulating S-100 based nautical charts. |
|
|
EncDotNet.S100.Datasets.S131
Libraries for manipulating S-100 based nautical charts. |
|
|
EncDotNet.S100.Datasets.S57
Libraries for manipulating S-100 based nautical charts. |
|
|
EncDotNet.S100.Datasets.Pipelines
Per-spec IDatasetProcessor implementations, the DatasetPipelineFactory (file -> processor detection), the headless image-render capability, the S-98 interoperability authority, and the validation runner for IHO S-100 product datasets. Consumed by the EncDotNet.S100 convenience package, the viewer, and the s100 CLI. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.18.0 | 61 | 6/17/2026 |
| 0.17.1 | 103 | 6/16/2026 |
| 0.17.0 | 161 | 6/15/2026 |
| 0.16.0 | 181 | 6/8/2026 |
| 0.15.0 | 119 | 6/6/2026 |
| 0.14.0 | 122 | 6/6/2026 |
| 0.13.0 | 112 | 6/3/2026 |
| 0.12.0 | 115 | 5/29/2026 |
| 0.11.0 | 121 | 5/19/2026 |
| 0.10.0 | 120 | 5/16/2026 |
| 0.9.0 | 111 | 5/15/2026 |
| 0.8.0 | 119 | 5/13/2026 |
| 0.7.0 | 117 | 5/12/2026 |
| 0.6.0 | 122 | 5/8/2026 |
| 0.5.0 | 115 | 5/4/2026 |
| 0.4.0 | 117 | 5/1/2026 |
| 0.3.0 | 116 | 4/29/2026 |
| 0.2.0 | 117 | 4/14/2026 |
| 0.1.2 | 116 | 4/11/2026 |
| 0.1.1 | 108 | 4/11/2026 |