本发明涉及空间编码技术领域,尤其是涉及一种城市三维空间网格压缩编码方法、装置、终端设备及可读存储介质。
背景技术:
随着计算机图形技术、地理信息技术和现代基础信息设施的发展,3dgis的应用领域越来越广泛,在资源勘探、地质模型、基建工程和城市建设与服务等各个领域都得到普遍的应用,其中,以城市建设与服务领域对3dgis的应用最为频繁。自2008年提出的智慧地球的理念,智慧城市概念随即被提出,作为数字城市与物联网相结合的产物,被认为是信息时代城市发展的方向、文明发展的趋势。随着3d渲染技术和地理信息技术的快速发展,在计算机系统中构建并展示一个与现实世界信息同步的三维虚拟城市的技术逐步成熟,“数字孪生城市”的概念也已逐步成形。
“数字孪生城市”是指通过对物理世界的人、物、事件等所有要素数字化,在网络空间再造一个与之对应的“虚拟世界”,形成物理维度上的实体世界和信息维度上的数字世界同生共存、虚实交融的格局。“数字孪生城市”的核心基础之一是基于三维空间的位置服务,即3dgis的时空分析。
地理空间数据的管理是3dgis的核心,3dgis中使用的三维地理空间数据具有数据量大、空间对象实体关系复杂、空间操作计算量大等特点。为了提高空间检索和空间分析等方面的效率,人们采用了一系列方法对三维空间进行剖分并建立索引编码,其中以八叉树法和网格剖分法最为流行。
八叉树法利用一个包围所有空间目标的立方体空间为初始空间,然后将立方体空间等分为8个子空间,再依次将子空间剖分为8个更小的子空间,直至剖分至指定大小的空间或满足其他条件为止,最后将所有剖分空间采用morton编码,完成空间索引的建立。网格剖分法也是利用一个包围所有空间目标的立方体空间为初始空间,然后根据要求大小的网格将整个三维空间进行剖分,然后采用整数编码或字符串编码,完成空间索引的建立。
在进行三维空间的剖分后,整个三维空间的空间检索与空间分析的效率有了很大地提升,但整个三维空间用于空间检索和空间分析的数据量依然很大,人们尝试对剖分数据进行进一步的压缩,并逐步提出了线性八叉树编码压缩和线性八叉树游程编码压缩等方法,前者利用八叉树父子节点间的关系,将具有相同属性的八个子节点合并为一个父节点表示,从而达到数据压缩的目的;后者利用将所有子节点按morton码的大小进行排序,然后连续属性相同的子节点分为一组,并记录起始子节点morton码和连续个数,从而达到数据压缩的目的。
但是,现有技术的编码压缩方案具有如下缺点:
1)压缩效果差。目前已有的空间网格压缩算法主要是针对八叉树-morton编码的方式,八叉树的划分方式和morton编码方式本身就导致了压缩的局限性,八叉树的划分方式,限定了子层级网格和父层级网格的关系,比如,八个空间连续的子层级网格,但由于不属于同一个父层级网格,便无法完成向父层级的合并,morton编码采用类似八叉树划分的方式对网格进行标识,同样限定了可压缩的空间范围,即使是采用游程编码这种压缩方式,由于连续性只在一个维度上,损失了其他两个维度可压缩的可能性。
2)压缩效率低。线性八叉树编码压缩方法在压缩过程中既要考虑子网格与父网格的关系,又要考虑子网格间的相邻关系,计算量偏大;而线性八叉树游程编码压缩方法在压缩过程中需要先完成网格的排序,再进行压缩,同样计算量偏大。
3)换算空间坐标过程复杂。线性八叉树的morton编码无法直观的表示网格的空间范围,需要经过一系列的换算来求解,在进行空间数据查找和空间分析时,有一定的性能损失。
技术实现要素:
本发明实施例提供一种城市三维空间网格压缩编码方法、装置、终端设备及可读存储介质,旨在解决现有的三维空间数据编码压缩技术存在的压缩效果差、压缩效率低及换算过程复杂的问题,从而有效优化三维空间体素化数据大小及三维空间规划数据大小,以满足高效的空间对象检索和空间路径分析。
为了解决上述技术问题,本发明实施例提供了一种城市三维空间网格压缩编码方法,包括:
将目标三维空间区域剖分为若干个尺寸大小为n的大网格区域,继而将每一所述大网格区域剖分为若干个尺寸大小为m的小网格区域;其中,n>m,且n为m的整数倍;
根据所述目标三维空间区域内的空间对象占用情况,提取出所有被空间对象占用的小网格区域作为待统计小网格区域;
根据预设的空间直角坐标系对每一所述待统计小网格区域进行数据统计,包括分别统计各个空间对象在所述待统计小网格区域中所占网格的起始列号、连续相邻列数、起始行号、连续相邻行数、起始层号和连续相邻层数,并将每一空间对象的统计结果组合生成空间对象区间数据;
将所述空间对象区间数据转化为二进制组合编码,并根据所述小网格区域与所述大网格区域之间的对应关系,将所述二进制组合编码转化为绝对空间网格编码。
进一步地,所述分别统计各个空间对象在所述待统计小网格区域中所占网格的起始列号、连续相邻列数、起始行号、连续相邻行数、起始层号和连续相邻层数,并将每一空间对象的统计结果组合生成空间对象区间数据,具体包括:
沿y轴正方向统计空间对象在所述待统计小网格区域中所占网格的起始列号和连续相邻列数,并与所在行号一并记录,得到第一统计结果;
基于连续相同的所述第一统计结果,沿x轴正方向依次统计所占网格的起始行号和连续相邻行数,并与所在层号一并记录,得到第二统计结果;
基于连续相同的所述第二统计结果,沿z轴正方向依次统计所占网格的起始层号和连续相邻层数,得到所述空间对象区间数据。
进一步地,所述将所述空间对象区间数据转化为二进制组合编码,具体为:
分别将所述空间对象区间数据中的每个数据进行二进制编码转换,并将转换后的每个参数的二进制编码进行组合得到所述二进制组合编码;其中,各个参数在所述二进制组合编码中从高位到低位的排列顺序依次为起始层号、连续相邻层数、起始行号、连续相邻行数、起始列号、连续相邻列数。
进一步地,所述二进制组合编码为64位整数;其中,所述二进制组合编码最高位4位为预设的补充编码,六个参数中每个参数各占有10位。
为了解决相同的技术问题,本发明还提供了一种城市三维空间网格压缩编码装置,包括:
网格剖分模块,用于将目标三维空间区域剖分为若干个尺寸大小为n的大网格区域,继而将每一所述大网格区域剖分为若干个尺寸大小为m的小网格区域;其中,n>m,且n为m的整数倍;
网格提取模块,用于根据所述目标三维空间区域内的空间对象占用情况,提取出所有被空间对象占用的小网格区域作为待统计小网格区域;
数据统计模块,用于根据预设的空间直角坐标系对每一所述待统计小网格区域进行数据统计,包括分别统计各个空间对象在所述待统计小网格区域中所占网格的起始列号、连续相邻列数、起始行号、连续相邻行数、起始层号和连续相邻层数,并将每一空间对象的统计结果组合生成空间对象区间数据;
数据编码模块,用于将所述空间对象区间数据转化为二进制组合编码,并根据所述小网格区域与所述大网格区域之间的对应关系,将所述二进制组合编码转化为绝对空间网格编码。
进一步地,所述分别统计各个空间对象在所述待统计小网格区域中所占网格的起始列号、连续相邻列数、起始行号、连续相邻行数、起始层号和连续相邻层数,并将每一空间对象的统计结果组合生成空间对象区间数据,具体包括:
沿y轴正方向统计空间对象在所述待统计小网格区域中所占网格的起始列号和连续相邻列数,并与所在行号一并记录,得到第一统计结果;
基于连续相同的所述第一统计结果,沿x轴正方向依次统计所占网格的起始行号和连续相邻行数,并与所在层号一并记录,得到第二统计结果;
基于连续相同的所述第二统计结果,沿z轴正方向依次统计所占网格的起始层号和连续相邻层数,得到所述空间对象区间数据。
进一步地,所述将所述空间对象区间数据转化为二进制组合编码,具体为:
分别将所述空间对象区间数据中的每个数据进行二进制编码转换,并将转换后的每个参数的二进制编码进行组合得到所述二进制组合编码;其中,各个参数在所述二进制组合编码中从高位到低位的排列顺序依次为起始层号、连续相邻层数、起始行号、连续相邻行数、起始列号、连续相邻列数。
进一步地,所述二进制组合编码为64位整数;其中,所述二进制组合编码最高位4位为预设的补充编码,六个参数中每个参数各占有10位。
为了解决相同的技术问题,本发明还提供了一种城市三维空间网格压缩编码终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述存储器与所述处理器耦接,且所述处理器执行所述计算机程序时,实现任一项所述的城市三维空间网格压缩编码方法。
为了解决相同的技术问题,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在的设备执行任一项所述的城市三维空间网格压缩编码方法。
与现有技术相比,本发明具有如下有益效果:
本发明实施例提供了一种城市三维空间网格压缩编码方法、装置、终端设备及可读存储介质,所述方法包括:将目标三维空间区域剖分为若干个尺寸大小为n的大网格区域,继而将每一所述大网格区域剖分为若干个尺寸大小为m的小网格区域;其中,n>m,且n为m的整数倍;根据所述目标三维空间区域内的空间对象占用情况,提取出所有被空间对象占用的小网格区域作为待统计小网格区域;根据预设的空间直角坐标系对每一所述待统计小网格区域进行数据统计,包括分别统计各个空间对象在所述待统计小网格区域中所占网格的起始列号、连续相邻列数、起始行号、连续相邻行数、起始层号和连续相邻层数,并将每一空间对象的统计结果组合生成空间对象区间数据;将所述空间对象区间数据转化为二进制组合编码,并根据所述小网格区域与所述大网格区域之间的对应关系,将所述二进制组合编码转化为绝对空间网格编码。本发明能够有效优化三维空间体素化数据大小及三维空间规划数据大小,进而满足高效的空间对象检索和空间路径分析。
附图说明
图1是本发明一实施例提供的城市三维空间网格压缩编码方法的流程示意图;
图2是本发明一实施例提供的对空间对象进行网格坐标换算的举例示意图;
图3是本发明一实施例提供的对统计数据进行编码的举例示意图;
图4是本发明一实施例提供的城市三维空间网格压缩编码装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,本发明实施例提供了一种城市三维空间网格压缩编码方法,包括步骤:
s1、将目标三维空间区域剖分为若干个尺寸大小为n的大网格区域,继而将每一所述大网格区域剖分为若干个尺寸大小为m的小网格区域;其中,n>m,且n为m的整数倍;
可以理解的是,步骤s1为将待分析的整个城市三维空间区域按预设的大小进行剖分,具体地,先将整个空间区域剖分为大小为n的大网格区域,然后针对每个大网格区域再剖分为大小为m的小网格区域。作为优选方案,在一个具体实施例中,n可取值为1024米,m可取值为1米。
s2、根据所述目标三维空间区域内的空间对象占用情况,提取出所有被空间对象占用的小网格区域作为待统计小网格区域。
需要说明的是,城市三维空间网格化也称为栅格化,是指将整个城市三维空间进行等距剖分,得到一个三维网格矩阵,每个网格具有占用和未占用两种状态,占用状态是指网格与空间对象相交;未占用则表示网格内部无任何物体,一般被用于空间路径分析。在本发明实施例中,步骤s2为根据空间对象在网格区域中的占用情况,提取出有被空间对象占用的小网格区域进行分析。
s3、根据预设的空间直角坐标系对每一所述待统计小网格区域进行数据统计,包括分别统计各个空间对象在所述待统计小网格区域中所占网格的起始列号、连续相邻列数、起始行号、连续相邻行数、起始层号和连续相邻层数,并将每一空间对象的统计结果组合生成空间对象区间数据。
在本发明实施例中,进一步地,所述分别统计各个空间对象在所述待统计小网格区域中所占网格的起始列号、连续相邻列数、起始行号、连续相邻行数、起始层号和连续相邻层数,并将每一空间对象的统计结果组合生成空间对象区间数据,具体包括:
沿y轴正方向统计空间对象在所述待统计小网格区域中所占网格的起始列号和连续相邻列数,并与所在行号一并记录,得到第一统计结果;
基于连续相同的所述第一统计结果,沿x轴正方向依次统计所占网格的起始行号和连续相邻行数,并与所在层号一并记录,得到第二统计结果;
基于连续相同的所述第二统计结果,沿z轴正方向依次统计所占网格的起始层号和连续相邻层数,得到所述空间对象区间数据。
s4、将所述空间对象区间数据转化为二进制组合编码,并根据所述小网格区域与所述大网格区域之间的对应关系,将所述二进制组合编码转化为绝对空间网格编码。
在本发明实施例中,进一步地,所述将所述空间对象区间数据转化为二进制组合编码,具体为:
分别将所述空间对象区间数据中的每个数据进行二进制编码转换,并将转换后的每个参数的二进制编码进行组合得到所述二进制组合编码;其中,各个参数在所述二进制组合编码中从高位到低位的排列顺序依次为起始层号、连续相邻层数、起始行号、连续相邻行数、起始列号、连续相邻列数。
在本发明实施例中,进一步地,所述二进制组合编码为64位整数;其中,所述二进制组合编码最高位4位为预设的补充编码,六个参数中每个参数各占有10位。
需要说明的是,城市三维空间网格化也称为栅格化,是指将整个城市三维空间进行等距剖分,得到一个三维网格矩阵,每个网格具有占用和未占用两种状态,占用状态是指网格与空间对象相交;未占用则表示网格内部无任何物体,一般被用于空间路径分析。城市空间中所有的未占用网格所组成的空间便是用于空间路径分析的网格数据,而被同一个空间对象所占用的网格所组成的空间便是空间对象的空间,对象内部的网格便是空间对象的体素化表示。进行网格划分时,网格尺寸大小的选择是非常重要的,网格划分越细,对三维空间环境描述越精确,但同时三维空间内的网格数量也将呈指数的增加;网格划分过大,网格数量虽然较少,但对三维空间环境的描述不够精确。所以,网格尺寸的选择会参考对数据精度的要求。
一般城市三维空间中,室外采用尺寸大小为1米的网格,室内采用25cm的网格,这样既能保证对三维空间环境描述的精确度,同时又能满足空间对象检索和空间路径分析的要求。但在整个城市三维空间中,1米大小的网格的数量是非常庞大的,若是在整个城市三维空间进行任意两点间的空间路径分析,是非常耗时的。所以,将三维空间网格进行压缩是非常有必要的。
以下列举具体优选实施例对本发明方案进行详细说明:
如图2所示。以室外空间为例,将整个城市三维空间按1024米尺寸大小的网格进行剖分,并将这些网格进行编码,我们暂将这些区域称为大网格区域。再依次将这些大网格区域按1米尺寸大小的小网格继续剖分,同时,以大网格区域的最小坐标点为起始位置,沿坐标轴方向开始计数,得到整个大网格区域内的列号(x轴方向索引)、行号(y轴方向索引)和层号(z轴方向索引)的分布,每个大网格区域剖分出来的小网格区域都有固定的对应于整个空间区域的绝对空间坐标关系。
分别提取大网格区域内的所有未占用的小网格区域或被空间对象占用的所有小网格区域,每个小网格都会有对应的行、列、层号。
在提取到的被空间对象占用的每一小网格区域内,根据空间对象所占用网格情况,沿y轴正方向依次统计单层每一行上沿x轴连续相邻网格的起始网格列号和连续相邻网格的个数,并与所在行号一并记录,同一行上若存在多段连续相邻网格,便会产生多条记录(第一统计结果)。
继续沿x轴正方向依次统计单层上沿y轴连续具有相同统计值(第一统计结果)的起始行号和连续行数,并与所在层号一并记录,同一层上若存在多个不同统计值,便会产生多条记录(第二统计结果)。
最后统计z轴上具有相同统计值(第二统计结果)的起始层号和连续层数,得到最终的统计结果,若存在多个不同的统计值,便会产生多条记录(第三统计结果)。第三统计结果便是最终统计结果,整个统计过程便是进行网格压缩的过程,最终统计结果便是网格压缩后的结果。
以图2为例,需要说明的是,模型在列(x)轴的起始坐标为2,终止坐标为6,而行、列、层号的取值是根据坐标值向下取整的,所以,模型所占用的列为2、3、4、5列,其他维度计数方式相同。
对第2层进行第一次统计,可得到[1,(2,4)]、[2,(2,4)]、[3,(2,4)]、[4,(2,4)]、[5,(2,4)]、[6,(2,4)]这6个第一统计结果,其中中括号内第一个数字表示的是行号,小括号内数字依次表示的是起始列号和连续列数;同理对4层进行第一次统计,可得到[4,(2,4)]、[5,(2,4)]、[6,(2,4)]这些统计结果;从图上可知,其他层的统计结果分别与这两层统计结果相同,即第3层统计的数据为:[1,(2,4)]、[2,(2,4)]、[3,(2,4)]、[4,(2,4)]、[5,(2,4)]、[6,(2,4)];第5层统计的数据为:[4,(2,4)]、[5,(2,4)]、[6,(2,4)]。
继续对2层进行第二次统计,可得到[2,(1,6),(2,4)]这条统计结果,其中中括号第一个数字表示的是层号,第一个小括号内表示的是起始行号和连续行数,第二个小括号内表示的是起始列号和连续列数;同理对4层进行第二次统计,可得到[4,(4,3),(2,4)]这条统计结果;其他层的统计结果分别与这两层统计结果相同,即第3层为[2,(1,6),(2,4)],第5层为[4,(4,3),(2,4)]。
继续进行第三次统计,由图2可知,我们最终可以得到[(2,2),(1,6),(2,4)]和[(4,2),(4,3),(2,4)]这两条统计结果(空间对象区间数据)。
其实我们仔细看这两条结果可知,其实表示的是两个长方体在大网格区域内的空间位置,这相当于将一系列连续的网格用一些足够大的长方体进行了替换,但依然保留了整体的形状和空间上的连续性,这样既大幅度减少了用于体素化表示或空间路径分析时的数据量,又不会损失整体空间上的几何形状特征与空间拓扑特性。为了方便说明,可以将这些长方体称为区间。
在进行空间对象检索或空间路径分析时,为保证能够对区间进行快速的索引,需要对区间进行编码。作为优选方案,可以将上述的统计值(空间对象区间数据)采用二进制组合编码,组合后得到一个64位的整数,该整数便是区间的编码值。组合形式从高位到低位为:起始层号 连续层数 起始行号 连续行数 起始列号 连续列数,6个参数中每个参数占有10位,总共为60位,为保证字节对齐,在最高位补充4位,得到一个64位整数,即区间编码。如图3所示。
由于区间的生成是针对大网格区域内,是一个相对的空间范围,而在进行整个城市空间的空间对象检索或空间路径分析时,使用的是绝对空间范围,所以需要将区间编码与大网格编码进行组合,得到的编码组合就是一个完整的、可用的区间编码。根据对区间编码进行解码,可以快速获得其所在空间范围,因为采用等距网格剖分时,本身就保留了各维度上的坐标连续性;同时在进行索引时,编码作为一个整数,索引效率相对较高。
需要说明的是,解码是编码的逆过程。当获取到一个区间编码,只需简单的位运算便可取得区间的参数值,举例:假设有区间编码为1127000493261825,转换为二进制值为:
0000000000000100000000010000000001000000000100000000010000000001,根据区间的各个参数值在编码中的位置,通过位的与、或、非、位移等运算,可得到起始层号为1,连续层数为1,起始行号为1,连续行数为1,起始列号为1,连续列数为1,从而可知区间在大网格内的范围为[(1,1,1),(2,2,2)]。
基于区间的空间对象检索:
在具体实施例中,根据三维空间网格压缩编码算法,可以将城市空间内的所有空间对象进行体素化后再压缩,每个空间对象的空间占用状态可通过一系列的区间来表示,在基于空间对象的几何位置关系查找时,便可转换成基于空间对象的区间序的查找,极大地提升了空间对象查找的效率。
基于区间的空间路径分析:
在未进行三维空间网格压缩编码前,进行城市三维空间内的空间路径分析时,主要是针对空间网格的邻接关系和占用状态进行判断,当空间网格剖分较细时,空间路径分析所需要处理的数据量非常大,这会严重地影响空间路径分析的执行效率,而将空间网格经过压缩后所得到的区间,在数据量上大幅度地减少,同时依然保留了空间网格自身的几何规则性(都是长方体)和拓扑关系,大幅度地提升了空间路径分析的执行效率。
与现有技术相比,本发明具有如下有益效果:
1.对空间网格编码的压缩效果好。
2.对空间网格编码的压缩速度快。
3.能够快速完成坐标换算。
需要说明的是,对于以上方法或流程实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作并不一定是本发明实施例所必须的。
请参见图4,为了解决相同的技术问题,本发明还提供了一种城市三维空间网格压缩编码装置,包括:
网格剖分模块1,用于将目标三维空间区域剖分为若干个尺寸大小为n的大网格区域,继而将每一所述大网格区域剖分为若干个尺寸大小为m的小网格区域;其中,n>m,且n为m的整数倍;
网格提取模块2,用于根据所述目标三维空间区域内的空间对象占用情况,提取出所有被空间对象占用的小网格区域作为待统计小网格区域;
数据统计模块3,用于根据预设的空间直角坐标系对每一所述待统计小网格区域进行数据统计,包括分别统计各个空间对象在所述待统计小网格区域中所占网格的起始列号、连续相邻列数、起始行号、连续相邻行数、起始层号和连续相邻层数,并将每一空间对象的统计结果组合生成空间对象区间数据;
在本发明实施例中,进一步地,所述分别统计各个空间对象在所述待统计小网格区域中所占网格的起始列号、连续相邻列数、起始行号、连续相邻行数、起始层号和连续相邻层数,并将每一空间对象的统计结果组合生成空间对象区间数据,具体包括:
沿y轴正方向统计空间对象在所述待统计小网格区域中所占网格的起始列号和连续相邻列数,并与所在行号一并记录,得到第一统计结果;
基于连续相同的所述第一统计结果,沿x轴正方向依次统计所占网格的起始行号和连续相邻行数,并与所在层号一并记录,得到第二统计结果;
基于连续相同的所述第二统计结果,沿z轴正方向依次统计所占网格的起始层号和连续相邻层数,得到所述空间对象区间数据。
数据编码模块4,用于将所述空间对象区间数据转化为二进制组合编码,并根据所述小网格区域与所述大网格区域之间的对应关系,将所述二进制组合编码转化为绝对空间网格编码。
进一步地,所述将所述空间对象区间数据转化为二进制组合编码,具体为:
分别将所述空间对象区间数据中的每个数据进行二进制编码转换,并将转换后的每个参数的二进制编码进行组合得到所述二进制组合编码;其中,各个参数在所述二进制组合编码中从高位到低位的排列顺序依次为起始层号、连续相邻层数、起始行号、连续相邻行数、起始列号、连续相邻列数。
进一步地,所述二进制组合编码为64位整数;其中,所述二进制组合编码最高位4位为预设的补充编码,六个参数中每个参数各占有10位。
可以理解的是上述装置项实施例,是与本发明方法项实施例相对应的,本发明实施例提供的一种城市三维空间网格压缩编码装置,可以实现本发明任意一项方法项实施例提供的城市三维空间网格压缩编码方法。
为了解决相同的技术问题,本发明还提供了一种城市三维空间网格压缩编码终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述存储器与所述处理器耦接,且所述处理器执行所述计算机程序时,实现任一项所述的城市三维空间网格压缩编码方法。
所述城市三维空间网格压缩编码终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述城市三维空间网格压缩编码终端设备的控制中心,利用各种接口和线路连接整个城市三维空间网格压缩编码终端设备的各个部分。
所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据手机的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
为了解决相同的技术问题,本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在的设备执行任一项所述的城市三维空间网格压缩编码方法。
所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
1.一种城市三维空间网格压缩编码方法,其特征在于,包括:
将目标三维空间区域剖分为若干个尺寸大小为n的大网格区域,继而将每一所述大网格区域剖分为若干个尺寸大小为m的小网格区域;其中,n>m,且n为m的整数倍;
根据所述目标三维空间区域内的空间对象占用情况,提取出所有被空间对象占用的小网格区域作为待统计小网格区域;
根据预设的空间直角坐标系对每一所述待统计小网格区域进行数据统计,包括分别统计各个空间对象在所述待统计小网格区域中所占网格的起始列号、连续相邻列数、起始行号、连续相邻行数、起始层号和连续相邻层数,并将每一空间对象的统计结果组合生成空间对象区间数据;
将所述空间对象区间数据转化为二进制组合编码,并根据所述小网格区域与所述大网格区域之间的对应关系,将所述二进制组合编码转化为绝对空间网格编码。
2.根据权利要求1所述的城市三维空间网格压缩编码方法,其特征在于,所述分别统计各个空间对象在所述待统计小网格区域中所占网格的起始列号、连续相邻列数、起始行号、连续相邻行数、起始层号和连续相邻层数,并将每一空间对象的统计结果组合生成空间对象区间数据,具体包括:
沿y轴正方向统计空间对象在所述待统计小网格区域中所占网格的起始列号和连续相邻列数,并与所在行号一并记录,得到第一统计结果;
基于连续相同的所述第一统计结果,沿x轴正方向依次统计所占网格的起始行号和连续相邻行数,并与所在层号一并记录,得到第二统计结果;
基于连续相同的所述第二统计结果,沿z轴正方向依次统计所占网格的起始层号和连续相邻层数,得到所述空间对象区间数据。
3.根据权利要求1所述的城市三维空间网格压缩编码方法,其特征在于,所述将所述空间对象区间数据转化为二进制组合编码,具体为:
分别将所述空间对象区间数据中的每个数据进行二进制编码转换,并将转换后的每个参数的二进制编码进行组合得到所述二进制组合编码;其中,各个参数在所述二进制组合编码中从高位到低位的排列顺序依次为起始层号、连续相邻层数、起始行号、连续相邻行数、起始列号、连续相邻列数。
4.根据权利要求3所述的城市三维空间网格压缩编码方法,其特征在于,所述二进制组合编码为64位整数;其中,所述二进制组合编码最高位4位为预设的补充编码,六个参数中每个参数各占有10位。
5.一种城市三维空间网格压缩编码装置,其特征在于,包括:
网格剖分模块,用于将目标三维空间区域剖分为若干个尺寸大小为n的大网格区域,继而将每一所述大网格区域剖分为若干个尺寸大小为m的小网格区域;其中,n>m,且n为m的整数倍;
网格提取模块,用于根据所述目标三维空间区域内的空间对象占用情况,提取出所有被空间对象占用的小网格区域作为待统计小网格区域;
数据统计模块,用于根据预设的空间直角坐标系对每一所述待统计小网格区域进行数据统计,包括分别统计各个空间对象在所述待统计小网格区域中所占网格的起始列号、连续相邻列数、起始行号、连续相邻行数、起始层号和连续相邻层数,并将每一空间对象的统计结果组合生成空间对象区间数据;
数据编码模块,用于将所述空间对象区间数据转化为二进制组合编码,并根据所述小网格区域与所述大网格区域之间的对应关系,将所述二进制组合编码转化为绝对空间网格编码。
6.根据权利要求5所述的城市三维空间网格压缩编码装置,其特征在于,所述分别统计各个空间对象在所述待统计小网格区域中所占网格的起始列号、连续相邻列数、起始行号、连续相邻行数、起始层号和连续相邻层数,并将每一空间对象的统计结果组合生成空间对象区间数据,具体包括:
沿y轴正方向统计空间对象在所述待统计小网格区域中所占网格的起始列号和连续相邻列数,并与所在行号一并记录,得到第一统计结果;
基于连续相同的所述第一统计结果,沿x轴正方向依次统计所占网格的起始行号和连续相邻行数,并与所在层号一并记录,得到第二统计结果;
基于连续相同的所述第二统计结果,沿z轴正方向依次统计所占网格的起始层号和连续相邻层数,得到所述空间对象区间数据。
7.根据权利要求5所述的城市三维空间网格压缩编码装置,其特征在于,所述将所述空间对象区间数据转化为二进制组合编码,具体为:
分别将所述空间对象区间数据中的每个数据进行二进制编码转换,并将转换后的每个参数的二进制编码进行组合得到所述二进制组合编码;其中,各个参数在所述二进制组合编码中从高位到低位的排列顺序依次为起始层号、连续相邻层数、起始行号、连续相邻行数、起始列号、连续相邻列数。
8.根据权利要求7所述的城市三维空间网格压缩编码装置,其特征在于,所述二进制组合编码为64位整数;其中,所述二进制组合编码最高位4位为预设的补充编码,六个参数中每个参数各占有10位。
9.一种城市三维空间网格压缩编码终端设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述存储器与所述处理器耦接,且所述处理器执行所述计算机程序时,实现如权利要求1至4任一项所述的城市三维空间网格压缩编码方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在的设备执行如权利要求1至4任一项所述的城市三维空间网格压缩编码方法。
技术总结