一种填充栅格数据的方法及系统的制作方法

文档序号:6434637阅读:370来源:国知局
专利名称:一种填充栅格数据的方法及系统的制作方法
技术领域
本发明涉及图像技术领域,特别是涉及填充栅格数据的方法及系统。
技术背景
地理信息系统(Geographic Information System, GIS)是一种具有采集空间数据并存储、管理、分析与表现空间信息的计算机系统。采用GIS技术使高效管理具有空间分布特征的原始数据及其制图输出成为可能,并逐步成为现代企业管理和政府决策的有力助手。数据则是地理信息系统的基础,在现有的系统开发设计中,投入成本最大的就是数据处理,其投入费用占系统建立和维护的70%以上。从应用的角度来看,近几年GIS的应用领域不断扩大,出现了大量成熟的商业GIS平台,空间数据的建设越来越受到重视。基于空间数据基础设施的建设,人们开始了空间数据共享和互操作的研究。但是多种数据格式的互相转换,均需要以栅格图像矢量化为前提。
采用栅格图像,取消矢量化数据的步骤是对GIS数据处理的发展趋势,提出了一些基于栅格数据的地理信息系统技术体系,并得到了应用实践。
基于栅格数据的地理信息系统,根据地理信息系统所采用的数据类型,可以将地理信息系统分为基于矢量数据的地理信息系统(简称矢量地理信息系统,Vector GIS)、基于栅格数据的地理信息系统(简称栅格地理信息系统,Raster GIS)、以及基于混合数据的地理信息系统。栅格数据是指在空间和亮度上都已经离散化了的图像,常见的数据有IFF、 BMP、PCX、JPEG等格式的数据。基于栅格数据的地理信息系统,是指系统所利用的数据模型以栅格数据为主,基于栅格数据实现地理信息系统的功能。
栅格地图,可以凭借航测数据为基础,将所得信息全部显示在地图上供决策者使用。其本身也符合普通用户操作习惯,空问分析和地理现象的模拟均比较容易,视觉感亲切,有利于与遥感数据的匹配应用和分析。另外,利用栅格地图数据进行操作,一些影像图可直接利用,节省了数据处理的时间。
在GIS的应用中,经常有大量的栅格类型的数据,栅格类型是由大量的小方格子组成,每个方格里都存放着相应的数据,针对土地利用,这一栅格,其中某些区域中代表林地或农田的格子里的值都是一样的,对于这种情形,现有的技术进行赋值时,通常是逐次对各删格进行赋值,速度较慢,效率很低。发明内容
有鉴于此,本发明提供一种填充栅格数据的方法及系统,可快速高效地进行栅格赋值。
本发明提供的一种填充栅格数据的方法,包括
根据栅格的格网参数确定作为后续复制的种子;
以K个所述种子为单位对预定区域内的栅格进行赋值,所赋值为所述格网参数值;
检测所述预定区域内剩余未赋值的栅格数,若剩余未赋值的栅格数小于K,则采用以L个所述种子为单位对预定区域内的栅格进行赋值,K,L为正整数,L < K。
优选地,K= 2m,L = 2n,m = 0,1,2,3,. . .Μ,η = 1,2,3,. . .N,η < m。本发明还提供一种实现栅格数据填充的系统,包括
基本填充单位确定模块,用于根据栅格的格网参数确定作为后续复制的种子;
赋值模块,以K个所述种子为单位对预定区域内的栅格进行赋值,所赋值为所述格网参数值;
检测模块,用于检测所述预定区域内剩余未赋值的栅格数,若剩余未赋值的栅格数小于K,则所述赋值模块采用以L个所述种子为单位对预定区域内的栅格进行赋值,K,L 为正整数,L < K。
更适宜地,K= 2m,L = 2n,m = 0,1,2,3,. · ·Μ,η = 1,2,3,. · · N,η < m。
综上所述,本发明提供的技术方案中,通过预先确定的赋值种子,并不断加倍放大种子,以K个种子为单位对预定区域内的栅格进行赋值,所赋值为所述格网参数值,利用放大的新种子进行滚动赋值,这样在擦除栅格数据或者给栅格数据进行赋值时,能够提高赋值速度与效率,尤其在擦除栅格数据时,可以倍增的方式大范围地进行滚动赋值(例如,0 或其它预定值),这样能够缩短擦除数据的时间。


