发明名称 一种面向虚拟地球的栅格数据快速建库方法
摘要 本发明涉及一种面向虚拟地球的栅格数据快速建库方法。该方法提出,如果第0层一个瓦片对应的原始遥感影像数据无法一次完全载入内存,从中间层(内存需求最小层)开始构建金字塔。这样打破了以往逐层构建的局限性,仅需扫描原始数据文件一次,减少了I/O操作次数,消除了处理海量数据时读取数据的瓶颈问题。本发明还设计了瓦片处理线程和瓦片计算线程两类线程,让两类线程同时运行,充分利用了系统资源,根据硬件不同的条件,配置多个瓦片计算线程,使程序读数据和写数据的速度相匹配,实现了读写操作的同步性,节省了读写操作相互等待的时间。提高了金字塔构建的效率,尤其适合于对超大遥感数据文件的处理。
申请公布号 CN102509022A 申请公布日期 2012.06.20
申请号 CN201110366702.8 申请日期 2011.11.18
申请人 武汉大学 发明人 向隆刚;曾珍
分类号 G06F19/00(2011.01)I 主分类号 G06F19/00(2011.01)I
代理机构 武汉科皓知识产权代理事务所(特殊普通合伙) 42222 代理人 薛玲
主权项 一种面向虚拟地球的栅格数据快速建库方法,其特征在于,包括以下步骤:步骤1,读取原始遥感影像的信息,包括原始遥感影像的波段数bn、原始遥感影像的尺寸pw×ph、原始遥感影像的影像分辨率pd以及原始遥感影像对应的地理范围(rw, rs, re, rn);定义瓦片结构体,所述瓦片结构体是用于在内存中存储瓦片数据并对瓦片进行标识的数据结构体;步骤2,待构建金字塔的最顶层为分辨率最低的层次,标记为第0层;根据原始遥感影像对应的地理范围(rw, rs, re, rn)和第0层瓦片分辨率yd[0],计算出第0层瓦片的起止范围,计算方式如下,sr[0] = (rw+180+1e‑8)/yd[0]             er[0] = (re+180+1e‑8)/yd[0]             sc[0] = (rs+90+1e‑8)/yd[0]  ec[0] = (rn+90+1e‑8)/yd[0]  其中,sr[0]为第0层的开始行、er[0]为第0层的结束行、sc[0]为第0层的开始列、ec[0]为第0层的结束列、e为数学参数;第0层瓦片分辨率yd[0]根据原始遥感影像的影像分辨率pd计算,计算公式如下,yd[0]=pd×tilesize×2l‑1其中,l为预设的待构建金字塔的层数,tilesize为预设的瓦片大小; 步骤3,比较第0层一个瓦片对应原始遥感影像所需的内存memvolume[0]与预设的可申请的内存,设预设的可申请内存上限为ms个字节,当所需内存大小memvolume[0]不大于可申请内存上限ms时进入步骤4,否则进入步骤5;所述第0层一个瓦片对应原始遥感影像所需的内存大小memvolume[0]根据原始遥感影像的波段数bn计算,计算公式如下,memvolume[0] =pixelvolume[0]×bn其中,pixelvolume[0]为第0层中存储一个瓦片覆盖原始遥感影像的其中一个波段的信息所需的内存大小,根据第0层瓦片分辨率yd[0]、原始遥感影像的尺寸pw×ph和原始遥感影像对应的地理范围(rw, rs, re, rn)计算,计算公式如下,pixelvolume[0] = (yd[0]×pw/(re‑rw)+0.5)×( yd[0]×ph/(rn‑rs)+0.5) ×sizeof(type)其中type为存储像素值的数据类型,sizeof()是获取数据类型在计算机内占有字节数的函数;步骤4,逐个处理第0层的每一个瓦片,处理方式为计算第0层中某瓦片在原始遥感影像的像素覆盖范围,并将该范围对应的原始影像数据的数据块读入到内存,记为数据块i,数据块i对应的第0层瓦片及其四分后代瓦片的瓦片结构体记为集合sti,将集合sti初始化;遍历集合sti,当遍历到集合sti中的某个瓦片结构体时,在数据块i中获取相应的数据,通过插值获得瓦片数据并编码; 处理第0层的所有瓦片后进入步骤6;步骤5,设某一层中存储一个瓦片对应的原始影像所需的内存大小为memvolume[level],存储从第0层到该层上一层的所有瓦片结构体所需的内存大小是tlstuvolume[level],设memvolume[level]+tlstuvolume[level]取值最小的层为内存需求最小层wl;进行以下步骤,步骤5.1,求取内存需求最小层wl,计算公式如下,wl=max(0, └(l‑e‑1)/2┘) 其中e = └log4(m/3) ┘,└┘代表向下取整;m表示第0层瓦片个数,根据步骤2所得第0层的开始行sr[0]、第0层的结束行er[0]、第0层的开始列sc[0]和第0层的结束列ec[0]计算,计算公式如下, m=(er[0]‑sr[0]+1)*(ec[0]‑sc[0]+1)步骤5.2,将第0层到第wl‑1层的所有瓦片结构体记为集合ts,将集合ts初始化,并加载到内存之中; 步骤5.3,逐个处理第w1层的每一个瓦片,处理方式为计算第w1层中某瓦片在原始遥感影像的像素覆盖范围,并将该范围对应的原始影像数据的数据块读入内存,记为数据块i,数据块i对应的第w1层瓦片及其四分后代瓦片的瓦片结构体记为集合sti,将集合sti初始化;遍历集合sti和集合ts,当遍历到集合sti中的某个瓦片结构体时,在数据块i中获取相应的数据,通过插值获得瓦片数据并编码; 当遍历到集合ts中的某个瓦片结构体时,判断瓦片的覆盖范围是否包括数据块i,如果包括则插值获得该瓦片内相应部分区域的瓦片数据,在获得该瓦片内所有瓦片数据后进行编码;处理第w1层的所有瓦片后进入步骤6;步骤6,输出多分辨率金字塔。
地址 430072 湖北省武汉市武昌区珞珈山武汉大学