CN109033340A - 一种基于Spark平台的点云K邻域的搜索方法及装置 - Google Patents

一种基于Spark平台的点云K邻域的搜索方法及装置 Download PDF

Info

Publication number
CN109033340A
CN109033340A CN201810811481.2A CN201810811481A CN109033340A CN 109033340 A CN109033340 A CN 109033340A CN 201810811481 A CN201810811481 A CN 201810811481A CN 109033340 A CN109033340 A CN 109033340A
Authority
CN
China
Prior art keywords
tree
data set
point
point cloud
query
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810811481.2A
Other languages
English (en)
Other versions
CN109033340B (zh
Inventor
孟令奎
马成
张文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan University WHU
Original Assignee
Wuhan University WHU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan University WHU filed Critical Wuhan University WHU
Priority to CN201810811481.2A priority Critical patent/CN109033340B/zh
Publication of CN109033340A publication Critical patent/CN109033340A/zh
Application granted granted Critical
Publication of CN109033340B publication Critical patent/CN109033340B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • G06F18/24133Distances to prototypes

Landscapes

  • Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种基于Spark平台的点云K邻域的搜索方法及装置,该方法应用于计算机集群,所述计算机集群上搭建有Spark平台,该方法包括:首先将参考点云与查询点云存储到所述计算机集群所在的HDFS分布式文件系统中,然后将所述参考点云和所述查询点云加载至所述Spark平台,并以弹性分布式数据集的方式保存所述参考点云和所述查询点云,分别获得参考点云数据集与查询点云数据集,接下来确定所述参考点云数据集的分区个数;再根据所述分区个数对所述参考点云数据集构建分布式k‑d树;最后基于所述分布式k‑d树,对所述查询点云数据集进行并行K邻域搜索。本发明实现了提高K邻域搜索效率的技术效果。

Description

一种基于Spark平台的点云K邻域的搜索方法及装置
技术领域
本发明涉及计算机应用技术领域,尤其涉及一种基于Spark平台的点云K邻域的搜索方法及装置。
背景技术
K邻域搜索的定义为查询点从参考点云中找到K个离查询点距离最近的点。K邻域搜索算法是许多点云算法的基础步骤,这些点云算法包括法向量估计、特征提取、噪声点去除、配准等。在点云算法中,一般需要对多个查询点进行批量的K邻域搜索,其中参考点云同样也是查询点云最为常见,例如法向量估计、特征提取、噪声点去除中参考点云同时也是查询点云。
目前,通常的做法是,在单机环境下进行点云K邻域的搜索,而在先进传感器技术与应用需求的双重驱动下,点云密度越来越大,点数也越来越多,实践中处理的点云数据一般是海量的,采用目前的搜索方法效率较低,非常耗时。
由此可见,现有技术中的点云K邻域搜索方法存在效率低下的技术问题。
发明内容
本发明实施例提供了一种基于Spark平台的点云K邻域的搜索方法及装置,用以解决或者至少部分解决现有技术中存在的效率低下的技术问题。
第一方面,本发明提供了一种基于Spark平台的点云K邻域的搜索方法,应用于计算机集群,所述计算机集群上搭建有Spark平台,所述方法包括:
将参考点云与查询点云存储到所述计算机集群所在的HDFS分布式文件系统中;
将所述参考点云和所述查询点云加载至所述Spark平台;
以弹性分布式数据集的方式保存所述参考点云和所述查询点云,分别获得参考点云数据集与查询点云数据集;
确定所述参考点云数据集的分区个数;
根据所述分区个数对所述参考点云数据集构建分布式k-d树;
基于所述分布式k-d树,对所述查询点云数据集进行并行K邻域搜索。
基于上述方法,所述将所述参考点云和所述查询点云加载至所述Spark平台,包括:
采用Spark平台的文件读取接口从所述HDFS分布式文件系统中读取所述参考点云和所述查询点云,并加载至所述Spark平台。
基于上述方法,所述参考点云数据集存储为文本文件,所述文本文件的每行的格式为:X,Y和Z,X,Y,Z用以表示一个三维的点,为所述参考点云数据集的每个元素预设初始key值为m,所述初始key值用以表征点元素所在的树节点在所述的分布式k-d树中的位置,所述分布式k-d树包括全局k-d树和局部k-d树,所述根据所述分区个数对所述参考点云数据集构建分布式k-d树,包括:全局k-d树的构建和局部k-d树的构建,
其中,全局k-d树的构建,包括:
步骤S51:采用X,Y和Z轮转的方式确定分割维度,首先选择X维作为根节点的分割维度,然后选择Y维作为根节点两个子节点的分割维度,再选择Z维作为四个子节点的分割维度,接下来重新选择X维作为八个子节点的分割维度,依次轮转;
步骤S52:根据当前的分割维度获得分割值,若所述点元素的坐标在所述分割维度上的值小于或等于所述分割值,则将所述点元素的key值更新为2*m,若所述点元素的坐标在所述分割维度上的值大于所述分割值,则将所述点元素的key值更新为2*m+1;
其中,步骤S51和步骤S52递归执行,直到构建的全局k-d树的叶子节点个数与所述分区个数相等;
局部k-d树的构建,包括:
采用预设k-d树创建算法,构建所述局部k-d树。
基于上述方法,所述根据当前的分割维度获得分割值,包括:
将所述分割维度作为groupByKey函数的输入,通过所述groupByKey函数输出获得所述分割值。
基于上述方法,为所述全局k-d树中的每个树节点构建分割表,所述分割表中的信息包括节点的key值、分割维度与分割值。
基于上述方法,为所述参考点云数据集的每个元素预设初始key值为m,所述初始key值用以表征点元素所在的树节点在所述的分布式k-d树中的位置,所述位置为编号,所述分布式k-d树包括全局k-d树和局部k-d树,所述基于所述分布式k-d树,对所述查询点云数据集进行并行K邻域搜索,包括:
步骤S61:通过map函数在所述全局k-d树上查找与查询点云数据集中点元素对应的局部k-d树的编号,在查询点云数据集上使用groupByKey函数将相同key值的点聚集在同一个分区,然后采用join函数将查询点云数据集各分区中的点与局部k-d树进行连接,生成新的查询点云数据集,所述新的查询点云数据集具体形式为(key,(kdtree,List[Point])),其中,key表示健值,对应查询点在局部k-d树的编号,kdtree表示分区上的局部k-d树,List[Point]表示分区上的查询点列表;
步骤S62:采用flatMap函数对所述新的查询点云数据集进行处理,并使各分区内的查询点云在各自的局部k-d树上进行并行K邻域搜索,更新当前的K近邻点;
步骤S63:采用map函数使查询点在全局k-d树上执行回溯操作,其中,根据预设条件区分出第一部分查询点和第二部分查询点,所述第一部分查询点回溯至全局k-d树的根节点之上,所述第二部分查询点交换到其他分区中,并继续执行步骤S62的操作;
步骤S64:将所述当前的K近邻点作为搜索结果。
基于上述方法,步骤S63具体包括:
步骤S631:对所述查询点云数据集进行过滤,获得过滤后的查询点;
步骤S632:当所述过滤后的查询点小于阈值t时,将未完成搜索的查询点广播至所述Spark平台的所有的计算节点上,并行在每个分区上搜索K邻近点;
步骤S633:采用reduceByKey函数归并从各个分区上获得邻近点,并确定出最终的K邻近点。
基于同样的发明构思,本发明第二方面提供了一种基于Spark平台的点云K邻域的搜索装置,应用于计算机集群和Spark平台,所述装置包括:
存储模块,用于将参考点云与查询点云存储到所述计算机集群所在的HDFS分布式文件系统中;
加载模块,用于将所述参考点云和所述查询点云加载至所述Spark平台;
保存模块,用于以弹性分布式数据集的方式保存所述参考点云和所述查询点云,分别获得参考点云数据集与查询点云数据集;
确定模块,用于确定所述参考点云数据集的分区个数;
构建模块,用于根据所述分区个数对所述参考点云数据集构建分布式k-d树;
搜索模块,用于基于所述分布式k-d树,对所述查询点云数据集进行并行K邻域搜索。
基于同样的发明构思,本发明第三方面提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被执行时实现第一方面所述的方法。
基于同样的发明构思,本发明第四方面一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现第一方面所述的方法。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
在本发明提供的方法中,首先将参考点云与查询点云存储到所述计算机集群所在的HDFS分布式文件系统中,然后将所述参考点云和所述查询点云加载至所述Spark平台,并以弹性分布式数据集的方式保存所述参考点云和所述查询点云,分别获得参考点云数据集与查询点云数据集,接下来确定所述参考点云数据集的分区个数,再根据所述分区个数对所述参考点云数据集构建分布式k-d树;最后基于所述分布式k-d树,对所述查询点云数据集进行并行K邻域搜索。由于本发明提供的方法中,采用Spark平台替代传统Hadoop平台下MapReduce的计算模型,由于Spark平台是基于内存计算的平台,可以尽可能地将数据存放在内存中进行处理,从而可以大幅度地提高计算的效率,故而可以提高K邻域的搜索方法的效率;并且在搜索方法中使用了分布式k-d树索引结构,可以充分利用k-d树作为分区策略和空间索引的双重优点,并基于分布式k-d树,对所述查询点云数据集进行并行K邻域搜索,可以提高邻域搜索的速度,从而进一步提高搜索的效率。因此解决了现有技术中存在的效率低下的技术问题。此外,本发明采用集群配置Spark平台的方式,可以动态增删计算节点,解决了海量点云数据在单机环境下的计算瓶颈,提高了搜索方法的可扩展性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中基于Spark平台的点云K邻域搜索方法的流程图;
图2为图1中所示方法的数据流的示意图;
图3为本发明实施例的分布式k-d树的结构图;
图4为本发明实施例的分布式k-d树构建的示意图;
图5为本发明实施例中基于Spark平台的点云K邻域搜索装置的结构图;
图6为本发明实施例中一种计算机可读存储介质的结构图;
图7为本发明实施例中一种计算机设备的结构图。
具体实施方式
本发明实施例提供了一种基于Spark平台的点云K邻域的搜索方法及装置,用以改善有技术中搜索方法存在的效率低下的技术问题。
本申请实施例中的技术方案,总体思路如下:
以弹性分布式数据集RDD的方式保存参考点云和所述查询点云,分别获得参考点云数据集与查询点云数据集,确定参考点云数据集的分区个数后;根据分区个数对参考点云数据集构建分布式k-d树;然后分布式k-d树,对查询点云数据集进行并行K邻域搜索。一方面通过Spark平台可以将数据存放在内存中进行处理,从而可以提高计算的效率,故而提高了搜索的效率,另一方面构建的分布式k-d树,利用其作为K邻域搜索的索引结构,可以充分利用k-d树作为分区策略和空间索引的双重优点。k-d树作为一种分区策略,具有数据平衡性和空间分布局部性的有点,从而能够很大程度的提高邻域搜索的速度,进一步提高了搜索方法的效率。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本实施例提供了一种基于Spark平台的点云K邻域的搜索方法,应用于计算机集群和Spark平台,请参见图1,该方法包括:
步骤S101:将参考点云与查询点云存储到计算机集群所在的HDFS分布式文件系统中。
具体来说,计算机集群简称集群,是一种计算机系统,它通过一组松散集成的计算机软件或硬件连接起来高度紧密地协作完成计算工作。集群系统中的单个计算机通常称为节点,通常通过局域网连接,也有其它的可能连接方式。集群计算机通常用来改进单个计算机的计算速度和/或可靠性。Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab(加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点,但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。Hadoop(HadoopDistributed File System)分布式文件系统(HDFS)被设计成适合运行在通用硬件上的分布式文件系统。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS有着高容错性的特点,并且设计用来部署在低廉的硬件上。而且它提供高吞吐量来访问应用程序的数据,适合那些有着超大数据集的应用程序。
K邻域搜索定义为查询点从参考点云中找到K个离查询点距离最近的点。在具体的实施过程中,将参考点云和查询点云存储至HDFS,从而方便点云数据的存取。
步骤S102:将参考点云和查询点云加载至Spark平台。
具体来说,可以采用数据或者文件读取方式从HDFS中加载参考点云和查询点云。
作为一种可选实施方式,将参考点云和查询点云读取至Spark平台,包括:
采用Spark平台的文件读取接口从HDFS分布式文件系统中读取参考点云和查询点云,并加载至Spark平台。
具体来说,文件读取接口为Spark textFile接口,通过该接口则可以从HDFS中读取参考点云和查询点云,并进行加载。
步骤S103:以弹性分布式数据集的方式保存参考点云和查询点云,分别获得参考点云数据集与查询点云数据集。
具体来说,弹性分布式数据集RDD(Resilient Distributed Datasets)是分布式内存的一个抽象概念,RDD提供了一种高度受限的共享内存模型,即RDD是只读的记录分区的集合,只能通过在其他RDD执行确定的转换操作(如map、join和group by)而创建,然而这些限制使得实现容错的开销很低。对开发者而言,RDD可以看作是Spark的一个对象,它本身运行于内存中,如读文件是一个RDD,对文件计算是一个RDD,结果集也是一个RDD,不同的分片、数据之间的依赖、key-value类型的map数据都可以看做RDD。
在具体的实施过程中,参考点云数据集与查询点云数据集即为参考点RDD和查询点云RDD。参考点RDD每行的格式为:X,Y和Z,X,Y,Z分别表示X维、Y维和Z维,其共同表示一个三维的点。初始key值用以表征点元素所在的树节点在的分布式k-d树中的位置,该位置可以是树节点的层数或者是在分布式k-d树中的编号。
步骤S104:确定参考点云数据集的分区个数。
在具体的实施过程中,分区个数为partitionNum,可以根据实际情况进行设置,例如设置为512、1024等。
步骤S105:根据分区个数对参考点云数据集构建分布式k-d树;
具体来说,k-d树(k-维树的缩写)是在k维欧几里德空间组织点的数据结构。kd-tree中,数据只存放在叶子结点,而根结点和中间结点存放一些空间划分信息(例如分割维度、分割值),在计算机科学里,k-d树可以使用在多种应用场合,如多维键值搜索。k-d树是每个节点都为k维点的二叉树。所有非叶子节点可以视作用一个超平面把空间分割成两部分。在超平面左边的点代表节点的左子树,在超平面右边的点代表节点的右子树。超平面的方向可以用下述方法来选择:每个节点都与k维中垂直于超平面的那一维有关。因此,如果选择按照x轴划分,所有x值小于指定值的节点都会出现在左子树,所有x值大于指定值的节点都会出现在右子树。这样,超平面可以用该x值来确定,其法矢为x轴的单位向量
在具体的实施过程中,分布式k-d树的叶子节点数量与分区个数相同时,则构建完毕。分布式k-d树可以充分利用k-d树作为分区策略和空间索引的双重优点,从而达到提高搜索效率的技术效果。
步骤S106:基于分布式k-d树,对查询点云数据集进行并行K邻域搜索。
具体来说,由于分布式k-d树具有分区策略和空间索引的有点,则可以对分布式k-d树的各个分区进行并行K邻域搜索,从而可以提高搜索效率。
请参见图2,为本发明实施例中基于Spark平台的点云K邻域的搜索方法的数据流的示意图,参考点云与查询点云以点云文件的方式存储至HDFS系统中,然后从HDFS系统中读取参考点云文件和查询点云文件到Spark平台,然后将参考点云文件保存为参考点云RDD,将查询点云文件保存为查询点云RDD,接下来对参考点云RDD构建分布式k-d树,最后基于构建的分布式k-d树,对查询点云RDD进行并行K邻域搜索,得到邻域结果。
作为一种可选实施方式,参考点云数据集存储为文本文件,文本文件的每行的格式为:X,Y和Z,X,Y,Z用以表示一个三维的点,为参考点云数据集的每个元素预设初始key值为m,初始key值用以表征点元素所在的树节点在的分布式k-d树中的位置,分布式k-d树包括全局k-d树和局部k-d树,根据分区个数对参考点云数据集构建分布式k-d树,包括:全局k-d树的构建和局部k-d树的构建,
其中,全局k-d树的构建,包括:
步骤S51:采用X,Y和Z轮转的方式确定分割维度,首先选择X维作为根节点的分割维度,然后选择Y维作为根节点两个子节点的分割维度,再选择Z维作为四个子节点的分割维度,接下来重新选择X维作为八个子节点的分割维度,依次轮转;
步骤S52:根据当前的分割维度获得分割值,若点元素的坐标在分割维度上的值小于或等于分割值,则将点元素的key值更新为2*m,若点元素的坐标在分割维度上的值大于分割值,则将点元素的key值更新为2*m+1;
其中,步骤S51和步骤S52递归执行,直到构建的全局k-d树的叶子节点个数与分区个数相等;
局部k-d树的构建,包括:
采用预设k-d树创建算法,构建局部k-d树。
具体来说,由于本发明的搜索方法应用的为分布式环境,分布式k-d树在实际存储时分为两个部分,分别为全局k-d树部分与局部k-d树部分,请参见图3,全局k-d树处于k-d树的顶端,局部k-d树处于k-d树的底端。分布式k-d树在逻辑上仍然可以视为一个简单的k-d树。预设k-d树创建算法即为常规的k-d树的构建算法,也称为单机环境下创建k-d树的方法。
在具体的实施过程中,分布式k-d树的构建请参见图4,可以通过groupByKey来得到分割值,具体为:将分割维度作为groupByKey函数的输入,通过groupByKey函数输出获得分割值,也就是处在同一树节点的点在分割维度上的中位数作为分割值。具体来说,可以在groupByKey中,采用Spark平台中的approxQuantile函数计算近似中位数作为分割值,从而避免计算中位数的时间过长。以图4为例,第一次分割时分割维度是X,所有点的key值都是1,因而对P1-P12在X维度上求中位数,值为0.5。第二次分割时分割维度为Y,此时P1-P6的key值为2,P7-P12的key值为3。对P1-P6的Y维度求得中位数为0.5。对P7-P12的Y维度求得中位数也是为0.5。
步骤S51和步骤S52会递归的执行,直至全局k-d树的叶子节点个数等于预先设定的分区个数。作为可选,为全局k-d树中的每个树节点构建分割表,分割表中的信息包括节点的key值、分割维度与分割值。
在具体的实施过程中,可以将每一次迭代中生成的分割表使用Spark union函数合并起来,生成的分割表的合集记录了全局k-d树中的所有信息,并使用collect函数将分割表合集转换为数组,数组中元素的形式为(key,splittingDimension,splittingValue),splittingDimension为分割维度,splittingValue为分割值。还可以使用Spark中broadcast方法将分割表广播到所有的计算节点。由于Spark平台中union函数生成的分割表也是RDD形式的,使用collect函数将RDD转换为数组之后,可以将数组广播到每个计算节点。并将全局k-d树(也就是生成的数组)以广播变量的形式进行存储。
关于局部k-d树的构建,可以采用map函数并行在每个分区内构建局部k-d树,map函数生成新的RDD,RDD元素的形式为(key,kdtree),其中局部k-d树可以参见图3和图4,图3中所示的分区1、分区2...分区(m-1)、分区m即为局部k-d树的分区,并且使得局部k-d树的叶子节点个数等于分区个数时,则构建完毕。
为了更清楚地说明本发明实施例中分布式k-d树的构建过程,下面以一个具体的示例予以介绍,请参见图4,参考点云RDD包括P1、P2...P12个参考点,初始key值均设置为1,选择X维为分割维度,然后通过groupByKey函数计算得到分割值为0.5,则以X维为分割维度对应分割表中的一条记录如表1所示。接下来选择Y为分割维度,由于P1-P6的坐标值在分割维度X上的值小于或等于分割值,则此时P1-P6的key值为被更新为2,P7-P12的坐标值在分割维度X上的值大于分割值,则P7-P12的key值更新为3,对P1-P6的Y维度求得中位数为0.5,对P7-P12的Y维度求得中位数也是为0.5,则可以得到以Y维为分割维度对应分割表,其中的一条记录如表2所示。依次轮转,每次使用map函数为参考点云RDD中的点元素更新key值。当叶子节点个数与分区个数相等时,则全局k-d树构建完毕。接下来,可以采用单机环境下的预设算法构建局部k-d树,参考点云RDD中的key值记录了点元素所在的树节点的编号,使用groupByKey函数对点元素进行实际分区,得到分区个数,然后采用常规的k-d树创建算法,采用map函数并行在每个分区内构建局部k-d树,map函数生成新的RDD,RDD元素的形式为(key,kdtree),至此,分布式k-d树中局部k-d树部分创建完成。
表1
Key 1
分割维度 X
分割值 0.5
表2
Key 2 3
分割维度 Y Y
分割值 0.5 0.5
作为一种可选实施方式,为参考点云数据集的每个元素预设初始key值为m,初始key值用以表征点元素所在的树节点在的分布式k-d树中的位置,位置为编号,位置为编号,分布式k-d树包括全局k-d树和局部k-d树,基于分布式k-d树,对查询点云数据集进行并行K邻域搜索,包括:
步骤S61:通过map函数在全局k-d树上查找与查询点云数据集中点元素对应的局部k-d树的编号,其中,局部k-d树的编号与全局k-d树的编号相同,并以编号作为查询点云数据集的key值,在查询点云数据集上使用groupByKey函数将相同key值的点聚集在同一个分区,然后采用join函数将查询点云数据集各分区中的点与局部k-d树进行连接,生成新的查询点云数据集,新的查询点云数据集具体形式为(key,(kdtree,List[Point])),其中,key表示健值,对应查询点在局部k-d树的编号,kdtree表示分区上的局部k-d树,List[Point]表示分区上的查询点列表;
步骤S62:采用flatMap函数对,新的查询点云数据集进行处理,并使各分区内的查询点云在各自的局部k-d树上进行并行K邻域搜索,更新当前的K近邻点;
步骤S63:采用map函数使查询点在全局k-d树上执行回溯操作,其中,根据预设条件区分出第一部分查询点和第二部分查询点,第一部分查询点回溯至全局k-d树的根节点之上,第二部分查询点交换到其他分区中,并继续执行步骤S62的操作;
步骤S64:将当前的K近邻点作为搜索结果。
具体来说,回溯操作是指查看以查询点为圆心,查询点与当前K邻近点的距离为半径的圆是否与树节点表示的分割平面相交。map函数的输入包括全局k-d树与回溯操作的回调函数。其中,在回溯过程中,预设条件即为以查询点为圆心,查询点与当前K邻近点的距离为半径的圆与所有的树节点表示的分割平面是否相交,可以分为以下两种情况:
第一种情况,如果都不相交时,则区分出第一部分查询点,回溯到全局k-d树的根节点,也表示第一部分查询点已经找到准确的K近邻点。
第二种情况,如果存在相交时,则表示在回溯的过程中发现在其他分区中可能会有更邻近的点,区分出第二部分查询点,这部分查询点回溯到其他分区,并继续执行步骤S62的操作。得到更新后的K近邻点,作为搜索结果。
为了提高K近邻点的准确性,在一种实施方式中,步骤S63具体包括:
步骤S631:对查询点云数据集进行过滤,获得过滤后的查询点;
步骤S632:当过滤后的查询点小于阈值t时,将未完成搜索的查询点广播至Spark平台的所有的计算节点上,并行在每个分区上搜索K邻近点;
步骤S633:采用reduceByKey函数归并从各个分区上获得邻近点,并确定出最终的K邻近点。
具体来说,可以采用filter函数进行过滤,阈值t可以根据实际情况进行设定,例如为5MB、10MB、20MB等。可以采用broadcast函数进行广播,从而通知各个计算节点进行并行搜索。
为了更清楚地说明本发明实施例提供的方法的有益效果,下面通过一个具体的示例予以说明。
在计算集群上搭建Spark平台。实验环境中包含19台计算节点,其中一台为master节点(主节点),18台为worker节点(工作节点)。计算节点的性能如下所示:
处理器 内存 硬盘 网络带宽
2.50GHz,16核 128GB 80GB 3Gbps
步骤(1):计算节点的操作系统选用CentOS7.4.1708,Spark平台的版本为2.2.1。准备点云文件,将192GB大小的点云文件,共包含22亿个点,上传到计算机集群所在的HDFS分布式文件系统中;
步骤(2):将点云文件加载到Spark平台中,该点云文件在实施例中既作为参考点云,也作为查询点云;
步骤(3):确定partitionNum=512,在Spark中对参考点云RDD创建分布式k-d树。其中创建全局k-d树消耗13秒,创建局部k-d消耗99秒;
步骤(4):设置阈值t=10MB,对查询点云进行K邻域搜索,令K=5。邻域搜索时间为1150秒。
通过上述实例,可以看出,通过本发明提供的搜索方法可以大大节省搜索时间,提高搜索效率。
基于同一发明构思,本申请还提供了与实施例一种与基于Spark平台的点云K邻域的搜索方法对应的装置,详见实施例二。
实施例二
本实施例提供一种基于Spark平台的点云K邻域的搜索装置,请参见图5,该装置包括:
存储模块501,用于将参考点云与查询点云存储到计算机集群所在的HDFS分布式文件系统中;
加载模块502,用于将参考点云和查询点云加载至Spark平台;
保存模块503,用于以弹性分布式数据集的方式保存参考点云和查询点云,分别获得参考点云数据集与查询点云数据集;
确定模块504,用于确定参考点云数据集的分区个数;
构建模块505,用于根据分区个数对参考点云数据集构建分布式k-d树;
搜索模块506,用于基于分布式k-d树,对查询点云数据集进行并行K邻域搜索。
作为可选,在本实施例提供的装置中,加载模块501具体用于:
采用Spark平台的文件读取接口从HDFS分布式文件系统中读取参考点云和查询点云,并加载至Spark平台。
作为可选,在本实施例提供的装置中,参考点云数据集存储为文本文件,文本文件的每行的格式为:X,Y和Z,X,Y,Z用以表示一个三维的点,为参考点云数据集的每个元素预设初始key值为m,初始key值用以表征点元素所在的树节点在的分布式k-d树中的位置,分布式k-d树包括全局k-d树和局部k-d树,构建模块具体用于:全局k-d树的构建和局部k-d树的构建,
其中,全局k-d树的构建,包括:
步骤S51:采用X,Y和Z轮转的方式确定分割维度,首先选择X维作为根节点的分割维度,然后选择Y维作为根节点两个子节点的分割维度,再选择Z维作为四个子节点的分割维度,接下来重新选择X维作为八个子节点的分割维度,依次轮转;
步骤S52:根据当前的分割维度获得分割值,若点元素的坐标在分割维度上的值小于或等于分割值,则将点元素的key值更新为2*m,若点元素的坐标在分割维度上的值大于分割值,则将点元素的key值更新为2*m+1;
其中,步骤S51和步骤S52递归执行,直到构建的全局k-d树的叶子节点个数与分区个数相等;
局部k-d树的构建,包括:
采用预设k-d树创建算法,构建局部k-d树。
作为可选,在本实施例提供的装置中,构建模块505具体用于:
将分割维度作为groupByKey函数的输入,通过groupByKey函数输出获得分割值。
作为可选,在本实施例提供的装置,还包括分割表构建模块,用于为全局k-d树中的每个树节点构建分割表,分割表中的信息包括节点的key值、分割维度与分割值。
作为可选,在本实施例提供的装置,为参考点云数据集的每个元素预设初始key值为m,初始key值用以表征点元素所在的树节点在的分布式k-d树中的位置,位置为编号,分布式k-d树包括全局k-d树和局部k-d树,搜索模块506具体用于执行下述步骤:
步骤S61:通过map函数在全局k-d树上查找与查询点云数据集中点元素对应的局部k-d树的编号,其中,局部k-d树的编号与全局k-d树的编号相同,并以编号作为查询点云数据集的key值,在查询点云数据集上使用groupByKey函数将相同key值的点聚集在同一个分区,然后采用join函数将查询点云数据集各分区中的点与局部k-d树进行连接,生成新的查询点云数据集,新的查询点云数据集具体形式为(key,(kdtree,List[Point])),其中,key表示健值,对应查询点在局部k-d树的编号,kdtree表示分区上的局部k-d树,List[Point]表示分区上的查询点列表;
步骤S62:采用flatMap函数对新的查询点云数据集进行处理,并使各分区内的查询点云在各自的局部k-d树上进行并行K邻域搜索,更新当前的K近邻点;
步骤S63:采用map函数使查询点在全局k-d树上执行回溯操作,其中,根据预设条件区分出第一部分查询点和第二部分查询点,第一部分查询点回溯至全局k-d树的根节点之上,第二部分查询点交换到其他分区中,并继续执行步骤S62的操作;
步骤S64:将当前的K近邻点作为搜索结果。
作为可选,在本实施例提供的装置,搜索模块506具体用于通过执行下述步骤来完成步骤S63的操作:
步骤S631:对查询点云数据集进行过滤,获得过滤后的查询点;
步骤S632:当过滤后的查询点小于阈值t时,将未完成搜索的查询点广播至Spark平台的所有的计算节点上,并行在每个分区上搜索K邻近点;
步骤S633:采用reduceByKey函数归并从各个分区上获得邻近点,并确定出最终的K邻近点。
由于本发明实施例二所介绍的装置,为实施本发明实施例一中基于Spark平台的点云K邻域的搜索方法所采用的装置,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该装置的具体结构及变形,故而在此不再赘述。凡是本发明实施例一的方法所采用的装置都属于本发明所欲保护的范围。
实施例三
基于同一发明构思,本申请还提供了一种计算机可读存储介质600,请参见图6,其上存储有计算机程序611,该程序被执行时实现实施例一中的方法。
由于本发明实施例三所介绍的计算机可读存储介质,为实施本发明实施例一中基于Spark平台的点云K邻域的搜索方法所采用的计算机可读存储介质,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该计算机可读存储介质的具体结构及变形,故而在此不再赘述。凡是本发明实施例一的方法所采用的计算机可读存储介质都属于本发明所欲保护的范围。
实施例四
基于同一发明构思,本申请还提供了一种计算机设备,请参见图7,包括存储701、处理器702及存储在存储器上并可在处理器上运行的计算机程序703,处理器702执行上述程序时实现实施例一中的方法。
由于本发明实施例四所介绍的计算机设备,为实施本发明实施例一中基于Spark平台的点云K邻域的搜索方法所采用的计算机设备,故而基于本发明实施例一所介绍的方法,本领域所属人员能够了解该计算机设备的具体结构及变形,故而在此不再赘述。凡是本发明实施例一的方法所采用的计算机设备都属于本发明所欲保护的范围。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明实施例进行各种改动和变型而不脱离本发明实施例的精神和范围。这样,倘若本发明实施例的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种基于Spark平台的点云K邻域的搜索方法,其特征在于,应用于计算机集群,所述计算机集群上搭建有Spark平台,所述方法包括:
将参考点云与查询点云存储到所述计算机集群所在的HDFS分布式文件系统中;
将所述参考点云和所述查询点云加载至所述Spark平台;
以弹性分布式数据集的方式保存所述参考点云和所述查询点云,分别获得参考点云数据集与查询点云数据集;
确定所述参考点云数据集的分区个数;
根据所述分区个数对所述参考点云数据集构建分布式k-d树;
基于所述分布式k-d树,对所述查询点云数据集进行并行K邻域搜索。
2.如权利要求1所述的方法,其特征在于,所述将所述参考点云和所述查询点云加载至所述Spark平台,包括:
采用Spark平台的文件读取接口从所述HDFS分布式文件系统中读取所述参考点云和所述查询点云,并加载至所述Spark平台。
3.如权利要求1所述的方法,其特征在于,所述参考点云数据集存储为文本文件,所述文本文件的每行的格式为:X,Y和Z,X,Y,Z用以表示一个三维的点,为所述参考点云数据集的每个元素预设初始key值为m,所述初始key值用以表征点元素所在的树节点在所述的分布式k-d树中的位置,所述分布式k-d树包括全局k-d树和局部k-d树,所述根据所述分区个数对所述参考点云数据集构建分布式k-d树,包括:全局k-d树的构建和局部k-d树的构建,
其中,全局k-d树的构建,包括:
步骤S51:采用X,Y和Z轮转的方式确定分割维度,首先选择X维作为根节点的分割维度,然后选择Y维作为根节点两个子节点的分割维度,再选择Z维作为四个子节点的分割维度,接下来重新选择X维作为八个子节点的分割维度,依次轮转;
步骤S52:根据当前的分割维度获得分割值,若所述点元素的坐标在所述分割维度上的值小于或等于所述分割值,则将所述点元素的key值更新为2*m,若所述点元素的坐标在所述分割维度上的值大于所述分割值,则将所述点元素的key值更新为2*m+1;
其中,步骤S51和步骤S52递归执行,直到构建的全局k-d树的叶子节点个数与所述分区个数相等;
局部k-d树的构建,包括:
采用预设k-d树创建算法,构建所述局部k-d树。
4.如权利要求3所述的方法,其特征在于,所述根据当前的分割维度获得分割值,包括:
将所述分割维度作为groupByKey函数的输入,通过所述groupByKey函数输出获得所述分割值。
5.如权利要求3所述的方法,其特征在于,为所述全局k-d树中的每个树节点构建分割表,所述分割表中的信息包括节点的key值、分割维度与分割值。
6.如权利要求1所述的方法,其特征在于,为所述参考点云数据集的每个元素预设初始key值为m,所述初始key值用以表征点元素所在的树节点在所述的分布式k-d树中的位置,所述位置为编号,所述分布式k-d树包括全局k-d树和局部k-d树,所述基于所述分布式k-d树,对所述查询点云数据集进行并行K邻域搜索,包括:
步骤S61:通过map函数在所述全局k-d树上查找与查询点云数据集中点元素对应的局部k-d树的编号,在查询点云数据集上使用groupByKey函数将相同key值的点聚集在同一个分区,然后采用join函数将查询点云数据集各分区中的点与局部k-d树进行连接,生成新的查询点云数据集,所述新的查询点云数据集具体形式为(key,(kdtree,List[Point])),其中,key表示健值,对应查询点在局部k-d树的编号,kdtree表示分区上的局部k-d树,List[Point]表示分区上的查询点列表;
步骤S62:采用flatMap函数对所述新的查询点云数据集进行处理,并使各分区内的查询点云在各自的局部k-d树上进行并行K邻域搜索,更新当前的K近邻点;
步骤S63:采用map函数使查询点在全局k-d树上执行回溯操作,其中,根据预设条件区分出第一部分查询点和第二部分查询点,所述第一部分查询点回溯至全局k-d树的根节点之上,所述第二部分查询点交换到其他分区中,并继续执行步骤S62的操作;
步骤S64:将所述当前的K近邻点作为搜索结果。
7.如权利要求6所述的方法,其特征在于,所述步骤S63具体包括:
步骤S631:对所述查询点云数据集进行过滤,获得过滤后的查询点;
步骤S632:当所述过滤后的查询点小于阈值t时,将未完成搜索的查询点广播至所述Spark平台的所有的计算节点上,并行在每个分区上搜索K邻近点;
步骤S633:采用reduceByKey函数归并从各个分区上获得邻近点,并确定出最终的K邻近点。
8.一种基于Spark平台的点云K邻域的搜索装置,其特征在于,应用于计算机集群和Spark平台,所述装置包括:
存储模块,用于将参考点云与查询点云存储到所述计算机集群所在的HDFS分布式文件系统中;
加载模块,用于将所述参考点云和所述查询点云加载至所述Spark平台;
保存模块,用于以弹性分布式数据集的方式保存所述参考点云和所述查询点云,分别获得参考点云数据集与查询点云数据集;
确定模块,用于确定所述参考点云数据集的分区个数;
构建模块,用于根据所述分区个数对所述参考点云数据集构建分布式k-d树;
搜索模块,用于基于所述分布式k-d树,对所述查询点云数据集进行并行K邻域搜索。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被执行时实现如权利要求1至7中任一项权利要求所述的方法。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7中任一项权利要求所述的方法。
CN201810811481.2A 2018-07-23 2018-07-23 一种基于Spark平台的点云K邻域的搜索方法及装置 Active CN109033340B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810811481.2A CN109033340B (zh) 2018-07-23 2018-07-23 一种基于Spark平台的点云K邻域的搜索方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810811481.2A CN109033340B (zh) 2018-07-23 2018-07-23 一种基于Spark平台的点云K邻域的搜索方法及装置

Publications (2)

Publication Number Publication Date
CN109033340A true CN109033340A (zh) 2018-12-18
CN109033340B CN109033340B (zh) 2021-03-16

Family

ID=64644168

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810811481.2A Active CN109033340B (zh) 2018-07-23 2018-07-23 一种基于Spark平台的点云K邻域的搜索方法及装置

Country Status (1)

Country Link
CN (1) CN109033340B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109800092A (zh) * 2018-12-17 2019-05-24 华为技术有限公司 一种共享数据的处理方法、装置及服务器
CN109947884A (zh) * 2019-03-06 2019-06-28 武汉大学 一种全球ICESat/GLAS点云的高效组织查询方法
CN110413611A (zh) * 2019-06-24 2019-11-05 腾讯科技(深圳)有限公司 数据存储、查询方法及装置
CN110851550A (zh) * 2019-10-31 2020-02-28 武汉联图时空信息科技有限公司 路网约束下K函数的Spark并行计算方法
CN111178230A (zh) * 2019-12-26 2020-05-19 武汉大学 一种遥感影像内河洲滩智能化提取方法
CN111289954A (zh) * 2020-03-31 2020-06-16 四川长虹电器股份有限公司 用于毫米波雷达目标跟踪的点云划分与航迹匹配方法
CN111813581A (zh) * 2020-07-24 2020-10-23 成都信息工程大学 一种基于完全二叉树的容错机制的配置方法
CN112860758A (zh) * 2019-11-27 2021-05-28 阿里巴巴集团控股有限公司 搜索方法、装置、电子设备及计算机存储介质
CN114612598A (zh) * 2022-02-16 2022-06-10 苏州一径科技有限公司 一种点云的处理方法、装置及激光雷达

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105589951A (zh) * 2015-12-18 2016-05-18 中国科学院计算机网络信息中心 一种海量遥感影像元数据分布式存储方法及并行查询方法
CN106682116A (zh) * 2016-12-08 2017-05-17 重庆邮电大学 基于Spark内存计算大数据平台的OPTICS点排序聚类方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105589951A (zh) * 2015-12-18 2016-05-18 中国科学院计算机网络信息中心 一种海量遥感影像元数据分布式存储方法及并行查询方法
CN106682116A (zh) * 2016-12-08 2017-05-17 重庆邮电大学 基于Spark内存计算大数据平台的OPTICS点排序聚类方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
JESUS MAILLO等: ""An Iterative Spark-based design of the k-Nearest Neighbors classifier for big data"", 《KNOWLEDGE-BASED SYSTEMS》 *
史英杰等: ""云数据管理系统中查询技术研究综述"", 《计算机学报》 *
陈晓康: ""基于Spark云计算平台的改进K近邻算法研究"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11445004B2 (en) 2018-12-17 2022-09-13 Petal Cloud Technology Co., Ltd. Method for processing shared data, apparatus, and server
CN109800092A (zh) * 2018-12-17 2019-05-24 华为技术有限公司 一种共享数据的处理方法、装置及服务器
CN109947884A (zh) * 2019-03-06 2019-06-28 武汉大学 一种全球ICESat/GLAS点云的高效组织查询方法
CN109947884B (zh) * 2019-03-06 2021-04-02 武汉大学 一种全球ICESat/GLAS点云的高效组织查询方法
CN110413611A (zh) * 2019-06-24 2019-11-05 腾讯科技(深圳)有限公司 数据存储、查询方法及装置
CN110413611B (zh) * 2019-06-24 2023-05-12 腾讯科技(深圳)有限公司 数据存储、查询方法及装置
CN110851550A (zh) * 2019-10-31 2020-02-28 武汉联图时空信息科技有限公司 路网约束下K函数的Spark并行计算方法
CN110851550B (zh) * 2019-10-31 2023-04-28 武汉大学 路网约束下K函数的Spark并行计算方法
CN112860758A (zh) * 2019-11-27 2021-05-28 阿里巴巴集团控股有限公司 搜索方法、装置、电子设备及计算机存储介质
CN111178230A (zh) * 2019-12-26 2020-05-19 武汉大学 一种遥感影像内河洲滩智能化提取方法
CN111289954B (zh) * 2020-03-31 2022-03-15 四川长虹电器股份有限公司 用于毫米波雷达目标跟踪的点云划分与航迹匹配方法
CN111289954A (zh) * 2020-03-31 2020-06-16 四川长虹电器股份有限公司 用于毫米波雷达目标跟踪的点云划分与航迹匹配方法
CN111813581B (zh) * 2020-07-24 2022-07-05 成都信息工程大学 一种基于完全二叉树的容错机制的配置方法
CN111813581A (zh) * 2020-07-24 2020-10-23 成都信息工程大学 一种基于完全二叉树的容错机制的配置方法
CN114612598A (zh) * 2022-02-16 2022-06-10 苏州一径科技有限公司 一种点云的处理方法、装置及激光雷达

Also Published As

Publication number Publication date
CN109033340B (zh) 2021-03-16

Similar Documents

Publication Publication Date Title
CN109033340A (zh) 一种基于Spark平台的点云K邻域的搜索方法及装置
Xie et al. Distributed trajectory similarity search
Eldawy et al. CG_Hadoop: computational geometry in MapReduce
Dai et al. Efficient map/reduce-based dbscan algorithm with optimized data partition
Yu et al. A demonstration of GeoSpark: A cluster computing framework for processing big spatial data
CN104281652B (zh) 度量空间中逐个支撑点数据划分方法
CN112181991B (zh) 基于快速构建kd树的地球模拟系统网格重映射方法
CN106933511B (zh) 考虑负载均衡与磁盘效率的空间数据存储组织方法及系统
Zou et al. Answering pattern match queries in large graph databases via graph embedding
CN108549696B (zh) 一种基于内存计算的时间序列数据相似性查询方法
CN106503196A (zh) 云环境下可扩展存储索引结构的构建和查询方法
García-García et al. Efficient distance join query processing in distributed spatial data management systems
CN109063194A (zh) 基于空间编码的数据检索方法及装置
Park et al. Efficient processing of skyline queries using MapReduce
CN110175175A (zh) 一种基于spark的分布式空间二级索引与范围查询算法
Azri et al. Dendrogram clustering for 3D data analytics in smart city
Kocon et al. Point cloud indexing using Big Data technologies
CN103500165A (zh) 一种结合聚类和双key值的高维向量检索方法
Moutafis et al. Algorithms for processing the group K nearest-neighbor query on distributed frameworks
Mao et al. Comprehensive comparison of LSM architectures for spatial data
García-García et al. Efficient distributed algorithms for distance join queries in spark-based spatial analytics systems
García-García et al. Voronoi-diagram based partitioning for distance join query processing in spatialhadoop
Mavrommatis et al. Closest-pairs query processing in apache spark
Yang et al. Cloud-assisted spatio-textual k nearest neighbor joins in sensor networks
Li et al. An accurate and efficient large-scale regression method through best friend clustering

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant