IWXXM-2-Tutorial-taf-YUDO-2012-08-16T00Z
Tutorial:
TAF for fictional airport YUDO
This
Terminal Aerodrome Forecast (TAF) is intended as an example and does not
represent actual forecast conditions.
XML Namespaces
The following namespaces are used either directly or indirectly in this
example:
Description |
XML Namespace |
Default namespace prefix |
XML Schema |
http://www.w3.org/2001/XMLSchema |
xsd |
XML Linking Language |
http://www.w3.org/1999/xlink |
xlink |
OGC GML 3.2.1 |
http://www.opengis.net/gml/3.2 |
gml |
ISO/TS 19139:2007 metadata XML schema implementation |
http://www.isotc211.org/2005/gmd |
gmd |
OGC OMXML Observations and Measurements |
http://www.opengis.net/om/2.0 |
om |
OGC OMXML Sampling Features |
http://www.opengis.net/sampling/2.0 |
sf |
OGC OMXML Spatial Sampling Features |
http://www.opengis.net/samplingSpatial/2.0 |
sams |
WMO Observable Property Model(1.2) |
http://def.wmo.int/opm/2013 |
opm |
WMO METCE (1.2) |
http://def.wmo.int/metce/2013 |
metce |
ICAO Meteorological Information Exchange Model (2.1) |
http://icao.int/iwxxm/2.1 |
iwxxm |
Note that the XML Namespace is distinct from the schema locations. For
reference, these are provided here.
Overview: the TAF
report
The XML-encoded TAF has a root element <iwxxm:TAF> within which the XML Namespace information
is declared.
The <iwxxm:TAF>
element encodes a TAF forecast. Status is included as an attribute. The status
attribute takes on the value "NORMAL" in this example. Other values
include "AMENDMENT", "CANCELLATION",
"CORRECTION", and "MISSING". In this example, the TAF
contains an issueTime element, a validTime
element, a single baseForecast element, and three changeForecast elements.
The code fragment below shows the XML Namespace declarations plus the basic
structure of this TAF report.
Overall
structure of TAF report
<iwxxm:TAF xmlns:iwxxm="http://icao.int/iwxxm/2.1"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:om="http://www.opengis.net/om/2.0"
xmlns:sams="http://www.opengis.net/samplingSpatial/2.0"
xmlns:metce="http://wmo.int/metce/2013"
xmlns:sf="http://www.opengis.net/sampling/2.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aixm="http://www.aixm.aero/schema/5.1.1"
xsi:schemaLocation="http://icao.int/iwxxm/2.1 http://schemas.wmo.int/iwxxm/2.1/iwxxm.xsd
http://def.wmo.int/metce/2013 http://schemas.wmo.int/metce/1.2/metce.xsd
gml:id="taf-YUDO-201208160000Z"
status="NORMAL">
<iwxxm:issueTime>...</iwxxm:issueTime>
<!The time at which this TAF is intended to be used >
<iwxxm:validTime>...</iwxxm:validTime>
<iwxxm:baseForecast>...</iwxxm:baseForecast>
<iwxxm:changeForecast>...</iwxxm:changeForecast>
<iwxxm:changeForecast>...</iwxxm:changeForecast>
<iwxxm:changeForecast>...</iwxxm:changeForecast>
</iwxxm:TAF>
As in the METAR example presented elsewhere on this site, XML attribute gml:id is provided. All instances
of this attribute within a given document must be unique. Furthermore, we
recommend that the gml:id
for the report itself is globally unique, comprising of
{report-type}-{aerodrome-identifier}-{issue-time}. The issue time should be
provided in ISO 8601 format.
The "Observation Structure" section of the tutorial for METAR also
includes a thorough discussion of the Observations and Measurements (O&M)
Model and its application to meteorological observations and forecasts. This is
important background to understanding the <iwxxm:issueTime> and <iwxxm:validTime>
elements. The element <iwxxm:issueTime>
is used to encode the group YYGGggZ that is used in
the Traditional Alphanumeric Code (TAC) for TAF "to report the date and
time of origin of forecast."
The element <iwxxm:validTime>
might be confusing to some, and it might be confused with <om:phenomenonTime>. The element <iwxxm:validTime> is derived from <om:validTime>, and it is defined by ISO 19156:2011
"Geographic information — Observations and measurements" to be
"the time period during which the result is intended to be used." In other words, when the forecast is valid for use. The
element <om:phenomenonTime>
is defined to be "the time that the result (6.2.2.9) applies to the
property of the feature-of-interest (6.2.2.7)." For a METAR, this can be
described as when the weather happened. For a TAF, this can be described as
when the weather is forecast to happen.
Meteorological
Aerodrome Forecast
As mentioned above, the example TAF includes one instance of <iwxxm:baseForecast> and three
instances of <iwxxm:changeForecast>. All four
of these elements include a single instance of <om:OM_Observation>. The semantics of both the base
forecast and change forecast are specified within the controlled register at
http://codes.wmo.int, and can be discovered at http://codes.wmo.int/49-2/observation-type/IWXXM/2.1/MeteorologicalAerodromeForecast.
The element <om:type>
declares this relationship.
As described above, the element <om:pheonomenonTime>
is used to provide information about the temporal domain of the forecast. When
used within <iwxxm:baseForecast>,
<om:phenomenonTime> spans the entire valid time
of the TAF. When used within <iwxxm:changeForecast>,
however, <om:phenomenonTime> is limited to the
portion of the forecast covered by the change group.
The element <om:resultTime>
should always match the issuance time of the TAF. Applying the O&M model to
the specific case of a TAF, the procedure is the action of the forecaster (some
combination of thinking and typing, perhaps), the valid time is the valid
period of the TAF, the feature of interest is the aerodrome, and the result is
the forecast of values.
The example illustrates one key difference between <iwxxm:baseForecast> and <iwxxm:changeForecast>.
That is the attribute changeIndicator. This, of
course, takes on the familiar values "BECOMING",
"TEMPORARY_FLUCTUATIONS", "FROM", etc. The code fragment
below illustrates the commonalities shared by <iwxxm:baseForecast> and <iwxxm:changeForecast>.
Commonalities
shared by baseForecast and changeForecast
<iwxxm:baseForecast>
<om:OM_Observation gml:id="bf-1">
<om:type xlink:href="http://codes.wmo.int/49-2/observation/type/IWXXM/2.1/MeteorologicalAerodromeForecast"
xlink:title="Aerodrome Forecast"/>
<om:phenomenonTime xlink:href="#tp-201208160600-201208170000"/>
<!resultTime is always the issueTime of the TAF >
<om:resultTime xlink:href="#ti-201208160000Z"/>
<!...>
<om:validTime xlink:href="#tp-201208160600-201208170000"/>
<om:procedure>...</om:procedure>
<om:observedProperty xlink:href="http://codes.wmo.int/49-2/observable-property/
MeteorologicalAerodromeForecast" xlink:title="TAF forecast properties"/>
<om:featureOfInterest>...</om:featureOfInterest>
<om:result>...</om:result>
</om:OM_Observation>
</iwxxm:baseForecast>
<iwxxm:changeForecast>
<om:OM_Observation gml:id="cf-1">
<om:type xlink:href="http://codes.wmo.int/49-2/observation-type/
IWXXM/2.1/MeteorologicalAerodromeForecast" xlink:title="Aerodrome Forecast"/>
<om:phenomenonTime>...</om:phenomenonTime>
<!resultTime is always the issueTime of the TAF >
<om:resultTime xlink:href="#ti-201208160000Z"/>
<!...>
<om:validTime xlink:href="#tp-201208160600-201208170000"/>
<om:procedure xlink:href="#p-49-2-taf" xlink:title="WMO 49-2 TAF"/>
<om:observedProperty xlink:href="http://codes.wmo.int/49-2/observable-property/
MeteorologicalAerodromeForecast" xlink:title="TAF forecast properties"/>
<om:featureOfInterest xlink:href="#sampling-point-03839"/>
<om:result>...</om:result>
</om:OM_Observation>
</iwxxm:changeForecast>
<iwxxm:changeForecast>...</iwxxm:changeForecast>
<iwxxm:changeForecast>...</iwxxm:changeForecast>
Observation result:
Meteorological Aerodrome Forecast Record
As described in the METAR tutorial, the observation result is the main part of
the TAF; it provides the data values for the forecast properties. The result is
constrained to be an instance of MeteorologicalAerodromeForecastRecord.
MeteorologicalAerodromeForecastRecord has been
designed with the explicit intention to allow provision of the information
required to meet ICAO Annex 3 / WMO No. 49 Volume 2 regulation. As with the
sampling point, IWXXM relies on rule-based validation (e.g. schematron)
to validate this constraint; XML Schema will not enforce this constraint.
The code fragment below provides the XML-encoding of the result for the second
instance of <iwxxm:changeForecast>.
This models the line "TEMPO 1608/1612 17006G12MPS 1000 TSRA SCT010CB
BKN020" from the example TAF. Arguably, this is the most interesting
portion.
Encoding
of the result
<om:result>
<iwxxm:MeteorologicalAerodromeForecastRecord gml:id="change-fcst-record-2"
changeIndicator="TEMPORARY_FLUCTUATIONS" cloudAndVisibilityOK="false">
<iwxxm:prevailingHorizontalVisibility uom="m">1000</iwxxm:prevailingHorizontalVisibility>
<iwxxm:surfaceWind>
<iwxxm:AerodromeSurfaceWindForecast variableWindDirection="false">
<iwxxm:meanWindDirection uom="deg">170</iwxxm:meanWindDirection>
<iwxxm:meanWindSpeed uom="m/s">6</iwxxm:meanWindSpeed>
<iwxxm:windGustSpeed uom="m/s">12</iwxxm:windGustSpeed>
</iwxxm:AerodromeSurfaceWindForecast>
</iwxxm:surfaceWind>
<iwxxm:weather xlink:href="http://codes.wmo.int/306/4678/TSRA"
xlink:title="Thunderstorm with precipitation of rain"/>
<iwxxm:cloud>
<iwxxm:AerodromeCloudForecast gml:id="acf3">
<iwxxm:layer>
<iwxxm:CloudLayer>
<iwxxm:cloudType xlink:href="http://codes.wmo.int/bufr4/codeflag/0-20-012/9"
xlink:title="Cumulonimbus"/>
<iwxxm:amount xlink:href="http://codes.wmo.int/bufr4/codeflag/0-20-008/2"
xlink:title="Scattered"/>
<iwxxm:base uom="m">300</iwxxm:base>
</iwxxm:CloudLayer>
</iwxxm:layer>
<iwxxm:layer>
<iwxxm:CloudLayer>
<iwxxm:amount xlink:href="http://codes.wmo.int/bufr4/codeflag/0-20-008/3"
xlink:title="Broken"/>
<iwxxm:base uom="m">600</iwxxm:base>
</iwxxm:CloudLayer>
</iwxxm:layer>
</iwxxm:AerodromeCloudForecast>
</iwxxm:cloud>
</iwxxm:MeteorologicalAerodromeForecastRecord>
</om:result>
Looking in detail, we see:
Attributes
changeIndicator="TEMPORARY_FLUCTUATIONS" cloudAndVisibilityOK="false">
- The change indicator (i.e., attribute changeIndicator) is TEMPO
- CAVOK (e.g. attribute cloudAndVisibilityOK)
is false
Visibility
<iwxxm:prevailingHorizontalVisibility uom="m">1000</iwxxm:prevailingHorizontalVisibility>
- Prevailing horizontal visibility is forecast to be 1000
meters. (See the METAR tutorial for an explanation of units of measure.)
Surface
Wind
<iwxxm:surfaceWind>
<iwxxm:AerodromeSurfaceWindForecast variableWindDirection="false">
<iwxxm:meanWindDirection uom="deg">170</iwxxm:meanWindDirection>
<iwxxm:meanWindSpeed uom="m/s">6</iwxxm:meanWindSpeed>
<iwxxm:windGustSpeed uom="m/s">12</iwxxm:windGustSpeed>
</iwxxm:AerodromeSurfaceWindForecast>
</iwxxm:surfaceWind>
The class <iwxxm:surfaceWind>
is used both for METAR and TAF.
- Wind direction is not forecast to be variable
- The mean wind direction is forecast to be 170 degrees
(measured from true north) - The mean wind speed is forecast to be 6 meters per
second with gusts to 12 meters per second
Weather
<iwxxm:weather xlink:href="http://codes.wmo.int/306/4678/TSRA"
xlink:title="Thunderstorm with precipitation of rain"/>
- A thunderstorm with rain is forecast
The METAR tutorial provides substantial detail on the registry that hosts these
codes and
the technique used in the schema to designate the vocabulary used.
Cloud
<iwxxm:cloud>
<iwxxm:AerodromeCloudForecast gml:id="acf3">
<iwxxm:layer>
<iwxxm:CloudLayer>
<iwxxm:cloudType xlink:href="http://codes.wmo.int/bufr4/codeflag/0-20-012/9"
xlink:title="Cumulonimbus"/>
<iwxxm:amount xlink:href="http://codes.wmo.int/bufr4/codeflag/0-20-008/2"
xlink:title="Scattered"/>
<iwxxm:base uom="m">300</iwxxm:base>
</iwxxm:CloudLayer>
</iwxxm:layer>
<iwxxm:layer>
<iwxxm:CloudLayer>
<iwxxm:amount xlink:href="http://codes.wmo.int/bufr4/codeflag/0-20-008/3"
xlink:title="Broken"/>
<iwxxm:base uom="m">600</iwxxm:base>
</iwxxm:CloudLayer>
</iwxxm:layer>
</iwxxm:AerodromeCloudForecast>
</iwxxm:cloud>
The class <iwxxm:cloud>
is used in both TAF and METAR, and additional information can be
found in the METAR tutorial.
- A scattered layer of cumulonimbus clouds with base 300
meters is forecast - A broken layer of clouds with base of 600 meters is
also forecast.