Class FeatureAccessor
Extracts a queryable feature collection from a LoadedDataset as IS100Feature instances. Every GML-encoded S-100 spec implemented in this codebase models its features as IS100Feature directly; the ISO 8211-encoded S-101 exposes the same shape through its pipeline Feature records (which implement IS100Feature), and CAP weather warnings expose each area as a surface feature. A single accessor — rather than per-spec strategies — therefore powers generic feature-query tools.
public static class FeatureAccessor
- Inheritance
-
FeatureAccessor
- Inherited Members
Remarks
Returns null for catalog entries that carry no queryable vector
features (the coverage products S-102 / S-104 / S-111). Callers should
treat null as "this spec does not contribute to feature queries".
Methods
GetFeatures(LoadedDataset)
Returns the queryable features for the supplied dataset, or
null if the dataset's payload is not a vector feature
collection.
public static IEnumerable<IS100Feature>? GetFeatures(LoadedDataset dataset)
Parameters
datasetLoadedDataset
Returns
Remarks
For S-101 the features are resolved lazily on enumeration via S101VectorSource, which materialises feature geometry from the dataset's spatial records as pipeline Feature instances that already satisfy IS100Feature.
GetFeatures(LoadedDataset, BoundingBox?)
Returns the features intersecting extent, or
every feature when extent is
null. Same null-semantics as the parameterless
overload: returns null for datasets whose payload is not
a vector feature collection.
public static IEnumerable<IS100Feature>? GetFeatures(LoadedDataset dataset, BoundingBox? extent)
Parameters
datasetLoadedDatasetextentBoundingBox
Returns
Remarks
When the underlying source implements
IVectorSourceWithIndex
(currently just S-101), an extent query is answered by the
source's spatial index — sub-linear in dataset size. GML-encoded
products fall back to iterating their model's
Features collection and filtering by
TryGetBoundingBox(IS100Feature)
against extent; adding a per-product index is
a follow-up scoped separately from issue #490.