气象信息与网络技术课程设计题目地面/探空电码译码系统学生姓名XXX学号XXXXXXX学院XXXXXXXXXXXX专业XXXXXX设计时间XXXXXXXX年XX月XX日1地面/探空电码译码系统XXXXXXXXXXXXXXXXXXXXXXXX,南京2100442013XXXXXXXXXX摘要:气象资料是对气象进行预测和气象研究的重要依据,而各国各地的气象资料都是以编码的形式进行互相传递的,气象要素的信息以代码的形式储存在文件中。而我们的地面/探空电码译码系统是基于C语言的译码系统,根据气象信息编码的特点翻译出编码表示的气象要素。用户提供的年月日及地区等指示可找到对应的气象要素信息,如温度,露点,风速,风向等。这样用户可以方便地知道地面报文和探空报文所指示的气象。从而可以方便各种研究和应用。关键词:地面报文;探空报文;译码系统;气象要素;一、前言气象地面报文电码具有地面各种气象要素和天气现象,如气温、湿度、风向、风速、海平面气压和雨、雪、雾,还具有记录云高、云状、天气演变如三小时变压、气压倾向等。近年来,随着计算机技术的快速发展以及卫星通信技术的研究深度的加深,地面气象报文系统的发展日益完善,报文电码的发展与计算机技术相关度越来越大,二者相结合为人类的日常生活产生了日益深远的影响。我国是自然灾害频发的国家,而气象灾害又是在自然灾害中损毁程度最严重的。如我国最近几年发生几次大的寒潮,以及每年夏天发生的台风等同时每次自然灾害给人民的生产生活都带来了极大的不便甚至对一个地区的生产秩序起到破坏性的作用,因此国际国内对天气系统的变化情况越来越关注,而在气象领域对卫星观测资料的依赖度越来越大,天气资料在天气预报系统中占据越来越重要的作用,气象报文信息发挥了比以往更关键的角色,气象台根据气象信息预报寒潮、台风、暴雨等自然灾害出现的位置和强度,就可以直接为工农业生产和群众生活服务,通过应急准备及人员疏散等可以讲自然灾害带来的损害讲到最低。气象信息就成为现代社会不可缺少的重要信息。同时,气象信息的作用与气象代码翻译工作是分不开的,通过现代化的手段以及先进的通讯工具,气象电码的翻译工作效率大大提高,气象信息一经翻译,依赖于先进的通讯工具就能够及时地发布出去,具有很强的实时性,因而此代码翻译系统是具有重要意义的。在我们可接触到的各种电码翻译系统中,翻译系统的实现采用了多种语言,本文提供一种基于C语言的电码翻译系统,根据地面报文电码的特点通过相关的语句翻译出所表示的气象信息。世界气象组织所属的天气监测网由一百多个成员国组成,其观测系统中包括十多颗卫星、三千多架飞机、一万多个陆上观测站、七千多个船舶观测站以及九百多个携带自动气象站的系统航标和浮标。世界天气观测网络就是通过这个观测系统提供最新的全球天气预报的。每天,高速电信链路通过三个世界级气象中心、34个区域性气象中心和187个国家级气象中心向全球传输气象资料和气象图。气象资料是气象科学对天气过程进行的预测及对大气活动规律进行研究的主要依据,气象资料交换是气象业务的科研的基础。但是,由于各国文字的不一致性,和文字占据大容量存储空间的问题,决定将其以规定的编码形式在国际国内间进行交换。气象地面电码和探空电码就是其中的一种可供交换编码。2各个行业都有各自的国际电码。地面气象观测的天气电码,不但反映天气实况,而且也反映了天气的演变规律。因此,必须从天气学的角度去理解和选用天气报告电码。这是全面、准确反映测站天气实况和保证天气预报工作、减少人为失误的重要环节。电码需要按照一定的规则编写,这样,译码者才能按照那个规则译出电码所代表的通俗易懂的信息。随着社会、经济的飞速发展和人民生活水平生活质量的大幅度提高,社会上各行各业对气象部门提出了全方位、多时效、针对性强、准确度高的天气预报服务要求。社会需求永远是天气预报发展的动力和压力。为了适应日益增长的社会需要,做好预报服务,预报员需要用到近年来许多新的知识和参考资料,尤其是各个地区的地面和探空气象资料分析,能够有效帮助预报员分析当地的天气现象,从而做出比较准确的天气预报。二、需求分析1、提供给天气预报员实时天气资料,以便实时进行天气分析及准确预报。实时天气资料是天气分析和预报的基础,因为天气总在不断的变化,依据最接近所要预报的时间的实时天气资料所得出天气预报的准确程度最高,短期的天气预报总比长期和中长期的天气预报准确。所以想要得到较为准确的天气预报,必不可少的是方便及时地获得实时资料信息,这就需要电码译码系统来帮助实现。编写成电码的方式,能有效地节约信息传送的时间和空间,增加了天气预报的时效。2、提供给科研人员过去和现在的天气各要素资料,从气温、气压、风、云、降水、能见度和空气湿度等,得出天气的性质,并且广泛地采用绘图,建表等分析方法,加上具体情况的具体分析,联系各个地方、各个时段的天气情况,找出天气变化规律,系统地进行研究,以便分析总结,研究天气的发展、演变,为揭示天气变化、研究大自然的奥妙,进而应用天气现象做出贡献。该系统对于这些大型的研究来说只是渺小的一小步,但确是不可或缺的一部分。3、为二次天气应用开发提供天气资料,从而生产各种应用产品。天气应用十分广泛,天气信息可以直接应用播报天气情况,还可以应用在二次天气软件上,如可以设计出查询实时天气情况的软件,输入年月日时段和地点,即可显示出具体气象要素的信息,把软件安装在手机上,随身携带,方便快捷,符合大众的应用要求。4、提供给开发人员一个译码工具,方便开发人员优化开发,充分利用译码的语句和设计流程,不需要开发人员重新设计,可以直接使用,如此简化了气象台的工作量,增加了其工作效率。此外,还给教师的教学提供了很大的方便,教师直接输入需要知道的时间站点信息即可得到对应的气象要素值,学生可以很好地了解具体的气象要素信息,能更好地学习气象知识。5、提供给普通用户查询天气实时或过去天气资料,用户自己总结天气状况,决定自己在穿衣御寒防热还有度假出行等方面的生活。6、提供给农民获取实时天气和过去天气资料,对比现在天气情况,从而比较好地进行播种、收割等农家活动。有了科学技术的支持,农业生产能取得迅速地发展,收获更多地粮食,养活更多的人口。7、提供给工厂天气情况,有些产品的生产与天气的要素如温度、湿度等有着很大的关系,清楚地了解了具体的天气情况就能及时调整这些因素,这对产品的生产有很大的益处,工厂生产效率也能极大的提3高。三、概要设计1、设计思路读取气象电报电码文件,经过本电码译码系统,生产各气象要素。地面电码资料的气象要素有:温度、露点、本站气压、海平面气压、气压趋势、气压变化量、降水量、天气现象、云状、能见度,风向飞速、总云量等;高空电码资料的气象要素分13层:地面、1000hPa、925hPa、850hPa、700hPa、500hPa、400hPa、300hPa、250hPa、200hPa、150hPa、100hPa;高空电码资料的每层气象要素是:温度、温度露点差、气压、风向飞速。编程思路是:由用户输入要译码的年、月、日、世界时次和台站号(注:有可能的话用地名),并选择地面或高空;由译码系统进行译码,生产出气象各要素,在屏幕上显示。2、地面/探空电报译码数据流图地面/探空电报码以文件形式存放,固定为8.3格式。地面电报码文件格式是:AAXXmmdd.Thh,探空电报码文件格式是:TTAAmmdd.Thh。其中AAXX表示地面报;TTAA表示探空报;mm表示月份,用2位数字01~12;dd表示日,用2位数字01~31;hh表示时次,用2位数字,地面有00、03、06、09、12、15、18、21共8个时次,探空有00、06、12、18共4个时次,都用世界时。地面/探空电报译码数据流图如图1所示。图1电码译码系统数据流图3、地面/探空电报译码程序总流程图根据电码文件名是8.3格式,并且与月日时次形成固定关系,因此可以采用输入年月日时次的数据来组合文件名。地面1~4位固定为“AAXX”,探空1~4位为“TTAA”,5~6位为2位数月份,7~8位为2位数日,9~10位为固定为“.T”,11~12位为2位数时次。地面/探空电报译码程序流程图如图2所示,读取文件,找到指定台站的位置,并读取指定台站的电码到一个字符串数组中,然后传递给地面或探空处理程序继续处理,分解出天气各要素。最后显示结果。地面/探空电码文件电码译码系统各天气资料要素4图2电码译码系统程序流程图四、详细设计由用户输入的P的值判断是否是高空资料分析或者是地面资料分析,P=1,代表是对地面要素的分析,P=2则代表是对高空各个气象要素的分析。P=1,调用地面气象要素分析函数。分解已读入的这一行字符串,第0~4字符是台站号;第6~10字符分别对应着→iRiX云底高度,能见度;第12~16字符分别对应着总云量,开始输入年月日世界时及台站号输入选择地面或高空文件存在?NY读取电码文件结束显示出错信息根据年月日世界时组成文件名指定台站号?文件结束?YNN地面/高空?Y地面处理程序高空处理程序高空地面5风向,风速。令K=18,然后判断K是否还小于等于字符串总数,若成立,则进行下一步,分析地K字符代表的内容,K字符人为的规定可以表示气温,露点,本站气压,海平面气压,气压趋势,降水量,天气现象,云状,发报时间。然后分析字符里的数据具体是多少,到表天气要素的一个什么状态,反馈到用户方面。再调整K=K+6,继续重复从判断K的值是否有意义开始的内容,一直到字符串里的所有字符信息都已经分析反馈结束为止。图3译出地面各要素功能流程图P=2,表示用户需要的事探空各气象要素,然后分解已经读入的这一行字符串,第0到11字符不用,第12到16的字符代表台站号。令K=18,在K在合理的范围内时,分析K:K+1字符,由它们的数值判断气象要素所属的层数,继而分别译出气压,温度,温度露点差,风向风速。然后K=K+18,重复上面的判断过程。一直到K的数值大于n。地面各要素地面各要素入口k=18NY返回kn?第k字符为123456789气温露点本站气压海平面气压气压趋势降水量天气现象发报时间云状k=k+6分解已读入的这一行字符串。第0~4字符→台站号IIiii;第6~10字符→iRiXhVV;第12~16字符→Nddff6图4译出探空各要素功能流程图五、编码设计利用计算机高级语言对程序流程图进行编程,采用C语言编程。1、编写主控程序,通过输入年月日时次,然后选择地面或高空,再输入要处理的台站号。根据输入信息,自动组成相应的文件名,从文件中读出指定台站电码资料,存入字符串数组ch中,然后调度地面dmdisp子程序或高空updisp子程序进行相应的处理。#includestdio.h//程序中要用到输入/输出函数#includestring.h//程序中要用到字符串处理函数,如strlen、strcpy等intstr2int(char*ch,intk,intn);//对字符串从k位置开始,长度为n的子字符串转//换为整型值。对于含有非数字字符,则返回-1voiddmdisp(char*ch);//对字符串ch进行地面译码的功能函数voidupdisp(char*ch);//对字符串ch进行高空译码的功能函数voidmain(void)//主控程序入口{intyear,month,day,hour;//定义年year、月month、日day、时次hourintn,p;//定义位置计数器n,临时变量p探空各要素地面各要素入口k=18分解已读入的这一行字符串。第0~11字符不用;第12~16字符→台站号NY返回kn?第k:k+1字符为999200857050/4020/15/10地面925hPa1000hPa850hPa700hPa500/400300/25030/25200/150/100分别译出气压,温度,温度露点差,风向风速。k=k+187charstation[6],ch[400];//定义台站号station、存放电码字符串数组chFILE*fp;charname[30];//定义读文件指针,文件