一种LAS文件的点云图浏览方法及相关装置与流程

文档序号:16754226发布日期:2019-01-29 17:11阅读:592来源:国知局
一种LAS文件的点云图浏览方法及相关装置与流程

本申请涉及计算机技术领域,特别涉及一种las文件的点云图浏览方法、点云图浏览系统、服务器以及计算机可读存储介质。



背景技术:

随着机器人技术的不断发展,在电网维护和管理的过程中可以使用电网机器人进行相应的操作。在具体时间的过程中,需要对电网机器人数据分析后,在终端中直接浏览到相应的点云图片,也就是需要终端获取到点云的坐标数据。目前,点云的坐标数据主要是从电网机器人作业时所提供的数据也就是las文件中提取出相应的坐标数据。

由于las文件本身数据量比较大,并且用户在浏览非常直观的点云图片时,需要非常大的浏览量,因此就需要从大量的las文件中提取出需要点云数据。现有技术中,由于前端的浏览器无法直接读取相应的las文件,需要在后台将las文件的坐标提取出来,提供给浏览器进行展示。

但是,由于las文件内容复杂,数据量非常大,对大量的las文件进行格式转换是十分耗时的。例如,有30个终端对las文件进行浏览,每个终端每次还需要浏览多个不同点云文件,如果将这些las文件均放在服务器的后台进行处理,终端浏览点云图片的速度较低,对于后台的处理压力也会较大,在该处理流程中整体的流程效率较低。

因此,如何提高las文件的点云图浏览效率是本领域技术人员关注的重点问题。



技术实现要素:

本申请的目的是提供一种las文件的点云图浏览方法、点云图浏览系统、服务器以及计算机可读存储介质,通过alluxio对las文件进行存储,再使用spark框架对las文件中的坐标数据进行提取,加快了大量las文件的读取和存储速度,并且可以提高las文件中的坐标数据提取速度,降低了las文件的点云图浏览的延时,提高了浏览效率。

为解决上述技术问题,本申请提供一种las文件的点云图浏览方法,包括:

根据预设库对alluxio中多个原始las文件进行读取,得到多个las文件,将所有所述las文件以文本的格式保存到内存的共享文件中;

从所述内存取所述共享文件,将所述共享文件中每个las文件进行信息拆分处理,得到多个元素,将所有所述元素保存在rdd中;其中,所述元素包括las文件的文件归属用户名、文件绝对路径和las信息;

通过spark框架的多个节点对rdd中的所有所述元素进行坐标提取处理,得到多组坐标数据,将所有所述坐标数据以元素的形式保存在新rdd中;

根据文本文件形式将所述新rdd中每个元素进行格式转换,得到多个坐标文本文件,将所有所述坐标文本文件存入所述alluxio中,以便终端从所述alluxio中获取到对应的坐标文本文件,并进行浏览展示。

可选的,终端从所述alluxio中获取到对应的坐标文本文件,并进行浏览展示,包括:

所述终端从所述alluxio中以流的形式获取到对应的坐标文本文件,并对所述坐标文本文件进行浏览展示。

可选的,进行浏览展示,包括:

所述终端根据所述坐标文本文件进行点云图绘制处理,将得到点云图进行显示,以便完成浏览操作。

可选的,还包括:

当所述终端退出所述点云图的浏览操作后,删除所述坐标文本文件。

本申请还提供一种las文件的点云图浏览系统,包括:

共享文件获取模块,用于根据预设库对alluxio中多个原始las文件进行读取,得到多个las文件,将所有所述las文件以文本的格式保存到内存的共享文件中;

las文件拆分处理模块,用于从所述内存取所述共享文件,将所述共享文件中每个las文件进行信息拆分处理,得到多个元素,将所有所述元素保存在rdd中;

坐标提取处理模块,用于通过spark框架的多个节点对rdd中的所有所述元素进行坐标提取处理,得到多组坐标数据,将所有所述坐标数据以元素的形式保存在新rdd中;

坐标数据格式转换模块,用于根据文本文件形式将所述新rdd中每个元素进行格式转换,得到多个坐标文本文件,将所有所述坐标文本文件存入所述alluxio中,以便终端从所述alluxio中获取到对应的坐标文本文件,并进行浏览展示。

可选的,所述坐标数据格式转换模块,还包括:

浏览展示单元,用于根据所述坐标文本文件进行点云图绘制处理,将得到点云图进行显示,以便完成浏览操作。

本申请还提供一种服务器,其特征在于,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上所述的点云图浏览方法的步骤。

本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的点云图浏览方法的步骤。

