: Public <<featureType>> Class
Created: 02/05/2012 11:43:49 AM
Modified: 01/05/2016 12:24:20 AM
Project:
Advanced:
A report of observed and trend forecast weather phenomenon from the surface near an aerodrome.  This is a shared superclass for METAR and SPECI reports, which have identical reported information.<br/>
Attribute
Public MeteorologicalAerodromeReportStatus
  status
Details:
xsdAsAttribute=true
Notes: The report status (e.g., normal, corrected)<br/>
Public Boolean
  automatedStation
Details:
xsdAsAttribute=true
Notes: When true, this report was reported by an automated station.<br/>
Public OM_Observation
  observation
Details:
sequenceNumber=1
Notes: The observation which resulted in the current meteorological conditions at an aerodrome<br/>
Public OM_Observation
  trendForecast
Details:
sequenceNumber=2
Notes: The process that results in a trend forecast.  When no change is expected to occur during a forecast period ("NOSIG") this is indicated by a single missing trend forecast with a nil reason of noSignificantChange<br/>
Tag Value
byValuePropertyType false
Details:
Values: true | false
Default: false
Description: Create a property type that requires that the instance is encoded inline (applies to ISO 19136:2007 encoding rule).
isCollection false
Details:
Values: true | false
Default: false
Description: Identifies the feature type as a feature collection.
noPropertyType false
Details:
Values: true | false
Default: false
Description: Surpress creation of a standard property type that supports inline or by-reference encoding (applies to ISO 19136:2007 encoding rule).
Constraint Type Status
if( status == MISSING ) observation.result includes nilReason AND automatedStation == NULL AND trendForecast == NULL Invariant Approved
Details:
Pattern ID: METAR_SPECI.MAORep1<br/>Description: Missing reports only include identifying information (time, aerodrome) and no other information<br/>Assertion: (if(@status eq 'MISSING') then( exists(iwxxm:observation//om:result/@nilReason) and ((empty(@automatedStation) or (@automatedStation eq 'false')) and empty(iwxxm:trendForecast)) ) else(true()))<br/>
if( observation.result.cloud == NULL AND observation.result.cloud.nilReason.endsWith( "notDetectedByAutoSystem" ) automatedStation == true Invariant Approved
Details:
Pattern ID: METAR_SPECI.MAORep2<br/>Description: When no clouds are detected by the auto system, this report must be an auto report<br/>Assertion: (if( empty(iwxxm:observation//iwxxm:cloud/iwxxm:AerodromeObservedClouds) and ends-with(iwxxm:observation//iwxxm:cloud/@nilReason, 'notDetectedByAutoSystem') ) then(@automatedStation eq 'true') else(true()))<br/>
self.observation.featureOfInterest.sampledFeature.oclIsKindOf(Aerodrome) Invariant Approved
Details:
Pattern ID: METAR_SPECI.MAORep3<br/>Description: The sampled feature for a METAR/SPECI observation is an aerodrome<br/>Assertion: (((exists(//om:OM_Observation/om:featureOfInterest//sf:sampledFeature/aixm:AirportHeliport)) or (contains(string(//om:OM_Observation/om:featureOfInterest//sf:sampledFeature/@xlink:href), 'aerodrome')) )  and  ( if(exists(//om:OM_Observation/om:featureOfInterest/@xlink:href)) then(concat( '#', //om:OM_Observation//sams:SF_SpatialSamplingFeature/@gml:id ) = //om:OM_Observation/om:featureOfInterest/@xlink:href) else(true())))<br/>
self.observation.result.oclIsKindOf( MeteorologicalAerodromeObservationRecord) Invariant Approved
Details:
Pattern ID: METAR_SPECI.MAORep4<br/>Description: The result of a METAR/SPECI observation should be a MeteorologicalAerodromeObservationRecord<br/>Assertion: (if(empty(om:result/@nilReason) and exists(iwxxm:observation)) then(not(exists(iwxxm:observation//om:result/*[name() != 'iwxxm:MeteorologicalAerodromeObservationRecord']))) else(true()))<br/>
self.trendForecast.result.oclIsKindOf( MeteorologicalAerodromeTrendForecastRecord) Invariant Approved
Details:
Pattern ID: METAR_SPECI.MAORep5<br/>Description: The result of a METAR/SPECI trendForecast should be a MeteorologicalAerodromeTrendForecastRecord<br/>Assertion: (if(exists(iwxxm:trendForecast)) then(not(exists(iwxxm:trendForecast//om:result/*[name() != 'iwxxm:MeteorologicalAerodromeTrendForecastRecord']))) else(true()))<br/>
self.observation.featureOfInterest.sampledFeature == self.trendForecast.featureOfInterest.sampledFeature Invariant Approved
Details:
Pattern ID: METAR_SPECI.MAORep6<br/>Description: The sampled feature should be equal in observation and trendForecast<br/>Assertion: (empty(distinct-values(for $trend-forecast in //iwxxm:trendForecast return((deep-equal(//iwxxm:observation/om:OM_Observation/om:featureOfInterest//sf:sampledFeature,$trend-forecast/om:OM_Observation/om:featureOfInterest//sf:sampledFeature))or(concat('#', //iwxxm:observation/om:OM_Observation/om:featureOfInterest/sams:SF_SpatialSamplingFeature/@gml:id)=$trend-forecast/om:OM_Observation/om:featureOfInterest/@xlink:href)))[.=false()]))<br/>
Object Type Connection Direction Notes
«featureType» SPECI Class Generalization From  
«featureType» METAR Class Generalization From