一种层次格网的编码方法及装置与流程

文档序号:15497164发布日期:2018-09-21 21:58阅读:208来源:国知局

本申请涉及空间信息技术领域,尤其涉及一种层次格网的编码方法及装置。



背景技术:

在空间信息处理技术领域,通常采用矩形格网表达或处理空间数据。近年来的研究表明,六边形格网具有较好的几何、空间属性,其格网拓扑关系一致,有助于邻近、连通等空间分析算法的实现;格网空间采样效率比正方形高13%,利于数据的可视化表达;单分辨率格网运算效率比正方形高25%~50%,有助于数据的快速处理。因此,六边形格网是比矩形格网更适合空间数据表达、处理的优秀替代方案,应用前景广阔。

与矩形相比,六边形不具备自相似性,即一个大六边形不能完全分解为若干小六边形,这一几何特点导致建立多分辨率六边形格网单元的层次关系困难,妨碍了六边形格网在多尺度空间数据处理方面的应用。针对于现有的4孔六边形层次格网,如图1所示,相邻层次格网在图1中分别由虚线和实线示出,由图可知,该结构的格网单元方向一致,但剖分过程中会出现不完整格网单元,对于该结构的空间数据处理过程非常复杂,会频繁出现“正则化”失败需要回退重算的情况,计算效率低。



技术实现要素:

本申请实施例提供一种层次格网的编码方法,用以优化空间数据处理复杂的问题。

本申请实施例采用下述技术方案:

一种层次格网的编码方法,包括:

在一平面中,建立第1层格点,所述第1层格点包括1个中心格点以及围绕所述中心格点的6个第1层顶点,所述第1层顶点位于以所述中心格点为圆心,以为半径的圆上,且每相邻两个所述第1层顶点与所述中心格点连线的夹角为60°;

根据当前格点,选取第n层格点,所述第n层格点包括第n-1层格点,以及围绕每个所述第n-1层格点的3个第n层顶点,所述第n层顶点位于以任一所述第n-1层格点为圆心,以为半径的圆上,且每相邻两个所述第n层顶点与所在圆的圆心连线的夹角为120°,其中,n取值为从2到n的正整数;

将所述第n层格点采用复数表示:

其中,为所述第1层格点的集合,为所述第n层格点的集合,d'={0,ω,ω23456},

基于所述n层格点的集合构成得到六边形格点四叉树hlqt层次结构;

以多个所述第n层格点为中心,形成与所述第n层格点一一对应的大小相等紧密相连的六边形格网单元,构成六边形格网结构,并对第n层格点进行编码。

一种层次格网的编码装置,包括:

建立模块,在一平面中,建立第1层格点,所述第1层格点包括1个中心格点以及围绕所述中心格点的6个第1层顶点,所述第1层顶点位于以所述中心格点为圆心,以为半径的圆上,且每相邻两个所述第1层顶点与所述中心格点连线的夹角为60°;

选取模块,根据当前格点,选取第n层格点,所述第n层格点包括第n-1层格点,以及围绕每个所述第n-1层格点的3个第n层顶点,所述第n层顶点位于以任一所述第n-1层格点为圆心,以为半径的圆上,且每相邻两个所述第n层顶点与所在圆的圆心连线的夹角为120°,其中,n取值为从2到n的正整数;

表示模块,将所述第n层格点采用复数表示:

其中,为所述第1层格点的集合,为所述第n层格点的集合,d'={0,ω,ω23456},

构建模块,基于所述n层格点的集合构成得到六边形格点四叉树hlqt层次结构;

编码模块,以多个所述第n层格点为中心,形成与所述第n层格点一一对应的大小相等紧密相连的六边形格网单元,构成六边形格网结构,并对第n层格点进行编码。

本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:

本申请通过建立层次格点构建相对应的层次格网,并对格点进行编码,简化了格网单元的编码及运算过程,能实现良好的空间数据表达,具有较强的空间联系性及空间扩展性,形成的格网结构连接紧密无缝隙,新增格点延伸方向统一,从而保证格网拓扑关系一致。对于经过编码的格网,能够通过编码运算实现格点及相应格网位置的平移或旋转。且每个格网编码与格网单元一一对应,在递归剖分的过程中不会出现不完整的格网单元,由此降低空间数据处理复杂度,提高计算效率。另外,本方案能通过编码值确定与其对应的格点位置,或给定二维平面直角坐标计算其所在六边形格网单元对应格点的编码。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1为现有技术中4孔六边形格网结构示意图;

