iso8211 0.1.5

ISO 8211 data format parsing library (IHO S-57 / S-100 family exchange format)
Documentation

iso8211

Rust parser for ISO/IEC 8211 exchange files—the binary interchange format used by the International Hydrographic Organization (IHO) for S-57 and S-100-family products (including S-101 ENC datasets on the wire).

Documentation License

Relation to IHO standards

IHO / ISO Role
ISO/IEC 8211 Logical record format (leader, directory, fields). This crate implements that layer.
S-57 / S-100 / S-101 Product and data model specs on top of 8211. Interpreting feature codes, geometry, and portrayal is not done here—use product crates such as s-101.

Quick start

[dependencies]
iso8211 = "0.1.5"
use iso8211::DataDescriptiveFile;

fn main() -> Result<(), iso8211::Iso8211Error> {
    let ddf = DataDescriptiveFile::read("dataset.000")?;
    println!("DDR fields: {}", ddf.data_descriptive_record().data_descriptive_fields().len());
    println!("data records: {}", ddf.data_records().len());
    Ok(())
}

Example (dump structure of a file):

cargo run -p iso8211 --example print -- path/to/file.000

What this crate does

  • Reads the Data Descriptive Record (leader, directory, file control field, data descriptive fields).
  • Reads each Data Record with parallel field tags and raw payloads.
  • Parses format control strings into a Format AST.

Further reading

License

Licensed under either of:

at your option.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate, as defined in the Apache-2.0 license, shall be dual licensed as above, without additional terms or conditions.

Normative ENC / S-100 behaviour remains defined only by IHO publications and applicable flag-State rules.