Interface IDepthAdjustment
A water level to add to charted depths across the chart (S-98 Appendix D,
water level adjustment). A depth processor that honours it portrays
d + h instead of the charted d wherever At(double, double, int?)
gives an h, and the charted depth everywhere else.
public interface IDepthAdjustment
Remarks
Depths are metres below the vertical datum, positive down, and the water
level is metres above it, positive up, so the adjusted depth is
d + h. A negative h makes the water shallower.
The host decides which water level applies and when: the instant on the
Timeline, or the lowest over a period. Processors only read it. See
docs/design/chart-wide-water-level-adjustment.md.
Properties
Footprint
Where a water level is available, before any datum check: the area whose edge the chart draws as the adjusted-area boundary.
IReadOnlyList<CoverageArea> Footprint { get; }
Property Value
Key
What this adjustment applies (its sources, time or period, and datum policy), as a string. Two adjustments with the same key give the same result at every point, so it's safe to use in a memory cache key. It isn't stable across processes and shouldn't go into a disk cache.
string Key { get; }
Property Value
Methods
Accepts(int?)
Whether a charted depth on depthDatum can be
adjusted at all: the datum check alone, without a position.
bool Accepts(int? depthDatum)
Parameters
Returns
At(double, double, int?)
The water level to add to a charted depth on depthDatum
at a point, or null where none applies: outside the
footprint or the data's time range, or on a vertical datum the
adjustment refuses.
DepthAdjustmentSample? At(double latitude, double longitude, int? depthDatum)
Parameters
latitudedoubleLatitude in decimal degrees (WGS-84).
longitudedoubleLongitude in decimal degrees (WGS-84).
depthDatumint?The S-100 vertical datum code of the charted depth, or null when it isn't declared.
Returns
- DepthAdjustmentSample?
The water level to add, or null.