一种高效容错的数据采集方法技术

技术编号:15398407 阅读:201 留言:0更新日期:2017-05-22 14:03
一种高效容错的数据采集方法,方法用流水线的方式处理卫星的大规模数据流,而循环缓冲是作为流水线的“装配车间”。循环缓冲能够巧妙地将卫星数传过程中的误码局限在一个缓冲的长度之内,提高鲁棒性。并且,该方法采用比特位指示每一个卫星行中的解压缩行缺失情况,采取索引解压缩行位置的方法替代实际拷贝操作,这些改进能够最大限度提高对卫星数据进行实时处理的能力。

An efficient fault tolerant data acquisition method

An efficient fault tolerant data acquisition method, which uses pipelining to process large data streams of satellites, while cyclic buffering is used as the assembly line of the assembly line\. Cyclic buffering can improve the robustness of the error in the process of satellite data transmission. Also, the method uses bits indicating each satellite line decompression for the lack of alternative methods to extract the actual position index for the copy operation, these improvements can maximize the ability of real-time processing of satellite data.

【技术实现步骤摘要】
一种高效容错的数据采集方法
本专利技术属于遥感地面处理领域。
技术介绍
现今,遥感卫星所载相机的分辨率达到1米量级已经十分普遍,随着分辨率的提高,卫星数传系统的压力也增加明显。为了在有限的数传通道中尽可能传输多种载荷数据,对载荷数据进行压缩是很有必要的。光学相机的CCD像元多达数万,星上的数传系统把CCD像元按照一定规则切分成几路交由数个压缩编码器同时进行压缩处理,再传往地面。在地面上,采集程序需要把几路的解压缩数据拼接在一起组成完整数据,地面系统把它称作0级数据。每一路过来的解压缩数据帧作为0级数据某一行图像的某一列,具体处于哪一行由行计数决定,处于哪一列由列号决定。因此,采集的输入是多路解压缩输出的解压缩数据,解压缩数据的一个基本单位是一个解压缩数据行,每一个解压缩数据行由行号和列号共同标识。采集的输出是排序的卫星数据行。每一个卫星数据行由具有相同行号的解压缩数据行拼接而成,拼接的顺序由列号决定。一个卫星数据行的某一列数据可能由任一路解压缩输出。但是,总的列数和行数是相等的。在采集的拼接过程中,行计数和列号是把数据对齐的重要依据:行计数相同的解压缩数据帧才能拼接在一起,而列号决定了拼接的位置。一般情况下,不同路输出的解压缩数据帧是不同步的,也就是行计数不同,但相隔在一个允许值MaxDiffLine范围内。拼接的过程是把各路输出的解压缩帧按照顺序放在一起。例如,L3001V1,L3001V2,L3001V3为第3001行;L3002V1,L3002V2,L3002V3为第3002行。如果某一0级数据行的列号都存在,则该行为完整行,否则,该行称为不完整行。正常情况下,采集的输出应该是行号连续的完整行,即连续完整行。由于卫星数传、接收站接收的干扰,接收站与处理中心网络通道等原因,行计数和列号两个值并不总是正确的,采集程序即使不能纠正误码,也要尽可能从错误状态中恢复到正常,以便顺利处理剩余数据,即具有较强的鲁棒性。在一次成像过程中,行计数是自然数排序的,也就是每次严格递增1。但是,相机经常多次成像,并通过一次回放在一次采集处理中。这样,采集拼接过程中的行计数完全可能出现跳跃,既可能往前跳,即较大的行计数突变到较小的行计数;也可能往后跳,即较小的行计数突变到较大的行计数。多段成像需要在采集过程中以多段的形式标识出来。令人困扰的是,行计数由于多段成像产生的跳变与误码产生的错误跳变是无法准确区分的。多段成像和误码大大提升了数据采集的难度。
技术实现思路
本专利技术的技术解决问题是:克服现有技术的不足,提供一种高效容错的数据采集方法,该方法能够以巧妙的方式处理误码,并能够极快的进行高分辨率相机的大数据量处理。本专利技术的技术解决方案是:一种高效容错的数据采集方法,步骤如下:(1)建立循环缓冲区并初始化为0;该缓冲区的结构包括三个循环缓冲camId[LINEBUFLEN][WAYCOUNT];line_pin[LINEBUFLEN];line_ind[LINEBUFLEN];和数组last_line_per[WAYCOUNT];以及两个变量write_line,intfinish_line,通过变量write_line和finish_line记录连续完整行的范围;其中,LINEBUFLEN代表缓冲区的长度,WAYCOUNT代表解压缩数据的路数;line_pin[]用于指示一个卫星行的完整情况,其中每个解压缩数据行根据自身的列号对应一个比特;(2)接收外部输入的多路解压缩数据,对每路解压缩数据进行帧同步处理;(3)从步骤(2)处理后的任一一路解压缩数据开始,读入解压缩数据行,将该行作为当前解压缩数据行;(4)识别当前解压缩数据行的行号和列号AuxSeq,用连续性对行号进行验证和纠错,得到正确的当前解压缩行的行号cur_line;(5)根据cur_line以及缓冲区的长度LINEBUFLEN,计算cur_line在循环缓冲区中的下标lineIndex;(6)判断line_ind[lineIndex]是否等于cur_line,若等于,则直接转步骤(7);若不等于,则line_pin[lineIndex]=0,line_ind[lineIndex]=cur_line,转步骤(7);(7)将line_pin[lineIndex]中的第AuxSeq列的比特置为1;(8)将当前解压缩数据行的位置记录在camId[lineIndex][AuxSeq]缓冲区中;(9)判断line_pin[lineIndex]中的比特是否全为1,若全为1,则转步骤(10),否则,读入另一解压缩数据行,将该行作为当前解压缩数据行转步骤(4);(10)判断write_line+1是否等于cur_line,若等于,则转步骤(11);否则,转步骤(12);(11)令write_line=cur_line,判断write_line-finish_line是否大于预设的阈值,若大于,则从camId[i][j]缓冲区中取出对应的数据输出,其中,i为finish_line到write_line之间的所有行的下标,j取值1—WAYCOUNT;否则读入另一解压缩数据行,将该行作为当前解压缩数据行转步骤(4);(12)从camId[i][j]缓冲区中取出对应的数据输出,其中,i为finish_line到write_line之间的所有行的下标,j取值1—WAYCOUNT,令write_line=cur_line,finish_line=cur_line;读入另一解压缩数据行,将该行作为当前解压缩数据行转步骤(4)。本专利技术与现有技术相比有益效果为:本专利技术摒弃了有序链表的排序方式,采用二进制掩码的方式对列号进行拼接;采用连续区间标志行计数严格增一的范围;把列号掩码,行计数和解压缩数据行的索引放入三个循环缓冲。把解压缩数据行的索引而不是解压缩数据行本身放入循环缓冲减少了数据拷贝,能够提高性能。采用掩码的方式拼接列号能够快速判断拼接的0级数据行是否完整。最后,采用递增区间而不是链表排序的方式能够减少搜索和排序操作。重要的是,循环缓冲巧妙地解决了误码对采集后续数据的影响。因为即使行计数和列号错误导致循环缓冲被写坏,相隔大约缓冲长度的行之后,后续正确的行计数和列号将覆盖错误值,从而恢复正确处理,提高鲁棒性。并且,该方法采用比特位指示每一个卫星行中的解压缩行缺失情况,采取索引解压缩行位置的方法替代实际拷贝操作,这些改进能够最大限度提高对卫星数据进行实时处理的能力附图说明图1为本专利技术采集程序对各路输出得解压缩数据进行拼接的流程;图2为本专利技术拼接过程中使用的循环缓冲区的结构示意图。具体实施方式高分辨率遥感卫星的数据率非常高,当空间分辨率达到米级时,每秒的数据量S主要由图像数据决定,计算公式是:其中,REarth是地球平均半径,T是卫星周期,遥感卫星一般是100分钟左右,δ是卫星空间分辨率;W是卫星幅宽,c是每像素的量化字节数。则一般高分辨率遥感卫星的每秒钟的图像数据有加上卫星的辅助数据及数传的格式信息,地面系统在录入数据时,如果要达到原速(即与卫星成像速度相同的速度)采集解压缩数据,则需要至少每秒钟接收,同步,拼接和保存至少500MB的数据。同时,高数据率也意味着普通的机房服务器无法一次性读入本文档来自技高网
...
一种高效容错的数据采集方法

