基于HBase的瓦片数据存储和建立索引的方法、读取方法和存取装置制造方法及图纸

技术编号:26171074 阅读:44 留言:0更新日期:2020-10-31 13:41
本发明专利技术提供一种基于HBase的瓦片数据存储和建立索引的方法、数据读取方法,包括:基于四叉树编码,采用“瓦片层级”+“四叉树编码”作为瓦片数据的空间索引,使瓦片数据与其同层级邻域四方向瓦片在物理存储上至少有两方向相邻或近邻;对瓦片数据再编码存储,使瓦片数据与其高层级邻域瓦片数据和低层级邻域瓦片数据在物理存储上相邻或近邻;读取瓦片数据时,基于瓦片层级,选取不同的邻域瓦片预读取策略,将邻域瓦片数据缓存。本发明专利技术使瓦片数据与其邻域瓦片数据在物理存储中排列相邻或近邻,在瓦片读取时,减少了待读取瓦片与其邻域瓦片的查询时间,并将邻域瓦片数据缓存,提高了瓦片数据读取效率。

【技术实现步骤摘要】
基于HBase的瓦片数据存储和建立索引的方法、读取方法和存取装置
本专利技术涉及地理信息数据的存储
,尤其是一种基于HBase的瓦片数据存储和建立索引的方法、读取方法。
技术介绍
近些年地理信息系统的发展迅速,在有关地理信息数据的可视化研究、地理信息数据的空间索引设计以及海量数据下GIS系统读取性能方面有了许多研究。当前对地理信息数据特别是瓦片数据的索引设计,大多基于瓦片金字塔模型进行切割,再对生成的瓦片进行编码、索引设计。但现有的索引设计方法大多并未考虑到瓦片数据读取特点:逻辑方位上相邻的瓦片很有可能在下一次读取中被访问。如专利:“一种海量瓦片数据的存储方法及读取方法”(专利文献CN201310398165.4)、“一种建立数据索引的方法、数据查询方法及相关装置”(专利文献CN201310508457.9),其目的是建立一种精确查找地图瓦片的索引设计和读取方法,并未从瓦片数据读取特点方面考虑,不支持预读取。而考虑到瓦片数据读取特点的索引设计和读取方法,如专利:“一种地图瓦片缓存的组织和管理方法”(专利文献CN201310146030.9)、“一种提高无人机瓦片地图加载效率的方法”(专利文献CN201910263143.4),这类设计考虑到地图瓦片数据读取特点,有缓存和邻域预读取机制,但是并未考虑索引设计对实际存储的影响,瓦片与其邻域瓦片存储不相邻,随着瓦片数据层级的增加,瓦片数据与其邻域瓦片数据在存储上间隔距离越大,在邻域预读取和缓存时,会增加I/O开销。
技术实现思路
专利技术的目的是在于克服现有技术中存在的不足,提供一种基于HBase的瓦片数据存储和建立索引的方法、一种数据读取方法及一种数据存取装置,能够减少空间相邻的瓦片在物理存储中的间隔位置,也提高了读取数据时的响应。第一方面,本申请提供一种基于HBase的瓦片数据存储和建立索引的方法,包括以下步骤:步骤S110,根据待存储的瓦片数据的属性信息,获得其层级及坐标值(x,y,z),生成对应的四叉树编码;其中层级z,坐标(x,y);步骤S120,以待存储瓦片数据的层级z和其四叉树编码作为索引,存储瓦片数据;步骤S130,根据待存储的瓦片数据的层级z,对层级大于6的瓦片数据再设计索引,使瓦片数据与其高层级邻域瓦片数据在物理存储中相邻或近邻,存储瓦片数据;步骤S140,根据待存储的瓦片数据的层级z,对层级大于6的瓦片数据再设计索引,使瓦片数据与其低层级邻域瓦片数据在物理存储中相邻或近邻,存储瓦片数据;步骤S150,合并HBase数据库的存储文件,使存储数据按索引的字典序排列。进一步地,步骤S120中,以“瓦片数据的层级”+“瓦片数据的四叉树编码”作为索引,待存储瓦片数据的二级制形式作为对应值,将待存储瓦片数据存入HBase数据库。进一步地,步骤S130中,在瓦片金字塔模型中,位于层级z,层级内坐标为(x,y)的瓦片,其高层级邻域瓦片均位于层级(z+1),层级内坐标分别为(x*2,y*2)、(x*2+1,y*2)、(x*2,y*2+1)、(x*2+1,y*2+1);以“高层级邻域瓦片数据的层级”+“高层级邻域瓦片数据的四叉树编码”+“4”作为索引(即rowkey),待存储瓦片数据的二进制形式作为对应值,将新生成的4条数据插入HBase数据库。进一步地,步骤S140中,在瓦片金字塔模型中,位于层级z,层级内坐标为(x,y)的瓦片,其低层级邻域瓦片位于层级(z-1),层级内坐标为(x/2,y/2)并向下取整;以“低层级邻域瓦片数据的层级”+“瓦片数据的四叉树编码”作为索引(即rowkey),待存储瓦片数据的二进制形式作为对应值,将新生成的1条数据插入HBase数据库。第二方面,本申请提供一种数据读取方法,包括以下步骤:步骤S210,收到读取瓦片数据请求;步骤S220,在缓存中查询是否存在待读取瓦片数据,若存在则读取瓦片数据,返回结果;若不存在则进行下一步;步骤S230,在HBase数据库中查询是否存在待读取瓦片数据,若不存在则返回结果;若存在则进行下一步;步骤S240,根据待读取瓦片数据所在层级选取对应的邻域预读取策略;将待读取瓦片数据和其领域瓦片数据存入缓存中,并返回结果。进一步地,步骤S240具体包括:步骤S2401,待读取瓦片数据层级为1-6时,不对其进行领域预读取,直接将待读取瓦片数据存入缓存中;步骤S2402,待读取瓦片数据层级为7-11时,从HBase数据库中,对待读取瓦片数据及其高层级邻域、低层级邻域、同层级绝对邻域瓦片数据选用scan的方式批量读取,并存入缓存中;步骤S2403,待读取瓦片数据层级大于等于12时,从HBase数据库中,对待读取瓦片数据、其高层级邻域、低层级邻域、同层级绝对邻域瓦片数据选用scan的方式批量读取,对待读取瓦片数据的同层级相对邻域选用get的方式单个读取,并存入缓存中。进一步地,所采用的缓存为Redis缓存数据库。进一步地,步骤S2402中,HBase数据库中存储文件的数据块大小为128KB或256KB。进一步地,骤S2403中,HBase数据库中存储文件的数据块大小为128KB或256KB。第三方面,本申请提供一种数据存取装置,所述数据存取装置包括处理器,所述处理器用于运行计算机程序,所述计算机程序运行时执行上文所述的基于HBase的瓦片数据存储和建立索引的方法的步骤和/或数据读取方法的步骤。本专利技术的优点在于:(1)设计了一种瓦片数据索引,对于以瓦片金字塔模型切割而生成的多层级瓦片数据,使在瓦片金字塔模型中空间相邻的瓦片数据,在物理存储排列中也相邻或近邻。减少了空间相邻的瓦片在物理存储中的间隔位置。(2)基于(1)中瓦片索引设计,结合瓦片数据读取时“邻域的瓦片数据极大可能在下一次访问中被读取”的特点,设计了一种基于瓦片数据层级的邻域预读取方法;在读取瓦片数据的同时,将其空间邻域瓦片数据提前缓存;由于瓦片数据与其空间相邻瓦片数据在物理存储中相邻或近邻,批量读取瓦片数据及其邻域瓦片数据,减少I/O次数,提高响应。根据瓦片数据层级的不同,设计不同的邻域数据缓存策略,减少了缓存的负载,均衡了资源消耗和响应性能。附图说明图1为本专利技术实施例中的瓦片数据存储和建立索引的方法流程图。图2为本专利技术实施例中的高层级再编码索引生成示意图。图3为本专利技术实施例中的低层级再编码索引生成示意图。图4为本专利技术实施例中的瓦片数据与其邻域瓦片数据在物理存储中的排列示意图。图5为本专利技术实施例中的数据读取方法总体流程图。图6为本专利技术实施例中的数据读取方法具体实例流程图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本专利技术,并不用于限定本专利技术。术本文档来自技高网...

