首页> 中国专利> 航空天气报告的解码方法

航空天气报告的解码方法

摘要

本发明涉及航空天气报告的解码方法,属于气象资料处理以及气象信息抽取领域。该方法运用有限状态机的描述方式,并根据航空天气报告的电码格式构造出语法自动机和词法自动机;然后,将报文输入自动机,查找出报文内容中的多个模式字符串,识别报文中的气象要素;最后,显示多模匹配结果,实现对报文的解码;方法中引入有限状态机,运用有限状态机的描述方式建立的航空例行天气报告语法分析和词法分析,使其结构更加明确,提高了报告解码的有效性;建立航空天气报告词法结构,使得报告翻译之后,可以用计算机语言表述。词法结构和语法结构较电码结构更容易理解,并且简化气象报文相关程序开发的复杂度。

著录项

  • 公开/公告号CN101853248A

    专利类型发明专利

  • 公开/公告日2010-10-06

    原文格式PDF

  • 申请/专利权人 河南大学;

    申请/专利号CN201010184353.3

  • 申请日2010-05-27

  • 分类号G06F17/27;G01W1/00;

  • 代理机构郑州睿信知识产权代理有限公司;

  • 代理人陈浩

  • 地址 475004 河南省开封市顺河区明伦街85号

  • 入库时间 2023-12-18 00:56:43

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-06-09

    未缴年费专利权终止 IPC(主分类):G06F17/27 专利号:ZL2010101843533 申请日:20100527 授权公告日:20120215

    专利权的终止

  • 2012-02-15

    授权

    授权

  • 2010-11-24

    实质审查的生效 IPC(主分类):G06F17/27 申请日:20100527

    实质审查的生效

  • 2010-10-06

    公开

    公开

说明书

技术领域

本发明涉及民航天气报告分析技术,具体涉及对民航气象实况航空天气报告的解码方法,属于气象资料处理以及气象信息抽取领域。

背景技术

为了预测天气,现代气象技术必须依靠全球范围内实时的气象信息。在这些气象信息中,一些气象报告(例如,METAR报或者SPECI报)为大量的气象预测模型提供重要的数据来源。航空例行天气报告也即是METAR,它是由全世界成千上万个观测点每隔半个小时发出一次,它提供了被观测机场附近的气象要素观测值,例如温度、风、气压等。

METAR报告是一种被世界气象组织(WMO)和世界民用航空器组织(ICAO)共同规范的编码格式,尽管这种格式拥有全球标准,但由于该标准比较宽松,在全世界范围内,各气象组织的编码仍然存在着各种的差异。一般来讲,报告的解码是由计算机来完成。报告编码的差异要求计算机必须具有较高的报文解码能力。

目前,大多数的解码工具主要基于两种方法,一种是逐词分析,如果遇到错误的词,则分解结束,这种解码方法对于异常报文的识别率不高;另外一种是多次遍历的方法,这种方法虽然识别率较高,但是时间复杂度很高,因此,不适合于实时处理。基于上述方法的解码工具会出现问题,很多更有意义和价值的报文没有被正确解码或来不及解码。因此,需要一个更为完备的解码方法来解决这样的问题。

发明内容

本发明的目的是提供一种能够提高航空报文分解有效性的航空天气报告的解码方法,以解决现有报告分解的识别率和处理效率不能兼顾的问题。

为实现上述目的,本发明的航空天气报告的解码方法步骤如下:

(1)运用有限状态机的描述方式来构造、表示航空天气报告的语法结构,建立语法自动机;

(2)根据航空天气报告的电码格式来构造航空天气报告中风组、能见度组、云组、温度组、气压组的词法结构,建立相应的词法自动机;

(3)输入一段航空天气报告;

(4)以“空格”为分隔符,将所输入的航空天气报告分割成各报文字符串,将得到的报文字符串放入目标字符串数组;

(5)建立多模匹配模型,将报告的语法结构定义为基本结构和次要结构,并将基本结构的字符串存储构成模式字符串数组;

(6)启动有限状态机,通过目标字符串数组中的字符串与模式字符串数组中相匹配,实现航空天气报告解码。

 进一步的,所述步骤(5)之后,还设定回溯边界C,该回溯边界C代表当某一个模式字符串找不到时,向后移动的距离,也是匹配失败后,向前回溯的距离。

 进一步的,所述步骤(1)语法自动机中的各状态对应于航空天气报告中包含的识别组、风、能见度、现在天气、云、温度、气压、补充信息,航空天气报告的语法结构描述如下:

