EncDotNet.S100.Renderers.Mapsui
0.9.0
See the version list below for details.
dotnet add package EncDotNet.S100.Renderers.Mapsui --version 0.9.0
NuGet\Install-Package EncDotNet.S100.Renderers.Mapsui -Version 0.9.0
<PackageReference Include="EncDotNet.S100.Renderers.Mapsui" Version="0.9.0" />
<PackageVersion Include="EncDotNet.S100.Renderers.Mapsui" Version="0.9.0" />
<PackageReference Include="EncDotNet.S100.Renderers.Mapsui" />
paket add EncDotNet.S100.Renderers.Mapsui --version 0.9.0
#r "nuget: EncDotNet.S100.Renderers.Mapsui, 0.9.0"
#:package EncDotNet.S100.Renderers.Mapsui@0.9.0
#addin nuget:?package=EncDotNet.S100.Renderers.Mapsui&version=0.9.0
#tool nuget:?package=EncDotNet.S100.Renderers.Mapsui&version=0.9.0
EncDotNet.S100.Renderers.Mapsui
Rendering of S-100 data into Mapsui map layers with CRS projection.
Overview
This library bridges the S-100 portrayal pipeline output to Mapsui map layers, including full CRS projection support (EPSG:3857 Web Mercator). Key types include:
MapsuiCoverageRenderer—ICoverageRenderer<ILayer>implementation that renders coverage data as a georeferenced raster overlay (S-102 / S-104 / S-111).MapsuiCoverageArrowRenderer— renders current arrows (e.g. from S-111 data) as a georeferenced raster layer.MapsuiDisplayListRenderer— product-agnostic vector renderer that consumes a list ofDrawingInstructions plus anIFeatureGeometryProviderand produces aMemoryLayerof styled point/line/area/text features. Used by every S-100 vector product (S-101, S-124, S-129, S-421); no per-spec subclass is required.ProjNetCrsTransformFactory—ICrsTransformFactoryimplementation using ProjNet for coordinate transformations between UTM, WGS84, and Web Mercator.
MapsuiDisplayListRenderer honours the relevant S-100 Part 9 conventions:
- Pen widths and text/symbol offsets specified in millimetres on the nominal display surface are converted to screen pixels using the standard
1 px = 0.32 mmratio (S-100 Part 9 §3.10.4). <foreground>/<background>colours accept either a palette token or a literal#RRGGBB/RRGGBBAAhex value, with the optionaltransparencyattribute applied as alpha attenuation.- Text alignment, mm offsets, and
textLinestart/end offsets (Relative or Absolute) are honoured per S-100 Part 9 §11.4. LineStyleProvider,SymbolProvider, andAreaFillProvidercallbacks let the host project plug in a portrayal catalogue without coupling the renderer to a specific dataset library.
Sharing processed-SVG and pattern-tile work across renders
MapsuiDisplayListRenderer resolves SVG symbols and rasterises area-fill pattern tiles lazily on first reference. The processed-SVG output depends on the active ColorPalette (fill/stroke colours are recoloured against the palette), and pattern-tile rasterisation is comparatively expensive.
When a single dataset is re-rendered repeatedly — typical when toggling palettes, scrubbing time-steps, or changing mariner settings — assign a single MapsuiRenderAssetCache instance to the renderer's AssetCache property on every Render() call:
private readonly MapsuiRenderAssetCache _renderAssetCache = new();
// per Render():
var renderer = new MapsuiDisplayListRenderer
{
Palette = palette,
AssetCache = _renderAssetCache,
SymbolProvider = name => catalogue.GetSymbol(name).SvgContent,
AreaFillProvider = name => catalogue.GetAreaFill(name),
};
The cache segments entries per palette (Day / Dusk / Night) so flipping back and forth keeps every palette warm. When AssetCache is unset, the renderer falls back to a per-instance cache, which preserves legacy behaviour for ad-hoc / one-shot callers.
Installation
dotnet add package EncDotNet.S100.Renderers.Mapsui
| 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.S100.Core (>= 0.9.0)
- EncDotNet.S100.Datasets.S101 (>= 0.9.0)
- EncDotNet.S100.Datasets.S421 (>= 0.9.0)
- EncDotNet.S100.Portrayals (>= 0.9.0)
- EncDotNet.S100.Renderers.Skia (>= 0.9.0)
- Mapsui (>= 5.0.2)
- Mapsui.Nts (>= 5.0.2)
- Mapsui.Rendering.Skia (>= 5.0.2)
- Mapsui.Tiling (>= 5.0.2)
- ProjNet (>= 2.0.0)
- SkiaSharp (>= 3.119.1)
-
net8.0
- EncDotNet.S100.Core (>= 0.9.0)
- EncDotNet.S100.Datasets.S101 (>= 0.9.0)
- EncDotNet.S100.Datasets.S421 (>= 0.9.0)
- EncDotNet.S100.Portrayals (>= 0.9.0)
- EncDotNet.S100.Renderers.Skia (>= 0.9.0)
- Mapsui (>= 5.0.2)
- Mapsui.Nts (>= 5.0.2)
- Mapsui.Rendering.Skia (>= 5.0.2)
- Mapsui.Tiling (>= 5.0.2)
- ProjNet (>= 2.0.0)
- SkiaSharp (>= 3.119.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.18.0 | 45 | 6/17/2026 |
| 0.17.1 | 47 | 6/16/2026 |
| 0.17.0 | 87 | 6/15/2026 |
| 0.16.0 | 100 | 6/8/2026 |
| 0.15.0 | 98 | 6/6/2026 |
| 0.14.0 | 96 | 6/6/2026 |
| 0.13.0 | 94 | 6/3/2026 |
| 0.12.0 | 96 | 5/29/2026 |
| 0.11.0 | 98 | 5/19/2026 |
| 0.10.0 | 95 | 5/16/2026 |
| 0.9.0 | 93 | 5/15/2026 |
| 0.8.0 | 95 | 5/13/2026 |
| 0.7.0 | 95 | 5/12/2026 |
| 0.6.0 | 113 | 5/8/2026 |
| 0.5.0 | 102 | 5/4/2026 |
| 0.4.0 | 96 | 5/1/2026 |
| 0.3.0 | 102 | 4/29/2026 |
| 0.2.0 | 107 | 4/14/2026 |
| 0.1.2 | 108 | 4/11/2026 |
| 0.1.1 | 101 | 4/11/2026 |