图1为本发明提供的一种填充栅格数据的方法流程图2为本发明实施例中提供的填充栅格数据的原理示意图3为本发明实施例中提供的实现栅格数据填充的系统架构示意图。
具体实施方式
在电子地图等图像中栅格数据用单个格网单元代表点、用一系列相邻格网单元代表线、邻接格网的集合代表面。格网中的每一个格网单元有一个值,整型或浮点型。整型格网单元值通常代表类别数据。比如,土地类型常用1代表城市用地、2代表林地等。浮点型格网单元值常表示连续数据,比如,降水量模型可能有20、15、12、23等降水量值。浮点型格网比整型格网需要更多的计算机存储资源,这是涉及大范围的GIS项目必须考虑的一个重要因素。而且,浮点型网格的数据查询与显示应该基于12. 0 19. 0这样的值域,而非单个值。
在GIS的应用中,经常有大量的栅格类型的数据,栅格类型是由大量的小方格子组成,每个方格里都存放着相应的数据,针对土地利用,这一栅格,其中某些区域中代表林地或农田的格子里的值都是一样的,对于这种情形,鉴于现有技术中存在的缺点和不足,本发明提出了一种填充栅格数据的方法,可快速实现栅格的赋值,另外,针对一个已有的栅格进行擦出,也是类似。
参照图1,本发明提供的一种填充栅格数据的方法,包括如下步骤
S01,根据栅格的格网参数确定作为后续复制的种子;
S02,以K个所述种子为单位对预定区域内的栅格进行赋值,所赋值为所述格网参数值;
S03,检测所述预定区域内剩余未赋值的栅格数,若剩余未赋值的栅格数小于K,则采用以L个所述种子为单位对预定区域内的栅格进行赋值,K,L为正整数,L < K。
具体实施方案中,K= 2m,L = 2n,m = 0,1,2,3,. . .Μ, η = 1,2,3,. . .N,η < m。
以K个种子为单位对预定区域内的栅格进行赋值,具体为
第一次赋值采用所述种子为单位直接复制;
第二次次赋值以2个种子为单位直接复制;
第s次采用进行2s—1个种子为单位进行复制,s = 1,2,3,... S。
为使本发明的原理、特性和优点更加清楚,下面结合具体实施例进行详细描述。
本发明实施例中,所述栅格所需赋值的参数为一数组A[I],该数组A[I]中的元素 A[i]为格网参数,i = 1,2,3,...1,所述对预定区域内的栅格进行赋值,具体为
对于数组A[I],首先,对A[l]进行赋值,然后将A[l]指向的内存数据拷贝给 A[2];再将A[l]和A[2]进行拷贝到A[3]和M4],如此滚动给数组A[I]的其他元素赋值。 假定,I = 8,为A
赋值后,将A[l]的内存内容拷贝给A[2]即可为A[l]赋值,然后将 A[l],A[2]的内容拷贝给A[3],AW],然后将A[l],A[2],A[3],AW]的内容拷贝给A[5], A[6],A[7],A[8]即完成了该数组的赋值,仅进行了 3次内存操作,如果使用传统方式,各自赋值,那么将根据数组内的结构体类型,假如是Int型,那么将通过cpu进行8次赋值,如果数组内的结构体类型为多个int或者char的,那么每个结构体内有几个简单类型,为每个结构体赋值就需要几次cpu赋值操作,多个结构体赋值,即每个结构体赋值的cpu操作次数乘以结构体数量,从而提高了赋值效率。
数组A里面存放的是栅格数据的数据块,这是一种快速擦除栅格数据,或者进行快速栅格数据赋值的方法,拿土地利用的栅格举例,可能很大一片地都是农田,那么这些栅格块就需要赋相同的值,或者想将一个现有的栅格擦除,那么也适合使用本方法,本方法名称叫做快速填充或删除栅格数据的方法。数组是里面并不一定是数值,也可能是结构体,传统方式,是通过CPU进行赋值,只能进行频繁的内存写操作,与硬盘无关。
具体地,假定栅格所需赋值的参数为数组A[100],首先,对A[l]赋值为某个值,然后将A[l]指向的内存拷贝给A[2],此时,该段内存,再进行拷贝,就能给数组的两个元素赋值,再进行一次,就是4个元素,最终,A[100]的赋值,只需要对内存进行7次,而如果使用传统的方式,则需要100次内存的读写操作。
由此可见,采用本实施例提供的这种滚动赋值的方式,能够实现2的N次方的递增。擦除栅格数据或者给栅格数据进行赋值时,能够提高赋值速度与效率,尤其在擦除栅格数据时,能够缩短赋值时间。
需要说明的是,本实施例中所提供的这种内存复制的方式,最后是会有边界检验的,如果发现越界,那么越界之后的部分就不会再进行赋值操作了,比如当本次检验发现用来赋值的种子已经比后面需要赋值的部分都大了,那么就只拷贝后面部分需要的大小去进行赋值了。参照图2,具体赋值过程如下
ST1,对内存进行赋值并作为以后内存拷贝的种子;
ST2,检测发现剩余未赋值内存块数量(9个),大于种子数量(1个),将已经赋值的内存块进行复制,实现滚动赋;
ST3,检测发现剩余未赋值内存块数量(8个),大于种子数量0个),将已经赋值5的内存块进行复制,实现滚动赋;
ST4,检测发现剩余未赋值内存块数量(6个),大于种子数量0个),将已经赋值的内存块进行复制,实现滚动赋;
ST5,检测发现仅剩两个内存块未赋值,而种子大小为八个,则仅将前两个内存块进行复制。
参照图3,本实施例还提供一种实现栅格数据填充的系统300,包括
基本填充单位确定模块310,用于根据栅格的格网参数确定作为后续复制的种子;
赋值模块320,以K个所述种子为单位对预定区域内的栅格进行赋值,所赋值为所述格网参数值;
检测模块330,用于检测所述预定区域内剩余未赋值的栅格数,若剩余未赋值的栅格数小于K,则赋值模块320采用以L个所述种子为单位对预定区域内的栅格进行赋值,K, L为正整数,L < K。
具体实施例中K = 2m,L = 2n,m = 0,1,2,3,. · ·Μ,η = 1,2,3,. · · N,η < m。
本发明实施例还提供的实现栅格数据填充的系统,其工作原理如前述栅格数据填充方法基本相同,在此不再赘述。
综上所述,本发明提供的技术方案中,通过预先确定的赋值种子,并不断加倍放大种子,以K个种子为单位对预定区域内的栅格进行赋值,所赋值为所述格网参数值,利用放大的新种子进行滚动赋值,这样在擦除栅格数据或者给栅格数据进行赋值时,能够提高赋值速度与效率,尤其在擦除栅格数据时,以倍增的方式大范围地进行滚动赋值(例如,0或其它预定值),这样能够缩短擦除数据的时间。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本发明所提供的填充栅格数据方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种填充栅格数据的方法,其特征在于,包括根据栅格的格网参数确定作为后续复制的种子;以K个所述种子为单位对预定区域内的栅格进行赋值,所赋值为所述格网参数值;检测所述预定区域内剩余未赋值的栅格数,若剩余未赋值的栅格数小于K,则采用以L 个所述种子为单位对预定区域内的栅格进行赋值,K,L为正整数,L < K。
2.如权利要求1所述的方法,其特征在于,K = 2m,L = 2n,m = 0,1,2,3,. . .Μ, η = 1,2,3,. . . N,η < m。
3.如权利要求1所述的方法,其特征在于,所述以K个种子为单位对预定区域内的栅格进行赋值,具体为第一次赋值采用所述种子为单位直接复制;第二次次赋值以2个种子为单位直接复制;第s次采用进行2s—1个种子为单位进行复制,s = 1,2,3,... S。
4.如权利要求3所述的方法,其特征在于,所述栅格所需赋值的参数为一数组A[I],该数组A[I]中的元素A[i]为格网参数,i = 1,2,3, ...1,所述对预定区域内的栅格进行赋值,具体为对于数组A[I],首先,对A[l]进行赋值,然后将A[l]指向的内存数据拷贝给A[2];再将A[l]和A[2]进行拷贝到A[3]和M4],如此滚动给数组A[I]的其他元素赋值。
5.一种实现栅格数据填充的系统,其特征在于,包括基本填充单位确定模块,用于根据栅格的格网参数确定作为后续复制的种子;赋值模块,以K个所述种子为单位对预定区域内的栅格进行赋值,所赋值为所述格网参数值;检测模块,用于检测所述预定区域内剩余未赋值的栅格数,若剩余未赋值的栅格数小于K,则所述赋值模块采用以L个所述种子为单位对预定区域内的栅格进行赋值,K,L为正整数,L < K。
6.如权利要求5所述的系统,其特征在于,K = 2m,L = 2n,m = 0,1,2,3,. . .Μ, η = 1,2,3,. . . N,η < m。
全文摘要
本发明提供了一种填充栅格数据的方法,包括根据栅格的格网参数确定作为后续复制的种子;以K个所述种子为单位对预定区域内的栅格进行赋值,所赋值为所述格网参数值;检测所述预定区域内剩余未赋值的栅格数,若剩余未赋值的栅格数小于K,则采用以L个所述种子为单位对预定区域内的栅格进行赋值,K,L为正整数,L<K。优选地,K=2m,L=2n,m=0,1,2,3,...M,n=1,2,3,...N,n<m。本发明还相应地提供一种实现栅格数据填充的系统,包括基本填充单位确定模块,赋值模块以及检测模块。根据本发明可以倍增的方式进行滚动赋值,这样在擦除栅格数据或者给栅格数据进行赋值时,能够提高赋值速度与效率。
文档编号G06F17/30GK102508853SQ201110298018
公开日2012年6月20日 申请日期2011年9月28日 优先权日2011年9月28日
发明者史明昌, 孙成宝, 曹刚, 李团宏, 李嵩, 黄兆伟 申请人:北京地拓科技发展有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1