Interface IWaterLevelField
- Namespace
- EncDotNet.S100.Navigation
- Assembly
- EncDotNet.S100.Navigation.dll
The water level to apply across an area, for one time or period: the model the pick report, and later the chart, read, built on the same IWaterLevelSource and series rule as the passage check so the three give one answer for a point and time.
public interface IWaterLevelField
Remarks
At a point the most preferred series from Locate(GeoPosition) whose time range covers the time (or the whole period) is used. When a depth datum is given, a series whose datum is known to differ is skipped in favour of a later one that covers too, as the passage check does. Times outside a series' range are never clamped to its first or last step.
Implementations must be safe to call from several threads at once.
Properties
Basis
What the field applies: the time or period, and the datasets.
WaterLevelBasis Basis { get; }
Property Value
Footprint
The areas where the field can apply, in WGS-84, for the adjusted-area boundary. Empty when the source can't describe them.
IReadOnlyList<CoverageArea> Footprint { get; }
Property Value
Methods
Resolve(GeoPosition, int?)
The water level at a point for a depth on depthDatum,
with the reason when none applies.
WaterLevelAtPoint Resolve(GeoPosition position, int? depthDatum)
Parameters
positionGeoPositionThe point, in WGS-84.
depthDatumint?The charted depth's vertical datum as an S-100 code, or
nullwhen it isn't declared.
Returns
- WaterLevelAtPoint
The outcome.
Sample(GeoPosition)
The water level to apply at a point, or null where none
applies. No depth datum is compared; use Resolve(GeoPosition, int?) to
compare one.
AppliedWaterLevel? Sample(GeoPosition position)
Parameters
positionGeoPositionThe point, in WGS-84.
Returns
- AppliedWaterLevel?
The water level, or
null.