报文校验

class tafor.utils.validator.TafParser(message, parse=None, validator=None, **kwargs)

解析 TAF 报文

参数:
  • message – TAF 报文
  • parse – 解析报文的类,默认 TafLexer
  • validator – 验证报文转折关系的类,默认 TafValidator
  • kwargs – 额外参数

使用方法:

p = TafParser('TAF ZJHK 150726Z 150918 03003G10MPS 1600 BR OVC040 BECMG 1112 4000 BR=')
p.validate()

# 报文是否通过验证
p.isValid()

# 报文重新渲染成 HTML 格式,并高亮标注出错误
p.renderer(style='html')
hasMessageChanged()

校验后的报文和原始报文相比是否有变化

isAmended()

报文是否是修订报或者更正报

isValid()

报文是否通过验证

lexerClass

TafLexer 的别名

renderer(style='plain')

将解析后的报文重新渲染

参数:style
  • plain 纯字符串风格
  • terminal 终端高亮风格
  • html HTML 高亮风格
返回:根据不同风格重新渲染的报文
validate()

验证报文转折逻辑

validatorClass

TafValidator 的别名

class tafor.utils.validator.TafLexer(part, grammar=None, **kwargs)

TAF 报文一组要素的解析器

参数:
  • part – 单组主报文 BECMG 或 TEMPO
  • grammar – 解析 TAF 报文的语法类
  • kwargs – 额外参数
class tafor.utils.validator.TafValidator(**kwargs)

根据行业标准验证 TAF 报文单项要素之间的转折

参数:kwargs

额外参数

  • visHas5000=True 开启能见度 5000 的验证
  • cloudHeightHas450=True 开启云高 450 的验证
cavok(vis, weather, cloud)

CAVOK 的转折验证

参数:
  • vis – 能见度
  • weather – 天气现象
  • cloud – 云组
返回:

验证是否通过

cloud(refCloud, cloud)

云的转折验证

  1. 当预报 BKN 或 OVC 云量的最低云层的云高抬升并达到或经过下列一个或多个数值,或降低并经过下列一个或多个数值时:
    • 30 m、60 m、150 m 或 300 m
    • 450 m(在有大量的按目视飞行规则的飞行时)
  2. 当预报低于 450 m 的云层或云块的量的变化满足下列条件之一时:
    • 从 SCT 或更少到 BKN、OVC
    • 从 BKN、OVC 到 SCT 或更少
  3. 当预报积雨云将发展或消失时

垂直能见度的转折验证,垂直能见度可视为一种特殊的云

  1. 当预报垂直能见度上升并达到或经过下列一个或多个数值,或下降并经过下列一个或多个数值时:
    • 30 m、60 m、150 m 或 300 m,编报时对应 VV001、VV002、VV005、VV010
参数:
  • refCloud – 参照云组
  • cloud – 云组
返回:

验证是否通过

vis(refVis, vis)

能见度的转折验证

  1. 当预报主导能见度上升并达到或经过下列一个或多个数值,或下降并经过下列一个或多个数值时:
    • 150 m、350 m、600 m、800 m、1500 m 或 3000 m
    • 5000 m(当有大量的按目视飞行规则的飞行时)
参数:
  • refWind – 参照能见度
  • wind – 能见度
返回:

验证是否通过

weather(refWeather, weather)

天气现象的转折验证

  1. 当预报下列一种或几种天气现象开始、终止或强度变化时:
    • 冻降水
    • 中或大降水(需要时可以包含阵性或非阵性的小雨或小雪)
    • 尘暴
    • 沙暴
  2. 当预报下列一种或几种天气现象开始、终止时:
    • 冻雾
    • 低吹尘、低吹沙或低吹雪
    • 高吹尘、高吹沙或高吹雪
    • 雷暴
    • 漏斗云(陆龙卷或水龙卷)
参数:
  • refWeather – 参照天气现象
  • weather – 天气现象
返回:

验证是否通过

wind(refWind, wind)

风组的转折验证

  1. 当预报平均地面风向的变化大于等于 60°,且平均风速在变化前和(或)变化后大于等于 5m/s 时
  2. 当预报平均地面风速的变化大于等于 5m/s 时
  3. 当预报平均地面风风速变差(阵风)变化 5m/s 或以上,且平均风速在变化前和变化后大于等于 8m/s 时
参数:
  • refWind – 参照风组
  • wind – 风组
返回:

验证是否通过

class tafor.utils.validator.SigmetParser(message, parse=None, grammar=None, **kwargs)

解析 SIGMET 报文

参数:
  • message – SIGMET 报文
  • parse – 解析报文的类,默认 SigmetLexer

使用方法:

p = SigmetParser('ZJSA SIGMET 1 VALID 300855/301255 ZJHK-
                ZJSA SANYA FIR VA ERUPTION MT ASHVAL LOC E S1500 E07348 VA CLD OBS AT 1100Z FL310/450
                APRX 220KM BY 35KM S1500 E07348 - S1530 E07642 MOV ESE 65KMH
                FCST 1700Z VA CLD APRX S1506 E07500 - S1518 E08112 - S1712 E08330 - S1824 E07836=')

# 报文字符是否通过验证
p.isValid()

# 报文重新渲染成 HTML 格式,并高亮标注出错误
p.renderer(style='html')
isValid()

报文是否通过验证

lexerClass

SigmetLexer 的别名

renderer(style='plain')

将解析后的报文重新渲染

参数:style
  • plain 纯字符串风格
  • terminal 终端高亮风格
  • html HTML 高亮风格
返回:根据不同风格重新渲染的报文
class tafor.utils.validator.SigmetLexer(part, firCode=None, airportCode=None, grammar=None, keywords=None, rules=None, isAirmet=False, **kwargs)

SIGMET 报文要素的解析器

参数:
  • part – 单行报文内容
  • grammar – 解析 SIGMET 报文的语法类
  • keywords – SIGMET 报文允许的关键字
  • isFirst – 是否是正文的第一组
  • kwargs – 额外参数