EncDotNet.Iso8211 0.4.0

dotnet add package EncDotNet.Iso8211 --version 0.4.0
                    
NuGet\Install-Package EncDotNet.Iso8211 -Version 0.4.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.Iso8211" Version="0.4.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="EncDotNet.Iso8211" Version="0.4.0" />
                    
Directory.Packages.props
<PackageReference Include="EncDotNet.Iso8211" />
                    
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.Iso8211 --version 0.4.0
                    
#r "nuget: EncDotNet.Iso8211, 0.4.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.Iso8211@0.4.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.Iso8211&version=0.4.0
                    
Install as a Cake Addin
#tool nuget:?package=EncDotNet.Iso8211&version=0.4.0
                    
Install as a Cake Tool

EncDotNet.Iso8211

NuGet

A .NET 10 parser for the ISO/IEC 8211 binary container format — the underlying encoding used by IHO S-57 electronic navigational charts, as well as other geospatial and data exchange standards.

Features

  • Parse any ISO 8211 file (not limited to S-57 charts)
  • Read the Data Descriptive Record (DDR) to discover field tags, subfield names, and data types
  • Decode data records and iterate their fields and subfield values
  • Low-allocation ref struct reader for streaming large files
  • Immutable record types for parsed data (thread-safe, LINQ-friendly)

Installation

dotnet add package EncDotNet.Iso8211

Quick Start

using EncDotNet.Iso8211;

// Parse a file into an in-memory document
var document = Iso8211DocumentReader.ReadFromFile("chart.000");

// Read the DDR (schema) — defines field tags, subfield names, and data types
var ddr = Iso8211DataDescriptiveRecordReader.Read(document.DataDescriptiveRecord!);

// Iterate data records
foreach (var record in document.DataRecords)
{
    foreach (var field in record.Fields)
    {
        Console.WriteLine($"Field tag: {field.Tag}  ({field.Data.Length} bytes)");

        // Use the DDR field definition to decode subfields
        var fieldDef = ddr.GetFieldDefinition(field.Tag);
        if (fieldDef is not null)
        {
            var reader = new Iso8211FieldReader(fieldDef, field.Data);

            foreach (var subfieldDef in fieldDef.SubfieldDefinitions)
            {
                if (reader.TryGetSubfield<string>(subfieldDef.Name, out var value))
                {
                    Console.WriteLine($"  {subfieldDef.Name} = {value}");
                }
            }
        }
    }
}

Key Types

Type Description
Iso8211Document An in-memory ISO 8211 document containing the DDR and all data records
Iso8211DocumentReader Reads an ISO 8211 file into an Iso8211Document
Iso8211DataDescriptiveRecord The parsed DDR — field definitions and subfield schemas
Iso8211DataDescriptiveRecordReader Parses the raw DDR record into a typed representation
Iso8211FieldReader Decodes subfield values from a field's binary data using the DDR schema
Iso8211Reader Low-level streaming ref struct reader for incremental parsing
Iso8211Record A single data record with its leader, directory entries, and fields
Iso8211FieldDefinition Defines a field's tag, structure code, data type, and subfield layout
Iso8211SubfieldDefinition Defines a subfield's name and format (type, length)

Background

ISO/IEC 8211 is a general-purpose binary format for encoding structured data into self-describing files. Each file begins with a Data Descriptive Record (DDR) that defines the schema, followed by one or more data records conforming to that schema.

The format is used by IHO S-57 for encoding electronic navigational charts, but it is not specific to maritime data — any domain that needs a compact, self-describing binary container can use ISO 8211.

  • EncDotNet.S57 — S-57 domain model built on top of this parser

License

MIT — see LICENSE for details.

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.
  • net10.0

    • No dependencies.
  • net8.0

    • No dependencies.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on EncDotNet.Iso8211:

Package Downloads
EncDotNet.S57

A .NET library for reading and working with IHO S-57 Electronic Navigational Charts (ENCs), including feature records, vector topology, exchange sets, and incremental updates.

EncDotNet.S100.Datasets.S101

Libraries for manipulating S-100 based nautical charts.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.4.0 99 4/29/2026
0.3.6 98 4/11/2026
0.3.5 92 4/9/2026
0.3.4 393 4/9/2026
0.3.3 93 4/9/2026
0.3.2 98 4/8/2026
0.3.1 99 4/8/2026