本申请所提供的一种las文件的点云图浏览方法,包括:根据预设库对alluxio中多个原始las文件进行读取,得到多个las文件,将所有所述las文件以文本的格式保存到内存的共享文件中;从所述内存取所述共享文件,将所述共享文件中每个las文件进行信息拆分处理,得到多个元素,将所有所述元素保存在rdd中;其中,所述元素包括las文件的文件归属用户名、文件绝对路径和las信息;通过spark框架的多个节点对rdd中的所有所述元素进行坐标提取处理,得到多组坐标数据,将所有所述坐标数据以元素的形式保存在新rdd中;根据文本文件形式将所述新rdd中每个元素进行格式转换,得到多个坐标文本文件,将所有所述坐标文本文件存入所述alluxio中,以便终端从所述alluxio中获取到对应的坐标文本文件,并进行浏览展示。

通过alluxio分布式存储系统将大量的las文件进行读取和存储,由于alluxio本身的基于内存进行读写,可以提高las文件的读取和存储的速度,再通过spark框架的多个节点对las文件进行相应的数据提取,加快对所有las文件的中坐标数据的提取速度,并且spark框架在计算过程中是将中间输出结果保存在内存中,适用于本申请中对大量las文件数据进行操作的情况,总的来说本申请中在数据存储和数据处理阶段均加快了las文件的读写速度和处理速度,当处理大量las文件时降低耗时,提高了las文件的坐标提取速度,进而提升对点云图进行浏览时的效率。

本申请还提供一种las文件的点云图浏览系统、服务器以及计算机可读存储介质,具有以上有益效果,在此不做赘述。

附图说明

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

图1为本申请实施例所提供的一种las文件的点云图浏览方法的流程图;

图2为本申请实施例所提供的一种las文件的点云图浏览系统的结构示意图。

具体实施方式

本申请的核心是提供一种las文件的点云图浏览方法、点云图浏览系统、服务器以及计算机可读存储介质,通过alluxio对las文件进行存储,再使用spark框架对las文件中的坐标数据进行提取,加快了大量las文件的读取和存储速度,并且可以提高las文件中的坐标数据提取速度,降低了las文件的点云图浏览的延时,提高了浏览效率。

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

通常las(las是美国摄影测量与遥感机构下的机载激光雷达测量委员会于2003年发布的标准机载激光雷达测量数据格式)文件除了可以对其中的数据进行统计学上的处理,得到统计学结果。此外,还可以将las文件的坐标数据提取出来绘制成点云图,供技术人员进行浏览观看。

现有技术中,用于浏览点云图的客户端无法对las文件进行处理,一般情况中需要将las文件保存在后台进行处理,得到关于坐标点的文件,根据该文件中的坐标点数据进行点云图的绘制,得到用于浏览的点云图。但是,las文件本身数据量比较庞大,并且,浏览点云图的时候需要大量的坐标数据支持点云图,因此就需要处理大量的las文件,而且las文件内容复杂,通过后台对las文件进行处理,效率极低,耗时较久,也就是提高了点云图在浏览时的延迟,降低了效率。

因此,本申请实施例提供一种las文件的点云图浏览方法,通过alluxio分布式存储系统将大量的las文件进行读取和存储,由于alluxio本身的基于内存进行读写,可以提高las文件的读取和存储的速度,再通过spark框架的多个节点对las文件进行相应的数据提取,加快对所有las文件的中坐标数据的提取速度,并且spark框架在计算过程中是将中间输出结果保存在内存中,适用于本申请中对大量las文件数据进行操作的情况,总的来说本申请中在数据存储和数据处理阶段均加快了las文件的读写速度和处理速度,当处理大量las文件时降低耗时,提高了las文件的坐标提取速度,进而提升对点云图进行浏览时的效率。

请参考图1,图1为本申请实施例所提供的一种las文件的点云图浏览方法的流程图。

该方法可以包括:

s101,根据预设库对alluxio中多个原始las文件进行读取,得到多个las文件,将所有las文件以文本的格式保存到内存的共享文件中;

本步骤旨在根据预设库对原始las文件进行读取,将读取结果保存在共享文件中。其中,预设库可以是c++(编程语言)对应的las文件解析库,也可以是python(编程语言)对应的lasio库。其中,读取过程主要是对原始las文件进行读取得到数据信息,将对应的数据信息作为las文件保存在共享文件中。

其中,保存在内存中的共享文件是以链表的形式进行保存,链表中的每个元素均保存一个las文件的信息,由于此链表存储了多个用户所提交的文件,故称此链表为共享文件。