【技术保护点】
1.一种基于HBase的瓦片数据存储和建立索引的方法,其特征在于,包括以下步骤:/n步骤S110,根据待存储的瓦片数据的属性信息,获得其层级及坐标值(x, y, z),生成对应的四叉树编码;其中层级z,坐标(x,y);/n步骤S120,以待存储瓦片数据的层级z和其四叉树编码作为索引,存储瓦片数据;/n步骤S130,根据待存储的瓦片数据的层级z,对层级大于6的瓦片数据再设计索引,使瓦片数据与其高层级邻域瓦片数据在物理存储中相邻或近邻,存储瓦片数据;/n步骤S140,根据待存储的瓦片数据的层级z,对层级大于6的瓦片数据再设计索引,使瓦片数据与其低层级邻域瓦片数据在物理存储中相邻或近邻,存储瓦片数据;/n步骤S150,合并HBase数据库的存储文件,使存储数据按索引的字典序排列。/n

【技术特征摘要】
1.一种基于HBase的瓦片数据存储和建立索引的方法,其特征在于,包括以下步骤:
步骤S110,根据待存储的瓦片数据的属性信息,获得其层级及坐标值(x,y,z),生成对应的四叉树编码;其中层级z,坐标(x,y);
步骤S120,以待存储瓦片数据的层级z和其四叉树编码作为索引,存储瓦片数据;
步骤S130,根据待存储的瓦片数据的层级z,对层级大于6的瓦片数据再设计索引,使瓦片数据与其高层级邻域瓦片数据在物理存储中相邻或近邻,存储瓦片数据;
步骤S140,根据待存储的瓦片数据的层级z,对层级大于6的瓦片数据再设计索引,使瓦片数据与其低层级邻域瓦片数据在物理存储中相邻或近邻,存储瓦片数据;
步骤S150,合并HBase数据库的存储文件,使存储数据按索引的字典序排列。