【技术保护点】
一种高效容错的数据采集方法,其特征在于步骤如下:(1)建立循环缓冲区并初始化为0;该缓冲区的结构包括三个循环缓冲camId[LINEBUFLEN][WAYCOUNT];line_pin[LINEBUFLEN];line_ind[LINEBUFLEN];和数组last_line_per[WAYCOUNT];以及两个变量write_line,int finish_line,通过变量write_line和finish_line记录连续完整行的范围;其中,LINEBUFLEN代表缓冲区的长度,WAYCOUNT代表解压缩数据的路数;line_pin[]用于指示一个卫星行的完整情况,其中每个解压缩数据行根据自身的列号对应一个比特;(2)接收外部输入的多路解压缩数据,对每路解压缩数据进行帧同步处理;(3)从步骤(2)处理后的任意一路解压缩数据开始,读入解压缩数据行,将该行作为当前解压缩数据行;(4)识别当前解压缩数据行的行号和列号AuxSeq,用连续性对行号进行验证和纠错,得到正确的当前解压缩行的行号cur_line;(5)根据cur_line以及缓冲区的长度LINEBUFLEN,计算cur_line在循环缓冲区中的下标lineIndex;(6)判断line_ind[lineIndex]是否等于cur_line,若等于,则直接转步骤(7);若不等于,则line_pin[lineIndex]=0,line_ind[lineIndex]=cur_line,转步骤(7);(7)将line_pin[lineIndex]中的第AuxSeq列的比特置为1;(8)将当前解压缩数据行的位置记录在camId[lineIndex][AuxSeq]缓冲区中;(9)判断line_pin[lineIndex]中的比特是否全为1,若全为1,则转步骤(10),否则,读入另一解压缩数据行,将该行作为当前解压缩数据行转步骤(4);(10)判断write_line+1是否等于cur_line,若等于,则转步骤(11);否则,转步骤(12);(11)令write_line=cur_line,判断write_line‑finish_line是否大于预设的阈值,若大于,则从camId[i][j]缓冲区中取出对应的数据输出,其中,i为finish_line到write_line之间的所有行的下标,j取值1—WAYCOUNT;否则读入另一解压缩数据行,将该行作为当前解压缩数据行转步骤(4);(12)从camId[i][j]缓冲区中取出对应的数据输出,其中,i为finish_line到write_line之间的所有行的下标,j取值1—WAYCOUNT,令write_line=cur_line,finish_line=cur_line;读入另一解压缩数据行,将该行作为当前解压缩数据行转步骤(4)。...