图2为本申请复数平面坐标轴中第1层格点的位置关系图;

图3为本申请复数平面坐标轴中第2层格点的位置关系图;

图4a为本申请复数平面坐标轴中第1层格网单元结构图;

图4b为本申请复数平面坐标轴中第2层格网单元结构图;

图5为本申请复数平面坐标轴中第1层格点编码图;

图6为本申请复数平面坐标轴中第2层格点编码图;

图7为本申请复数平面坐标轴中第3层格点编码图;

图8为本申请直角及三轴坐标系中部分第3层格点编码结构图;

图9为本申请码元编码加法运算规则示意图;

图10为本申请为保证运算封闭性的计算过程示意图;

图11为本申请码元编码乘法运算规则示意图;

图12为本申请邻近编码格点关系示意图;

图13为编码加法运算效率表;

图14为编码加法运算效率曲线图;

图15为平面直角坐标与编码相互转换效率表;

图16为平面直角坐标转换为编码的效率曲线图;

图17为编码转换为平面直角坐标的效率曲线图。

具体实施方式

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

以下结合附图,详细说明本申请各实施例提供的技术方案,需要说明的是,在附图中以实心圆、实线空心圆等图形代表格点,仅用以示出格点在平面中的位置关系,实际上每个格点可以为无限小的点,仅代指一个位置,不具有长度、面积或体积。本申请的技术方案主要针对于平面4孔六边形层次格网结构,用于简化上述格网结构的构建过程,在构建过程中不会出现非完整格网单元。而且,格点与格网一一对应,空间数据处理复杂度低,计算效率高。本方案中的层次格网的编码方法可以应用于表达或处理空间数据,基于本方案中经过编码的格点,可以实现格网编码索引、格点编码索引等空间索引。

实施例一

本申请实施例提供一种层次格网的编码方法,包括以下步骤:

步骤101:

在一平面中,建立第1层格点,所述第1层格点包括1个中心格点以及围绕所述中心格点的6个第1层顶点,所述第1层顶点位于以所述中心格点为圆心,以为半径的圆上,且每相邻两个所述第1层顶点与所述中心格点连线的夹角为60°。

在上述步骤中,l1为单位长度,图2为复数平面坐标轴中第1层格点的位置关系图,第1层格点包括一个中心格点o以及围绕该中心格点o的6个顶点a、b、c、d、e、f。该中心格点o周围的6个顶点位于以中心格点o为圆心、为半径的圆周上,在该圆周上任意两个相邻顶点所夹圆心角为60°。第1层格点由上述中心格点o和围绕该中心格点o的6个顶点组成。

步骤102:

根据当前格点,选取第n层格点,所述第n层格点包括第n-1层格点,以及围绕每个所述第n-1层格点的3个第n层顶点,所述第n层顶点位于以任一所述第n-1层格点为圆心,以为半径的圆上,且每相邻两个所述第n层顶点与所在圆的圆心连线的夹角为120°,其中,n取值为从2到n的正整数。

基于第1层格点选取第2层格点,如图3所示,在复数坐标轴中,位于图中央的格点o为第1层格点的中心格点,围绕中心格点o的格点a、b、c、d、e、f为第1层顶点,该中心格点o与第1层顶点共同构成第1层格点。

以第1层的7个格点作为中心点,选取第2层顶点。以第1层格点中的格点o为例,在以格点o为圆心,为半径的圆周上选取3个新增子格点作为第2层顶点,这3个新增子格点分别位于格点o的右方、左上方和左下方,其中,右方的新增子格点位于实数轴正半轴上,左上方的新增子格点位于第二象限,左下方的新增子格点位于第三象限。相邻两个格点与格点o连线的夹角为120°,格点o与3个新增子格点共同构成四叉树结构。在这4个格点中,格点o为对应于3个新增子格点的父格点,3个新增子格点为对应于格点o的子格点。第n(n≥1)层共有7×4n-1个格点,高层次格点完全包含低层次格点。

步骤103:

将所述第n层格点采用复数表示:

其中,为所述第1层格点的集合,为所述第n层格点的集合,d'={0,ω,ω23456},