2.如权利要求1所述的基于HBase的瓦片数据存储和建立索引的方法,其特征在于,
步骤S120中,以“瓦片数据的层级”+“瓦片数据的四叉树编码”作为索引,待存储瓦片数据的二级制形式作为对应值,将待存储瓦片数据存入HBase数据库。


3.如权利要求1所述的基于HBase的瓦片数据存储和建立索引的方法,其特征在于,
步骤S130中,在瓦片金字塔模型中,位于层级z,层级内坐标为(x,y)的瓦片,其高层级邻域瓦片均位于层级(z+1),层级内坐标分别为(x*2,y*2)、(x*2+1,y*2)、(x*2,y*2+1)、(x*2+1,y*2+1);
以“高层级邻域瓦片数据的层级”+“高层级邻域瓦片数据的四叉树编码”+“4”作为索引,待存储瓦片数据的二进制形式作为对应值,将新生成的4条数据插入HBase数据库。


4.如权利要求1所述的基于HBase的瓦片数据存储和建立索引的方法,其特征在于,
步骤S140中,在瓦片金字塔模型中,位于层级z,层级内坐标为(x,y)的瓦片,其低层级邻域瓦片位于层级(z-1),层级内坐标为(x/2,y/2)并向下取整;
以“低层级邻域瓦片数据的层级”+“瓦片数据的四叉树编码”作为索引(即rowkey),待存储瓦片数据的二进制形式作为对应值,将新生成...

【专利技术属性】
技术研发人员:鬲思尧崔光霁台宪青
申请(专利权)人:江苏物联网研究发展中心
类型:发明
国别省市:江苏;32

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

1