两几何面相交面积的计算方法及装置与流程

文档序号:18064805发布日期:2019-07-03 03:19阅读:817来源:国知局
两几何面相交面积的计算方法及装置与流程

本发明属于空间分析技术领域,尤其涉及一种两几何面相交面积的计算方法及装置。



背景技术:

空间分析是地理信息领域的核心能力。其中,基于不同地理实体的交、并、差、对称差的叠置分析,更是最为经典的一种空间分析模式,叠置分析中,通常使用的操作就是求交。

然而,求交的目的却并不统一。比如在面数据的空间分析中,有些时候,求交是需要相交面来做进一步实体分析,有些时候求交只是为了取的相交面的统计数据,比如城市规划中,根据规划区与居民建筑区的相交面积,进行拆迁补偿;地址灾害中的受灾范围面积统计;以及土地利用调查等应用。

目前市面上用于空间分析的平台,如arcgis,以及一些开源平台,无论是为了求得相交地理实体,还是求得相交的统计数据,均会对原始数据进行求交运算得到相交的地理实体,如果想要求得该地理实体的其他统计数据,如面积,则采用该地理实体做进一步的计算。

对于地理实体的面数据,其求交运算并不是向数字加减一样的简单计算,其中不仅涉及对原始地理数据的遍历、线段求交,还涉及空间关系判断,由线构面、拓扑检查等诸多过程,总体而言是一种较为复杂的计算;而面数据本身则是由多个线段组合而成,其面积的计算则可以看作是多个有向线段的积分过程,可由简单的数学公式描述,相对而言是一种极为简单的数学运算。

在实际的应用场景中,有些情况可能并不关注相交的几何面实体,而只需要获取该相交面的面积值数据。如果只是为了获取相交面的面积,而对面数据分为求相交面、求面积两步进行,则大部分的时间都将花费在求相交面的计算上,然而求取相交面本身并不是一个必要的过程。

通常在空间分析中,需要处理的数据量非常庞大,如果对大量的几何面数据进行求交运算,获取每一个相交面,再对每一个相交面进行求面积计算,这将会是一个耗时相当长的过程。



技术实现要素:

鉴于上述问题,本发明的目的在于提供一种两几何面相交面积的计算方法及装置,旨在解决现有方案通过求相交面来求面积的方式非常费时的技术问题。

一方面,所述两几何面相交面积的计算方法,包括下述步骤:

对于待求相交面积的第一几何面和第二几何面,将每个几何面的边界线段按照顺一定顺序进行编号,总共得两组有向线段集合,其中第一几何面对应第一集合,第二几何面对应第二集合;

计算第一几何面边界线段与第二几何面边界线段之间的交点,根据交点对边界线段做打断处理,更新两组有向线段集合;

确定第一集合中的有向线段在第二几何面中的系数和积分面积,计算第一几何面在第二几何面中的积分面积,即第一面积;

确定第二集合中的有向线段在第一几何面中的系数和积分面积,计算第二几何面在第一几何面中的积分面积,即第二面积;

计算所述第一面积和第二面积之和,结果即为第一几何面和第二几何面的相交面积。

进一步的,一条有向线段line在一个几何面中的积分面积area(line)=0.5*(x1-x0)*(y1+y0),其中有向线段line起点坐标为(x0,y0),终点坐标为(x1,y1);

一条有向线段line在一个几何面a中的系数:

其中o为有向线段line的中点;

假设一个几何面b边界线段被交点打断后,更新后的有向线段集合为{line_1,…,line_n},即集合内有向线段的条数为n,那么几何面b在几何面a中的积分面积:

另一方面,两几何面相交面积的计算装置包括:

集合生成单元,用于对于待求相交面积的第一几何面和第二几何面,将每个几何面的边界线段按照顺一定顺序进行编号,总共得两组有向线段集合,其中第一几何面对应第一集合,第二几何面对应第二集合;

