Class DatasetDiscoveryMetadata
- Namespace
- EncDotNet.S100.ExchangeSets
- Assembly
- EncDotNet.S100.ExchangeSets.dll
Discovery metadata for one dataset in an exchange set — an
S100_DatasetDiscoveryMetadata record (or a product-specific equivalent
such as S102_DatasetDiscoveryMetadata) from the exchange catalogue.
public sealed class DatasetDiscoveryMetadata
- Inheritance
-
DatasetDiscoveryMetadata
- Inherited Members
Remarks
S-100 Part 17. Instances are listed in DatasetDiscoveryMetadata. Use RelativePath (or FetchDatasetAsync(DatasetDiscoveryMetadata, CancellationToken)) to locate the file. Element names below are children of the record. Dates are kept verbatim as the XML text and are not parsed.
Properties
BoundingBox
The dataset's geographic extent (boundingBox), or
null when absent.
public BoundingBox? BoundingBox { get; init; }
Property Value
Classification
The security classification (classification): the
codeListValue attribute of its code-list child when present
(e.g. unclassified), otherwise the element text;
null when absent.
public string? Classification { get; init; }
Property Value
CompressionFlag
true when compressionFlag is true, i.e. the
stored file is ZIP-compressed (S-100 Part 15 §15-5.2); false
when absent or any other value.
public bool CompressionFlag { get; init; }
Property Value
Copyright
public bool Copyright { get; init; }
Property Value
DataCoverages
The dataset's dataCoverage entries, in catalogue order; empty when
there are none.
public IReadOnlyList<DataCoverage> DataCoverages { get; init; }
Property Value
DataProtection
true when dataProtection is true, i.e. the
stored file is encrypted under the Part 15 protection scheme and needs a
permit key to read (see DecryptingAssetSource);
false when absent or any other value.
public bool DataProtection { get; init; }
Property Value
DefaultLocaleCharacterEncoding
The codeListValue of the lan:MD_CharacterSetCode under the
record's defaultLocale, or null when absent.
public string? DefaultLocaleCharacterEncoding { get; init; }
Property Value
DefaultLocaleLanguage
The codeListValue of the lan:LanguageCode under the record's
defaultLocale, or null when absent.
public string? DefaultLocaleLanguage { get; init; }
Property Value
Description
The free-text dataset description (description), or
null when absent.
public string? Description { get; init; }
Property Value
DigitalSignatureAlgorithm
The parsed digital signature algorithm, derived from DigitalSignatureReference.
public DigitalSignatureAlgorithm DigitalSignatureAlgorithm { get; init; }
Property Value
DigitalSignatureReference
The raw digitalSignatureReference value naming the signature
algorithm (e.g. ECDSA, ECDSA-384-SHA2), or
null when absent. The parsed form is
DigitalSignatureAlgorithm.
public string? DigitalSignatureReference { get; init; }
Property Value
DigitalSignatureValue
The digital signature value for this dataset file, if present.
public DigitalSignatureValue? DigitalSignatureValue { get; init; }
Property Value
Remarks
S-100 Edition 5.2.1 Part 15 §15-4.2.
DigitalSignatures
All digital signatures declared for this dataset, in catalogue order.
public IReadOnlyList<DigitalSignatureValue> DigitalSignatures { get; init; }
Property Value
Remarks
S-100 Edition 5.2.1 Part 15 §15-8.8.
EditionNumber
The dataset edition number (editionNumber), or null
when absent or not an integer.
public int? EditionNumber { get; init; }
Property Value
- int?
EncodingFormat
The dataset encoding format (encodingFormat, e.g. ISO/IEC 8211
or HDF5), kept verbatim; null when absent.
public string? EncodingFormat { get; init; }
Property Value
ExpectedHash
The declared cryptographic hash for this dataset file, if the catalogue carries one. Used to integrity-check the file independently of any digital signature.
public CryptographicHash? ExpectedHash { get; init; }
Property Value
Remarks
S-100 Edition 5.2.1 Part 15 §15-8.10, Table 15-12.
FileName
The dataset file name as declared by fileName. Kept verbatim: it may be
a bare name, a full path, or a file:/ URI; see RelativePath
and NormalizeFileName(string).
public required string FileName { get; init; }
Property Value
FilePath
The directory of the dataset file relative to the exchange set
root, as declared by the catalogue's filePath element.
May be null when the file lives at the root or
the path is folded into FileName.
public string? FilePath { get; init; }
Property Value
Remarks
S-100 Edition 5.2.1 Part 17.
IsCancellation
public bool IsCancellation { get; }
Property Value
IsWithdrawal
true when the record withdraws a dataset instead of
delivering one: a cancellation whose file is not an ISO 8211 sequential
file (.000, .001, …).
public bool IsWithdrawal { get; }
Property Value
Remarks
Producers of GML and HDF5 products list a withdrawn dataset as a
cancellation record and usually ship no file for it (e.g. AMSA's
S-124 navigational warnings). An S-101 cancellation is an update file
(edition 0) that is applied to its base cell, so it is not a withdrawal.
IssueDate
The dataset issue date (issueDate), kept verbatim (typically
YYYY-MM-DD); null when absent.
public string? IssueDate { get; init; }
Property Value
MetadataDateStamp
The date the discovery metadata was produced (metadataDateStamp),
kept verbatim; null when absent.
public string? MetadataDateStamp { get; init; }
Property Value
NavigationPurpose
The navigation purpose (navigationPurpose, e.g. port,
transit or overview), kept verbatim; null when absent.
public string? NavigationPurpose { get; init; }
Property Value
NotForNavigation
public bool NotForNavigation { get; init; }
Property Value
ProducingAgency
The producing agency name, read from
producingAgency/cit:CI_Responsibility/cit:party/cit:CI_Organisation/cit:name;
null when absent.
public string? ProducingAgency { get; init; }
Property Value
ProductSpecification
The product specification the dataset conforms to
(productSpecification), or null when absent.
public ProductSpecification? ProductSpecification { get; init; }
Property Value
Purpose
The dataset purpose (purpose, e.g. newDataset, newEdition,
update), kept verbatim; null when absent.
Spelling varies between producers (e.g. new, new edition),
so compare tolerantly.
public string? Purpose { get; init; }
Property Value
RelativePath
The source-relative path of the dataset file, combining FilePath and FileName and normalizing separators. This is the path to pass to an IAssetSource. Computed by ResolveRelativePath(string?, string).
public string RelativePath { get; }
Property Value
SpecificUsage
The intended usage text from specificUsage/mri:MD_Usage/mri:specificUsage,
or null when absent.
public string? SpecificUsage { get; init; }
Property Value
UpdateApplicationDate
The update application date (updateApplicationDate), kept verbatim;
null when absent.
public string? UpdateApplicationDate { get; init; }
Property Value
UpdateNumber
The dataset update number (updateNumber), or null
when absent or not an integer.
public int? UpdateNumber { get; init; }
Property Value
- int?
Methods
ResolveBoundingBox()
The dataset's geographic extent: its own BoundingBox, or else the union of its DataCoverages' bounding boxes; null when the catalogue gives neither.
public BoundingBox? ResolveBoundingBox()
Returns
Remarks
Some catalogues declare the box only inside dataCoverage. The
union assumes the coverages do not cross the antimeridian.
ResolveMaximumDisplayScale()
The most-permissive finest display-scale denominator across all DataCoverages — the smallest MaximumDisplayScale present — or null when no coverage declares one.
public int? ResolveMaximumDisplayScale()
Returns
- int?
Remarks
This is the most zoomed-in edge of the cell's intended scale band
(S-100 Part 17; S-101 FC §3.1.1 DataCoverage.maximumDisplayScale).
Carried for completeness; the zoom-in cutoff it would drive is deferred
to the coverage-clipping work (issue #438 Phase 2) because a naive
whole-cell cutoff would leave holes outside finer cells' footprints.
An inverted per-coverage pair is normalised first (see
FromDeclared(int?, int?)).
ResolveMinimumDisplayScale()
The most-permissive coarsest display-scale denominator across all DataCoverages — the largest MinimumDisplayScale present — or null when no coverage declares one.
public int? ResolveMinimumDisplayScale()
Returns
- int?
Remarks
This is the most zoomed-out edge of the cell's intended scale band
(S-100 Part 17; S-101 FC §3.1.1 DataCoverage.minimumDisplayScale).
The maximum is taken so detail remains visible wherever any
coverage region still permits it, matching the S-101 in-file
out-of-scale-band resolution. Drives the hole-safe per-cell zoom-out
visibility window (issue #438). An inverted per-coverage pair is
normalised first (see FromDeclared(int?, int?)).