<METAR>=METAR+<OBCC>+<OTime><Wind><Visibility><ww><Cloud><Temperature><Pressure><Other>,

或<METAR>=METAR+<OBCC>+<OTime>+“NIL”,

此处NIL代表空报,如果报文有NIL,仍然认为是合法报文,但是不作任何处理;

其中:<Wind><Visibility><ww><Cloud>=<Wind><Visibility><ww><Cloud>|“CAVOK”,CAVOK代表天气现象良好,报文中有CAVOK的时候,可以没有能见度(visibility),天气现象(ww),云组要素值(cloud);

<ww>=<ww>|ε,

<Other>=<Other>|ε。

 进一步的,所述步骤(2)中词法自动机中的各状态对应于语法自动机中包含的风组、能见度组、云组、温度组、气压组中一个字符串从初始状态到结束状态所经历的变换过程。

 进一步的,所述步骤(4)中航空天气报告的分割是先从输入的航空天气报告中查找第一个分割词;然后截取从当前位置到分割词的字符构成一个字符串,将得到的字符放入目标字符串数组;从当前位置继续查找下一个分割词,直到航空天气报告结束。

 进一步的,所述回溯边界C是根据语法结构来定义规范函数,规范函数是一个以语法结构的层次为因变量的函数,该规范函数的取值即是回溯边界C,回溯边界C代表当模式串和报文字符串进行匹配的时候,匹配失败的最大次数。

 进一步的,设定回溯边界C=k,则如果第一次匹配失败,就判断E[j+1]、E[j+2]……E[j+k]和P[i]是否匹配。

 进一步的,所述步骤(6)中对报告解码,设回溯边界C=2,P[i]为模式字符串数组中第i个模式字符串,E[j]为目标字符串数组中第j个目标字符串,具体解码步骤如下:

a)用正则表达式来表示模式字符串数组中的字符串;

b)用第j个目标字符串E[j]去匹配第i个P[i]模式字符串,其中,;

c)如果匹配成功,则i++,j++,进行目标字符串数组和模式字符串数组中下一个字符串的匹配;

d)若E[j]和P[i]不匹配,则判断E[j+1]、E[j+2]和P[i]是否匹配,如果E[j+1]匹配成功,则E[j]和E[j+1]交换位置,从E[j+1]和P[i+1]位置开始匹配,如果E[j+2]匹配成功,则E[j]和E[j+2]交换位置,从E[j+1]和P[i+1]位置开始匹配,否则,跳过P[i]模式,从P[i+1]和E[j]开始匹配;

e)重复步骤b)-c)或b)-d),直到目标字符串数组或模式字符串数组结束,即i=n或j=m。

本发明的航空天气报告的解码方法中引入有限状态机,使运用有限状态机的描述方式建立的航空例行天气报告语法分析和词法分析的结构更加明确,提高了报告解码的有效性;建立航空天气报告词法结构的好处如下:使得报告经过翻译成词法结构之后,可以用计算机语言表述;词法结构和语法结构较电码结构更容易理解;并且简化气象报文相关程序开发的复杂度。

本发明在报告处理过程中,引入回溯算法,对异常报告具有较好的容错性,针对METAR报告,取C=2时,报告识别率在95%以上;本发明所用算法的时间复杂度为C(Cn),因此本发明的解码方法具有较高的时间效率和误码纠正率。

附图说明

图1是本发明的原理框图;

图2是METAR航空天气报告的语法结构图;

图3是METAR航空天气报告的风组的词法结构图;

图4是METAR航空天气报告的能见度组的词法结构图;

图5是METAR航空天气报告的云组的词法结构图;

图6是METAR航空天气报告的温度组的词法结构图;

图7是METAR航空天气报告的气压组的词法结构图;

图8是算法匹配所建立的多模模型图;

图9是自动机解码过程图;

图10是自动机处理异常的过程图;

图11是匹配结果图。

具体实施方式

本发明的航空天气报告的解码方法如图1所示,该方法运用有限状态机的描述方式,并根据航空天气报告的电码格式构造出语法自动机和词法自动机;然后将报文输入自动机,查找出报文内容中的多个模式字符串,识别报文中的气象要素,并通过回溯处理进行报文纠错;最后,进行信息抽取来显示多模匹配结果,实现对报文的解码。

