Proposed TSML profile for aerodrome forecast and observation timeseries - team-sx/iwxxm-sx GitHub Wiki
NOTE: This page and the TSML profile is still work-in-progress, and is likely to change.
The proposed IWXXM profile of the OGC TimeseriesML 1.3 Standard XML Schemas only includes a subset of the TSML 1.3 elements and types. It also does not import the O&M 2.0 schemas like the official TSML 1.3 schema does.
The retained TSML 1.3 schema sections include:
- timeseriesTVP.xsd (slightly modified, see below)
- timeseriesMetadata.xsd (slightly modified, see below)
The following sections are NOT included:
- timeseriesDR.xsd
- observationProcess.xsd
- monitoringFeature.xsd
- collection.xsd
All changes to the TSML schema files should be backwards-compatible, mostly relaxations of cardinalities and the replacements of the O&M elements.
-
TimeseriesTVP/defaultPointMetadata/PointMetadatamultiplicity Line 101: Laxed multiplicity from1to1..nto allow for separate default point metadata for each of the record fields -
TimeValuePair/metadata/PointMetadatamultiplicity Line 139: Laxed multiplicity from1to1..nto allow for separate point metadata for each of the record fields
- Removed import on O&M Schemas Line 22
- Changed
PointMetadata/relatedObservationfrom om:OM_ObservationPropertyType to gml:FeaturePropertyType Line 95 - Changed
PointMetadata/qualifierfrom swe:QuantityPropertyType to swe:AbstractSimpleComponentPropertyType to accommodate QuantityRanges Line 106 - Changed the type of
TimeseriesMetadata/parameterfrom om:NamedValuePropertyType to tsml:NamedValuePropertyType Line 204 - Borrowed the NameValue from the O&M Schema to provide the content for the
parameterLine 221
These are currently in the iwxxm namespace, but some of them could be candidates for inclusion into the TSML 2.0 XML Schemas.
See tsml-ext.xsd
Provides a mechanism to describe tsml:PointMetadata for a single quantity/observable property item within a record of values by using the optional field and position attributes.
Example:
<iwxxm:FieldSpecificPointMetadata field="windSpeed" position="1">
<tsml:interpolationType xlink:href="http://www.opengis.net/def/timeseries/InterpolationCode/AveragePrec"/>
<tsml:aggregationDuration>PT10M</tsml:aggregationDuration>
<tsml:qualifier>
<swe:Quantity definition="http://preferred.observable-property.registry/windSpeed">
<swe:label>Wind speed</swe:label>
<swe:uom xlink:href="https://unitsofmeasure.org/ucum#m_s" code="m/s"/>
</swe:Quantity>
</tsml:qualifier>
</iwxxm:FieldSpecificPointMetadata>See tsml-ext.xsd
Provides a mechanism to link a tsml:TimeseriesTVP instance to the previous and the next part of a longer timeseries provided in parts using the optional nextPart and the previousPart elements.
Example:
<iwxxm:LinkedTimeseriesTVP gml:id="uuid.1a8e2921-1ffc-41bf-83fb-dabca8be0062">
<tsml:point>
<tsml:MeasurementTVP>
<tsml:time>2001-01-31T00:00:00Z</tsml:time>
<tsml:value uom="m">1.0</tsml:value>
</tsml:MeasureTVP>
</tsml:point>
<tsml:point>
<tsml:MeasurementTVP>
<tsml:time>2001-01-31T00:10:00Z</tsml:time>
<tsml:value uom="m">2.2</tsml:value>
</tsml:MeasurementTVP>
</tsml:point>
...
<iwxxm:nextPart xlink:href="#uuid.d3681490-1791-47cc-b76c-283a58cc76d0" />
</iwxxm:LinkedTimeseriesTVP>See tsml-ext.xsd
A TimeValuePair with the record-like value for each time step. Items in the record value are separated by a whitespace and each are of type sx:anySimpleType.
Example:
<iwxxm:RecordTVP>
<tsml:time>2001-01-31T00:00:00Z</tsml:time>
<iwxxm:value>1.0 110 1.5</iwxxm:value>
</iwxxm:RecordTVP>See tsml-ext.xsd
A TimeValuePair with the record-like range (minimum-maximum) for each time step. Items in the minimum and maximum record value are separated by a whitespace and each are of type sx:anySimpleType.
<iwxxm:RangeRecordTVP>
<tsml:time>2023-05-31T03:00:00Z</tsml:time>
<iwxxm:minimum>10.2 50 http://codes.wmo.int/49-2/CloudAmountReportedAtAerodrome/FEW</iwxxm:minimum>
<iwxxm:maximum>15.2 63 http://codes.wmo.int/49-2/CloudAmountReportedAtAerodrome/SCT</iwxxm:maximum>
</iwxxm:RangeRecordTVP></tsml:point>See tsml-ext.xsd
A TimeValuePair with the statistical distributions of values for record item and each time step. The distribution of values for a described quantity is defined using a set of descriptive statistics (each one is optional):
- mean (list of double)
- median (list of anySimpleType)
- mode (list of anySimpleType)
- variance (list of double)
- standardDeviation (list of double)
- count (list of integer)
- minimum (list of anySimpleType)
- maximum (list of anySimpleType)
- prediction intervals (upper and lower boundaries for any levels 0.0 - 1.0, list of anySimpleType)
Only some of these make sense for probabilistic forecasts, mode and count for example may only be relevant for distributions of statistical samples.
Example:
<iwxxm:DistributionRecordTVP>
<tsml:time>2001-01-31T00:10:00Z</tsml:time>
<iwxxm:mean>2.3 110 4.1</iwxxm:mean>
<iwxxm:predictionIntervalBoundary level="0.95" type="lower">2.2 105 3.5</iwxxm:predictionIntervalBoundary>
<iwxxm:predictionIntervalBoundary level="0.95" type="upper">2.5 113 4.5</iwxxm:predictionIntervalBoundary>
<iwxxm:predictionIntervalBoundary level="0.90" type="lower">2.1 100 3.2</iwxxm:predictionIntervalBoundary>
<iwxxm:predictionIntervalBoundary level="0.90" type="upper">2.6 117 4.8</iwxxm:predictionIntervalBoundary>
<iwxxm:DistributionRecordTVP>These are currently in the iwxxm namespace, but some of them could potentially be candidates for inclusion into the SWE Common XML Schemas, if a new version is released at some point.
See swe-ext.xsd
Defines an observable property (with an optional value) for the statistical distribution of the value of another observable property. This is a sibling level component with SWE Common elements Count, CountRange, Category, CategoryRange, Quantity, QuantityRange, Time, TimeRange, Boolean and Text.
The distribution of values for a described quantity is defined using a set of descriptive statistics (each one is optional):
- mean (double)
- median (anySimpleType)
- mode (anySimpleType)
- variance (double)
- standardDeviation (double)
- count (integer)
- minimum (anySimpleType)
- maximum (anySimpleType)
- prediction intervals (upper and lower boundaries for any levels 0.0 - 1.0, anySimpleType)
Optionally, the element also allows for describing the probability density function (PDF) or the cumulative distribution function (CDF) of the distribution explicitly using the probabilityDensityFunction and the cumulativeDistributionFunction sub-elements. No data model for these are defined however: any XML content for these elements is allowed by the schema.
Example 1 (observable property definition, no value given):
<iwxxm:QuantityProbabilityDistribution>
<swe:label>Probability distribution of predicted wind speed at 10 m height from the surface</swe:label>
<iwxxm:quantity>
<swe:Quantity definition="http://preferred.observable-property.registry/wind/10mWindSpeed">
<swe:label>10 m wind speed</swe:label>
<swe:uom xlink:href="https://unitsofmeasure.org/ucum#m_s" code="m/s"/>
</swe:Quantity>
</iwxxm:quantity>
<iwxxm:distributionType xlink:href="http://uncertml.org/distributions/normal" xlink:title="Normal distribution"/>
</iwxxm:QuantityProbabilityDistribution>Example 2 (stand-alone data entry):
<iwxxm:QuantityProbabilityDistribution>
<swe:label>Probability distribution of predicted wind speed at 10 m height from the surface</swe:label>
<iwxxm:quantity>
<swe:Quantity definition="http://preferred.observable-property.registry/wind/10mWindSpeed">
<swe:label>10 m wind speed</swe:label>
<swe:uom xlink:href="https://unitsofmeasure.org/ucum#m_s" code="m/s"/>
</swe:Quantity>
</iwxxm:quantity>
<iwxxm:distributionType xlink:href="http://uncertml.org/distributions/normal" xlink:title="Normal distribution"/>
<iwxxm:descriptiveStatistics>
<iwxxm:DescriptiveStatistics>
<iwxxm:mean>1.1</iwxxm:mean>
<iwxxm:predictionInterval level="0.95">1.0 1.2</iwxxm:predictionInterval>
</iwxxm:DescriptiveStatistics>
</iwxxm:descriptiveStatistics>
</iwxxm:QuantityProbabilityDistribution>See swe-ext.xsd
An observable property (with an optional value) for a probability of the value of the given other observable property being falling in a given range. The range may also be given only with the lower or the upper limit, thus ranging to infinity (or to some context-dependent implicit limit, such as the absolute zero temperature -273,15 degC) on that side.
The value is always a probability between 0.0 and 1.0.
Example 1 (observable property definition, no value given):
<iwxxm:QuantityValueInRangeProbability>
<swe:label>Probability of 1 hour maximum wind speed exceeding 15.0 m/s</swe:label>
<swe:uom xlink:href="https://qudt.org/vocab/unit/UNITLESS" />
<iwxxm:quantity>
<iwxxm:AggregatedQuantity>
<swe:label>1h maximum wind speed</swe:label>
<swe:uom xlink:href="https://unitsofmeasure.org/ucum#m_s" code="m/s"/>
<iwxxm:baseQuantity>
<swe:Quantity definition="http://preferred.observable-property.registry/wind/10mWindSpeed">
<swe:label>10 m wind speed</swe:label>
<swe:uom xlink:href="https://unitsofmeasure.org/ucum#m_s" code="m/s"/>
</swe:Quantity>
</iwxxm:baseQuantity>
<iwxxm:aggregationFunction xlink:href="http://www.opengis.net/def/timeseries/InterpolationCode/MaxPrec"/>
<iwxxm:aggregationPeriod>PT1H</iwxxm:aggregationPeriod>
</iwxxm:AggregatedQuantity>
</iwxxm:quantity>
<iwxxm:lowerLimit>15.0</iwxxm:lowerLimit>
</iwxxm:QuantityValueInRangeProbability>Example 2 (stand-alone data entry):
<iwxxm:QuantityValueInRangeProbability>
<swe:label>Probability of 1 hour maximum wind speed exceeding 15.0 m/s</swe:label>
<swe:uom xlink:href="https://qudt.org/vocab/unit/UNITLESS" />
<swe:value>0.55</swe:value>
<iwxxm:quantity>
<iwxxm:AggregatedQuantity>
<swe:label>1h maximum wind speed</swe:label>
<swe:uom xlink:href="https://unitsofmeasure.org/ucum#m_s" code="m/s"/>
<iwxxm:baseQuantity>
<swe:Quantity definition="http://preferred.observable-property.registry/wind/10mWindSpeed">
<swe:label>10 m wind speed</swe:label>
<swe:uom xlink:href="https://unitsofmeasure.org/ucum#m_s" code="m/s"/>
</swe:Quantity>
</iwxxm:baseQuantity>
<iwxxm:aggregationFunction xlink:href="http://www.opengis.net/def/timeseries/InterpolationCode/MaxPrec"/>
<iwxxm:aggregationPeriod>PT1H</iwxxm:aggregationPeriod>
</iwxxm:AggregatedQuantity>
</iwxxm:quantity>
<iwxxm:lowerLimit>15.0</iwxxm:lowerLimit>
</iwxxm:QuantityValueInRangeProbability>See swe-ext.xsd
A quantity (observable property with an optional measure value) which has been derived from another observable property by temporal aggregation.
Example:
<iwxxm:AggregatedQuantity>
<swe:label>1h maximum wind speed</swe:label>
<swe:uom xlink:href="https://unitsofmeasure.org/ucum#m_s" code="m/s"/>
<iwxxm:baseQuantity>
<swe:Quantity definition="http://preferred.observable-property.registry/wind/10mWindSpeed">
<swe:label>10 m wind speed</swe:label>
<swe:uom xlink:href="https://unitsofmeasure.org/ucum#m_s" code="m/s"/>
</swe:Quantity>
</iwxxm:baseQuantity>
<iwxxm:aggregationFunction xlink:href="http://www.opengis.net/def/timeseries/InterpolationCode/MaxPrec"/>
<iwxxm:aggregationPeriod>PT1H</iwxxm:aggregationPeriod>
</iwxxm:AggregatedQuantity>See swe-ext.xsd
A quantity (observable property with an optional measure value) which has been derived from one ore more other observable properties. This element is an abstract extension point for concrete derived quantities.
See swe-ext.xsd
A quantity (observable property with an optional measure value) which is based on a more generic quantity, but a result of particular qualification of it, such as sub-setting or spatial offsetting.
Example 1:
<iwxxm:QualifiedQuantity definition="http://preferred.observable-property.registry/wind/10mTailWind">
<swe:label>Tail wind for runway 04L at 10m</swe:label>
<swe:uom xlink:href="https://unitsofmeasure.org/ucum#kn_i" code="kt" />
<iwxxm:baseQuantity>
<swe:Quantity definition="http://preferred.observable-property.registry/wind/windSpeed">
<swe:label>Wind speed</swe:label>
<swe:uom xlink:href="https://unitsofmeasure.org/ucum#kn_i" code="kt" />
</swe:Quantity>
</iwxxm:baseQuantity>
<iwxxm:qualifier>
<swe:Quantity definition="http://preferred.observable-property.registry/trueBearing">
<swe:label>Direction (true bearing)</swe:label>
<swe:uom xlink:href="https://unitsofmeasure.org/ucum#deg" code="deg" />
<swe:value>47.423</swe:value>
</swe:Quantity>
</iwxxm:qualifier>
</iwxxm:QualifiedQuantity>Example 2:
<iwxxm:QualifiedQuantity definition="http://preferred.observable-property.registry/wind/100flWindSpeed">
<swe:label>Wind speed at light level 100</swe:label>
<swe:uom xlink:href="https://unitsofmeasure.org/ucum#M_s" code="m/s" />
<iwxxm:baseQuantity>
<swe:Quantity definition="http://preferred.observable-property.registry/wind/windSpeed">
<swe:label>Wind speed</swe:label>
<swe:uom xlink:href="https://unitsofmeasure.org/ucum#kn_i" code="kt" />
</swe:Quantity>
</iwxxm:baseQuantity>
<iwxxm:qualifier>
<swe:Quantity definition="http://preferred.observable-property.registry/flightLevel">
<swe:label>Flight level</swe:label>
<swe:uom xlink:href="https://qudt.org/vocab/unit/UNITLESS" />
<swe:value>100</swe:value>
</swe:Quantity>
</iwxxm:qualifier>
</iwxxm:QualifiedQuantity>