资源描述:
《delphi实现静止气象卫星云图原始》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、利用Delphi编程环境实现静止气象卫星云图原始数据质量判别与数据修整李在海李郓金同伟苏乓乓空军气象中心摘要介绍了利用Delphi编程环境实现静止气象卫星云图原始数据质量判断、数据修整原理及方法。为复杂电磁环境中,大尺寸、同星、同时次、异地、多源、不同受扰程度的静止气象卫星云图原始数据质量判别与数据修整、拼接寻求到新异技术手段。并经过实际质量效果检验,数据质量等级标注准确,使云图数据质量数量化提用更为快捷。为战勤气象保障中原始数据选择与远程优质共享应用提供了前提条件。关键词云图数据质量判别修整一、引言我国风云系列2E、2D、2F静止卫星云图资源十分丰富,覆盖地域面积广,数据信息量大
2、,在航空飞行保障业务中用途广泛。但是接收系统运行环境长久以往存在复杂电磁干扰的问题,云图数据受扰经常发生,为了保障卫星云图原始数据的完整和质量,解决信息保障质量随机变化的困扰,加强对数据质量判别和后期数据修正研究工作有必要且意义深远。恰如在每年的夏季强对流天气监测时期,为了连续跟踪、了解大气运动,每一时次的云图数据都是不可或缺的,甚至还采取加时接收。在主、备接收系统均发生不同程度的信号干扰时,采用什么方法实现数据质量判别,又用什么手段有选择地把两者好的区域的原始数据截取后再拼接到要修正的数据部位,就是利用Delphi实现静止气象卫星云图原始数据质量判别与数据修整的关键,也是进一步达
3、到同星同时异源原始数据修正之目的。二、数据检验在大多数据通信场合,为了保障数据通过传输到达接收端的质量,采用了数据冗余校验技术。在数据容许误差变化的限度内,冗余校验技术可以实现有限度的数据修正,结果固然是好。然而在数据误差超过容许限度,数据冗余校验对数据的质量判别的真实度就会下降,且对超大数据来讲,会花费较长的时间,效率很差。通过对静止气象卫星云图原始数据格式进行分析,在原始数据的特定区域填充了特定形式、固定长度为2048字节的数据0。这些在无外界干扰的情况下,这些数据是不会发生变化,受到干扰,数据变化与干扰程度成正比。为此提取这些特定数据,作为质量判别因子,对得到的错误与正确数量
4、比Q检测进行统计计算,比值越小反映数据质量越好,比值越大数据质量越差。在对大量受扰数据进行质量检验后,得到可靠量化数据Q。比值在0≤Q≤0.0002之间,数据几乎无干扰,定义为A级数据;比值在0≤Q≤0.0002之间,数据受到轻微干扰,定义为B级数据;比值在0.0002≤Q≤0.002之间,数据受到轻度干扰,定义为C级数据;比值在0.002≤Q≤0.02之间,数据受到重度干扰,10定义为D级数据;比值在0.02≤Q≤0.2之间,数据受到严重干扰,定义为E级数据;以卫星数据北京时加判别级字母命名完成对整体原始数据的质量判别和质量标记,为系统提供相对优质数据的在使用。(一)特定数据检验
5、法提取卫星云图原始数据的不同标志数据,即可实现地球参数、经纬度、卫星名称、数据生成时间、数据帧序号、云图各通道的数据、特定填充码等参数的提取,实现程序设计功能。有效信息的数据段结构在程序里kaishi、jeisu赋予不同地址首代码,即可完成该地址中数据内容提取。特定数据检验是对云图原始数据处于填充地址的“0000……0000”2048字节长度的数据变化量进行检测统计,确定数据质量等级。卫星名称、数据生成时间通过以下程序段完成。procedureTForm1.Timer3Timer(Sender:TObject);varastr,result:string;YUNTUSize,jj,
6、kaishi,jiesu,len,k,i,hh,kaishi2,jiesu2,len2,k2,i2,xunhuan:integer;neirong,pc:PChar;schar:char;buffer:array[0..2]ofChar;{定义个字符缓冲区} begin{提取卫星名称}kaishi2:=92;{卫星名称存放首地址}jiesu2:=93;{卫星名称存放末地址}10{同时建立内存流}pc:=mStream1.Memory;{把字符指针指向内存流}fork2:=kaishi2tojiesu2-1dobeginAstr:=pc[k2];{对应的内容}len2:=length
7、(AStr);{测试字符串长度}Result:='';{清空结果存储器空间}fori2:=1tolen2do{逐位转换}beginschar:=AStr[i2];{读对应位的字符串}Result:=IntToHex(Ord(schar),2);ifIntToHex(Ord(schar),2)='24'thenEdit19.Text:='2d'elseifIntToHex(Ord(schar),2)='25'thenEdit19.Text:='2e'elseifIntT