收藏 分享(赏)

Delphi实现静止气象卫星云图原始.doc

上传人:jinchen 文档编号:7229138 上传时间:2019-05-10 格式:DOC 页数:11 大小:1.31MB
下载 相关 举报
Delphi实现静止气象卫星云图原始.doc_第1页
第1页 / 共11页
Delphi实现静止气象卫星云图原始.doc_第2页
第2页 / 共11页
Delphi实现静止气象卫星云图原始.doc_第3页
第3页 / 共11页
Delphi实现静止气象卫星云图原始.doc_第4页
第4页 / 共11页
Delphi实现静止气象卫星云图原始.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、1利用 Delphi 编程环境实现静止气象卫星云图原始数据质量判别与数据修整李在海 李郓 金同伟 苏乓乓空军气象中心摘要 介绍了利用 Delphi 编程环境实现静止气象卫星云图原始数据质量判断、数据修整原理及方法。为复杂电磁环境中,大尺寸、同星、同 时次、异地、多源、不同受 扰程度的静止气象卫星云图原始数据质量判别与数据修整、拼接 寻求到新异技术手段。并 经过实际质 量效果检验,数据质量等级标注准确,使云图数据质量数量化提用更 为快捷。 为战勤气象保障中原始数据 选择与远程优质共享应用提供了前提条件。关键词 云图 数据质量 判别 修整一、引言我国风云系列E、2D、2F 静止卫星云图资源十分丰富

2、,覆盖地域面积广,数据信息量大,在航空飞行保障业务中用途广泛。但是接收系统运行环境长久以往存在复杂电磁干扰的问题,云图数据受扰经常发生,为了保障卫星云图原始数据的完整和质量,解决信息保障质量随机变化的困扰,加强对数据质量判别和后期数据修正研究工作有必要且意义深远。恰如在每年的夏季强对流天气监测时期,为了连续跟踪、了解大气运动,每一时次的云图数据都是不可或缺的,甚至还采取加时接收。在主、备接收系统均发生不同程度的信号干扰时,采用什么方法实现数据质量判别,又用什么手段有选择地把两者好的区域的原始数据截取后再拼接到要修正的数据部位,就是利用 Delphi 实现静止气象卫星云图原始数据质量判别与数据修

3、整的关键,也是进一步达到同星同时异源原始数据修正之目的。二、数据检验在大多数据通信场合,为了保障数据通过传输到达接收端的质量,采用了数据冗余校验技术。在数据容许误差变化的限度内,冗余校验技术可以实现有限度的数据修正,结果固然是好。然而在数据误差超过容许限度,数据冗余校验对数据的质量判别的真实度就会下降,且对超大数据来讲,会花费较长的时间,效率很差。通过对静止气象卫星云图原始数据格式进行分析,在原始数据的特定区域填充了特定形式、固定长度为 2048 字节的数据 0。这些在无外界干扰的情况下,这些数据是不会发生变化,受到干扰,数据变化与干扰程度成正比。为此提取这些特定数据,作为质量判别因子,对得到

4、的错误与正确数量比 Q 检测进行统计计算,比值越小反映数据质量越好,比值越大数据质量越差。在对大量受扰数据进行质量检验后,得到可靠量化数据 Q。比值在 0Q0.0002 之间,数据几乎无干扰,定义为 A级数据;比值在 0Q0.0002 之间,数据受到轻微干扰,定义为 B 级数据;比值在20.0002Q0.002 之间,数据受到轻度干扰,定义为 C 级数据;比值在 0.002Q0.02 之间,数据受到重度干扰,定义为 D 级数据;比值在 0.02Q0.2 之间,数据受到严重干扰,定义为 E 级数据;以卫星数据北京时加判别级字母命名完成对整体原始数据的质量判别和质量标记,为系统提供相对优质数据的在

5、使用。(一)特定数据检验法提取卫星云图原始数据的不同标志数据,即可实现地球参数、经纬度、卫星名称、数据生成时间、数据帧序号、云图各通道的数据、特定填充码等参数的提取,实现程序设计功能。有效信息的数据段结构在程序里 kaishi、jeisu 赋予不同地址首代码,即可完成该地址中数据内容提取。特定数据检验是对云图原始数据处于填充地址的“00 00 00 00”2048 字节长度的数据变化量进行检测统计,确定数据质量等级。卫星名称、数据生成时间通过以下程序段完成。procedure TForm1.Timer3Timer(Sender: TObject);varastr,result:string;Y