本发明的航空天气报告的解码方法步骤如下:

步骤1)运用有限状态机的描述方式来构造、表示METAR报告的语法结构,建立语法自动机,语法结构如图2所示;METAR报告包含METAR1,OBCC2,OTIME3,Wind4,Visibility5,

WW6,Cloud7,CAVOK8,Temperature9,Pressure10,Other11,NIL12,METAR报告语法结构也可以描述成以下形式:

<METAR>=METAR+<OBCC>+<OTime><Wind><Visibility><ww><Cloud><Temperature><Pressure><Other>

在这些气象要素中,某些要素是必需的,也有些要素是可以省略或者用另外的形式描述,其中一些分支结构例如<Other>、<ww>,也可以用下面的形式描述:

<METAR>=METAR+<OBCC>+<OTime>+“NIL”

<Wind><Visibility><ww><Cloud>=<Wind><Visibility><ww><Cloud>|CAVOK

此处NIL代表空报,如果报文有NIL,仍然认为是合法报文,但是不作任何处理;

其中:<Wind><Visibility><ww><Cloud>=<Wind><Visibility><ww><Cloud>|“CAVOK”,CAVOK代表天气现象良好,报文中有CAVOK的时候,可以没有能见度(visibility),天气现象(ww),云组要素值(cloud);

<ww>=<ww>|ε,

<Other>=<Other>|ε。

上述表示中OBCC代表航站代码,OTime代表观测时间,Wind、Visibility、Cloud、Temperature、Pressure分别代表风、可见度、云、温度、气压组信息;

步骤2)建立METAR报告风组的词法结构如图3所示,风组要素的电码格式如下所示:

其中, 

i、风向:3位数字或者VRB。ddd平均分向,以度为单位,向小于100度时,前面必须加0。000~360度,分辨率10度,此处不判断方向范围;

ii、风速:2位或3位数字。前面可以加P,表示大于某一速度,风向、风速不明用/////表示;

iii、重大风速变化:fmfm2位数字,前面可以加P,表示大于某一速度,可以省略;

iv、KMH、KT:此处不换算为MPS的情况;

v、重大的风向变化:dndndn、dxdxdx分别3位数字,可以省略;

vi、风向和最大风速字段表示不明时,可以用/////编报。

建立风组要素的词法结构如图3所示,图中有9个状态,一个字符串从开始状态成功到达结束状态,表示这个符串是一个风组的词语。图2用于识别风组的字符串。其中,<wind>为初态,若在初态之下输入“VBR”或者3位数字,转入状态1;在状态1下输入字符“P”或者空,转入状态3;在状态3下输入2位或者3位数字,转入状态4;在状态4下,输入字符“G”,转入状态5;输入字符串“KMP”或“KT”或“MPS”,则转入状态6;在状态5,输入字符“P”,则仍然在状态5;在状态6下,输入3位数字,则转入状态7;在状态7下,输入字符“V”,则转入状态8;在状态8下,输入3位数字,则转入状态9;状态9直接转入终态。

步骤3)建立METAR报告能见度组的词法结构如图4所示,能见度组要素的电码格式如下所示:VVVVNDVVXVXVXVXDV

i、主导能见度:4位数字。如果无观测,则编////;

ii、主导能见度方向:NE、SE、SW、N、E、S、W、NDV可以省略;

iii、最小能见度:4位数字。可以省略;

iv、最小能见度风向:NE、SE、SW、N、E、S、W、NDV可以省略;

建立能见度要素的词法结构如图3所示。图中有11个状态,一个字符串从开始状态成功到达结束状态,表示这个字符串是一个能见度组的词语。其中,<visibility>为初态,若在初态之下,输入“///”,则直接进入终态;如输入1位数字,则进入状态3;如输入4位数字,则进入状态1;如输入1或2位数字SM,则进入状态2;从状态1直接进入状态8;状态2直接进入状态7;在状态3下,若输入1位数字,则进入状态4;在状态4下,如输入“/”,则进入状态5;在状态5下,如输入“/”,则进入状态6;在状态6下,若输入“SM”,则进入状态7;状态7直接进入状态1;状态8直接进入状态9;在状态9之下,如输入‘NDV’或‘NE’或‘SE’或‘SW’或‘NW’或‘N’或‘E’或‘S’或‘W’,则进入状态9;状态9直接进入终态。

