Class NaturalEarthBasemap
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
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
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
Returns
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
viewportViewport
Returns
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
metresPerPixeldoubleEPSG:3857 metres per output pixel.