下面以第1层格点为例详细说明上述复数表示方法,参见图2,将第1层格点的中心格点设置在复数坐标轴的原点位置,可以表示为0,相应的,格点a可以表示为格点b可以表示为格点c可以表示为-1,格点d可以表示为格点e可以表示为格点f可以表示为1。上述格点的复数形式表示值分别对应于d'集合中的元素,即格点o对应于0,格点a对应于ω,格点b对应于ω2,以此类推。

步骤104:

基于所述n层格点的集合构成得到六边形格点四叉树(hexagonallatticequadtree,hlqt)层次结构。

在hlqt层次结构中,第n层格点包含第n-1层格点,即第2层格点包含第1层格点,第3层格点包含第2层格点同时也包含第1层格点,以此类推。

步骤105:

以多个所述第n层格点为中心,形成与所述第n层格点一一对应的大小相等紧密相连的六边形格网单元,构成六边形格网结构,并对第n层格点进行编码。

由第1层格点生成的第1层格网单元如图4a所示,第1层格点共有7个,以每个第1层格点为中心形成大小相等的7个六边形格网单元,每个六边形格网单元的边长为l1,如梅花状排列。每两个相邻的六边形之间存在一条重合边,7个六边形紧密排列无缝隙,构成第1层格网。然后,对第1层格网中每个格网单元的中心点编码,即对第1层格点编码。

由第2层格点生成的第2层格网单元如图4b所示,第2层格点共有28个,其中包括7个第1层格点以及21个第2层顶点。以每个第2层格点为中心形成大小相等的28个六边形格网单元。每两个相邻的六边形之间存在一条重合边,28个六边形紧密排列无缝隙,构成第2层格网。然后,对第2层格网中每个格网单元的中心点编码,即对第2层格点编码。

相类似的,由第n层格点生成第n层格网单元。当n大于1时,第n层共有7×4n-1个格点,由于上述格点与格网一一对应,因此第n层共有7×4n-1个格网。具体的,以第n层格点为中心,形成的第n层六边形格网单元的边长为每个六边形紧密排列无缝隙,共同构成六边形格网结构。然后,对第n层格网中每个格网单元的中心点编码,即对第n层格点编码。

本申请提供的技术方案简化了格网单元的编码及运算过程,能实现良好的空间数据表达,具有较强的空间联系性及空间扩展性,且每个格网编码与格网单元一一对应,在递归剖分的过程中不会出现不完整的格网单元,由此降低空间数据处理复杂度。

实施例二

基于上述实施例,本申请实施例提供一种层次格网的编码方法,当n小于n时,第n+1层顶点相对于第n层格点的位置,与第n层顶点相对于第n-1层格点的位置相同。

其中,n为大于1的整数,可以指层次格网的总层数。例如,限定共有10层格网,即n=10。第5层顶点相对于第4层格点的位置,与第4层顶点相对于第3层格点的位置相同。每一层新增顶点均按照现有格点的延伸方向选取。依据上述选取规则,能够保证新增格点延伸方向统一。每一个靠近中心的格点周围都均匀分布6个新增顶点,以便后续生成的每个格网单元大小相同、分布均匀,形成的格网结构连接紧密无缝隙,格网拓扑关系一致。

基于上述方法,对第n层格点进行编码的方法具体可以包括以下步骤:

步骤201:

根据集合d'和d中非零元素的幂指数构建整数集合e'={0,1,2,3,4,5,6}、e={0,1,2,3}。

其中,上述非零元素的幂指数具体指幂运算的指数,例如,集合d'={0,ω,ω23456}中,包含7个元素,其中6个元素为非零元素,分别为ω、ω2、ω3、ω4、ω5、ω6。对于这6个元素,ω即ω1,幂指数为1,ω2幂指数为2,以此类推。对应于集合d'构建整数集合e'={0,1,2,3,4,5,6},d'与e'的元素一一对应。同理,根据集合构建整数集合e={0,1,2,3},d与e的元素一一对应。

步骤202:

将所述整数集合e'、e中的元素作为码元,对所述第n层格点进行码元编码。