步骤4)建立METAR报告云组的词法结构;云组要素的电码格式如下所示:

 

i、该组不可以省略,如果在3种描述方式中选择垂直能见度+云状进行描述时,云状字段可以省略,其中NsNsNs表示云量;垂直能见度用VVhshshs格式表示;SKC代表晴空。

ii、NsNsNs为3位字符;hshshs3位数字;云状3位字符;

iii、NsNsNs取值为:FEW(少云,1-2个八分量)、SCT(疏云,3-4个八分量)、BKN(多云,5-7个八分量)、OVC(阴天,8个八分量),所述八分量是表示云占天空的比例。

建立云组要素的词法结构如图5所示图中有8个状态,一个字符串从开始状态成功到达结束状态,表示这个字符串是一个云组的词语。其中,<cloud>为初态。若在初态之下,输入“////”,则进入终态;输入“SKC”或者“NSC”或者“NCD”,则进入终态;输入“VV”,则进入状态4;如输入“FEW”或者“SCT”或者“BKN”或者“OVC”,则进入状态1。在状态1之下,如输入3位数字,则进入状态2。在状态2之下,若输入“CB”或者“TCU”或者“///”,则仍保留在状态2。在状态4之下,若输入3位数字,则进入终态。

步骤5)建立METAR报告温度组的词法结构;温度组要素的电码格式如下所示:

T'T'/T'dT'd

i、该组不可以省略

ii、为2位数字。前面加M表示负数

建立温度要素的词法结构如图6所示,图中有6个状态,一个字符串从开始状态成功到达结束状态,表示这个符串是一个温度的词语。其中,<Temperature>为初态。在初态之下,若输入M,则进入状态1;如输入2位数字,则进入状态3。在状态3之下,如输入“/”,则进入状态4。在状态4之下,若输入“M”,则仍然保持在状态4;若输入2位数字,则状态终态。

步骤6)建立METAR报告气压组要素的词法结构;气压组要素的电码格式如下所示:

QPHPHPHPH

i、该组不可以省略

ii、Q表示Q或者A

iii、PHPHPHPH表示4位数字。

则建立气压要素的词法结构如图7所示,图中有5个状态,一个字符串从开始状态成功到达结束状态,表示这个符串是一个气压组的词语。其中,<Pressure>为初态。若在初态之下,若输入“A”,则进入状态1;若输入“Q”,则进入状态2。在状态1之下,若输入4位数字,则进入状态3。在状态2之下若输入4位数字,则进入状态3。状态3直接进入终态。

步骤7)输入一段民用航空天气报告,如,METAR=“METARKPIA012354Z00000KT9SMRABRSCT025BKN035OVC06516/14A3010”。

步骤8)以“空格”为分隔符,将所输入航空天气报告分割成各报文字符串,将得到的报文字符串放入目标字符串数组,其中的航空天气报告分割步骤如下:

1)查找第一个分割词;

2)截取从当前位置到分割词,放入报文字符串数组;

3)从当前位置继续查找下一个分割词,直到字符串结束。

 用分割词将报文句子分解成token(token代表一个可以被识别字符串),得到报文要素={token1,token2,token3,……tokenn}用分割词将报告句子分解成token(token代表一个可以被识别字符串,然后得到报告要素={token1,token2,token3,……tokenn}={‘METAR’,‘KPIA’,‘012354Z’,‘00000KT’,‘9SM’,‘RA’,‘BR’,‘SCT025’,‘BKN035’,‘OVC065’,‘16/14’,‘A3010’}。

 步骤9)建立多模匹配模型;将报文的结构定义为必须存在的,或者可能存在的两种模式,就是将语法结构定义为基本结构和次要结构。如图METAR报告的语法结构,我们定义下列结构为METAR报告的基本结构:<METAR>,<OBCC>,<OTIME>,<WIND>,<VISIBILITY>,<CLOUD>,其余结构为次要结构,如图8所示。

 步骤10)设定回溯边界C,该回溯边界C代表当某一个模式字符串找不到时,向后移动的距离,也是匹配失败后,向前回溯的距离,回溯边界C是根据语法结构来定义规范函数,规范函数是一个以语法结构的层次为因变量的函数,该规范函数的取值即是回溯边界。根据METAR报告的基本结构,设定回溯边界为C=2;回溯边界C代表模式串和报文字符串进行匹配的时候,匹配失败的最大次数。对于METAR报告,C=2,当当前模式串P[i]和报文字符串E[j]匹配失败的时候,报文字符串最大会尝试性的向下寻找2步(就是分别判断E[j+1],E[j+2]是否和P[i]相匹配)。