集合更新单元,用于计算第一几何面边界线段与第二几何面边界线段之间的交点,根据交点对边界线段做打断处理,更新两组有向线段集合;

第一计算单元,用于确定第一集合中的有向线段在第二几何面中的系数和积分面积,计算第一几何面在第二几何面中的积分面积,即第一面积;

第二计算单元,用于确定第二集合中的有向线段在第一几何面中的系数和积分面积,计算第二几何面在第一几何面中的积分面积,即第二面积;

面积求和单元,用于计算所述第一面积和第二面积之和,结果即为第一几何面和第二几何面的相交面积。

进一步的,一条有向线段line在一个几何面中的积分面积area(line)=0.5*(x1-x0)*(y1+y0),其中有向线段line起点坐标为(x0,y0),终点坐标为(x1,y1);

一条有向线段line在一个几何面a中的系数:

其中o为有向线段line的中点;

假设一个几何面b边界线段被交点打断后,更新后的有向线段集合为{line_1,…,line_n},即集合内有向线段的条数为n,那么几何面b在几何面a中的积分面积:

本发明的有益效果是:在实际的应用场景中,叠置分析需要处理的地理实体数据一般比较庞大,如果只是需要求得相交面的统计数据,而进行大量的求交运算,再进行统计运算,将会是一个非常耗时的过程;本发明在计算相交面面积的过程中,直接对原始面数据进行计算处理,省略求取相交面实体的步骤,在对相交线段进行打断处理后,获取面的切割线段,按照一定的计算规则,直接计算出相交面的面积,从而使得由原始面数据到相交面面积一次性计算完毕,可以很大程度上提高该过程的计算性能,缩短计算时间。

附图说明

图1是有向线段与几何面的三种位置关系示意图;

图2是有向折线被几何面的边界打断的示意图;

图3是本发明第一实施例提供的两几何面相交面积的计算方法的流程图;

图4是几何面a和几何面b的相交示意图;

图5是几何面a和几何面b的边界线段编号示意图;

图6是几何面a和几何面b的边界线段被交点打断的示意图;

图7是本发明第二实施例提供的两几何面相交面积的计算装置的结构方框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

首先本发明先推导出两几何面相交面积的计算原理。

1、有向线段的积分面积;

假如line为一条有向线段,其起点坐标为x0,y0,终点坐标为x1,y1,定义line的积分面积area(line)如下:

area(line)=0.5*(x1-x0)*(y1+y0)。

2、有向线段在几何面内部的系数;

对于有向线段line,其中点为o,a是一个几何面对象,定义有向线段line在几何面a内部的系数inter_c(line,a)如下:

比如,如图1所示,图中(4-1)(4-2)(4-3)分别示出了三条线段与几何面a的位置关系,图中,line1在几何面a内,line2在几何面a外,line3与几何面a的边界线段重叠,因此inter_c(line1,a)=1;inter_c(line2,a)=0;inter_c(line3,a)=0.5。

3、有向折线在几何面内部的积分面积;

假设line为有向折线,line被几何面a边界切割成{line_1,…,line_k},定义有向折线在a内部的积分面积inter_area(line,a)如下:

inter_area(line,a)=inter_c(line_1,a)*area(line_1)+…+

inter_c(line_k,a)*area(line_k)。

如图2所示,有向折线line几何面a的边界切割形成成line1,line,line3三段,inter_area(line,a)=1*area(line1)+1*area(line2)+0*area(line3)。

4、几何面b在几何面a内部的积分面积;

假设几何面b的边界线段被几何面a的边界线段切割后,形成所有的有向线段的集合为{line_1,…,line_n},这个集合也可以看成连续的有向折线,因此定义几何面b在几何面a内部的积分面积inter_area(b,a)如下:

inter_area(b,a)=inter_c(line_1,a)*area(line_1)+…+

inter_c(line_n,a)*area(line_n)。

即设一个几何面b边界线段被交点打断后,更新后的有向线段集合为{line_1,…,line_n},即集合内有向线段的条数为n,那么几何面b在几何面a中的积分面积:

