Table of Contents

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

catalogUri Uri

The feed's URL.

models IReadOnlyList<ForecastModel>

The feed's models, as its known source lists them.

load Func<Uri, IReadOnlyList<ForecastModel>, CancellationToken, Task<IReadOnlyList<ForecastModelSummary>>>

Reads each model's latest run.

time TimeProvider

The 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

string

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

string

Groups

One group: the models.

public override IReadOnlyList<LibraryChoiceGroup> Groups { get; }

Property Value

IReadOnlyList<LibraryChoiceGroup>

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

bool

IsLoaded

True once the catalogue has been read.

public override bool IsLoaded { get; }

Property Value

bool

Models

The feed's models.

public IReadOnlyList<LibraryChoice> Models { get; }

Property Value

IReadOnlyList<LibraryChoice>

ScopeSummary

Runs are listed, not downloaded: the summary says so.

public override string ScopeSummary { get; }

Property Value

string

SelectedShape

The chosen download shape; it applies to every model.

public LibraryResolution SelectedShape { get; set; }

Property Value

LibraryResolution

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

string

ShapeHint

What the chosen shape means.

public string ShapeHint { get; }

Property Value

string

Shapes

How runs download: tiles (the default), or one file per model.

public IReadOnlyList<LibraryResolution> Shapes { get; }

Property Value

IReadOnlyList<LibraryResolution>

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

LibraryChoice

Methods

Build(Guid, string?)

The source the scope describes.

public override CollectionSource Build(Guid id, string? name)

Parameters

id Guid

The new source's id.

name string

The 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

CollectionSource

DescribeSelection()

The ticked water bodies ("Chesapeake Bay, Tampa Bay"), or null for every model.

public override string? DescribeSelection()

Returns

string

LoadAsync(CancellationToken)

Reads the catalogue and creates its choices.

public override Task<string?> LoadAsync(CancellationToken cancellationToken = default)

Parameters

cancellationToken CancellationToken

Cancels the read.

Returns

Task<string>

Why the catalogue could not be read, or null when it was.

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

area GeoBounds

The area.