AvXML-1.1-Tutorial-taf-YUDO-2012-08-16T00Z

AvXML 1.1 Tutorial: TAF for fictional airport YUDO
Note: nothing in this page has been adapted for the change from 1.0 to 1.1

This Terminal Aerodrome Forecast (TAF) is intended as an example and does not represent actual forecast conditions.
Original TAF from ICAO Annex 3 Example A5-1
TAF YUDO 160000Z 1606/1624 13005MPS 9000 BKN020
BECMG 1606/1608 SCT015CB BKN020
TEMPO 1608/1612 17006G12MPS 1000 TSRA SCT010CB BKN020
FM161230 15004MPS 9999 BKN020


TAF interpretation
TAF for YUDO fictitious airport 

ISSUED on the 16th of the month (no month and year in the  original message) at 0000 UTC 

VALID from 0600 UTC to 2400 UTC on the 16th of the month; 
surface wind direction 130 degrees; wind speed 5 metres per second; 
visibility 9 kilometres, broken cloud at 600 metres; 

BECOMING between 0600 UTC and 0800 UTC on the 16th of the month,
scattered cumulonimbus cloud at 450 metres and broken cloud at 600 metres; 

TEMPORARILY BETWEEN 0800 UTC and 1200 UTC on the 16th of the month 
surface wind direction 170 degrees; wind speed 6 metres per second gusting to
12 metres per second; 
visibility 1000 metres in a thunderstorm with moderate rain, scattered cumulonimbus cloud
at 300 metres and broken cloud at 600 metres; 

FROM 1230 UTC on the 16th of the month 
surface wind direction 150 degrees; wind speed 4 metres per second; 
visibility 10 kilometres or more; and broken cloud at 600 metres.


Full XML

[+]

XML Namespaces


The following namespaces are used either directly or indirectly in this example:

Description XML Namespace Default namespace prefix
XML Linking Language http://www.w3.org/1999/xlink xlink
OGC GML 3.2.1 http://www.opengis.net/gml/3.2 gml
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 METCE (1.0) http://def.wmo.int/metce/2013 metce
ICAO Simple Aviation Features (1.0) http://icao.int/saf/1.0 saf
ICAO Meteorological Information Exchange Model(1.0) http://icao.int/iwxxm/1.0 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/1.0"
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:saf="http://icao.int/saf/1.0"
xsi:schemaLocation="http://icao.int/iwxxm/1.0 http://schemas.wmo.int/iwxxm/1.0/iwxxm.xsd
http://def.wmo.int/metce/2013 http://schemas.wmo.int/metce/1.0/metce.xsd
http://icao.int/saf/1.0 http://schemas.wmo.int/saf/1.0/saf.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/1.0/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/1.0/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/1.0/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.