对于现有的第n层格点,编码顺序可以对应于格点在复数坐标轴中的位置,即原点对应于集合中的0,从位于第一象限的格点开始编码,依次对第一象限、第二象限、第三象限、第四象限的格点,按照逆时针顺序编码。任一格点可用码元序列表示为e1e2…en(e1∈e',ei∈e,2≤i≤n)的形式,每个格点都对应于唯一一个码元编码,码元编码的位数可以与格点的层级相对应,即第n层格点的码元编码长度为n。

需要说明的是,本方案中的码元编码是对格点、格网进行编码的一种具体实现方式,遵循本方案原理的其它编码方案均应包含在本申请的权利要求范围之内。本实施例提供的编码方式能实现对第n层格点的码元编码,码元编码与格点一一对应,且码元编码顺序与格点位置相关,可以依据码元编码值确定格点的位置,或根据多个格点的码元编码值确定多个格点之间的位置关系。当然,应理解,上述步骤也可以采用其它的方式实现,本申请实施例对此不作限制。对于本领域技术人员来说,本申请可以有各种更改和变化。

根据上述编码方法,基于码元进行编码具体可以分为以下两种情况:

情况1:

当n=1时,基于整数集合e'中的码元进行编码,将位于中心的格点编码为0,将位于右上方的格点编码为1,按照逆时针顺序对其余格点依次编码。

如图5所示,图中实线空心圆代表格点,每一个格点对应于一个格网的中心点,第1层格点共有7个,基于整数集合e'={0,1,2,3,4,5,6}中的码元对格点进行码元编码,该编码顺序可以对应于格点在复数坐标轴中的位置,即原点对应于集合中的0,从位于第一象限的格点开始编码,依次对第一象限、第二象限、第三象限、第四象限的格点,按照逆时针顺序编码。7个第1层格点分别对应于整数集合e'中7个码元。

对于经过码元编码的第1层格点,码元编码与格点一一对应,且码元编码顺序与格点位置相关,可以依据码元编码值确定格点的位置。例如,编码为0的格点位于复数坐标轴原点上,编码为6的格点位于实数轴正半轴上。也可以根据多个格点的码元编码值确定多个格点之间的位置关系,例如,编码为2和编码为3的格点相邻,编码为1和编码为4的格点不相邻。

需要说明的是,对于本领域技术人员来说,本申请可以有各种更改和变化。坐标轴在本申请实施例中,可以视为确定格点位置的辅助参考工具,基于坐标轴原点进行旋转的相关格网编码结构,相当于在本申请的精神和原理之内所作的修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

情况2:

当n>1时,基于整数集合e中的码元进行编码;

对于第n-1层格点,在第n-1层码元编码后添加0形成第n层码元编码;

对于位于第n-1层格点左上方的第n层格点,在第n-1层码元编码后添加1形成该格点的第n层码元编码;

对于位于第n-1层格点左下方的第n层格点,在第n-1层码元编码后添加2形成该格点的第n层码元编码;

对于位于第n-1层格点右方的第n层格点,在第n-1层码元编码后添加3形成该格点的第n层码元编码。

下面假设n=2进行说明,如图6所示,图中实线空心圆代表格点,位于图中央的1个格点为中心格点,位于虚线圆上的6个格点为第1层顶点,上述1个中心格点和6个格点共同构成第1层格点。当基于第1层格点选取第2层顶点时,在每个第1层格点周围选取3个第2层顶点,即以第1层格点为父格点,选取对应于第1层格点的子格点,共同构成第2层格点,随后,按照以下步骤对第2层格点进行码元编码:

步骤301:

对于第1层格点,在第1层码元编码后添加0形成第2层码元编码。

第1层码元编码参见图5,7个第1层格点分别编码为0-6,在第1层码元编码后添加0,形成“00”、“10”、“20”、“30”、“40”、“50”、“60”。

步骤302:

对于位于第1层格点左上方的第2层格点,在第1层码元编码后添加1形成该格点的第2层码元编码。

如图6所示,由于第2层顶点为新增格点,第2层顶点不存在于第1层格点中,默认第2层顶点的码元编码与其父格点的第1层码元编码相同。例如,由第1层格点“0”选取的第2层顶点的第1层码元编码均为“0”;由第1层格点“2”选取的第2层顶点的第1层码元编码均为“2”。随后,基于第1层码元编码形成第2层码元编码,例如,在第2层格点“00”左上方的第2层顶点的码元编码后添加“1”,即在码元编码“0”后添加“1”,形成“01”作为该格点的第2层码元编码。同理,对于第2层格点“10”左上方的第2层顶点的码元编码后添加“1”,即在码元编码“1”后添加“1”,形成“11”作为该格点的第2层码元编码,以此类推。

步骤303:

对于位于第1层格点左下方的第2层格点,在第1层码元编码后添加2形成该格点的第2层码元编码。

如图6所示,与上述步骤302编码方式相似,在第2层格点“00”左下方的第2层顶点的码元编码后添加“2”,即在码元编码“0”后添加“2”,形成“02”作为该格点的第2层码元编码。同理,对于第1层格点“10”左下方的第2层顶点的码元编码后添加“2”,即在码元编码“1”后添加“2”,形成“12”作为该格点的第2层码元编码,以此类推。

步骤304:

对于位于第1层格点右方的第2层格点,在第1层码元编码后添加3形成该格点的第2层码元编码。

如图6所示,与上述步骤202和步骤203的编码方式相似,在第2层格点“00”右方的第2层顶点的码元编码后添加“3”,即在码元编码“0”后添加“3”,形成“03”作为该格点的第2层码元编码。同理,对于第1层格点“10”右方的第2层顶点的码元编码后添加“3”,即在码元编码“1”后添加“3”,形成“13”作为该格点的第2层码元编码,以此类推。当然,应理解,上述步骤也可以采用其它的方式实现,本申请实施例对此不作限制。对于本领域技术人员来说,本申请可以有各种更改和变化。

下面假设n=3进行说明,如图7所示,图中实线空心圆代表格点,图中的空心圆有三种尺寸,直径最大的空心圆代表第1层格点,如“000”、“100”等;根据第1层格点选取的第2层顶点位于第1层格点周围,如“010”、“110”等;直径最小的空心圆代表根据第2层格点选取的第3层顶点,位于第1层格点以及第2层顶点周围,如“221”、“623”等。

基于图6示出的第2层编码,对第3层格点进行编码。例如:对应图6中的第2层格点“00”,以该格点为父格点,选取3个子格点作为第3层顶点。在作为父格点的“00”后添加“0”,形成第3层码元编码“000”。对于在格点“00”左上方新生成的第3层顶点,以“00”作为第2层码元编码,在“00”后添加“1”,形成第3层码元编码“001”。对于在格点“00”右方新生成的第3层顶点,以“00”作为第2层码元编码,在“00”后添加“3”,形成第3层码元编码“003”。每一个第3层格点,包括第3层顶点以及第2层格点,均采用上述方式进行码元编码,共同构成第3层码元编码。

基于上述方案,能够实现对第n层格点进行码元编码,获得第n层码元编码。每个第n层格点均对应于唯一一个第n层码元编码,每一个第n层顶点的码元编码均与其父格点码元编码有关,而且,与该顶点相对于父格点的位置有关。对于第n层码元编码,其编码长度与层数对应,即第1层码元编码的长度为1,第3层码元编码长度为3,第n层码元编码的长度为n。因此,根据码元编码可以获知与该码元编码相对应的格点层级。同时,对于同层的格点,能够根据码元编码确定格点之间的位置关系。

基于上述实施例,上述层次格网的编码方法还可以包括以下步骤:

步骤401:

将第n层格网单元内任意一点定位于坐标系中,建立夹角为120°的第一特定坐标轴和第二特定坐标轴,将所述第n层格网单元内任意一点投影于所述第一特定坐标轴和所述第二特定坐标轴上,获得第一分量编码和第二分量编码。

如图8所示,基于第n层格点的复数表示形式,能够将第n层格点定位于平面直角坐标系中。基于平面直角坐标系的原点o建立三轴坐标系,三轴坐标系o-ijk的原点与平面直角坐标系o-xy一致,j轴与y轴一致,i、j、k轴正向夹角为120°,按逆时针方向排列。需要说明的是,可以选择建立三轴坐标系中的其中任意两轴,对于第n层格网单元内任意一点,根据两个坐标轴的分量编码即可确定该点所在格网单元对应格点的码元编码。具体的,获得第一分量编码和第二分量编码的步骤如下:

(1)所述第n层格网单元内任意一点的平面直角坐标为p(x,y),计算点p和原点o连线与x轴的夹角θ的正切值。

(2)计算点p在两条坐标轴上的投影长度。

具体的,两条坐标轴可以为j轴和i轴,如图8所示,点p投影在上述两个坐标轴上,该点p在两条坐标轴上的分量编码分别为“001”和“303”。

(3)根据格网层次n,可计算出单元步长即投影点所属格网单元对应的格点在坐标轴上的位置k。

(4)计算分量编码αi(i=1,2),αi的后n-1位编码e{n-1}与k的关系:

其中,dbin(k)代表k的二进制数序列,由此获得第一分量编码和第二分量编码。

步骤402:

对所述第一分量编码和所述第二分量编码进行加法运算,获得所述第n层格网单元内任意一点所在格网单元对应格点的码元编码。具体的编码加法运算规则在后文详述。

上述方案能够将定位于直角坐标系中的点,转换定位于码元编码空间中,得到该点所在格网单元对应格点的码元编码。另外,也可以参照上述方案将定位于码元编码空间中的格点,转换定位于直角坐标系中,得到该格点在直角坐标系中的位置。从而实现直角坐标系与码元编码空间的转换,实现对任意点位置的直角坐标与码元编码的转换。当然,应理解,上述步骤也可以采用其它的方式实现,本申请实施例对此不作限制。对于本领域技术人员来说,本申请可以有各种更改和变化。

实施例三

基于上述实施例,本申请实施例还提供一种层次格网的编码方法,用于对上述实施例提供的格网编码进行计算。

将经过码元编码的格点集合记为对于中的码元编码运算法则包括:

编码加法运算,遵循平行四边形法则;编码减法运算,遵循平行四边形法则,且与所述编码加法运算互为逆运算;编码乘法运算,遵循极坐标下向量的旋转与缩放。

通过上述编码加法、减法、乘法运算,能够对经过码元编码的格点进行位置移动。具体的可以实现格点相对于原点位置的旋转、缩放,或多个格点位置之间的切换。从而实现对格点的定位、明确多个格点之间的位置关系、相关格点的查找等。

对于由码元编码的格点若进行编码加法运算,表示为该编码加法运算遵循平行四边形法则,计算方法包括以下步骤:

步骤501:由最高层码元向首层码元方向进行包含进位的逐层计算,对于所述由码元编码的格点α=a1a2…an、β=b1b2…bn,其中为α和β同层码元对应编码,1≤i≤n。

计算结果中后n-i位都为码元编码0,与十进制加法类似,计算至i层对应码元编码时,其右侧n-i位都已计算完毕,不参与运算,在计算时可记作

步骤502:当i>1,e∈{0,1,2,3},所述同层码元相加遵循以下规则:

对于两个相同的码元编码,

对于两个不同的码元编码,

对于包含0的码元编码,

步骤503:当i=1,e∈{0,1,2,3,4,5,6},对应首层码元,基于预设值确定α和β的首层码元加法运算值。

对于编码加法运算,具有以下特性:

1.具有封闭性,对于满足

2.具有交换性,对于满足

3.具有结合性,对于满足

4.具有单位元素对于满足

5.具有逆元素,对于必定存在唯一确定的满足即可记为

6.具有逆运算,即编码减法运算,对于满足

如图9所示,具体的,编码加法的计算方式与十进制加法类似。从右侧末位最高层次的码元开始,向左侧首位第一层次的码元逐位计算,除了得到当前位的计算结果码元,还需考虑产生进位码元的情况。进位码元再根据步骤502与503所述公式相加,直至得到当前位最终计算结果码元。若i=2,对首位的码元进位规则见表1。若2<i≤n,则分为三种情况:

1、对首位的码元进位规则见表2;

2、对第i-1位的码元进位规则见表3;

3、对第2至第i-2位的码元进位规则见表4。

表1

表2

表3

表4

在以上进位规则中,码元0为无效进位码,不影响计算结果,可直接忽略;1、2、3均为有效进位码,该进位码再与当前位待相加的两个码元累加。对于同一编码位,相同码元可以优先相加,用以减少运算次数提高计算效率。另外,在计算首位码元时需避免码元相加溢出的情况。具体的,将相加为0的码元消除,并保证剩余码元个数不超过3个;对于剩余码元,先间隔相加,然后相同码元相加。例如,2322⊕1033=100201,具体过程如下:

下面通过图示向量举例说明上述码元编码运算方法,该码元编码运算规则如图9所示,以码元编码为000的格点为原点,码元编码为123的格点对应向量α,码元编码为010的格点对应向量β,码元编码为401的格点对应向量γ。

对于码元编码加法计算时满足平行四边形法则,以原点000为平行四边形一个顶点,α和β为该顶点相邻的两边,由此构建平行四边形,与原点000相对的码元编码为233的格点向量即的计算结果。

相类似的,在码元编码中加法运算与减法运算互为逆运算,对于码元编码减法如图9所示,即相当于对应于码元编码为510的格点,遵循平行四边形法则,即的运算结果为码元编码为033的格点向量,即的运算结果为码元编码为033的格点向量。

对于多个码元编码相加,同样遵循上述平行四边形法则,例如,若计算则可以先计算再将的计算结果与γ进行加法运算。如图9所示,经计算的计算结果为码元编码为233的格点,将该格点向量与γ格点向量进一步相加,按照平行四边形法则得到码元编码为012的格点。或先计算再将计算结果与α相加,所得到的结果即与上述运算方式获得的结果一致。

对于上述编码加法运算,能够实现格点位置的移动以及不同位置格点的转换。具体的,编码加法运算可以实现格点相对于另一格点的位置移动。而编码减法运算能够对经过编码加法运算的格点进行回退,与编码加法互为逆运算。从而实现对格点的定位、相关格点的查找、或明确多个格点之间的位置关系等。

在实际运算过程中,为避免计算结果超出集合元素的范围,下面通过举例的方式详细说明。如图10所示,规定待相加的格点α和β只能在第1层7个格点所围成半径为的圆形区域(d)中选取,其结果必定不会超出以原点为中心、半径为的圆形区域(v)。为了保证编码加法的封闭性,即仍位于v内的格点上,在第1层上添加24个虚拟格点,它们的编码是010、020、030、040、050、060、100、200、300、400、500、600、102、106、201、203、302、304、403、405、504、506、601、605。在实际计算的过程中,的计算结果能够位于增设的虚拟格点上,避免计算结果位于未编码的格点上。从而保证编码加法的封闭性,在实际计算过程中避免计算溢出的情况。

另外,对于格点若进行编码乘法运算,表示为计算方法包括以下步骤:

步骤601:对于α=a1a2…an、β=b1b2…bn,将每一层码元转换为独立位的形式,即

步骤602:其中,中的k值根据预设关系确定。

上述根据预设关系确定k值,具体包括:

(1)、当i+j>n+1,即k不是首层码元时,基于表5确定k值;

(2)、当n≤i+j≤n+1,即k是首层码元时(i≤j),分为以下几种情况:

若i=1,j=n,基于表6确定k值;

若i=1,j=n-1,

若i≠1,i+j=n+1,基于表7确定k值;

若i≠1,i+j=n,

对于上述编码乘法运算,具有以下特性:

1.具有封闭性,对于满足

2.具有交换性,对于满足

3.具有结合性,对于满足

4.具有加法分配性,对于满足

5.具有单位元素对于满足

6.具有逆元素对于满足

如图11所示,其中,根据复数乘法的“‘棣莫弗’法则”确定的运算结果,即α,β对应复数相乘所得复数的编码(310)。编码乘法具体可以分为数与编码相乘、编码与编码相乘。

以下详述数与编码相乘的计算规则,对于为编码α所对应的向量的模放大为原来k倍所得向量的编码,所得结果为α对应的向量幅角不变,向量模放大为原来的k倍。

上述过程可具体表示为:其中是编码乘法的单位元素,表示连续的编码加法运算,dbin(k)是计算k的二进制数字位序列。

对于上述数与编码相乘的情况,以下举例说明:设γ=511,

以下详述编码与编码相乘的计算规则,对于编码α=a1a2…an与β=b1b2…bn,将每一层码元转换为独立位的形式,即其中中的k值按以下方式确定结果:

当i+j>n+1,即k不是首层码元时,k的结果见表5。

当n≤i+j≤n+1,即k是首层码元时,分为四种情况(假设i≤j):

(1)若i=1,j=n,k的结果见表6;

(2)若i=1,j=n-1,

(3)若i≠1,i+j=n+1,k的结果见表7;

(4)若i≠1,i+j=n,

表5

表6

表7

上述编码乘法运算从右侧末位最高层次开始,依次用乘数编码的每一位码元与被乘数编码相乘,所得编码的末尾就与乘数编码所在位对齐,再将计算结果相加,例如,具体计算过程如下:

通过上述方案,能够对经过码元编码的格点实现旋转,相对于原点对格点进行缩放,根据当前格点实现目标格点的定位以及相关格点的索引。另外,本方案提供的编码计算方法具有封闭性,对于集合内的元素,经过上述编码计算后的结果依然属于本集合内的元素,计算结果不会超出该集合的范围。

另外,本申请实施例还提供一种对邻近格点编码的查找方法,如图12所示,对于格点α=a1a2…an,6个邻近格点的编码表示为其中例如,对于格点α=123,其6个邻近格点的编码是通过上述方法,能够实现对任一格点同层次邻近格点编码的查找,可以用于确定不同格点之间的位置关系。

通过上述编码运算,可实现对任一格点的高效几何操作,如平移、缩放、旋转等,另外,基于上述编码运算方法还可实现邻近格点或层次格点的快速查找。例如:对于通过实现对α沿β方向、长度为|α|的平移;对于通过实现α相对于原点距离的缩放;对于且|β|=1,通过实现基于原点对α的旋转;对于其6个同层的邻近格点是与n+1层位置重合的格点称为继承子格点,该继承子格点可以表示为αson,0=αn+1=α0,n+1层相对于n层新选取的格点称为新增子格点,该新增子格点可以表示为(i=1,2,3,为特定编码);对于其在n-1层的父格点为αfather=a1a2…an-1。

实施例四

本申请实施例提供一种层次格网的编码装置,包括:

建立模块,在一平面中,建立第1层格点,所述第1层格点包括1个中心格点以及围绕所述中心格点的6个第1层顶点,所述第1层顶点位于以所述中心格点为圆心,以为半径的圆上,且每相邻两个所述第1层顶点与所述中心格点连线的夹角为60°;

选取模块,根据当前格点,选取第n层格点,所述第n层格点包括第n-1层格点,以及围绕每个所述第n-1层格点的3个第n层顶点,所述第n层顶点位于以任一所述第n-1层格点为圆心,以为半径的圆上,且每相邻两个所述第n层顶点与所在圆的圆心连线的夹角为120°,其中,n取值为从2到n的正整数;

构建模块,将所述第n层格点采用复数表示:

其中,为所述第1层格点的集合,为所述第n层格点的集合,d'={0,ω,ω23456},

构建模块,基于所述n层格点的集合构成得到六边形格点四叉树hlqt层次结构;

编码模块,以多个所述第n层格点为中心,形成与所述第n层格点一一对应的大小相等紧密相连的六边形格网单元,构成六边形格网结构,并对第n层格点进行编码。

下面,对本申请与现有技术运算效果进行对比,本申请提供的方案简称为“hlqt”,现有技术的运算方案简称为“hqbs”。如图13、图14所示,hlqt与hqbs执行相同的编码加法运算,hlqt的效率约是hqbs的效率的30倍。对比实验分别统计两算法在6~11层格点的加法运算效率,即单位时间内做加法运算的次数,取10次测试的平均值。由于hlqt与hqbs的格点总数随层次升高极剧增加,因此在这两种方案随机选取固定个数的格点,两两执行加法运算。全部程序编译为release版本,并在一台兼容机(软件配置:windows7x64旗舰版+sp1;硬件配置:intelcorei5-6500cpu@3.20ghz,8gram,kingston120gbssd)上进行测试。

如图15、图16、图17所示,测试内容为平面直角坐标转换为格点编码,hlqt的效率约是hqbs的30倍;执行格点编码转换为平面直角坐标,hlqt的效率约是hqbs的18倍。对比实验分别统计两方案在6~11层格点的编码转换算法效率,即单位时间内完成转换的编码个数,取10次测试的平均值。由于hlqt与hqbs的格点总数随层次升高极剧增加,因此随机选取固定个数的格点,执行转换操作。全部程序编译为release版本,并在一台兼容机(软件配置:windows7x64旗舰版+sp1;硬件配置:intelcorei5-6500cpu@3.20ghz,8gram,kingston120gbssd)上进行测试。

以上仅为本申请的实施例而已,并不用于限制本申请。本申请实施例在此示出了前述步骤的具体实现方式。当然,应理解,上述步骤也可以采用其它的方式实现,本申请实施例对此不作限制。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

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