一种矢量要素并行计算方法、装置、存储介质及终端与流程

文档序号:21929929发布日期:2020-08-21 14:53阅读:247来源:国知局
一种矢量要素并行计算方法、装置、存储介质及终端与流程

本发明涉及矢量要素查询分析技术领域,具体涉及一种矢量要素并行计算方法、装置、存储介质及终端。



背景技术:

随着矢量空间数据获取与处理技术的迅猛发展,矢量空间数据日益增多,原始地图数据量呈现爆炸式增长,对地图数据处理的空间及时间效率提出了更高需求。而地理信息系统(gis,geographicinformationsystem)中的矢量数据的分析一般不存在模式化的处理方法,而表现为分析方法的多样性和复杂性。目前,常见的矢量要素分析法包括:包含分析、矢量数据的缓冲区分析、多边形重叠分析、矢量数据的网分析等等。

然而,传统的矢量要素分析方法虽然能够很好地查询矢量要素,但当数据量过大时,单要素的数据划分算法很容易成为限制瓶颈,同时,在存储节点上,数据仍然以整体数据块存在,随着数据量的增加,数据的检索效率将大大降低。由于hadoop/hbase/spark等大数据处理技术本身缺少对地理空间数据的处理能力,无法利用现有spark框架对矢量要素进行查询分析,矢量要素的运算模型和高效查询能力相关技术成为迫切需要。



技术实现要素:

有鉴于此,本发明实施例提供了一种矢量要素并行计算方法、装置、存储介质及终端,以解决现有技术采用传统矢量要素分析方法处理海量矢量要素时效率较低的技术问题。

本发明提出的技术方案如下:

本发明实施例第一方面提供一种矢量要素并行计算方法,该方法包括:根据spark计算框架构建分布式要素数据集模型;根据所述分布式要素数据集模型对外部数据进行数据读取;根据读取后的数据进行数据重分区;将四叉树索引和二叉树索引结合对重分区后的数据创建本地空间索引;对创建本地空间索引后的数据进行数据处理和分析。

进一步地,所述分布式要素数据集模型包括:特征要素和分布式数据集元信息。

进一步地,所述外部数据的数据类型包括:json、csv、shapefile、hdfs、elasticsearch、avro以及关系型空间数据库。

进一步地,根据读取后的数据进行数据重分区,包括:根据分区索引工具对读取后的数据进行重分区,所述索引工具包括hilbert时空填充曲线索引、quadtree四叉树索引和rtree二叉树索引。

进一步地,将四叉树索引和二叉树索引结合对重分区后的数据创建本地空间索引,包括:根据四叉树索引按照一定规则将重分区后的数据划分成多个子空间;根据二叉树索引在子空间中创建本地空间索引。

进一步地,对创建本地空间索引后的数据进行数据处理和分析,包括:对创建本地空间索引后的数据进行过滤、获取地理和时间范围、裁剪、空间查询、属性汇总、网格聚合、多边形聚合、提取列、追加列计算。

本发明实施例第二方面提供一种矢量要素并行计算装置,该装置包括:模型构建模块,用于根据spark计算框架构建分布式要素数据集模型;数据读取模块,用于根据所述分布式要素数据集模型对外部数据进行数据读取;分区模块,用于根据读取后的数据进行数据重分区;本地索引创建模块,用于将四叉树索引和二叉树索引结合对重分区后的数据创建本地空间索引;分析模块,用于对创建本地空间索引后的数据进行数据处理和分析。

本发明实施例第三方面提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行如本发明实施例第一方面及第一方面任一项所述的矢量要素并行计算方法。

本发明实施例第四方面提供一种矢量要素并行计算终端,包括:存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行如本发明实施例第一方面及第一方面任一项所述的矢量要素并行计算方法。

本发明提供的技术方案,具有如下效果:

本发明实施例提供的矢量要素并行计算方法、装置、存储介质及终端,以分布式计算框架为载体,构建了能够支持空间数据运算的弹性分布式数据集,将多种数据格式如csv、json等转化为featurerdd,同时扩展基于featurerdd的空间索引对象实现性能优化,继而以此为输入输出进行多种空间、时间的分布式查询和分布式分析操作,解决了现有技术采用传统矢量要素分析方法处理海量矢量要素时效率较低的技术问题。同时基于四叉树索引和二叉树索引结合使用的方式,为重分区后的数据创建本地空间索引,采用此种方式构建的复合空间索引能够极大的提高空间数据的叠加分析效率。