【技术特征摘要】
1.一种高效容错的数据采集方法,其特征在于步骤如下:(1)建立循环缓冲区并初始化为0;该缓冲区的结构包括三个循环缓冲camId[LINEBUFLEN][WAYCOUNT];line_pin[LINEBUFLEN];line_ind[LINEBUFLEN];和数组last_line_per[WAYCOUNT];以及两个变量write_line,intfinish_line,通过变量write_line和finish_line记录连续完整行的范围;其中,LINEBUFLEN代表缓冲区的长度,WAYCOUNT代表解压缩数据的路数;line_pin[]用于指示一个卫星行的完整情况,其中每个解压缩数据行根据自身的列号对应一个比特;(2)接收外部输入的多路解压缩数据,对每路解压缩数据进行帧同步处理;(3)从步骤(2)处理后的任意一路解压缩数据开始,读入解压缩数据行,将该行作为当前解压缩数据行;(4)识别当前解压缩数据行的行号和列号AuxSeq,用连续性对行号进行验证和纠错,得到正确的当前解压缩行的行号cur_line;(5)根据cur_line以及缓冲区的长度LINEBUFLEN,计算cur_line在循环缓冲区中的下标lineIndex;(6)判断line_ind[lineIndex]是否等于cur_line,若等于,则直接转步骤(7);若不等于,则line_pin[lineIn...

【专利技术属性】
技术研发人员:李运伟喻文勇王小燕
申请(专利权)人:中国资源卫星应用中心
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1