5、两几何面的相交面积;

几何面a和几何面b的相交面积是几何面b在几何面a内部的积分面积,以及几何面a在几何面b内部的积分面积之和。因此a与b相交面的面积intersect_area(a,b)为:

intersect_area(a,b)=inter_area(a,b)+inter_area(b,a)。

基于上述计算方法,本实施提供了一种两几何面相交面积的计算方法,为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。

实施例一:

图3示出了本发明实施例提供的两几何面相交面积的计算方法的流程,为了便于说明仅示出了与本发明实施例相关的部分。

参照图3,两几何面相交面积的计算方法包括下述步骤:

步骤s1、对于待求相交面积的第一几何面和第二几何面,将每个几何面的边界线段按照顺一定顺序进行编号,总共得两组有向线段集合,其中第一几何面对应第一集合,第二几何面对应第二集合。

假设a,b为两个不同的几何面对象,a、b相交示意图如图4所示,几何面a为第一几何面,几何面b为第二几何面。

对几何面a、b的所有边界线段按一定顺序进行编号。本实施例按照顺时针方向进行编号,几何面a的有向线段集合即第一集合为{a1,a2,a3,a4},几何面b的有向线段集合即第二集合为{b1,b2,b3,b4,b5},如图5所示所示。

步骤s2、计算第一几何面边界线段与第二几何面边界线段之间的交点,根据交点对边界线段做打断处理,更新两组有向线段集合。

几何面a的有向线段集合有四条边界线段,几何面b的有向线段集合有五段边界线段,首先求两组线段之间的交点,而两组线段的求交点算法是现有技术,这里不多赘述。打断之后,原始经过交点的一条边界线段,打断形成多条线段,更新几何面a、b中的有向线段集合,按顺时针方向重新编号,此时几何面a的有向线段集合为{a1,a2,a3,a4,a5,a6},几何面b的有向线段集合为{b1,b2,b3,b4,b5,b6,b7},相交面由有向线段a2,a3,a4,b5,b6围城,如图6所示。

步骤s3、确定第一集合中的有向线段在第二几何面中的系数和积分面积,计算第一几何面在第二几何面中的积分面积,即第一面积。

步骤s4、确定第二集合中的有向线段在第一几何面中的系数和积分面积,计算第二几何面在第一几何面中的积分面积,即第二面积。

确定几何面a的有向线段在几何面b中的系数,以及几何面b的有向线段在几何a中的系数,按照上述的相交面积计算原理,对a、b的相交面积进行计算。

更新后的第一集合中有线段a1至a6,根据前述有向线段在几何面内部的系数的定义,一条有向线段line在一个几何面a中的系数:

其中o为有向线段line的中点。

线段a2、a3、a4的中点在几何面b内,因此a2、a3、a4在几何面b中的系数为1,而线段a1、a5、a6、a7在几何面b中的系数为0,即:

inter_c(a2,b)=1;

inter_c(a3,b)=1;

inter_c(a4,b)=1;

inter_c(a1,b)=0;

inter_c(a5,b)=0;

inter_c(a6,b)=0;

inter_c(a7,b)=0;

同理,更新后几何面b中有向线段在a内部的系数如下:

inter_c(b5,a)=1;

inter_c(a6,a)=1;

inter_c(b1,a)=0;

inter_c(a2,a)=0;

inter_c(b3,a)=0;

inter_c(a4,a)=0;

inter_c(b7,a)=0;

因此有向线段a2、a3、a4在几何面b内的积分面积为分别为:

inter_c(a2,b)*area(a2);

inter_c(a3,b)*area(a3);

inter_c(a4,b)*area(a4);

其他线段在几何面b内的积分面积均为0;

因此几何面a在几何面b中的积分面积。即第一面积:

inter_area(linea,b)=inter_c(a2,b)*area(a2)+inter_c(a3,b)*area(a3)+inter_c(a4,b)*area(a4)。