步骤11)启动带回溯的有限状态机,对报告解码:

a)用正则表达式来表示模式字符串数组中的字符串;

b)用第j个目标字符串E[j]去匹配第i个P[i]模式字符串,其中,;

c)如果匹配成功,则i++,j++,进行目标字符串数组和模式字符串数组中下一个字符串的匹配;

d)若E[j]和P[i]不匹配,则判断E[j+1]、E[j+2]和P[i]是否匹配,如果E[j+1]匹配成功,则E[j]和E[j+1]交换位置,从E[j+1]和P[i+1]位置开始匹配,如果E[j+2]匹配成功,则E[j]和E[j+2]交换位置,从E[j+1]和P[i+1]位置开始匹配,否则,跳过P[i]模式,从P[i+1]和E[j]开始匹配;

e)重复步骤b)-c)或b)-d),直到目标字符串数组或模式字符串数组结束,即i=n或j=m。

P[1…i…n]={‘METAR’,‘KPLA’,‘012354Z’,‘00000KT’,‘9SM’,‘RA’,‘BR’,‘SCT025’,‘BKN035’,‘OVC065’,‘16/14’,‘A3010’};

 E[i…j…m]={<METAR>,<OBCC>,<OTIME>,<WIND>,<VISIBILITY>,<WW>,<CLOUD>,

<Temperature>,<Pressure>,……};

按照有限状态机进行处理,如果每一个模式代表一种状态,到来一条报告进入这个自动机,如果我们仍然以最基本的模式字符串Wind1><Wind2><Visibility><ww><Cloud>为例(其中<Wind1><Visibility><Cloud>为基本结构,<Wind2><ww>为次要结构),输入报告仍然和上面所列举的一样。根据上面所写的回溯算法,当需要进入该模式的时候,相当于将三个字符串输入,进行匹配,如果有一个能够正常匹配的话,则代表该模式匹配成功;如果失败,模式都转向下一个状态,进行继续比较比较,直到要素字符串或者模式字符串有一个结束,则匹配过程就结束了。如果目标字符串提前结束,则会直接结束(如图9所示,虚线部分)。

步骤12)一般而言,报告会出现各种的异常,包括基本结构异常也能尽可能的处理。以下列问题为例,设“<OTime><Wind1><Wind2><Visiblity><WW><Temperature><Pressure>

<Other>”为模式字符串,并且“<OTime><Wind1><Visibility><Temperature><Pressure>”为基本结构,“012354ZRABR9SMSCT025BKN035OVC06516/14A3010”为目标字符串,如果按照严格的语法结构,由于没有基本结构<Wind1>,这个目标字符串不合法,但是,这样的话,<Visibility><Temperature><Pressure>正确的结构都不能够被识别;另外,<Visibility>和<WW>字符串也出现了逆序。

如图10所示,报告的解码算法能够正常的处理这种情况,首先判断模式<OTime>,012354匹配模式<OTime>成功;将字符串“RABR9SM”输入<.Wind1>状态,没有符合匹配模式的字符串,则跳过<Wind1>模式;同时自动机根据输入字符,判断并不是<Wind2>,则交给模式<Visibility>;继续将字符串“RABR9SM”输入模式<Visibility>,9SM匹配成功,同时交换9SM和BR,输入字符串变为“9SMBRRA”;按照同样的办法,输入“BRRASCT025”到状态<WW>,匹配模式<WW>成功;然后依次匹配模式<Temperature>,<Pressure>,因此直接到达结束状态。

 报告的解码算法运用伪代码描述如下:

步骤13)输出匹配结果。将报告字符串(目标字符串)和词法结构对应起来。匹配结果为<OBCC>=KPIA,<OTIME>=012354,<WIND>=00000KT,<VISIBILITY>=9SM,<WW>=RABR,<CLOUD>=SCT025BKN035OVC065,如图11所示。

接口和定义

本接口和定义是建立的构建METAR报告语法结构和词法结构的静态模型。

1)类结构总述,如下表所示:

 

2)Report类说明

3)CacReport类说明

 3)SaElement类说明

4)正则表达式说明

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号