Class S100ForecastScope
- Namespace
- EncDotNet.S100.Collections.Library
- Assembly
- EncDotNet.S100.Collections.dll
A scope of a forecast feed (#685; NOAA's S-111 on AWS, handoff A3): one list of models — water body, code, how often it runs, and the size of one run — with a note on regional models that overlap smaller ones, and how runs download (Shapes: tiles, or one file per model).
public sealed class S100ForecastScope : LibraryCatalogueScope
- Inheritance
-
S100ForecastScope
- Inherited Members
Constructors
S100ForecastScope(Uri, IReadOnlyList<ForecastModel>, Func<Uri, IReadOnlyList<ForecastModel>, CancellationToken, Task<IReadOnlyList<ForecastModelSummary>>>, TimeProvider?)
Creates a scope of the feed at catalogUri.
public S100ForecastScope(Uri catalogUri, IReadOnlyList<ForecastModel> models, Func<Uri, IReadOnlyList<ForecastModel>, CancellationToken, Task<IReadOnlyList<ForecastModelSummary>>> load, TimeProvider? time = null)
Parameters
catalogUriUriThe feed's URL.
modelsIReadOnlyList<ForecastModel>The feed's models, as its known source lists them.
loadFunc<Uri, IReadOnlyList<ForecastModel>, CancellationToken, Task<IReadOnlyList<ForecastModelSummary>>>Reads each model's latest run.
timeTimeProviderThe clock (whether the forecasts have ended); the system clock when null.
Properties
EverythingSummary
"14 models · 494 MB per round of runs".
public override string EverythingSummary { get; }
Property Value
ForecastEndedNote
"Forecast ended 25.12.2025; no newer run published …" when every model's latest run has ended (handoff A4, the S-104 pilot); otherwise null.
public string? ForecastEndedNote { get; }
Property Value
Groups
One group: the models.
public override IReadOnlyList<LibraryChoiceGroup> Groups { get; }
Property Value
HasShapes
True when there is a download shape to choose (more than one model; S-104's pilot has one, as tiles).
public bool HasShapes { get; }
Property Value
IsLoaded
True once the catalogue has been read.
public override bool IsLoaded { get; }
Property Value
Models
The feed's models.
public IReadOnlyList<LibraryChoice> Models { get; }
Property Value
ScopeSummary
Runs are listed, not downloaded: the summary says so.
public override string ScopeSummary { get; }
Property Value
SelectedShape
The chosen download shape; it applies to every model.
public LibraryResolution SelectedShape { get; set; }
Property Value
SelectionSummary
What the ticked choices (or, with none, the whole catalogue) amount to, e.g. "12 cells · 3 MB".
public override string SelectionSummary { get; }
Property Value
ShapeHint
What the chosen shape means.
public string ShapeHint { get; }
Property Value
Shapes
How runs download: tiles (the default), or one file per model.
public IReadOnlyList<LibraryResolution> Shapes { get; }
Property Value
SingleEntry
The catalogue's only download, when it lists just one (there is nothing to choose); otherwise null.
public override LibraryChoice? SingleEntry { get; }
Property Value
Methods
Build(Guid, string?)
The source the scope describes.
public override CollectionSource Build(Guid id, string? name)
Parameters
idGuidThe new source's id.
namestringThe source's name when everything is included (the catalogue's name); a selection names it after the selection. A manifest source always takes it.
Returns
DescribeSelection()
The ticked water bodies ("Chesapeake Bay, Tampa Bay"), or null for every model.
public override string? DescribeSelection()
Returns
LoadAsync(CancellationToken)
Reads the catalogue and creates its choices.
public override Task<string?> LoadAsync(CancellationToken cancellationToken = default)
Parameters
cancellationTokenCancellationTokenCancels the read.
Returns
PreselectModelsCovering(GeoBounds)
Ticks the models whose tiles reach into area (an S-102
area, handoff B8), leaving out a regional model when a smaller ticked one
already covers the area's tiles.
public void PreselectModelsCovering(GeoBounds area)
Parameters
areaGeoBoundsThe area.