本发明实施例提供的矢量要素并行计算方法、装置、存储介质及终端,通过构建feataruerdd弹性分布式要素数据集,实现空间叠加、聚类运算等基础性地理运算模型,对于1亿以上的矢量要素服务,单个要素和小范围要素查询效率在毫秒级,1亿地块空间查询(图形裁切、面积重算)计算耗时控制在1分钟以内。同时,通过在featurerdd中采用索引工具hilbert时空填充曲线索引、quadtree四叉树索引和rtree二叉树索引三种类型的分区索引,在运算过程中可以显著降低空间查询中要素遍历次数,大幅提高空间数据的叠加分析和聚合查询效率。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是根据本发明实施例的矢量要素并行计算方法的流程图;

图2是根据本发明实施例的分布式要素数据集模型的结构原理图;

图3是根据本发明实施例的矢量要素并行计算装置的结构框图;

图4是根据本发明实施例提供的矢量要素并行计算终端的硬件结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供一种矢量要素并行计算方法,如图1所示,该计算方法包括如下步骤:

步骤s101:根据spark计算框架构建分布式要素数据集模型。具体地,可以基于spark框架的批量空间矢量大数据分析技术,将gis内核与spark分布式内存计算框架深度融合,即基于分布式存储,构建分布式要素数据集模型featurerdd。因此,该分布式要素数据集模型将gis基础算法融入spark计算框架,可以实现分布式空间运算,并将结果通过featurerdd快速写回分布式存储。

分布式要素数据集模型featurerdd是基于spark的rdd[feature]扩展,是可以用于数据读取、存储以及分析的模型;通过使用分布式要素数据集模型的相关接口,可以完成空间查询、要素连接、属性统计、缓冲区分析等常用功能。分布式要素数据集featurerdd的结构如图2所示。

其中,特征要素(feature)是一个用于描述带有时空信息特征的对象,它包含几何信息、属性值集合、id值以及时间信息等内容。对象的几何信息可以为空,即只有属性值集合,此时表示一个纯属性表。

分布式数据集元信息(featuremetadata)描述了数据集的属性表结构、坐标系、几何对象类型、时间定义信息等内容。元信息中,属性表结构(schema)描述了每个字段的名称、类型、默认值等信息。

步骤s102:根据分布式要素数据集模型对外部数据进行数据读取,即将各种外部数据转化为featurerdd,进行数据读取。其中,spark扩展模块中提供了丰富的数据类型支持,包括json、csv、shapefile、hdfs、elasticsearch、avro以及关系型空间数据库等等。

其中,对于csv数据,在读取csv文件时,需要一个与csv文件同名的meta文件,用于描述数据的几何对象类型、投影坐标系、属性表结构等信息。csv支持点、线、面和属性表等要素类型。avro文件是一个基于二进制数据传输的高性能的中间件,avro文件可以通过扩展ogc规范的地理信息交互方式存储井、河流、湖泊等空间对象的几何位置和相应的空间对象的属性,例如一条河流的名字,一个城市的温度等等。featurerdd作为sparkrdd的扩展,支持将avro文件并中的的点、线、面和属性表等读取到模型中。

步骤s103:根据读取后的数据进行数据重分区。具体地,基于spark的空间大数据分析前的预处理工作,可以对读取后的数据进行数据重分区。数据分区是spark的rdd数据模型内部并行计算的一个计算单元,分区的数目决定了并行计算的粒度,且每个分区的计算都是在一个任务中进行。其中,在进行重分区时,可以采用分区索引工具如hilbert时空填充曲线索引、quadtree四叉树索引和rtree二叉树索引等实现重分区,具体可以依据数据情况选择合理的分区方式。

步骤s104:将四叉树索引和二叉树索引结合对重分区后的数据创建本地空间索引。其中,可以将四叉树索引和二叉树索引结合为featurerdd分区内容创建本地空间索引。即在spark空间索引分区的基础之上构建本地多重空间索引。具体地,可以采用quadtree四叉树索引按照一定规则(如要素数量不能超过1000)将空间划分成多个子空间,并且在子空间当中构建strtree空间索引,从而实现本地空间索引的创建。基于索引的空间查询比基于扫描的或嵌套循环算法具有更高的效率。

