EncDotNet.S100.Datasets.S101 0.12.0

There is a newer version of this package available.
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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="EncDotNet.S100.Datasets.S101" Version="0.12.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="EncDotNet.S100.Datasets.S101" Version="0.12.0" />
                    
Directory.Packages.props
<PackageReference Include="EncDotNet.S100.Datasets.S101" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add EncDotNet.S100.Datasets.S101 --version 0.12.0
                    
#r "nuget: EncDotNet.S100.Datasets.S101, 0.12.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package EncDotNet.S100.Datasets.S101@0.12.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=EncDotNet.S100.Datasets.S101&version=0.12.0
                    
Install as a Cake Addin
#tool nuget:?package=EncDotNet.S100.Datasets.S101&version=0.12.0
                    
Install as a Cake Tool

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.
  • S101LuaRuleExecutorILuaRuleExecutor implementation that orchestrates the Lua portrayal pipeline (loads main.lua, calls PortrayalMain(), parses and post-processes the emitted instructions).
  • S101PortrayalCatalogueIVectorPortrayalCatalogue implementation that loads XSLT/Lua rules, symbols, line styles, area fills, and color palettes.
  • S101VectorSourceIVectorSource implementation for the vector pipeline.
  • DrawingInstructionParser — parses the semicolon-separated key:value strings emitted by the Lua portrayal pipeline into the unified DrawingInstruction hierarchy from EncDotNet.S100.Core. Honours text alignment (TextAlignHorizontal / TextAlignVertical), mm offsets (LocalOffset), foreground / background colour with optional transparency, line placement, and the AugmentedPoint: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 through LineInstruction.CoordinatesOverride to 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 both name AND nameUsage, but the S-101 FC declares nameUsage with multiplicity 0..1. Cells that omit it are FC-conformant but rendered nameless. The patch treats a missing nameUsage as the default 1 while 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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