Table of Contents

Class NaturalEarthBasemap

Namespace
EncDotNet.S100.Renderers.Skia.Scene
Assembly
EncDotNet.S100.Renderers.Skia.dll

The bundled, offline, public-domain Natural Earth 1:10m land basemap (issues #295, #411, #731) as a headless, Mapsui-free source of land geometry.

public static class NaturalEarthBasemap
Inheritance
NaturalEarthBasemap
Inherited Members

Remarks

This is the single source of land geometry for the headless render paths and the interactive viewer. The embedded asset (Assets/Basemap/ne_10m_land.bin, built by tools/BuildBasemap/BuildBasemap.cs) holds the full-resolution Natural Earth land plus coarser simplifications of it, each a LandLevel already projected to EPSG:3857 and cut into tiles. A renderer picks a level for its scale with SelectLevel(double) and draws only the tiles in view, so a harbour-scale view gets the full detail while a world view draws a few tens of thousands of points.

The land is filled with a muted, parchment-like tone (LandFill = 238,232,220) — the same colour the viewer's offline basemap uses — with no outline. Ops carry no scale-visibility limits so the basemap draws at every fitted scale.

Fields

LandFill

Land fill — a muted, parchment-like tone drawn over the chart's water back-colour. Matches the interactive viewer's offline basemap fill.

public static readonly RgbaColor LandFill

Field Value

RgbaColor

Properties

Levels

The levels of detail, coarsest first; the last is the full-resolution Natural Earth land. Empty if the embedded asset is missing.

public static IReadOnlyList<LandLevel> Levels { get; }

Property Value

IReadOnlyList<LandLevel>

Methods

GetLandPolygons(double, double, double, double, double)

The land polygons for an EPSG:3857 rectangle drawn at metresPerPixel: those of every tile of the SelectLevel(double) level that intersects the rectangle.

public static IReadOnlyList<LandPolygon> GetLandPolygons(double minX, double minY, double maxX, double maxY, double metresPerPixel)

Parameters

minX double
minY double
maxX double
maxY double
metresPerPixel double

Returns

IReadOnlyList<LandPolygon>

GetLandScene(Viewport)

The land in viewport, at a level of detail matching its pixel size, lowered to a VectorScene of parchment-filled AreaPaintOps, suitable for drawing beneath chart layers via SkiaDisplayListRenderer.RenderOnto or a VectorCompositeLayer against that same viewport.

public static VectorScene GetLandScene(Viewport viewport)

Parameters

viewport Viewport

Returns

VectorScene

Remarks

A viewport reaching past ±180° (e.g. one fitted to a dataset kept in a 0…360 longitude frame, such as the NIC Arctic S-411 product) also gets the land of the adjacent world copies, offset by one Circumference, as the viewer's basemap does.

SelectLevel(double)

Picks the coarsest level whose Tolerance is no more than one pixel, so the simplified coastline is never off by more than a pixel; below the finest tolerance, the full-resolution level.

public static LandLevel? SelectLevel(double metresPerPixel)

Parameters

metresPerPixel double

EPSG:3857 metres per output pixel.

Returns

LandLevel