步骤s105:对创建本地空间索引后的数据进行数据处理和分析。具体地,

基于spark模块的扩展开发可以允许用户自由组合各种接口,该分布式要素数据集模型的处理和分析接口可以包括过滤、获取地理和时间范围、裁剪、空间查询、属性汇总、网格聚合、多边形聚合、提取列、追加列等,通过这些接口,可以实现对数据的处理和分析。

其中,对于过滤,可以采用featurerdd的filter函数进行要素的属性值过滤,比如可以采用如下程序筛选出第一列字段值为200的要素;

valattrfilterrdd=rdd.filter(feature=>feature(1)==200))

还可以构造一个空间矩形,使用空间矩形范围进行过滤;

valbounds=rectangle(117.2,40.8,117.8,40.5)

valboundsfilterrdd=rdd.filter(bounds)

也可以通过以下代码进行时间维度的过滤:

valtimefilterrdd=featurerdd.filter(timefilter.after(instant("2017-08-0712:00:00")))

对于获取地理和时间范围接口,可以通过以下代码直接获取数据集的地理范围;

valbounds=featurerdd.computebounds()

也可以获取数据集的最大最小时间间隔:

valinterval=featurerdd.interval()

对于裁剪计算,可以使用clip函数,对featurerdd进行面对象裁剪;

valgeoregion=geopolygon(array(point2d(20,90),point2d(80,90),point2d(80,50),point2d(20,90)))

valresultrdd=featurerdd.clip(georegion)

对于空间查询过程,featurerdd支持使用单个对象对数据集进行空间查询。

valquerygeo=geopolygon(bounds)

valresultrdd=featurerdd.hascontains(querygeo)

空间查询接口也支持使用另一个要素数据集对该数据集进行空间查询,并且可以选择是否保留查询数据集中各个对象的featureid。

valresultrdd=featurerdd.hasintersection(queryrdd,savequeryid=true)

属性汇总接口支持多种属性统计类型,如recordcount(记录数目)、sum(求和)、max(最大值)、min(最小值)、average(平均值)、modalvalue(众数)、variance(方差)、stddeviation(标准差)等。

在网格聚合接口中,对于空间上按一定规则排列的网格可以称之为mesh,mesh支持方格形和正六边形两种。例如,使用边长为100米的方格网来进行点数聚合统计;

valresultrdd=pointrdd.summarize(distance(100,distanceunit.meter),meshtype.grid,array(fieldstatistics("",statisticsmode.recordcount,"pointcount")))

对于多边形聚合,在featurerdd中,可以直接使用一个要素数据集对另一个要素数据集进行属性汇总,其支持的空间查询类型包括:relcontain(包含)、relwithin(被包含)、relintersect(相交)、reloverlap(叠加)、relidentical(同一)、reltouch(接触)、relcross(穿越)。

其中最常用的应用即处理点与多边形包含关系的点到多边形聚合统计。

valresultrdd=pointrdd.summarize(regionrdd,array(fieldstatistics("lid",statisticsmode.max,"lid_max")),operator.relcontain)

对于提取列,可以使用featurerdd提供的select函数,选择指定的一列或多列属性,构造一个新的featurerdd:

valselfeaturerdd=featurerdd.select(array("lid","name"))

对于追加列,可以使用featurerdd提供的join函数,将featurerdd中的属性值追加到当前featurerdd中,在追加时,如果不设置要素连接字段,则会默认使用要素的featureid作为连接字段:

//指定lid字段为要素连接字段

valresultrdd2=featurerdd.join(attributerdd,map("name"->"resultname"),some("lid"),some("lid"))

本发明实施例提供的矢量要素并行计算方法,以分布式计算框架为载体,构建了能够支持空间数据运算的弹性分布式数据集,将多种数据格式如csv、json等转化为featurerdd,同时扩展基于featurerdd的空间索引对象实现性能优化,继而以此为输入输出进行多种空间、时间的分布式查询和分布式分析操作,解决了现有技术采用传统矢量要素分析方法处理海量矢量要素时效率较低的技术问题。同时基于四叉树索引和二叉树索引结合使用的方式,为重分区后的数据创建本地空间索引,采用此种方式构建的复合空间索引能够极大的提高空间数据的叠加分析效率。