其中,alluxio是一个高容错的分布式文件系统,允许文件以内存的速度在集群框架中进行可靠的共享。alluxio的吞吐量要比hdfs高300多倍。alluxio都是在内存中处理缓存文件,并且让不同的框架都能内存的速度来访问缓存文件。通过alluxio就可以使spark框架以内存进行缓存,提高数据的读取速度。并且,alluxio适合于大数据量的读取与存储,因此在本步骤中可以很好的提高原始las文件的读取速度。

s102,从内存取所述共享文件,将共享文件中每个las文件进行信息拆分处理,得到多个元素,将所有元素保存在rdd中;其中,元素包括las文件的文件归属用户名、文件绝对路径和las信息;

本步骤中主要是从内存中获取到需要计算的las文件,并对该las文件进行简单的预处理,也就是拆分处理,将预处理的结果以spark框架的存储形式进行保存。

其中,共享文件为在内存保存了多个las文件的链表,可以在内存由多个用户进行操作,也就是当多个用户需要对不同的las文件进行坐标提取,可以将这些用户下发指令的las文件均放置在共享文件中,同时进行读取。避免出现las文件处理任务需要排队的情况。

进一步的,本步骤中将共享文件中的las文件进行信息拆分处理,得到多个元素。也就是将las文件中的文件归属用户名、文件绝对路径和las信息提取出来作为一个元素单位存放在rdd中。因此,每个元素也就包括了las文件的文件归属用户名、文件绝对路径以及las信息,其中,las信息是指完成的las信息。

其中,本步骤的rdd(resilientdistributeddataset)叫做弹性分布式数据集,是spark框架中最基本的数据抽象。在rdd中的元素可以进行并行计算,提高数据的处理速度。

s103,通过spark(一种专为大规模数据处理而设计的快速通用的计算引擎)框架的多个节点对rdd中的所有元素进行坐标提取处理,得到多组坐标数据,将所有坐标数据以元素的形式保存在新rdd中;

步骤s102主要是为spark框架进行计算的准备阶段,因此,在步骤s101的基础上,本步骤旨在通过spark框架对所有元素中的坐标数据进行提取操作。提取操作主要是提取las信息中的xyz坐标数据,当得到xyz坐标数据后将文件归属用户名和文件绝对路径作为一个新的元素存储到新rdd中。

在本实施例中所有步骤的rdd以及元素均以内存作为缓存的存储介质,以提高数据的读取速度和效率。

其中,xyz坐标即为一个点三维坐标。

s104,根据文本文件形式将新rdd中每个元素进行格式转换,得到多个坐标文本文件,将所有坐标文本文件存入alluxio中,以便终端从alluxio中获取到对应的坐标文本文件,并进行浏览展示。

在步骤s103的基础上,本步骤旨在以文本文件的形式将rdd中每个元素进行格式转换,得到多个坐标文本文件,将所有坐标文本文件存入alluxio中,终端就可以从alluxio获取到提取后的坐标文本文件,进行点云图的绘制和展示。

需要说明的是,为了使坐标文本文件易于管理,可以将文件命名为“用户名_对应las文件名”的形式。

本步骤中的终端从alluxio中获取到对应的坐标文本文件,并进行浏览展示,可以包括:

终端从alluxio中以流的形式获取到对应的坐标文本文件,并对坐标文本文件进行浏览展示。

其中,以流的形式获取到坐标文本文件主要是在浏览器中以数据流的形式传输相应的数据。

本步骤中的进行浏览展示,包括:

终端根据坐标文本文件进行点云图绘制处理,将得到点云图进行显示,以便完成浏览操作。

本步骤旨在根据坐标文本文件进行点云图的绘制处理,得到点云图。并将该点云图在终端中进行显示,以便完成浏览操作。

本步骤还可以包括:

当终端退出点云图的浏览操作后,删除坐标文本文件。

本步骤旨在当退出点云图的浏览操作后,将坐标文本文件进行删除。

综上,本实施例通过alluxio分布式存储系统将大量的las文件进行读取和存储,由于alluxio本身的基于内存进行读写,可以提高las文件的读取和存储的速度,再通过spark框架的多个节点对las文件进行相应的数据提取,加快对所有las文件的中坐标数据的提取速度,并且spark框架在计算过程中是将中间输出结果保存在内存中,适用于本申请中对大量las文件数据进行操作的情况,总的来说本申请中在数据存储和数据处理阶段均加快了las文件的读写速度和处理速度,当处理大量las文件时降低耗时,提高了las文件的坐标提取速度,进而提升对点云图进行浏览时的效率。

基于上一实施例的点云图浏览方法,本申请实施例还提供一种处理las文件的存储系统,以便减少las文件的处理耗时,提高las文件的处理速度。