同理,几何面b在几何面a中的积分面积,即第二面积:

inter_area(lineb,a)=inter_c(b5,a)*area(b5)+inter_c(b6,a)*area(b6)。

步骤s5、计算所述第一面积和第二面积之和,结果即为第一几何面和第二几何面的相交面积。

最后计算几何面a和几何面b的相交面积为:

intersect_area(a,b)=inter_area(a,b)+inter_area(b,a)。

当求得两个几何面的相交面积后,可以推导出其他参数。假设几何面a、b的面积为分别为a、b,由上述步骤计算出它们的相交面积为c,那么可以推导出:

a并b的面积为:a+b-c;

a减b的面积为:a–c;

a和b的对称差面积为:a+b-2c。

本发明在求相交面积的计算过程中,提出了有向线段在几何面内部的系数这一概念,通过求线段与面的内部系数的方法,确定构成面的线段在相交面积中的贡献权重,通过内部系数进一步提出,有向线段在几何面的内部的积分面积的计算方法,从而确定相交面积的计算流程。

综上本发明打破传统相交面积计算分求相交面、求面积两步走的思路,直接作用于原始面数据,通过求取有向线段与几何面内部的系数,有向线段在几何面内部的积分面积,几何面间内部积分面积等这一流程,不需要求取相交面这一几何实体,使得从原始数据到相交面积一步到位。从而提高计算性能,使相交面积的计算过程更为简洁高效。

实施例二:

图7示出了本发明实施例提供的两几何面相交面积的计算装置的结构,为了便于说明仅示出了与本发明实施例相关的部分。

本实施例提供的两几何面相交面积的计算装置,包括:

集合生成单元101,用于对于待求相交面积的第一几何面和第二几何面,将每个几何面的边界线段按照顺一定顺序进行编号,总共得两组有向线段集合,其中第一几何面对应第一集合,第二几何面对应第二集合;

集合更新单元102,用于计算第一几何面边界线段与第二几何面边界线段之间的交点,根据交点对边界线段做打断处理,更新两组有向线段集合;

第一计算单元103,用于确定第一集合中的有向线段在第二几何面中的系数和积分面积,计算第一几何面在第二几何面中的积分面积,即第一面积;

第二计算单元104,用于确定第二集合中的有向线段在第一几何面中的系数和积分面积,计算第二几何面在第一几何面中的积分面积,即第二面积;

面积求和单元105,用于计算所述第一面积和第二面积之和,结果即为第一几何面和第二几何面的相交面积。

本实施例所述的各个功能单元101-105对应实现了实施例一中的步骤s1-s5。通过集合生成单元将两个几何面的边界线段进行编号,然后通过集合更新单元求交点,并打断边界,更新集合,接着第一第二计算单元计算计算第一几何面在第二几何面中的积分面积以及算第二几何面在第一几何面中的积分面积,最后通过面积求和单元求得第一几何面和第二几何面的相交面积。

其中,一条有向线段line在一个几何面中的积分面积area(line)=0.5*(x1-x0)*(y1+y0),其中有向线段line起点坐标为(x0,y0),终点坐标为(x1,y1);

一条有向线段line在一个几何面a中的系数:

其中o为有向线段line的中点;

假设一个几何面b边界线段被交点打断后,更新后的有向线段集合为{line_1,…,line_n},即集合内有向线段的条数为n,那么几何面b在几何面a中的积分面积:

本发明在需求为确定统计值的情况下,不需再次求得相交面实体,从而直接获得所需统计值。对应用而言,减少操作步骤,使在复杂的生产实践中,操作更为简洁,减少工作量,节约操作时间。在相交面积的计算过程中,由原始数据直接计算出相交面积,与先求相交面,再计算面积两步走的过程相比,不需由相关线段进行重新构面,在计算面积时,也不需要对新的相交面数的线段数据进行遍历,从而缩减数据处理步骤,提高计算性能,节约计算时间。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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