6、UNTUSize,jj,kaishi,jiesu,len,k,i,hh,kaishi2,jiesu2,len2,k2,i2,xunhuan:integer;neirong, pc:PChar;schar:char;buffer:array02 of Char; 定义个字符缓冲区 begin 提取卫星名称3kaishi2:=92; 卫星名称存放首地址jiesu2:=93; 卫星名称存放末地址同时建立内存流pc:=mStream1.Memory; 把字符指针指向内存流 for k2:=kaishi2 to jiesu2-1 do beginAstr:=pck2; 对应的内容len2:=length

7、(AStr); 测试字符串长度Result:=; 清空结果存储器空间for i2:=1 to len2 do 逐位转换beginschar:=AStri2; 读对应位的字符串Result:=IntToHex(Ord(schar),2); if IntToHex(Ord(schar),2)=24 then Edit19.Text:=2d else if IntToHex(Ord(schar),2)=25 then Edit19.Text:=2e elseif IntToHex(Ord(schar),2)=26 thenEdit19.Text:=2F Else end; begin 提取数据生成时

8、间世界时kaishi:=20; 第一帧数据生成时间存放地址jiesu:=26;同时建立内存流pc:=mStream1.Memory; 把字符指针指向内存流 for k:=kaishi to jiesu-1 do 4beginAstr:=pck; 提取第一帧生成时间len:=length(AStr); 测试字符串长度Result:=; 清空结果存储器空间for i:=1 to len do 逐位转换beginschar:=AStri; 读对应位的字符串将字符串转化为 16 进制字符串,并以空格间隔result:=Result +IntToHex(Ord(schar),2); weixingshi

9、jian:= result;Edit19.Text:=Edit19.Text+Result;Edit25.Text:= Edit19.Text;Timer3.Enabled:=false;Timer2.Enabled:=true;image1.Canvas.TextOut(10,36, 世界时+Edit19.Text);end; end;SpeedButton4.Click; 数据提取执行按键end; end; end;(二)特定数据提取原始数据中分布于特定区域的填充码,在每一帧的开始与结束处,在首地址累计递增帧长,即可完成对整个特定区域填充码的提取。以下程序实现填充码提取和数据质量判别,并完

10、成被检测数据的质量标注,根据需要选择标注数据的使用方式。5(1) 提取的 A 级原始数据填充码(2) 提取的 B 级原始数据填充码提取和统计特定数据程序和过程。procedure TForm1.SpeedButton4Click(Sender: TObject);varhaoshu,huaishu,ssss,astr,result:string;bbb,YUNTUSize,jj,jishu,kaishi,jiesu,len,k,i,hh,xunhuan:integer;6neirong, pc:PChar;schar:char;buffer:array02 of Char; 定义个字符缓冲区

11、beginedit16.Text:=2296; edit17.Text:=2551; edit18.Text:=0; haoshu:=0; huaishu:=0;cuowuStaticText3.Caption:=0; zhengqueStaticText2.Caption:=0; Memo2.Lines.Text:=;ssss:=;kaishi:=strtoint(edit16.Text);jiesu:=strtoint(edit17.Text);For xunhuan:=1 to strtoint(edit5.Text) do beginhangStaticText0 .Caption:=

12、 inttostr(xunhuan); ProgressBar2.Max:=strtoint(edit5.Text); 数据长度ProgressBar2.Position:=strtoint(hangStaticText0.Caption); kaishi:=strtoint(edit16.Text)+53866;jiesu:=strtoint(edit17.Text)+53866;pc:=mStream1.Memory; 定义个字符缓for k:=kaishi to jiesu do beginedit16.Text:=inttostr(kaishi); edit17.Text:=intto

13、str(jiesu);ProgressBar1.Position:=0;ProgressBar1.Position:=K; 指示运行进度Astr:=pck; 对应的内容 len:=length(AStr); 测试字符串长度7Result:=; 清空结果存储器空间for i:=1 to len do 逐位转换 begin schar:=AStri; 读对应位的字符串将字符串转化为 16 进制字符串,并以空格间隔Result:=Result +IntToHex(Ord(schar),2)+ ; ssss:=ssss+result;end; if IntToHex(Ord(schar),2)=str