该系统可以包括:hdfs,alluxio以及mongodb(一个基于分布式文件存储的数据库)。其中,hdfs主要用长期存储数据,并接受用户上传的相关数据。alluxio主要是用于存储进行运算计算的数据,本实施例中用于存储解压缩后的las文件。mongodb用于存储一些结构化数据。

在本实施例的具体使用过程中,可以有以下步骤:

步骤1,考虑到用户所上传的文件类型会是大量的小文件,若对这类文件进行大批量的上传,会需要大量的上传时间,影响执行效率。所以本系统提供了针对压缩文件上传的方式,允许用户将需要上传的所有文件打包成zip格式的压缩文件进行上传,在完成上传后,将文件存储到hdfs中。

步骤2,当文件完整的存入hdfs中对应的用户目录以后,系统将会自动对压缩文件进行解压得到与用户压缩之前相同的文件结构。并将该文件结构保存在mongodb中。

步骤3,考虑到用户需要在浏览器前端对自己文件夹进行操作,系统需要将用户的文件结构进行遍历生成树反馈给前端。但是如果目录结构过于复杂,遍历过程就会非常缓慢。因此我们使用了文件遍历与数据库相结合的方式,将得到的目录结构存入数据库中,来大幅减少遍历时间。具体操作是:获取用户当前上传的文件结构;从数据库中读取用户之前的文件结构,将当前的文件结构拼接到之前的文件结构中;将得到的新的文件结构存入数据库中;将得到的新的文件结构返回至前端展示。减少获取文件结构的时间。

步骤4,为提高系统容错性,在每次获取目录结构的时候都会对目录结构进行检验,为了防止未知原因造成数据库目录与hdfs目录不匹配的情况。具体操作是:从数据库读取用户的文件结构后,获取文件结构的第一层节点;再读取hdfs中用户目录下的最顶级的文件结构;将得到的两种结构进行比对,如果出现不匹配的情况,则均以hdfs为参照对象,删除数据库中多余节点,或是添加缺少节点。

步骤5,提取出用户上传的las文件,将其从hdfs转移至alluxio中存储,以加快后续数据提取的速度。

可选的,步骤5可以包括:

后台根据得到的索引,从alluxio中选出需要转换的las文件。由于目前常用的las文件读取工具有c++(一种编程语言)和python(一种编程语言)两种,python在大数据方面支持性高于c++,故使用python的读取工具获取las文件内部结构。采用lasio(函数库名)库对获取的索引逐个读取,将每个文件读取得到的数据信息以文本的格式存入到一个共享的文件内部,并以“&用户名以及文件的绝对路径&”作为分界标准。防止因为将文件数据共享造成数据错误或者丢失。对于共享文件,设置了一秒的保留周期,在一个保留周期内,所有用户提交的转换文件都将会保存在当前的共享文件中。当保留时间达到一秒并且最后一个写入操作完成,便将该共享文件传输给spark进行转换,再新建一个共享文件用来保存后续的文件信息,直到没有新的需要进行处理的las文件为止。

本申请实施例提供了一种处理las文件的存储系统,通过综合了hdfs,alluxio以及mongodb三者存储结构,可以应对处理数据量过大的情况,例如las文件的处理过程,减少了数据处理中的耗时,提高了文件处理速度。

下面对本申请实施例提供的一种las文件的点云图浏览系统进行介绍,下文描述的一种las文件的点云图浏览系统与上文描述的一种las文件的点云图浏览方法可相互对应参照。

请参考图2,图2为本申请实施例所提供的一种las文件的点云图浏览系统的结构示意图。

该系统可以包括:

共享文件获取模块100,用于根据预设库对多个原始las文件进行读取,得到多个las文件,将所有las文件以文本的格式保存到共享文件中;

las文件拆分处理模块200,用于从内存取所述共享文件,将共享文件中每个las文件进行信息拆分处理,得到多个元素,将所有元素保存在rdd中;

坐标提取处理模块300,用于通过spark框架的多个节点对rdd中的所有元素进行坐标提取处理,得到多组坐标数据,将所有坐标数据以元素的形式保存在新rdd中;

坐标数据格式转换模块400,用于根据文本文件形式将新rdd中每个元素进行格式转换,得到多个坐标文本文件,将所有坐标文本文件存入alluxio中,以便终端从alluxio中获取到对应的坐标文本文件,并进行浏览展示。

可选的,该坐标数据格式转换模块400,还可以包括:

浏览展示单元,用于根据坐标文本文件进行点云图绘制处理,将得到点云图进行显示,以便完成浏览操作。

本申请实施例还提供一种服务器,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如以上实施例所述的点云图浏览方法的步骤。

本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如以上实施例所述的点云图浏览方法的步骤。

该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本申请所提供的一种las文件的点云图浏览方法、点云图浏览系统、服务器以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

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