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
Properties
Name
The check's name in the report, such as "chart" or "clearance".
public string Name { get; }
Property Value
Methods
Run(RouteCheckContext, CancellationToken)
Runs the check.
public RouteCheckOutcome<ChartCheckResult> Run(RouteCheckContext context, CancellationToken cancellationToken = default)
Parameters
contextRouteCheckContextThe plan, settings, sources and shared track.
cancellationTokenCancellationTokenCancels 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.