一种海量瓦片数据迁移及格式转换的方法和系统与流程

文档序号:26938705发布日期:2021-10-12 14:01阅读:55来源:国知局
一种海量瓦片数据迁移及格式转换的方法和系统与流程

1.本发明属于地理信息系统技术领域,特别地涉及一种海量瓦片数据迁移及格式转换的方法和系统。


背景技术:

2.当前,越来越多的地图服务使用到了瓦片技术,这就需要存储tb级的海量瓦片数据。hbase数据库可以很好地满足这种海量瓦片数据的存储需求。一般情况下,将瓦片数据存储在hbase数据库中是一个很好的选择。
3.在大多数的地图服务中,需要通过访问mbtiles文件来获取服务所需要的瓦片数据。而这就需要我们将已有的海量瓦片数据从hbase数据库迁移转换为mbtiles文件。并且,在迁移的过程中,程序需要处理数据在两个数据库中不同的索引方式,对数据索引进行转换。geoserver服务内置了生成mbtiles文件的程序,但其中间流程较多,迁移效率低下。
4.在实际情况下,38t的瓦片数据,预估迁移时间为5年。对于实际生产而言,这远远无法满足需求。


技术实现要素:

5.本发明的目的在于提供一种海量瓦片数据迁移及格式转换的方法和系统,通过对瓦片数据的处理,减少了设计的复杂性,提高了程序的运行效率。
6.为此,根据本发明的第一方面,提供了一种海量瓦片数据迁移及格式转换的方法,包括以下步骤:
7.根据经纬度范围和mbtiles文件的格式设定,对导入hbase数据库中的瓦片数据进行切分;
8.根据切分后的瓦片数据建立多个任务,并将所述多个任务置于线程池队列中;
9.并行地运行所述线程池队列中的任务,将所述hbase数据库中的瓦片数据迁移并转换为mbtiles文件。
10.进一步的,所述根据经纬度范围和mbtiles文件的格式设定,对导入hbase数据库中的瓦片数据进行切分包括:
11.根据所述瓦片数据的经纬度范围,按照坐标系转换规则,确定所述瓦片数据在hbase数据库中的rowkey范围;
12.根据mbtiles文件的格式设定,将所述rowkey范围的瓦片数据切分成多个互相独立的区域范围。
13.进一步的,所述根据切分后的瓦片数据建立多个任务包括:
14.每个任务对应于一个独立的区域范围内的瓦片数据。
15.进一步的,所述并行地运行所述线程池队列中的任务,将所述hbase数据库中的瓦片数据迁移并转换为mbtiles文件包括:
16.在每个线程中,计算各自任务中的瓦片数据的索引,并将索引转换为hbase数据库
中的rowkey,然后按照瓦片在hbase中的存储顺序向各个hregion发送读取请求;
17.将获取到的数据的rowkey解析为mbtiles的索引格式,然后分批迁移到mbtiles的sqlite文件中,并存储所迁移到的数据。
18.进一步的,所述并行地运行所述线程池队列中的任务过程还包括:
19.用于将已完成的任务存在日志文件中,如果所述线程池队列被中断运行,则下次按照日志文件中的信息继续运行未完成的任务。
20.根据本发明的第二方面,提供了一种海量瓦片数据迁移及格式转换的系统,包括:
21.数据切分模块,用于根据经纬度范围和mbtiles文件的格式设定,对导入hbase数据库中的瓦片数据进行切分;
22.任务建立模块,用于根据切分后的瓦片数据建立多个任务,并将所述多个任务置于线程池队列中;
23.迁移转换模块,用于并行地运行所述线程池队列中的任务,将所述hbase数据库中的瓦片数据迁移并转换为mbtiles文件。
24.进一步的,所述数据切分模块,还包括确定单元和切分单元:
25.确定单元,用于根据所述瓦片数据的经纬度范围,按照坐标系转换规则,确定所述瓦片数据在hbase数据库中的rowkey范围;
26.切分单元,用于根据mbtiles文件的格式设定,将所述rowkey范围的瓦片数据切分成多个互相独立的区域范围。
27.进一步的,所述任务建立模块,根据切分后的瓦片数据建立多个任务包括:
28.每个任务对应于一个独立的区域范围内的瓦片数据。
29.进一步的,所述迁移转换模块包括:
30.数据获取单元,用于在每个线程中,计算各自任务中的瓦片数据的索引,并将索引转换为hbase数据库中的rowkey,然后按照瓦片在hbase中的存储顺序向各个hregion发送读取请求;
31.迁移转换单元,用于将获取到的数据的rowkey解析为mbtiles的索引格式,然后分批次迁移到mbtiles的sqlite文件中,并存储所迁移到的数据。
32.进一步的,所述迁移转换模块,还用于将已完成的任务存在日志文件中,如果所述线程池队列被中断运行,则下次按照日志文件中的信息继续运行未完成的任务。
33.本发明具有的有益效果是:与现有技术相比较,本发明采用了一种高效多并发的数据转换机制,减少了设计的复杂性,提高了程序的运行效率,在设备相同的情况下,迁移38t瓦片数据花费的时间仅仅是18小时,相比现有技术的5年时间,实现了指数级的性能提升。
附图说明
34.本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
35.图1是根据本发明一实施例的海量瓦片数据迁移及格式转换方法的流程图。
36.图2是根据本发明一实施例的海量瓦片数据迁移及格式转换系统的框架图;
37.图3是根据本发明一实施例的海量瓦片数据迁移及格式转换系统中数据切分模块
的结构示意图;
38.图4是根据本发明一实施例的海量瓦片数据迁移及格式转换系统中迁移转换模块的结构示意图。
具体实施方式
39.为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本技术的实施例及实施例中的特征可以相互组合。
40.在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
41.如图1所示,根据本发明一实施例,提供了一种海量瓦片数据迁移及格式转换的方法,包括以下步骤:
42.s11、根据经纬度范围和mbtiles文件的格式设定,对导入hbase数据库中的瓦片数据进行切分;
43.接收从hbase数据库直接导入的hbase瓦片数据,先根据hbase瓦片数据传入的经纬度范围,按照坐标系转换规则,确定其在hbase数据库中的rowkey范围,然后根据mbtiles文件的格式设定,将确定了在hbase数据库中rowkey范围的瓦片数据,按照mbtiles文件的格式,切分成多个互相独立的区域范围。
44.s12、根据切分后的瓦片数据建立多个任务,并将所述多个任务置于线程池队列中;
45.将已经切分成多个互相独立的区域范围的瓦片数据,建立多个任务,每个任务对应一个独立的区域范围内的瓦片数据,并将所述多个任务置于线程池队列中。
46.s13、并行地运行所述线程池队列中的任务,将所述hbase数据库中的瓦片数据迁移并转换为mbtiles文件;
47.置于线程池队列中的每个线程,计算各自任务中瓦片数据的索引,并将索引转换为hbase数据库中的rowkey,然后按照瓦片在hbase中的存储顺序向各个hregion发送读取请求,在获取到请求数据后,将获取到的数据的rowkey解析为mbtiles的索引格式,然后将已经解析为mbtiles索引格式的数据分批次的迁移到mbtiles的sqlite文件中,并存储所迁移到的数据。
48.所述的海量瓦片数据迁移及格式转换的方法,在数据迁移转换过程中,会将已完成的切片任务存在日志文件中,如果所述线程池队列被中断运行,则下次按照日志文件中的信息继续运行未完成的任务。
49.通过对海量瓦片数据迁移及格式转换的处理,使得迁移数据直接和hbase数据库进行通讯,不需要通过wms服务来获取瓦片数据,而wms服务也是通过访问hbase数据库获取的,直接访问hbase数据库就减少了很多不必要的http请求,这样就大大减少了设计的复杂性,同时迁移转换过程中会将已完成的任务记录在日志文件中,确保在后续的迁移过程中,不会进行重复的数据抽取,提高了程序的运行效率。
50.本发明实施例还提供了一种海量瓦片数据迁移及格式转换的系统,如图2所示,包
括:
51.数据切分模块21,用于根据经纬度范围和mbtiles文件的格式设定,对导入hbase数据库中的瓦片数据进行切分;
52.如图3所示,所述数据切分模块21具体包括:
53.确定单元211,用于根据所述瓦片数据的经纬度范围,按照坐标系转换规则,确定所述瓦片数据在hbase数据库中的rowkey范围;
54.切分单元222,用于根据mbtiles文件的格式设定,将所述rowkey范围的瓦片数据切分成多个互相独立的区域范围。
55.通过数据切分模块21中的确定单元211接收从hbase数据库直接导入的hbase瓦片数据,先根据hbase瓦片数据传入的经纬度范围,按照坐标系转换规则,确定其在hbase数据库中的rowkey范围,然后根据mbtiles文件的格式设定,将确定了在hbase数据库中rowkey范围的瓦片数据,按照mbtiles文件的格式,通过接收数据切分模块21中的切分单元212,切分成多个互相独立的区域范围。
56.所述任务建立模块22,用于接收经过切分单元212切分成多个互相独立的区域范围的瓦片数据,并建立多个任务,然后将所述多个任务置于线程池队列中。
57.每个任务对应一个独立的区域范围内的瓦片数据。
58.所述迁移转换模块23,用于运行任务建立模块22中置于线程池队列中的任务,将所述hbase数据库中的瓦片数据迁移并转换为mbtiles文件;
59.如图4所示,迁移转换模块23具体包括:
60.获取单元231,用于在每个线程中,计算各自任务中的瓦片数据的索引并将索引转换为hbase数据库中的rowkey,然后按照瓦片在hbase中的存储顺序向各个hregion发送读取请求;
61.迁移转换单元232,用于将获取到的数据的rowkey解析为mbtiles的索引格式,然后分批次迁移到mbtiles的sqlite文件中,并存储所迁移到的数据;
62.在任务存储模块22中,置于线程池队列中的每个线程,计算各自任务中瓦片数据的索引,通过迁移转换模块23中的获取单元231将索引转换为hbase数据库中的rowkey,然后按照瓦片在hbase中的存储顺序向各个hregion发送读取请求,在获取到请求数据后,通过迁移转换模块23中的迁移转换单元232将获取到的数据的rowkey解析为mbtiles的索引格式,并将转换为mbtiles索引格式的数据,分批次迁移到mbtiles的sqlite文件中,并存储所迁移到的数据。
63.所述的海量瓦片数据迁移及格式转换的系统,在数据迁移转换过程中,还会将已完成的切片任务通过迁移转换模块23存在日志文件中,如果所述线程池队列被中断运行,下次程序启动时,会按照日志文件中的信息继续接下来的分片迁移任务。
64.术语解释:
65.瓦片:瓦片地图金字塔模型是一种多分辨率层次模型,从瓦片金字塔的底层到顶层,分辨率越来越低,但表示的地理范围不变。首先确定地图服务平台所要提供的缩放级别的数量n,把缩放级别最高、地图比例尺最大的地图图片作为金字塔的底层,即第0层,并对其进行分块,从地图图片的左上角开始,从左至右、从上到下进行切割,分割成相同大小(比如256x256像素)的正方形地图瓦片,形成第0层瓦片矩阵;在第0层地图图片的基础上,按每
2x2像素合成为一个像素的方法生成第1层地图图片,并对其进行分块,分割成与下一层相同大小的正方形地图瓦片,形成第1层瓦片矩阵;采用同样的方法生成第2层瓦片矩阵;如此下去,直到第n一1层,构成整个瓦片金字塔。
66.hbase:一个分布式的、面向列的开源数据库,适合被用来存储海量数据。
67.mbtiles:mbtiles是由mapbox公司所主持的一个开源标准,试图将瓦片地图标准化,高效化。实质上,是由一个sqlite包装起256*256大小的瓦片地图图片。通过数据库索引的方式提高瓦片索引的效率,比文件夹模式的瓦片分布要高的多。
68.geoserver:geoserver是opengis web服务器规范的j2ee实现,利用geoserver可以方便的发布地图数据,允许用户对特征数据进行更新、删除、插入操作,通过geoserver可以比较容易的在用户之间迅速共享空间地理信息。
69.rowkey:在hbase中rowkey可以唯一标识一行记录,可以对hbase中的数据进行快速定位。
70.hregionserver:部署在一台物理服务器上的hbase服务。
71.hregion:一个region在一个hregionserver中的表达。
72.region:是hbase数据存储和管理的基本单位。
73.本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质包括只读存储器(read-only memory,rom)、随机存储器(random access memory,ram)、可编程只读存储器(programmable read-only memory,prom)、可擦除可编程只读存储器(erasable programmable read only memory,eprom)、一次可编程只读存储器(one-time programmable read-only memory,otprom)、电子抹除式可复写只读存储器(electrically-erasable programmable read-only memory,eeprom)、只读光盘(compact disc read-only memory,cd-rom)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
74.以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1