本发明实施例提供的矢量要素并行计算方法,通过构建feataruerdd弹性分布式要素数据集,实现空间叠加、聚类运算等基础性地理运算模型,对于1亿以上的矢量要素服务,单个要素和小范围要素查询效率在毫秒级,1亿地块空间查询(图形裁切、面积重算)计算耗时控制在1分钟以内。同时,通过在featurerdd中采用索引工具hilbert时空填充曲线索引、quadtree四叉树索引和rtree二叉树索引三种类型的分区索引,在运算过程中可以显著降低空间查询中要素遍历次数,大幅提高空间数据的叠加分析和聚合查询效率。

在一实施例中,可以对该矢量要素并行计算方法进行矢量要素查询的性能测试,其测试结果如下:

该测试结果表明,1亿地块空间查询(图形裁切、面积重算)计算耗时控制在1分钟以内,相较于传统技术相比,效率提高了100倍以上。相较其他工具,该方法显著提高了矢量要素效率,更适合面向海量土地利用矢量数据的查询分析。

本发明实施例还提供一种矢量要素并行计算装置,如图3所示,该装置包括:

模型构建模块1,用于根据spark计算框架构建分布式要素数据集模型;详细内容参见上述方法实施例中步骤s101的相关描述。

数据读取模块2,用于根据分布式要素数据集模型对外部数据进行数据读取;详细内容参见上述方法实施例中步骤s102的相关描述。

分区模块3,用于根据读取后的数据进行数据重分区;详细内容参见上述方法实施例中步骤s103的相关描述。

本地索引创建模块4,用于将四叉树索引和二叉树索引结合对重分区后的数据创建本地空间索引;详细内容参见上述方法实施例中步骤s104的相关描述。

分析模块5,用于对创建本地空间索引后的数据进行数据处理和分析。详细内容参见上述方法实施例中步骤s105的相关描述。

本发明实施例提供的矢量要素并行计算装置,以分布式计算框架为载体,构建了能够支持空间数据运算的弹性分布式数据集,将多种数据格式如csv、json等转化为featurerdd,同时扩展基于featurerdd的空间索引对象实现性能优化,继而以此为输入输出进行多种空间、时间的分布式查询和分布式分析操作,解决了现有技术采用传统矢量要素分析方法处理海量矢量要素时效率较低的技术问题。同时基于四叉树索引和二叉树索引结合使用的方式,为重分区后的数据创建本地空间索引,采用此种方式构建的复合空间索引能够极大的提高空间数据的叠加分析效率。

本发明实施例提供的矢量要素并行计算装置,通过构建feataruerdd弹性分布式要素数据集,实现空间叠加、聚类运算等基础性地理运算模型,对于1亿以上的矢量要素服务,单个要素和小范围要素查询效率在毫秒级,1亿地块空间查询(图形裁切、面积重算)计算耗时控制在1分钟以内。同时,通过在featurerdd中采用索引工具hilbert时空填充曲线索引、quadtree四叉树索引和rtree二叉树索引三种类型的分区索引,在运算过程中可以显著降低空间查询中要素遍历次数,大幅提高空间数据的叠加分析和聚合查询效率。

本发明实施例提供的矢量要素并行计算装置的功能描述详细参见上述实施例中矢量要素并行计算方法描述。

本发明实施例还提供了一种矢量要素并行计算终端,如图4所示,该矢量要素并行计算终端可以包括处理器51和存储器52,其中处理器51和存储器52可以通过总线或者其他方式连接,图4中以通过总线连接为例。

处理器51可以为中央处理器(centralprocessingunit,cpu)。处理器51还可以为其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。

存储器52作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的对应的程序指令/模块。处理器51通过运行存储在存储器52中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的矢量要素并行计算方法。

存储器52可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器51所创建的数据等。此外,存储器52可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器52可选包括相对于处理器51远程设置的存储器,这些远程存储器可以通过网络连接至处理器51。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

所述一个或者多个模块存储在所述存储器52中,当被所述处理器51执行时,执行如图1所示实施例中的矢量要素并行计算方法。

上述矢量要素并行计算终端具体细节可以对应参阅图1所示的实施例中对应的相关描述和效果进行理解,此处不再赘述。

本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)、随机存储记忆体(randomaccessmemory,ram)、快闪存储器(flashmemory)、硬盘(harddiskdrive,缩写:hdd)或固态硬盘(solid-statedrive,ssd)等;所述存储介质还可以包括上述种类的存储器的组合。

虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1