Table of Contents

Class ChartCheck

Namespace
EncDotNet.S100.Navigation
Assembly
EncDotNet.S100.Navigation.dll

The chart check, built into RouteChecker: where the route's track crosses land or drying ground, where either reaches into the corridor between its cross-track limits, and where it leaves the loaded charts (#888, #954), over Charts. When ChecksDepths it also checks charted dangers and the safety contour and depth (#955), judging each leg's dangers against that leg's keel when it has a draft.

public sealed class ChartCheck : IRouteCheck<ChartCheckResult>, IRouteCheck
Inheritance
ChartCheck
Implements
Inherited Members

Remarks

Skipped without charts (ChartsMissing). Without a safety contour and safety depth it runs only in part (SafetySettingsMissing): land, drying ground and coverage are checked; depths and dangers aren't.

Each leg is swept by cross-sections every StationSpacingMeters, each reaching from the port limit to the starboard limit. Where the track itself crosses an area or a coastline, the crossing is found exactly, between cross-sections; an area that only reaches into the corridor is found at the cross-sections it touches.

Where cells overlap, only the finest cell counts (#947): a feature is used at a place only when its cell is in the finest band (by CellScaleRanking) of the cells whose coverage contains that place. So a coarse cell's generalised land doesn't fire where a finer cell charts water, matching what the display shows. The S-102 safety-contour check reads only the S-102 surfaces of Depth (SampleBathymetry(GeoPosition)).

Findings are RouteFindings in the Chart and Depth categories (and Data for coverage), with their text rendered by Formatter. Consecutive crossings of the same kind are merged into one finding, so adjacent depth areas that both dry make a single "Crosses drying ground"; its feature is the one at the start of the span.

Its findings don't depend on time, so it keeps the last result and reuses it while the legs, the depth settings, the corridor override, the options and the sources are unchanged: changing only the departure doesn't sweep the charts again. Its Detail is the ChartCheckResult.

This is an aid for exploring the data. It isn't for navigation.

Fields

CheckName

The check's Name.

public const string CheckName = "chart"

Field Value

string

Properties

Name

The check's name in the report, such as "chart" or "clearance".

public string Name { get; }

Property Value

string

Methods

Run(RouteCheckContext, CancellationToken)

Runs the check.

public RouteCheckOutcome<ChartCheckResult> Run(RouteCheckContext context, CancellationToken cancellationToken = default)

Parameters

context RouteCheckContext

The plan, settings, sources and shared track.

cancellationToken CancellationToken

Cancels the check.

Returns

RouteCheckOutcome<ChartCheckResult>

The findings and the check's own result, or why the check was skipped.

Exceptions

ArgumentOutOfRangeException

StationSpacingMeters isn't positive, or MaxStationsPerLeg is less than 2.