Bump EncDotNet.Iso8211 to 0.4.3 for S-101 parsing fixes#116
Merged
Conversation
Fixes parsing of S-101 datasets whose DDR uses nested parenthesized format controls (e.g. (b11,(3b24)) for the C3IL field). The ISO 8211 library now correctly expands these nested groups into individual subfield format entries. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Contributor
Performance Gate✅ PASSED — no regressions. Threshold: 10.0%, MAD multiplier (k): 3.0, retry-zone mult: 2.0× Scenario summary
exchange-set-openIteration statistics
Spans (sum of all iterations)
Metrics
s101-portray-coldIteration statistics
Spans (sum of all iterations)
Metrics
s101-portray-warmIteration statistics
Spans (sum of all iterations)
Metrics
s101-render-warmIteration statistics
Spans (sum of all iterations)
Metrics
s102-coverageIteration statistics
Spans (sum of all iterations)
Metrics
s102-coverage-openIteration statistics
Spans (sum of all iterations)
Metrics
s102-coverage-render-largeIteration statistics
Spans (sum of all iterations)
Metrics
s124-vectorIteration statistics
Spans (sum of all iterations)
Metrics
s201-vectorIteration statistics
Spans (sum of all iterations)
Metrics
Generated by EncDotNet.S100.PerfReport gate command |
Fixes garbled French accented characters (e.g. Île d'Orléans displayed as ??le d'Orl??ans) in S-101 datasets. The ISO 8211 library now uses UTF-8 instead of ASCII for character data decoding. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Implement data coding format 3 reader that maps per-node positioned values into the station-series model for rendering. DCF 3 datasets store explicit per-node lat/lon from Positioning/geometryValues and per-timestep value arrays — structurally similar to DCF 8 but with per-timestep (not per-station) organisation. Changes: - S111DatasetReader: add ReadUngeorectifiedGrid/ReadUngeorectifiedInstance methods that read positions and transpose per-timestep values into per-node SurfaceCurrentStation objects - S111DatasetReader.ReadAny: route DCF 3 through station-series path - S111StationSeriesDataset: update docs for DCF 3 reuse, remove hard-coded DataCodingFormat=8 - S111DatasetProcessor: update doc to mention DCF 3 - Add S111Dcf3FixtureBuilder and S111Dcf3ReaderTests with 3 tests Spec ref: S-100 Part 10c §10.2.1 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
For DCF 3 (ungeorectified grid) datasets, resolve arrow colors and scale factors from the S-111 portrayal catalogue speed-band table instead of using the hardcoded ColorByMagnitude/SymbolScaleForSpeed palette. This makes DCF 3 rendering faithful to the IHO PC (same color bands and scaling rules as the DCF 2 regular-grid path). DCF 8 (time series at fixed stations) retains the inline palette since those datasets typically originate from tide gauges where the PC arrow bands are less appropriate. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace SymbolType.Triangle with actual SVG arrow symbols (SCAROW01, SCAROW02, etc.) from the S-111 portrayal catalogue. Each speed band resolves to a distinct SVG glyph that is loaded once and cached for the render pass. The SVG is rendered via Mapsui's ImageStyle with RasterizeSvg=true, matching the DCF 2 arrow renderer's approach. Falls back to colored triangles for DCF 8 or when the catalogue symbol cannot be loaded. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Mapsui's Image.Source expects a 'svg-content://' URI scheme, not raw SVG markup. Process the raw SVG through SvgProcessor (palette color resolution) and prefix with the required URI scheme, matching how MapsuiDisplayListRenderer produces symbol sources. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps
EncDotNet.Iso8211from 0.4.1 → 0.4.3, picking up two fixes for real-world S-101 datasets:Fix 1: Nested format controls (0.4.2, philliphoff/EncDotNet#4)
Problem:
FormatExceptionwhen opening datasets whose DDR uses nested parenthesized format controls for the C3IL field (e.g.(b11,(3b24))). Binary coordinate data was misinterpreted as ASCII text.Root cause:
ParseFormatControlsdidn't handle nested parenthesized groups, causing YCOO/XCOO/ZCOO subfields to fall back toCharacterDataformat.Fix 2: UTF-8 text encoding (0.4.3, philliphoff/EncDotNet#5)
Problem: French accented characters garbled — e.g.
Île d'Orléansdisplayed as??le d'Orl??ans.Root cause:
ConvertCharacterDatausedEncoding.ASCIIfor lexical levels 0/1, replacing any byte > 127 with?. Changed toEncoding.UTF8which is backward-compatible with ASCII.Verified with: Canadian Hydrographic Service dataset
101CA00P468N0712W.000.All 956 tests pass.