一种空间数据的管理方法

文档序号:10665774阅读:306来源:国知局
一种空间数据的管理方法【专利摘要】本发明公开了一种空间数据的管理方法,属于空间数据处理
技术领域
,以实现对空间数据的高效管理。该空间数据的管理方法包括:接收用户导入的空间数据文件;获取所述空间数据文件的区域范围及其最小外包矩形,并将所述最小外包矩形平均分成若干网格;获取所述空间数据文件中的各空间数据对象及其覆盖范围,根据每一空间数据对象的覆盖范围,对与该空间数据对象有交叠的网格设置索引,一条索引指代网格对应的一个空间数据对象;存储所述空间数据文件中的空间数据对象以及每一网格的索引。【专利说明】一种空间数据的管理方法
技术领域
[0001]本发明涉及空间数据处理
技术领域
,具体地说,涉及一种空间数据的管理方法。【
背景技术
】[0002]所谓空间数据是指用来表示空间实体的位置、形状、大小及其分布特征诸多方面信息的数据,可以用来描述来自现实世界的目标,具有定位、定性、时间和空间关系等特性。[0003]地理信息系统的发展与应用,导致空间数据不断增长,海量空间数据的存储和查询模式变得十分重要,也是地理信息系统发展的瓶颈所在。如何设计高效的空间数据管理方法,提高空间数据导入、加载、渲染、查询的速度,成为地理信息系统中首要解决的问题。【
发明内容】[0004]本发明的目的在于提供一种空间数据的管理方法,以实现对空间数据的高效管理。[0005]本发明提供了一种空间数据的管理方法,该方法包括:[0006]接收用户导入的空间数据文件;[0007]获取所述空间数据文件的区域范围及其最小外包矩形,并将所述最小外包矩形平均分成若干网格;[0008]获取所述空间数据文件中的各空间数据对象及其覆盖范围,根据每一空间数据对象的覆盖范围,对与该空间数据对象有交叠的网格设置索引,一条索引指代网格对应的一个空间数据对象;[0009]存储所述空间数据文件中的空间数据对象以及每一网格的索引。[0010]其中,所述获取所述空间数据文件的区域范围,并将所述区域范围平均分成若干网格包括:[0011]获取所述空间数据文件的区域范围,并将所述区域范围平均分成若干渲染网格,另将所述区域范围平均分成若干查询网格,其中,查询网格的尺寸小于渲染网格的尺寸。[0012]其中,所述获取所述空间数据文件中的各空间数据对象及其覆盖范围,根据每一空间数据对象的覆盖范围,对与该空间数据对象有交叠的网格设置索引,一条索引指代网格对应的一个空间数据对象包括:[0013]获取所述空间数据文件中的各空间数据对象及其覆盖范围,根据每一空间数据对象的覆盖范围,对与该空间数据对象有交叠的渲染网格、查询网格设置索引,一条索引指代渲染网格或查询网格对应的一个空间数据对象。[0014]其中,所述的方法还包括:[0015]获取空间数据文件的区域范围和该区域范围对应的渲染网格;[0016]逐一渲染每一渲染网格,判断该渲染网格中的未渲染的索引是否已为其他渲染网格处理过,直至渲染完毕所有渲染网格。[0017]其中,逐一渲染每一渲染网格,判断该渲染网格中的未渲染的索引是否已为其他渲染网格处理过,直至渲染完毕所有渲染网格之后,还包括:[0018]获取用户的查询范围;[0019]匹配所述查询范围与各空间数据对象的覆盖范围,获得与所述查询范围交叠的空间数据对象。[0020]其中,获取用户的查询范围包括:[0021]根据所获取的查询范围,获取最小外包查询矩形。[0022]其中,匹配所述查询范围与各空间数据对象的覆盖范围,获得与所述查询范围交叠的空间数据对象包括:[0023]获得与最小外包查询矩形交叠的所有查询网格;[0024]根据获得的与最小外包查询矩形交叠的所有查询网格对应的索引,获得对应的空间数据对象;[0025]构建每一所获得的空间数据对象的最小外包矩形;[0026]将每一所获得的空间数据对象的最小外包矩形与最小外包查询矩形进行匹配,滤除最小外包矩形与最小外包查询矩形没有交叠的空间数据对象;[0027]匹配查询范围与剩余的空间数据对象的覆盖范围,滤除覆盖范围与查询范围没有交叠的空间数据对象,获得查询范围对应的空间数据对象。[0028]本发明带来了以下有益效果:本发明实施例公开了一种空间数据的管理方法,在导入空间数据对象后,针对空间数据文件的区域范围建立若干网格。之后根据空间数据对象的覆盖范围,为各网格添加索引,一条索引指代网格对应的一个空间数据对象。这些索引可以用来快速获取各网格中包含的空间数据对象,从而提升显示和查询操作的速度,提供了一种高效的空间数据的管理方法。[0029]本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。【附图说明】[0030]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要的附图做简单的介绍:[0031]图1是本发明实施例中的空间数据的管理方法的流程示意图一;[0032]图2是本发明实施例中的空间数据的管理方法的流程示意图二。【具体实施方式】[0033]以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。[0034]本发明实施例提供了一种空间数据的管理方法,如图1所示,本方法包括:[0035]步骤S101、接收用户导入的空间数据文件。[0036]用户选择要导入的空间数据文件,可以选择多种格式的文件,如shp,cgm,mapgis,双狐文本等格式。本实施例shp文件类型为例,文件为countries,shp,是多多边形类型的空间数据。选择完空间数据文件后,系统会接收用户所选择的空间数据文件,并创建相应的空间数据对象表、索引表、属性表和参数配置表等,本实施例中系统会通过结构化查询语言(StructuredQueryLanguage,简称SQL)语句来进行表的创建,仓ll建四张表的SQL语句分别如下:[0037]属性表:createtablecountries_feature(geometryidint),属性表默认只有对象编号这一个字段,若导入的文件配有相应的属性文件,则会根据属性文件中的属性信息增加相应的字段。[0038]空间数据对象表:createtablecountries_geometry(geometryidint,wkbtypeint,xminfloat,xmaxfloat,yminfloat,ymaxfloat,coordsimage),包含对象编号、类型、范围及具体数据。[0039]索弓丨表:createtablecountries_index(grididint,gridtypeint,geometryidint,relat1nshipint,xminfloat,xmaxfloat,yminfloat,ymaxfloat),包含网格编号、网格类型、对象编号、网格与对象的关系及对象的范围。[0040]参数配置表:createtablecountries_configure(xcountint,ycountint,xshiftint,yshiftint,cachesizeint,indexlimitint,xminfloat,xmaxfloat,yminfloat,ymaxfloat),包含清染索引框架x和y两个方向的切分数量,查询索引框架对清染索引框架中一个网格在X和I方向进一步切分的数量,内存缓冲队列中空间数据对象的数量限制及索引的数量限制,所有空间数据对象的总范围。[0041]建立完表之后,系统会给空间数据对象表的空间数据对象编号字段,索引表的网格编号、对象编号字段建立索引,以加快空间数据对象的查询、提取速度,提高数据库的访问速度。本实施例中建立索引的SQL语句为:[0042]createindexcountries_geometry_quickindexoncountries—geometry(geometryid);[0043]createindexcountries_index_quickindexoncountries—index(gridid,geometryid);[0044]接下来进行进行配置参数设置,配置参数基本属性包括导入的空间数据对象渲染时显示的图层名称、是否可见以及备注信息等。另外还包括配置参数的SDE(SpatialDatabaseEngine)属性即加载过程中的属性包括是否存入数据库,清染索引框架x和y两个方向的切分数量,查询索引框架对渲染索引框架中一个网格在X和y方向进一步切分的数量,内存缓冲队列中空间数据对象的数量限制及索引的数量限制,是否使用多线程,是否在每导入一个空间数据对象时将其插入缓冲队列,空间数据对象和属性数据的提交间隔。[0045]本实施例中设置渲染索引框架划分方式为10X10,查询索引框架在渲染索引框架的基础上构建,即将每个渲染网格在X和y上进一步切分2块,即20X20,内存缓冲队列中空间数据对象的数量限制为100,内存缓冲队列中索引数量的限制为1000,采用多线程加载模式,对每个导入的空间数据对象执行插入缓冲队列操作,每导入5000个空间数据对象时进行一次数据库提交,每导入5000个属性数据时进行一次数据库提交,提交间隔为2秒。[0046]步骤S102、获取空间数据文件的区域范围及其最小外包矩形,并将最小外包矩形平均分成若干网格。[0047]在设置完配置参数后,将创建索引框架,索引框架共分为两层。其中第一层为用于渲染空间数据对象的渲染索引,采用较粗的粒度进行划分;第二层为用于查询空间数据对象的查询索引,采用较细的粒度进行划分。查询索引框架是在渲染索引框架的每个网格基础上,进一步对渲染网格进行划分,即每个渲染索引框架的渲染网格对应多个查询索引框架的查询网格,以展现划分粒度上的粗细区别。通常情况下,渲染涉及的区域较大,对精度要求低,所以用粗粒度划分;查询涉及的区域较小,对精度要求高,所以采用细粒度划分。本实施例中渲染索引框架的划分粒度为1X10,查询索引框架的划分粒度为20X20。[0048]在建立索引框架时,先得到要添加的所有空间数据对象所占的区域范围,求出其最小外包矩形,然后将最小外包矩形按照X和I两个方向进行分块,切分为多个网格,每个网格代表一个区域。本实施例中可以从导入的空间数据文件中直接获取到其区域范围的最小外包矩形,X的最小和最大值分别为-190.0和190.0,y的最小值和最大值分别为-99.9和93.6。将这片区域范围分别划分为10X10个渲染网格和20X20个查询网格,建立起渲染索引框架和查询索引框架。[0049]接下来创建内存缓冲队列,内存缓冲队列包括索引及空间数据对象,通过将部分索引及空间数据对象存放在内存中,减少渲染和查询过程中的数据库访问操作。其中索引在内存缓冲是以网格为单位进行存储,即内存中要么包含一个网格对应的所有索引,要么都不包含。内存缓冲队列的大小可由用户来指定,当队列已满再添加新的元素时,会将最早添加进队列的元素剔除以腾出空间。本实施例中索引队列的大小限制为1000,空间数据对象队列的大小限制为100。[0050]步骤S103、获取空间数据文件中的各空间数据对象及其覆盖范围,根据每一空间数据对象的覆盖范围,对与该空间数据对象有交叠的网格设置索引,一条索引指代网格对应的一个空间数据对象。[0051]在建立完索引框架和内存缓冲队列后,导入空间数据,空间数据对象分为点、线、多边形、多点、多线、多多边形六种,其具体的形状和位置信息都是通过坐标来存储和表示,通过这些坐标中X和y的最值可以得到每一空间数据对象所占的范围大小。本实施例中空间数据对象的文件类型为多多边形,空间数据对象文件中存储了每个空间数据对象各个多边形的各个顶点的坐标,通过这些顶点坐标就可以得到空间数据对象的形状,范围,并可以用来判断与给定的查询和渲染范围是否有相交的部分。[0052]对于每个导入进来的空间数据对象,生成索引,根据空间数据对象的覆盖范围,能够得到此覆盖范围包含哪些渲染网格和查询网格,每个网格代表一个区域,对于落在这个区域里或者与这个区域有交叠部分的对象,会生成一条索引,表示这个渲染网格或查询网格所代表区域与这个空间数据对象有交叠。导入空间数据对象完毕后,每个网格会对应若干条索引,每条索引表示与此网格有相交部分的一个空间数据对象。[0053]步骤S104、存储空间数据文件中的空间数据对象以及每一网格的索引。[0054]具体的,在到达提交间隔时,会将生成的索引作为记录存储到数据库的索引表中,存储的信息包含索引类型、渲染网格或查询网格的编号、对象编号、对象所覆盖范围、与渲染网格或查询网格的关系等。这些索引可以用来快速获取所给区域中包含的空间数据对象,从而提升显示和查询操作的速度。空间数据对象及其对应的渲染索引和查询索引会添加到内存缓冲队列中。同时,将每个空间数据对象作为一条记录存储到数据库的空间数据对象表中,存储的信息包含对象编号,对象类型,对象所占范围以及具体形状数据。本实施例中,每导入5000个空间数据对象进行一次提交。[0055]导入空间数据分为单线程模式和多线程模式两种,用户可以选择其中一种。对于单线程模式,流程为从存储空间数据的文件中逐一读取每个空间数据对象,生成相应的渲染索引和查询索引,将索引和空间数据对象添加到内存缓冲队列和数据库中;对于多线程模式,采用多个线程来同时读取和提交空间数据对象和索引,并采用生产者-消费者模式,生成渲染索引和查询索引作为生产者,提交作为消费者同时进行。本实施例中采用了多线程模式,即每次导入空间数据对象时,用多个线程生成索引,同时用多个线程提交已经建立完毕的索引及空间数据对象。[0056]对于存在关联属性文件的情况,如本实施例中,存在countries,dbf文件,其存储了每个空间数据对象的相关属性,包括对人口密度,名称,系统会读取这个属性文件,并将其中的信息添加到属性表中。本实施例中会先为属性表增添人口密度,名称两个字段,然后按照读取的空间数据对象编号,获取对应的属性文件中的属性数据,新建记录添加到属性表中。[0057]在导入和存储空间数据对象及索引完成后,在本发明实施例中,如图2所示,还包括:[0058]步骤S105、获取空间数据文件的区域范围和该区域范围对应的渲染网格。[0059]步骤S106、逐一渲染每一渲染网格,判断该渲染网格中的未渲染的索引是否已为其他渲染网格处理过,直至渲染完毕所有渲染网格。[0060]空间数据渲染的实现是根据给定的渲染范围,得到其对应哪些渲染网格,然后逐一渲染这些网格中所包含的空间数据对象。对于一个渲染网格,如果其对应的渲染索弓I记录存在于内存缓冲队列中,则直接获取这些索引所对应的空间数据对象编号,如果其对应的渲染索引记录不存在于内存缓冲队列中,则从数据库的索引表中得到这个网格对应的空间数据对象编号,然后根据这些编号获取空间数据对象并渲染。对于存在于内存缓冲队列中的空间数据对象,直接进行渲染,对于不在内存缓冲队列中的空间数据对象,从空间数据对象表中获取这些对象的具体数据,然后进行渲染。一个空间数据对象的渲染方式为,读取其所含的具体形状数据,如本实施例中的多多边形类型,读取每个空间数据对象包含的各个多边形的各个顶点坐标,并进行渲染,同时将每个多边形的内部填充上颜色。本实施例中默认为渲染所有的空间数据对象。[0061]由于一个空间数据对象通常可能占据若干个渲染网格,为了防止对同一个空间数据对象进行重复渲染,在本发明实施例中,在对某一渲染网格进行渲染时,会判断围绕这一渲染网格的其余渲染网格是否完成渲染工作并且其中含有同样的空间数据对象,如果有,则重复的空间数据对象就不进行渲染。[0062]渲染完成后,如图2所示,本发明实施例还包括:[0063]步骤S107、获取用户的查询范围。[0064]步骤S108、匹配查询范围与各空间数据对象的覆盖范围,获得与查询范围交叠的空间数据对象。[0065]对当前渲染好的空间数据对象的图层进行查询操作,空间数据对象的查询过程具体分为三步,分别为初始过滤,中间过滤以及最终过滤。假设用户当前输入的查询范围为多边形,初始过滤是根据该多边形的各个顶点坐标求出其最小外包查询矩形,然后得到最小查询外包矩形包含哪些查询网格,即得到与该最小查询外包矩形有交叠的查询网格,将属于这些查询网格的索引作为初步结果;中间过滤是在初步结果得到的索引基础上,进一步进行过滤,遍历初步结果得到的每个索引,获得对应的空间数据对象,进而构建每一所获得的空间数据对象的最小外包矩形,将每一所获得的空间数据对象的最小外包矩形与最小外包查询矩形进行匹配,如果空间数据对象的最小外包矩形与最小外包查询矩形有交叠,则不过滤,没有交叠,则过滤掉,得到中间结果;最终过滤是对中间结果剩余的索引进行进一步的过滤,具体为获取这些剩余的索引所对应的空间数据对象,并逐一与用户输入的查询范围进行比较、判断,把与查询范围有交叠部分的空间数据对象添加到最终结果中。[0066]例如,在本实施例中,给出一个查询请求,该查询请求对应的查询范围多边形包含四个顶点,分别为(-5.72,-31.73),(4.40,50.94),(66.84,34.67)和(51.45,-8.43)0进行查询时,首先获得查询范围的最小外包查询矩形,范围为(-5.72,-31.73,66.84,50.94),这4个数值分别为查询范围的X最小值、y最小值,X最大值和y最大值。获取与该最小外包查询矩形对应的查询网格,假设这些查询网格对应索引条数为207个,即初次过滤后结果集中有207个空间数据对象;接下来进行中间过滤,构建每条索引的对应的空间数据对象的最小外包矩形,每个空间数据对象的最小外包矩形与与查询范围的最小外包查询矩形比对,将最小外包矩形与最小外包查询矩形有交叠区域的空间数据对象对应的索引直接加到中间结果集中;最后对中间结果集进行最终过滤,逐一比较剩余的查询网格中的每个空间数据对象与查询范围的相交关系,假设得到66个空间数据对象。最终结果集中的空间数据对象会以预设置的、区别于渲染所使用的颜色显示,并向用户展示包括最终结果集中的空间数据对象的列表的对话框;用户在对话框中选中最终结果集中的某个空间数据对象时,系统将会显示此空间数据对象对应的属性信息,并在图层中以不同颜色显示选中的空间数据对象。[0067]除了上文中的多边形拾取查询范围这种方式外,本实施例中还可采取点拾取、矩形拾取和线拾取等多种操作方式来拾取查询范围;具体的,点拾取只需点一下鼠标左键,此时查询范围即所点击的点本身;矩形拾取是点住左键拖动鼠标,松开左键结束;线拾取是依次左键点击折线各个顶点,双击左键结束。[0068]在本发明实施例中,用户可以对空间数据文件其中的一些空间数据对象做修改操作,也可以新增或删除空间数据对象。空间数据对象的新增,修改和删除分别用新增集合,修改集合和删除集合来存放。新增,修改和删除空间数据对象时,内存缓冲队列中的索引及空间数据对象实时变化。数据库中的变化是在用户确认提交后,将新增集合,修改集合和删除集合中所有的变更提交到数据库中进行修改。[0069]新增一个空间数据对象时,根据其范围计算其属于哪个渲染网格和查询网格,并生成相应的索引,添加到内存缓冲队列中,并将新增的空间数据对象添加到新增集合中;修改一个空间数据对象时,先根据其对象编号得到其当前属于哪个渲染网格和索引网格,并将其从中删除,然后根据修改后的空间数据对象的范围计算属于哪个渲染网格和索引网格,并生成相应的索引,添加到内存缓冲队列中,并将修改的空间数据对象添加到修改集合中;删除一个空间数据对象时,根据其对象编号得到其当前属于哪个渲染网格和索引网格,并将其从中删除,并将删除的空间数据对象添加到删除集合中。在用户确认提交时,将新增集合,修改集合和删除集合提交到数据库,方法为,对新增集合的每个对象,将其对应的渲染索引,查询索引和对象的具体数据提交到数据库中;对修改集合的每个对象,在数据库的索引表中删除对象编号与此对象相同的记录,并将其对应的新的渲染索引,查询索引记录提交到数据库中,在数据库的空间数据对象表中,更新对象编号与之相同的记录;对删除集合的每个对象,在数据库的索引表和空间数据对象表中删除对象编号与此对象相同的记录。[0070]在空间数据文件存储和导入完毕后,下次再进行加载时,就不需要建立表和索引等操作,直接进行空间数据文件的读取与加载。首先读取参数配置表中的配置参数,然后根据配置参数建立起渲染索引框架和查询索引框架;接下来读取索引表中的记录,添加到内存缓冲队列中。本实施例中加载时默认渲染所有空间数据对象,因此要读取索引表的所有记录,并根据读取的每个渲染网格中的索引,从数据库的空间数据对象表中读取相应的空间数据对象的具体数据,加载到内存缓冲队列中。[0071]至此,空间数据存储及查询,加载,变更等工作进行完毕。[0072]综上,本发明实施例公开了一种空间数据的管理方法,在导入空间数据对象后,针对空间数据文件的区域范围建立若干网格。之后根据空间数据对象的覆盖范围,为各网格添加索引,一条索引指代网格对应的一个空间数据对象。这些索引可以用来快速获取各网格中包含的空间数据对象,从而提升显示和查询操作的速度,提供了一种高效的空间数据的管理方法。[0073]虽然本发明所公开的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属
技术领域
内的技术人员,在不脱离本发明所公开的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。【主权项】1.一种空间数据的管理方法,其特征在于,包括:接收用户导入的空间数据文件;获取所述空间数据文件的区域范围及其最小外包矩形,并将所述最小外包矩形平均分成若干网格;获取所述空间数据文件中的各空间数据对象及其覆盖范围,根据每一空间数据对象的覆盖范围,对与该空间数据对象有交叠的网格设置索引,一条索引指代网格对应的一个空间数据对象;存储所述空间数据文件中的空间数据对象以及每一网格的索引。2.根据权利要求1所述的方法,其特征在于,所述获取所述空间数据文件的区域范围,并将所述区域范围平均分成若干网格包括:获取所述空间数据文件的区域范围,并将所述区域范围平均分成若干渲染网格,另将所述区域范围平均分成若干查询网格,其中,查询网格的尺寸小于渲染网格的尺寸。3.根据权利要求2所述的方法,其特征在于,所述获取所述空间数据文件中的各空间数据对象及其覆盖范围,根据每一空间数据对象的覆盖范围,对与该空间数据对象有交叠的网格设置索引,一条索引指代网格对应的一个空间数据对象包括:获取所述空间数据文件中的各空间数据对象及其覆盖范围,根据每一空间数据对象的覆盖范围,对与该空间数据对象有交叠的渲染网格、查询网格设置索引,一条索引指代渲染网格或查询网格对应的一个空间数据对象。4.根据权利要求3所述的方法,其特征在于,还包括:获取空间数据文件的区域范围和该区域范围对应的渲染网格;逐一渲染每一渲染网格,判断该渲染网格中的未渲染的索引是否已为其他渲染网格处理过,直至渲染完毕所有渲染网格。5.根据权利要求4所述的方法,其特征在于,逐一渲染每一渲染网格,判断该渲染网格中的未渲染的索引是否已为其他渲染网格处理过,直至渲染完毕所有渲染网格之后,还包括:获取用户的查询范围;匹配所述查询范围与各空间数据对象的覆盖范围,获得与所述查询范围交叠的空间数据对象。6.根据权利要求5所述的方法,其特征在于,获取用户的查询范围包括:根据所获取的查询范围,获取最小外包查询矩形。7.根据权利要求6所述的方法,其特征在于,匹配所述查询范围与各空间数据对象的覆盖范围,获得与所述查询范围交叠的空间数据对象包括:获得与最小外包查询矩形交叠的所有查询网格;根据获得的与最小外包查询矩形交叠的所有查询网格对应的索引,获得对应的空间数据对象;构建每一所获得的空间数据对象的最小外包矩形;将每一所获得的空间数据对象的最小外包矩形与最小外包查询矩形进行匹配,滤除最小外包矩形与最小外包查询矩形没有交叠的空间数据对象;匹配查询范围与剩余的空间数据对象的覆盖范围,滤除覆盖范围与查询范围没有交叠的空间数据对象,获得查询范围对应的空间数据对象。【文档编号】G06F17/30GK106033440SQ201510113038【公开日】2016年10月19日【申请日】2015年3月16日【发明人】盛秀杰,彭成,曹晋,景妍,吴博【申请人】中国石油化工股份有限公司,中国石油化工股份有限公司石油勘探开发研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1