14、toint(edit5.Text) then beginbilvStaticText4.Caption:= floattostr( strtofloat(huaishu) strtofloat(haoshu);比率 q 是实践检验值memo2.Text:= ssss; 填充数据总和 zhengqueStaticText2.Caption:=floattostr( strtofloat(haoshu);cuowuStaticText3.Caption:=floattostr( strtofloat(huaishu); Timer9.Enabled:=true;end; end;三、数据流提取与拼

15、接在电磁干扰严重的情况下,往往采取分布式数据接收模式,不同地理和环境接受的云图数据,同样会发生同一个经度范围的数据有好坏之分,解决单一使用每一个数据都存在的局部数据损坏,利用数据修补是一种有效的可行方法。在进行云图原始数据修改操作时,为了提高数据读取、处理和存储速度,特设计内存操作函数 function shujuliu_addtofile(mStream1,mStream2:TMemoryStream): Boolean。8在这里云图原始数据以内存流的方式打开。mStream1、mStream2 分别是两个处于不同地理位置的接收系统提供地同时次同颗卫星云图原始数据的内存流,其中 mStrea

16、m1 提供可利用的数据,mStream2 是作为主系统使用的局部存在数据被干扰的原始数据的内存流。在经过对两个数据流同步进行质量判别后,选择要修改的数据帧,进行数据更替和保存,完成主系统云图数据的修整,实现提高使用数据的质量要求。(一)内存流实现数据修改进行内存流操作,便捷高效,程序与写-写方式打开被质量检测的原始数据,对原始数据的类型、帧数、尺寸、数据生成时间等以实现对数据的同步修改。mStream1:=TMemoryStream.Create; 创建内存流mStream1.LoadFromFile(文件路径+文件名称); 把文件读入内存流 if mStream1.Size0 Then be

17、ginpc:=mStream1.Memory; 把字符指针指向内存流 YuntuSize:=mStream1.Size div 1024 div 1000;Edit7.Text:=inttostr(YUNTUSize)+ M; 计算数据尺寸Edit5.Text:=inttostr(mStream1.Size div 53866 计算数据总帧数 通过内存流数据修改函数,可以在数据的任意帧到任意帧,实现数据修整。达到坏图中有用帧数的拼接。function shujuliu_addtofile(mStream1,mStream2:TMemoryStream): Boolean;内存流中添加内存流数据

18、函数varmStreamzy,mStreammb:TMemoryStream;kaishic,shuju,MyFliesize:integer;begintry源文件数据定位mStream1.Seek(Kaishic,0);被修整数据定位 mStream2.Seek(kaishic,0); 从源文件数据流 mStream1 中某帧到某帧读取 shuju 长的数据到被修整数流 mStream2 中mStream2.CopyFrom(mStream1,shuju); 获取数据长度 MyFliesize:= 9mStream1.Size+sizeof(MyFliesize);将读取数据写到到被修整的

19、数据流 mStream2.WriteBuffer(MyFliesize,sizeof(MyFliesize);except结果为假修整失败 Result := False; end; 结果为真修整成功 Result := True; end; (二)内存流函数调用内存流函数调用是通过程序对同星、同时次、异源、不同受扰程度的云图原始数据可用的数据经提取、拼接、生成质量改善的原始数据过程。procedure TForm1.SpeedButton9Click(Sender: TObject);beginedit11.Text:=inttostr(53866* (strtoint(edit12.Tex

20、t)- strtoint(edit13.Text);kaishic:=strtoint(edit13.Text)*53866;开始帧号shuju:=strtoint(edit12.Text)*53866; 结束帧号用源文件数据修改主文件数据If SpeedButton9.Action.Execute then begin shujuliu_addtofile( mStream1, mStream2);mStream2.SaveToFile(12.org); end elseIf SpeedButton3.Action.Execute then begin shujuliu_addtofile(

21、 mStream2, mStream1);mStream1.SaveToFile(存放路径+201209121231.org); 修改后的数据文件end elseend;(三)数据修正检验10对 2012 年 10 月 28 日 09 时 31 分,风云 2D 主接收系统与备份接收系统原始数据局部拼接效果如以下图示。(3)同星同时次 E 级干扰数据 (4)用 E 级 1 数据前 300 帧严重干扰(5)E 级 2 数据前 500 帧无干扰 (6)E 级 2 数据修整 E 级 1 数据得到 A 级数据四、结语通过 2013 年对雷雨季节受干扰后不同质量的原始数据进行判别检验,对不同质量的云图原始11数据进行质量等级标注,实现同星、同时次、异地、多源原始数据拼接,局部修整,提高在用数据质量等级,使卫星云图信息为气象保障优质服务。使用特定数据初值的检验法,实现快速对卫星云图的质量进行检验和判别,较其它算法相比有着判别效率高,判别准确的特点,尤其在同星同时次多源数据质量判别与选用中有着独到的应用。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报