在这里云图原始数据以内存流的方式打开。mStream1、mStream2分别是两个处于不同地理位置的接收系统提供地同时次同颗卫星云图原始数据的内存流,其中mStream1提供可利用的数据,mStream2是作为主系统使用的局部存在数据被干扰的原始数据的内存流。在经过对两个数据流同步进行质量判别后,选择要修改的数据帧,进行数据更替和保存,完成主系统云图数据的修整,实现提高使用数据的质量要求。
(一)内存流实现数据修改
进行内存流操作,便捷高效,程序与写-写方式打开被质量检测的原始数据,对原始数据的类型、帧数、尺寸、数据生成时间等以实现对数据的同步修改。
mStream1:=TMemoryStream.Create; {创建内存流}
mStream1.LoadFromFile(‘文件路径+文件名称’); {把文件读入内存流} if mStream1.Size<>0 Then begin
pc:=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; {内存流中添加内存流数据函数} var
mStreamzy,mStreammb:TMemoryStream; kaishic,shuju,MyFliesize:integer; begin try
{源文件数据定位}
mStream1.Seek(Kaishic,0); {被修整数据定位}
mStream2.Seek(kaishic,0);
{从源文件数据流mStream1中某帧到某帧读取shuju长的数据到被修整数流mStream2中} mStream2.CopyFrom(mStream1,shuju); {获取数据长度} MyFliesize:=
8