CN101923552A - 一种多边形矢量图层快速叠合方法 - Google Patents
一种多边形矢量图层快速叠合方法 Download PDFInfo
- Publication number
- CN101923552A CN101923552A CN 200910214551 CN200910214551A CN101923552A CN 101923552 A CN101923552 A CN 101923552A CN 200910214551 CN200910214551 CN 200910214551 CN 200910214551 A CN200910214551 A CN 200910214551A CN 101923552 A CN101923552 A CN 101923552A
- Authority
- CN
- China
- Prior art keywords
- polygon
- layer
- belong
- limit
- point
- 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
Links
Images
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本发明涉及地理信息系统空间分析中矢量地图间的分析方法,特别是一种多边形矢量图层快速叠合方法。本发明公开了一种多边形矢量图层快速叠合方法,它分别在三个环节提高计算效率:1)在处理流程中,通过外包矩形快速判断两图层中多边形的相离情况,避免了不必要的求交过程;2)提出了基于事件点组的平面扫描线算法进行多边形求交点,使得此步骤的计算复杂度由降低;3)利用所设计的事件点组的数据结构,又采用改进后的平衡二叉树保存线段与交点信息,使其能合理、有效的存储中间结果,优化处理效率,使本发明的计算效率得到大幅度提高。本发明解决了叠合分析的三大难题,具有适用性好、计算复杂度低和可保持原图精度的特点。
Description
技术领域
本发明涉及地理信息系统空间分析中矢量地图间的分析方法,特别是一种多边形矢量图层快速叠合方法。
背景技术
空间分析是地理信息系统(GIS)创建的初衷,而叠合分析是其重要的分析方法之一,特别是矢量图层间的叠合操作是最老和最困难的问题之一。尽管,Chrisman et al.发表了第一个方法,被称为WHIRLPOOL(Dutton 1979),但由于算法复杂度高,非常难以达到可运行的程度。人们始终面临“如何针对点、线、面和复杂空间几何对象的叠合计算,尤其是‘面’对象或多边形图层间叠合操作时,如何减少算法的复杂性,解决特殊情形(特殊面中出现孔洞)和保持图形重建后的精度三大难题。
例如:计算某行政区内各类土地利用类型的分布状况与数量的叠合分析计算,即:进行两矢量图层间多边形的交、并、差和包含的计算,统计出各个行政区多边形内的土地利用类型分布和数量。计算过程中,不仅需对两矢量图层多边形边界求交点,重建具有多重属性的新多边形,并保证叠合分析的几何精度;还需统计分析多边形范围内的属性特征;另外,特别需处理随之产生的包含关系或出现“孔洞”现象。
其中,图层中矢量图形的叠合分析,它通过对各区域两图层中多边形图形求交点和多重属性的搜索、判别,确定是否产生新多边形,或是否需对剩余多边形进行重新分类或分级,进行新多边形重建,构成新的矢量图层;然后,为图层内容进行统计叠合分析,对叠合分析结果中所形成的新多边形,进行属性的重新计算和分配。
在矢量图层叠合分析过程中,多边形叠合的顺序及两图层中多边形求交、并、差是最核心的过程,其中:正确、适宜的多边形叠合计算,可对两图层的叠合分析起到提高效率的作用。在国外,一个著名的算法是由Cyrus和Beck提出,它通过判断直线段的方向矢量与多边形边法矢量的点积是否大于0,而将所有交点分为上、下两组;然后,分别取上组中的最小交点和下组中的最大交点,作为线段可见部分的端点。但是,Cyrus-Beck算法只适用于凸多边形的求交,对于凹多边形则没有意义。与此同时,只适用于凸多边形的求交、并、差的算法还有Shamos算法和O’Rourke算法。近年来,M.Rivero也提出一种能处理任意简单多边形的算法,但其理论复杂,致使其时间复杂度达到0((n+k)(m+k)),其中:n,m分别是两输入图层多边形的边数,k则是它们的交点数。在国内,也有不少学者从事该领域的研究,但大多数采用对两图层多边形的边进行两两求交,效率明显很低;另外,有些算法甚至还需开二维数组,这对于GIS空间分析所面对的大规模数据集来说,明显不可能满足应用需求。其中,谢忠、薛胜等学者提出对两图层多边形进行两重循环的叠合分析,很明显不仅会出现重复多边形,导致错误,而且运行效率也必然很低。在众多研究中,仅刘勇奎、杨维芳、杜爽等人的算法可求多边形的交、并、差,它是基于第一个多边形的所有边,依次对第二个多边形进行线裁剪操作,以求出所有边的交点。虽然,它对于线裁剪提出了一种新的算法流程“错切变换法”,提高了求交点的效率,但对于第一个多边形的n条边均对第二个多边形的m个顶点依次进行置换操作,仅对于多边形的线段求交,其复杂度已为O(n×m)。而且,该算法对于求多边形的交、并、差,需分别重新构造多边形链,造成重复工作,降低了计算效率。同时,它对多边形的边重合或者在顶点处相交等特殊情况的处理是采用偏移顶点操作,不仅降低了操作效率,还会损失图形的精度,这对精度要求高的矢量图层间的空间分析存在致命缺陷。
综上所述,现有技术中,并没有一种适用于矢量图层间任意多边形求交、并、差和包含的高效方法和属性配置方法。在矢量图层间的叠合操作和分析中的三大难点问题并没有实质性的突破。因此,提出一种适用于矢量图层间任意多边形求交、并、差和包含的高效方法和属性配置方法,对增强GIS空间分析功能的性能具有重要意义和实用价值。
发明内容
本发明的目的在于提供一种多边形矢量图层快速叠合方法,以解决现有技术的不足,提供一种既适用于处理任意多边形的求交、并、差和包含关系,又能高效处理两矢量图层叠合分析的方法。
本发明采用的技术方案如下:
一种矢量图层多边形快速叠合分析方法,它包括以下步骤:
A)将两矢量图层多边形(每个多边形必须是封闭面状对象)分别存入两个链表G1和G2中,并为各图层多边形分配唯一ID号,规则为:第i个图层第j个多边形ID为i_j;同时,还需初始化一个结果图层R为空;
B)假设Pi是G1中所读取的多边形,Qi是G2中读取的多边形。分别从G1和G2中读取多边形,将从G1获得的每个多边形Pi与所有G2中的多边形Qi进行分析判断;直至G1为空,则表明完成与G2中所有多边形的分析判别,并均已存入结果图层R中,跳到第H步;否则将不断从G1中取得多边形Pi,并从G1中删除;
C)在上述判别过程中,主要是对多边形分类,判断Qi的外包矩形是否与Pi的外包矩形相交。如果满足式(1),则表示Qi与Pi不会相交,将该多边形Qi存入多边形集合M中,否则表示可能相交,存入多边形集合N中;(P外包).x2<(Qi外包).x1‖(P外包).y2<(Qi外包).y1‖(Pi外包).x1>(Qi外包).x2‖(P外包).y1>(Qi外包).y2 (1)
D)随后,进行多边形求交,只要多边形集合N不为空,则采用基于事件点组的平面扫描线算法(图2)对Pi与N进行求交点;如果N为空,则将Pi直接存进结果图层R中,跳回第B步;
E)然后,开始多边形重建。先对步骤D中基于事件点组的平面扫描线算法所求得的多边形交点进行——原线段截断,产生新的节点和连通新线段的处理;并且,对连通后节点所关联的边进行夹角排序,按同一节点边的排列顺序生成边信息链表;
F)再根据最小夹角原则,深度搜索,逆时针求出所有合法多边形,包括P与N的交P∩N、P与N的差P-N、N与P的差N-P,并为每个新的多边形重新分配ID;
G)将P∩N与P-N存入结果图层R中,将N-P存进集合M中,更新第二个图层G2的图形数据,用M覆盖G2,即使得G2=M,返回步骤B;
H)两图层所有多边形叠合完毕后,则结果多边形已经全部更新,并存于结果图层R中。接着,对R中所有多边形图形数据进行属性统计计算和配置;
I)返回结果图层R,结束运算。
作为一种优选方案,步骤C中,根据外包矩形对第二个图层G2中多边形进行分类,快速去除与第一个图层G1多边形Pi不可能相交的多边形。
作为一种优选方案,步骤D中,运用基于事件点组的平面扫描线算法进行多边形求交点,并采用平衡二叉树及堆等高级数据结构(如图3),不仅可大幅度提高求交点的效率,还记录了图层中所有拟求交多边形的几何位置。
作为一种优选方案,步骤E中,对同一新节点所关联的边进行与横轴夹角的排序,又可进一步提高后面深度搜索多边形的效率。
作为一种优选方案,步骤E中,按顶点顺序新生成的边信息链表包含有原多边形P与N集合的边方向信息,逆时针为正方向,顺时针为负方向,为后面生成交、并、差与包含等关系的确定提供实施的基本规则。
作为一种优选方案,在步骤F中,据深度搜索获得的多边形夹角和,可判断搜索顺序是逆时针还是顺时针。如果夹角和为-2π则为逆时针多边形,属于多边形的交或者差;如果是2π,则为顺时针,属于多边形的并或者包含,解决叠合分析中特殊多边形(孔洞)的判定。
作为一种优选方案,在步骤F中,对逆时针搜索到的多边形,还需据每条构成的边所归属的原多边形ID,判断该边原属于第几个图层第几个多边形,则可对新生成的结果多边形进行新的ID分配,例如:新多边形属于第i个图层第a个多边形与第j个图层第b个多边形的交,则分配ID为i_a_j_b,若为它们的差,则分配规则参考步骤a。如果新多边形所构成的边有属于P的正边,则该新多边形属于P;如果有边属于P的负边,则不属于P;同理,可判断是否属于N,从而可得出究竟属于P∩N、P-N还是N-P;具体判断标准为:若新多边形有边属于第一个图层的正方向边也即是外围边,那么新多边形属于第一个图层覆盖范围;相反,如果有边属于第一个多边形的反方向边也即内环边或者外围边的反方向边,那么新多边形不属于第一个图层覆盖范围;同理,可判断该多边形是否属于第二个图层。如果同时属于两个图层覆盖范围,则该多边形是它们的交P∩N;若属于第一个图层覆盖范围而不属于第二个,则该多边形是它们的差P-N;若属于第二个图层覆盖范围而不属于第一个,则该多边形是它们的差N-P。判断规则如下所示:
作为一种优选方案,在步骤H中,对R中每个多边形需进行属性计算与配置,具体可根据R图层中的每个新多边形的ID,确认分配的属性,譬如:ID为i_j,则该新多边形只具有第i个图层第j个多边形的属性,可据两图层间的运算符计算并配置属性;若ID为i_a_j_b,则该新多边形具有第i个图层第a个多边形以及第j个图层第b个多边形的两种属性,则需按同理计算和配置实际属性值。
作为进一步的优选方案,所述的基于事件点组的平面扫描线算法为:
D1)将线段按性质归类:若垂直,则只生成一个点,标示为垂直点,否则分为左端点与右端点;
D2)将这些点按横坐标排序,并把相同横坐标的点归为一组,称为事件点组,并为其设计数据结构;
D3)从左到右依次取出每组事件点集合,对每组事件点按左端点、垂直点、右端点、交点的顺序执行下面的操作:
D31)左端点:扫描线处于某条线段e1的左端点位置,则先查找该事件点组τ是否存在右端点;若存在右端点Q,且关联的线段为e2,很明显这两条线段首尾相接,则只需把线段e1替换掉τ中的e2即可,并与上下相邻线段求交,继而删掉该组中的右端点Q;若不存在右端点,则据当前左端点的坐标,将e1插入到τ中合适的位置,并与上下相邻线段进行求交判断;
D32)垂直点:垂线的特性只与当前扫描线的状态有关;由于上一步骤已处理完左端点,则当前与垂线有关的线段都已存在τ中;而τ是平衡二叉树,可通过二分法搜索得到一组线段集,它们与当前扫描线的交点处于垂线上,即找出满足线段集δ的条件:
将当前垂线与δ中线段求交,其中:α为当前扫描线位置,[y1,y2]为垂线的纵坐标范围;
D33)右端点:在处理过与当前右端点具有相同坐标的左端点后,当前组剩下的右端点所连接的线段e只需简单地从τ中删除,并对e原来的上下两相邻线段进行相交判断;
D34)交点:取出该交点关联的两条线段e1、e2,交换于τ中的位置,并与各自新的上下相邻线段进行求交判断。
本发明的优点或效果体现在如下方面:
1、本发明的主要创新之处在于:(1)方法上:提出基于事件点组的平面扫描线算法,利用其对多边形进行求交,并结合多边形最小夹角原则逆时针深度搜索多边形的交、并、差和包含关系,构建新多边形。(2)优化处理流程上:两图层叠合流程设计省去了多余流程,如:对两多边形图层的边进行两两求交,以及重复多边形,即:多边形求交流程通过外包矩形快速判断相离情况,避免了不必要的求交过程;所设计的事件点组的数据结构,能合理、有效的存储中间结果,不仅优化了处理效率,而且记录了多边形的精确位置,使之可得到正确结果。(3)方法的通用性上:它可处理图层中包含任意多边形。换言之,矢量图层中可存在凸、凹和孔洞三种多边形的状况。在分析处理过程中,本方法既无需将凹多边形分解,也不需进行窗口的凸凹性检查,它是一种简单任意多边形的通用算法,对凸、凹及含孔洞的多边形均适用。
2、本发明的主要优点在于:(1)提出基于事件点平面扫描线算法,并运用其求两图层中多边形交点,又用平衡二叉树保存边以及交点信息,使得求交效率得到大幅度优化;在结合了最小夹角原则,逆时针搜索新多边形,可正确得出最终结果图层。(2)实现了两矢量图层间任意多边形叠合分析的优化处理流程,不仅可提高叠合处理的工作效率,还可解决矢量图层叠合分析过程中特殊多边形的处理,且叠合结果还不会出现重复多边形;(3)本方法对多边形性质无特殊处理要求,适用于任意多边形,适用性很好,可适应于多边形矢量图层叠合处理。(4)图层数据预处理方法简单有效。
附图说明
图1矢量图层多边形快速叠合方法的处理流程图;
图2基于事件点组的平面扫描线算法流程图;
图3平衡二叉树及堆等高级数据结构示意图;
图4求交点计算复杂度比较曲线图;
图5应用案例:道路拓宽拆迁建筑分析中的缓冲区分析;
图6应用案例:道路拓宽拆迁建筑分析中的叠合分析结果。
具体实施方式
下面结合附图和具体实施例对本发明作进一步详细的说明。
如图1所示:
本发明的核心流程是矢量图层多边形的叠合顺序,以及基于事件点组的平面扫描线求多边形交点,依据多边形最小拐角原则逆时针深度搜索,进行多边形的交、并、差和包含的分类。
具体地讲,本发明所提出的矢量图层多边形快速叠合方法,它可处理图层中包含任意多边形,即:图层中图形可存在凸、凹和孔洞三种多边形的状况。换言之,本方法既无需将凹多边形分解,也不需进行窗口的凸凹性检查,它是一种简单任意多边形的通用算法,对凸、凹及含孔洞的多边形均适用。而凹及孔洞多边形的叠合过程以凸多边形的叠合过程为基础,在处理凸多边形图层时,具体的分析处理过程如图1所示包括如下步骤:
a、将两图层多边形分别存入两个链表G1和G2中,并为各图层多边形分配唯一ID号,规则为:第i个图层第j个多边形ID为i_j;初始化结果图层R为空;
b、若G1为空,则将G2所有多边形存入结果图层R中,跳到第h步;否则从G1中取得多边形,构建Pi外包矩形,并从G1中删除;
c、从G2中取出所有多边形Qi,判断Qi的外包矩形是否与P的外包矩形有相交。如果满足下面式子(1),则表示Qi与P不会相交,将该多边形Qi存入多边形集合M中,否则表示可能相交,存入多边形集合N中;(P外包)·x2<(Qi外包)·x1‖(P外包)·y2<(Qi外包)·y1‖(P外包)·x1>(Qi外包)·x2‖(P外包)·y1>(Qi外包)·y2 (1)
d、如果N不为空,则将P与N进行事件点组的平面扫描线求交点;如果N为空,则将P直接存进结果图层R中,跳到第b步;
e、对新生成的交点将原线段截断,生成新的线段,并对同一顶点所关联的边进行夹角排序,按顶点顺序生成边的信息链表;
f、根据最小夹角原则,深度搜索,逆时针求出所有合法多边形,包括P与N的交P∩N、P与N的差P-N、N与P的差N-P;
g、将P∩N与P-N存入结果图层R中,将N-P存进集合M中,更新第二个图层G2的数据,用M覆盖G2,G2=M,跳到第b步;
h、为结果图层R中的新多边形重新计算和分配属性;
i、返回结果图层R,结束。
在上述方法中,步骤a的具体操作属初始化工作,输入两图层数据,保存为G1、G2,并将结果图层R置空。本方法中规定多边形的外围边输入为逆时针输入,孔洞多边形为顺时针输入,为下面步骤f构建新多边形时判断多边形的归属信息提供依据。
步骤b是对第一个图层G1进行的基本操作。取得叠合分析的第一个多边形对象,并且判断是否应该结束流程。如果G1为空,取不到多边形,则表示叠合分析结束,否则保存该多边形为P。
步骤c是对第二个图层进行的操作。主要目的是通过判断P与Qi的外包矩形是否相交,取得与第一个多边形P有相交可能性的多边形Qi,并保存进多边形集合N中,避免对所有G2中的多边形都进行求交,大大提高了效率。
在上述方法中,步骤d对多边形求交点是本发明的核心步骤。本方法在此流程对多边形求交点采用基于事件点组的平面扫描线算法。经典的扫描线算法一般是用来求多条独立线段之间的交点,对于多边形这种特殊的线段集合,会出现很多首尾相接的邻边,这在Bently和Ottmann提出的平面扫描线算法中被当成相交处理,需进行求交判断,并将其作为交点保存入事件点序列Ω。事实上,两线段首尾相接不属于相交,故需改变原有数据结构及算法流程,以避免无谓的相交判断,提高计算效率。本发明提出基于事件点组的平面扫描线算法,新的扫描线算法流程归纳为图3中的流程:①将线段按性质归类:若垂直,则只生成一个点,标示为垂直点,否则分为左端点与右端点;②将这些点按横坐标排序,并把相同横坐标的点归为一组,称为事件点组,并为其设计数据结构;③从左到右依次取出每组事件点集合,对每组事件点按左端点、垂直点、右端点、交点的顺序执行下面的操作:
1)左端点:扫描线处于某条线段e1的左端点位置,则先查找该事件点组τ是否存在右端点;若存在右端点Q,且关联的线段为e2,很明显这两条线段首尾相接,则只需把线段e1替换掉τ中的e2即可,并与上下相邻线段求交,继而删掉该组中的右端点Q;若不存在右端点,则据当前左端点的坐标,将e1插入到τ中合适的位置,并与上下相邻线段进行求交判断。
2)垂直点:垂线的特性只与当前扫描线的状态有关;由于上一步骤已处理完左端点,则当前与垂线有关的线段都已存在τ中;而τ是平衡二叉树,可通过二分法搜索得到一组线段集,它们与当前扫描线的交点处于垂线上,即找出满足线段集δ的条件:
将当前垂线与δ中线段求交,其中:α为当前扫描线位置,[y1,y2]为垂线的纵坐标范围。
3)右端点:在处理过与当前右端点具有相同坐标的左端点后,当前组剩下的右端点所连接的线段e只需简单地从τ中删除,并对e原来的上下两相邻线段进行相交判断。
4)交点:取出该交点关联的两条线段e1、e2,交换于τ中的位置,并与各自新的上下相邻线段进行求交判断。
本发明改用平衡二叉树算法保存线段与交点信息,使得存取线段以及交点时复杂度降到了O((n+m+k)log(n+m+k)),其中n,m为两多边形的边数,k为两多边形的交点数。根据多边形相交的特性,可知k□m×n,效率得到很大提高。在上述方法中,步骤e是利用步骤d得到的交点,将相交的线段截断,生成新的线段。其主要目的是为下一步重新建立新多边形做数据准备,并对新生成的边进行夹角排序,方便后面的深度搜索,提高搜索效率。
在上述方法中,步骤f主要目的是重新建立新的多边形。根据多边形边与边之间的关系,可知道临边之间的夹角是逆时针最小夹角。所以,此流程深度搜索多边形时采用e步骤对夹角排序后的边,按顺序逆时针搜索多边形,并据所搜索到边的方向性判断该多边形的归属信息。
具体说,可据每条构成的边所归属的原多边形ID,判断该边原属于第几个图层第几个多边形;进而可对新生成的结果多边形进行新的ID分配和属性的计算,例如:新多边形属于第i个图层第a个多边形与第j个图层第b个多边形的交,则分配新ID为i_a_j_b;随后,并据步骤h的分配规则配置新属性。若新多边形有边属于第一个图层的正方向边,也即是外围边,那么新多边形属于第一个图层覆盖范围;相反,如果有边属于第一个多边形的反方向边,也即内环边或者外围边的反方向边,那么新多边形不属于第一个图层覆盖范围;同理,可判断该多边形是否属于第二个图层。如果同时属于两个图层覆盖范围,则该多边形是它们的交P∩N;若属于第一个图层覆盖范围而不属于第二个,则该多边形是它们的差P-N;若属于第二个图层覆盖范围而不属于第一个,则该多边形是它们的差N-P。
步骤g属于过渡流程,主要目的是保存求得的矢量图形叠合分析结果,更新第二个图层数据,为进行下一次叠合循环做准备。
通过上述步骤b~g循环,直到图层一或者图层二中多边形被处理完毕,将另一图层数据存进结果图层R中,跳到步骤h。
在步骤h,则据每个新多边形的ID,为每个新多边形重新分配属性:譬如ID为i_j,则该新多边形只具有第i个图层第j个多边形的属性;若ID为i_a_j_b,则该新多边形具有第i个图层第a个多边形以及第j个图层第b个多边形的两种属性;因此,根据两图层间叠合计算的运算符,例如:它们之间为相加运算,则计算两多边形的属性,将新属性配置到ID为i_a_j_b的新多边形。
步骤i:输出结果图层,结束流程。
以上步骤可以处理一般多边形图层叠合。孔洞多边形相比常规多边形,多了内孔洞多边形,其外围也是属于一般多边形情况。根据上述步骤b,外围多边形按逆时针输入,内孔洞多边形按顺时针输入;所以,孔洞多边形的叠合过程和常规多边形是一样的,只是需将外围多边形与内孔洞多边形单独用上述流程处理一次,假设有孔洞多边形A和B,结果满足下述等式:
A∩B=(A.外围多边形∩B.外围多边形)-(A.孔洞∪B.孔洞)
A-B=((A.外围-B.外围)∪(A.外围∩B.孔洞))-A.孔洞
B-A=((B.外围-A.外围)∪(B.外围∩A.孔洞))-B.孔洞
综上所述,本发明提出的多边形矢量图层快速叠合方法,它是对两矢量图层中的多边形进行求交、并、差和包含的方法。它采用基于事件点的平面扫描线算法对多边形线段进行求交点;然后,通过交点截断线段,生成新的边,并进行夹角排序;接着,运用最小夹角原则,逆时针生成新多边形,并据边的属性判断多边形的归属信息。
为了验证本发明的可靠性,我们利用本发明方法设计和制定了相应的测试方案和实施流程,并为其采集了适当的实验数据进行两组图层叠合分析的实验:
1、测试方案
测试方案不仅从理论角度分析算法复杂度进行比较分析外,还设计了算法比较分析的测试方案。此方案在众多文献中选择较优者——刘勇奎、杨维芳、杜爽等人的算法,一是它与本发明算法属同类,至少可求交、并、差;二是该算法的算法复杂度优于现有其他算法。
同时,测试方案为两个算法比较建立了相同的测试环境,即:均采用java语言编程,集成于SVG WebGIS中,均可在主频为1.99GHz的微机上运行。为了使实验结果更具说服力,制定了两个测试方案:
实验一,采用随机生成四种规模数据量的具有N个顶点的两个多边形,对它们进行求交、并、差的综合运算,求出1000次的平均时间结果(单位为ms),比较两种算法的优劣;
实验二,采用广州市1:1万某图幅的居民地、道路和镇村界等矢量地图图层数据作为实验数据,数据均采用ArcGIS软件实施了高精度的数字化处理流程,并经过严格的图层清理和拓扑关系处理成为E00格式;由于本方法被集成于SVG WebGIS中,故又将其转换为SVG(Scalable Vector Graphics)空间信息标准表达文档,即:基于网络图形标准SVG的空间信息扩展标准矢量格式。测试运用两种算法对4组不同规模的两个图层中多个多边形(N1,N2分别为各自图层多边形的点数)进行叠合分析,不仅进行方法的实用性和有效性测试,而且测试对实用样本的运算效率。
2、实验结果分析
图4给出从理论角度分析两种方法比较分析的结果,可发现本发明算法具备两方面的优势:一是本发明算法是在统一定义数据结构后,一次性求出多边形的交、并、差,避免了重复初始化步骤,节省很多时间,而对比方法则在多边形求交、并、差过程中,需分别构造数据结构;二是它在第二阶段求交点时,需把第一个多边形每条边与第二个多边形进行线裁剪(求交),复杂度为O(n×m),而本发明采用基于事件点组的平面扫描算法求交点,复杂度降为O((n+m+k)log(n+m+k))。而且,当两多边形求交点时,交点数通常为k<<m+n,随着多边形点数的增加,本方法优越性将更加突出。为了更直观地比较两种方法的优劣,先利用MATLAB绘出求交点复杂度对比曲线图(图4)。图中设k=n=m,其中横坐标为多边形点数;纵坐标为时间复杂度。结果表明,本方法运算效率随着多边形点数增加呈现明显优势。
表1实验一的运算耗时比较(单位:毫秒)
进而,又根据两组实验的结果进行分析比较。实验一为随机生成的不同规模多边形序列进行实验的结果(表1),可发现实验其结果与理论分析结果一致,它随着多边形求交次数或数据规模的增长,本算法的优势越明显,且突现了本算法的高效性。
表2实验二的运算耗时比较(毫秒)
实验二的结果如表2所示。它对实验数据运用两种算法对4组不同规模的两个图层中多个多边形(N1,N2分别为各自图层多边形的点数)进行了叠合分析。实验结果:一是验证了本文方法对实际地图数据进行叠合分析应用的实用性与有效性;二是进一步证明随着运算数据量的增大,其运算效率呈几何级数增长;三是给出一个道路扩建、房屋拆迁的应用实例(图5、6),图5先选择了道路图层中需扩建的道路,假设这些道路需扩建25米,则计算25米的缓冲区;然后,将此图5与居民点图层间进行叠合分析,图6中红色区域则为扩建需拆迁房屋。
目前,本发明方法已集成于SVG WebGIS系统中,获得快速空间分析的效果。相信随着方法的进一步改进,所发明的方法对空间叠合分析的精度和效率均可进一步提高。
Claims (9)
1.一种多边形矢量图层快速叠合方法,其特征在于所述方法包括:
A)将两矢量图层多边形(每个多边形必须是封闭面状对象)分别存入两个链表G1和G2中,并为各图层多边形分配唯一ID号,规则为:第i个图层第j个多边形ID为i_j;同时,初始化一个结果图层R为空;
B)分别从G1和G2中读取多边形,将从G1获得的每个多边形Pi与所有G2中的多边形Qi进行分析判断;直至G1为空,跳到第H步;否则将不断从G1中取得多边形P,并从G1中删除;
C)如果满足下述表达式:
(P外包).x2<(Qi外包).x1‖(P外包).y2<(Qi外包).y1‖(P外包).x1>(Qi外包).x2‖(P外包).y1>(Qi外包).y2,
则将该多边形Qi存入多边形集合M中,否则存入多边形集合N中;
D)进行多边形求交,只要多边形集合N不为空,则采用基于事件点组的平面扫描线算法对P与N进行扫描线求交点;如果N为空,则将P直接存进结果图层R中,跳回第B步;
(基于事件点组的平面扫描线算法需要保护)
E)然后,开始进行多边形重建:先对步骤D中基于事件点组的平面扫描线算法所求得的多边形交点进行原线段截断,产生新的节点和连通新线段的处理;并且,对连通后节点所关联的边进行夹角排序,按同一节点边的排列顺序生成边信息链表;
F)再根据最小夹角原则,采用深度搜索,按逆时针方式求出所有合法多边形,包括P与N的交P∩N、P与N的差P-N、N与P的差N-P,并为每个新的多边形重新分配ID;
G)将P∩N与P-N存入结果图层R中,将N-P存进集合M中,更新第二个图层G2的图形数据,用M覆盖G2,即:使得G2=M,返回步骤B;
H)两图层所有多边形已经叠合完毕后,则结果多边形已经全部更新,并存于结果图层R中,接着,对R中所有多边形图形数据进行属性统计计算和配置;
I)返回结果图层R,结束运算。
2.根据权利要求1所述的多边形矢量图层快速叠合方法,其特征在于:在步骤C中,根据外包矩形对第二个图层G2中多边形进行分类,快速去除与第一个图层多边形P不可能相交的多边形。
3.根据权利要求1所述的多边形矢量图层快速叠合方法,其特征在于:在步骤D中,运用基于事件点组的扫描线算法求多个多边形的交点,采用平衡二叉树及堆设计存储事件点组。
4.根据权利要求1所述的多边形矢量图层快速叠合方法,其特征在于:在步骤E中,对同一顶点所关联的边进行与横轴夹角排序。
5.根据权利要求1所述的多边形矢量图层快速叠合方法,其特征在于:在步骤E中,按顶点顺序新生成的边信息链表包含有原多边形P与N集合的边方向信息,逆时针为正方向,顺时针为负方向。
6.根据权利要求1所述的多边形矢量图层快速叠合方法,其特征在于:在步骤F中,根据最终生成的多边形的夹角和,判断搜索顺序是逆时针还是顺时针,如果夹角和为-2π则为逆时针多边形,属于交或者差;如果是2π,则为顺时针多边形,属于多边形的并。
7.根据权利要求1所述的多边形矢量图层快速叠合方法,其特征在于:在步骤F中,逆时针搜索到的多边形,根据所构成的边的方向判断属于交还是差,如果有边属于P的正边,则属于P;如果有边属于P的负边,则不属于P;如果有边属于N的正边,则属于N;如果有边属于N的负边,则不属于N;从而可以得出究竟属于P∩N、P-N还是N-P。
9.根据权利要求1所述的多边形矢量图层快速叠合方法,其特征在于:所述的基于事件点组的平面扫描线算法为:
D1)将线段按性质归类:若垂直,则只生成一个点,标示为垂直点,否则分为左端点与右端点;
D2)将这些点按横坐标排序,并把相同横坐标的点归为一组,称为事件点组,并为其设计数据结构;
D3)从左到右依次取出每组事件点集合,对每组事件点按左端点、垂直点、右端点、交点的顺序执行下面的操作:
D31)左端点:扫描线处于某条线段e1的左端点位置,则先查找该事件点组τ是否存在右端点;若存在右端点Q,且关联的线段为e2,很明显这两条线段首尾相接,则只需把线段e1替换掉τ中的e2即可,并与上下相邻线段求交,继而删掉该组中的右端点Q;若不存在右端点,则据当前左端点的坐标,将e1插入到τ中合适的位置,并与上下相邻线段进行求交判断;
D32)垂直点:垂线的特性只与当前扫描线的状态有关;由于上一步骤已处理完左端点,则当前与垂线有关的线段都已存在τ中;而τ是平衡二叉树,可通过二分法搜索得到一组线段集,它们与当前扫描线的交点处于垂线上,即找出满足线段集δ的条件:
将当前垂线与δ中线段求交,其中:α为当前扫描线位置,[y1,y2]为垂线的纵坐标范围;
D33)右端点:在处理过与当前右端点具有相同坐标的左端点后,当前组剩下的右端点所连接的线段e只需简单地从τ中删除,并对e原来的上下两相邻线段进行相交判断;
D34)交点:取出该交点关联的两条线段e1、e2,交换于τ中的位置,并与各自新的上下相邻线段进行求交判断。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910214551 CN101923552B (zh) | 2009-12-31 | 2009-12-31 | 一种多边形矢量图层快速叠合方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910214551 CN101923552B (zh) | 2009-12-31 | 2009-12-31 | 一种多边形矢量图层快速叠合方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101923552A true CN101923552A (zh) | 2010-12-22 |
CN101923552B CN101923552B (zh) | 2013-08-28 |
Family
ID=43338493
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910214551 Expired - Fee Related CN101923552B (zh) | 2009-12-31 | 2009-12-31 | 一种多边形矢量图层快速叠合方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101923552B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103679272A (zh) * | 2013-10-12 | 2014-03-26 | 中国电子科技集团公司第四十一研究所 | 基于矢量图形的二叉判定树专家知识库构造方法 |
CN106650127A (zh) * | 2016-12-28 | 2017-05-10 | 北京华大九天软件有限公司 | 一种自动将多段线转换成封闭图形的方法 |
CN106778050A (zh) * | 2017-03-14 | 2017-05-31 | 中国地质大学(武汉) | 一种覆盖区域求交的确认方法及系统 |
CN106847067A (zh) * | 2017-01-19 | 2017-06-13 | 武汉联图时空信息科技有限公司 | 室内停车地图的自动几何校正方法 |
CN108170807A (zh) * | 2017-12-28 | 2018-06-15 | 百度在线网络技术(北京)有限公司 | 地图数据的处理、地图绘制方法、装置、设备及存储介质 |
CN109584338A (zh) * | 2018-11-27 | 2019-04-05 | 天津字节跳动科技有限公司 | 图层处理方法、装置和电子设备 |
CN109887052A (zh) * | 2019-01-29 | 2019-06-14 | 广联达科技股份有限公司 | 一种二维多边形偏移方法 |
CN110019984A (zh) * | 2017-12-27 | 2019-07-16 | 北京小度信息科技有限公司 | 空间索引建立方法、装置、电子设备及可读存储介质 |
CN111428811A (zh) * | 2020-04-14 | 2020-07-17 | 中国测绘科学研究院 | 一种单环多边形自相交模式识别及处理方法 |
CN112987654A (zh) * | 2021-02-02 | 2021-06-18 | 广州奇芯机器人技术有限公司 | 人造石数控加工编程方法 |
CN115984291A (zh) * | 2023-01-03 | 2023-04-18 | 西安工业大学 | 一种地灾险情区域重构方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101533525B (zh) * | 2008-03-12 | 2011-06-01 | 中国科学院计算技术研究所 | 一种用于地理信息系统中的点面叠加分析方法 |
-
2009
- 2009-12-31 CN CN 200910214551 patent/CN101923552B/zh not_active Expired - Fee Related
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103679272A (zh) * | 2013-10-12 | 2014-03-26 | 中国电子科技集团公司第四十一研究所 | 基于矢量图形的二叉判定树专家知识库构造方法 |
CN106650127A (zh) * | 2016-12-28 | 2017-05-10 | 北京华大九天软件有限公司 | 一种自动将多段线转换成封闭图形的方法 |
CN106650127B (zh) * | 2016-12-28 | 2020-07-10 | 北京华大九天软件有限公司 | 一种自动将多段线转换成封闭图形的方法 |
CN106847067A (zh) * | 2017-01-19 | 2017-06-13 | 武汉联图时空信息科技有限公司 | 室内停车地图的自动几何校正方法 |
CN106847067B (zh) * | 2017-01-19 | 2019-03-15 | 武汉联图时空信息科技有限公司 | 室内停车地图的自动几何校正方法 |
CN106778050A (zh) * | 2017-03-14 | 2017-05-31 | 中国地质大学(武汉) | 一种覆盖区域求交的确认方法及系统 |
CN110019984A (zh) * | 2017-12-27 | 2019-07-16 | 北京小度信息科技有限公司 | 空间索引建立方法、装置、电子设备及可读存储介质 |
CN110019984B (zh) * | 2017-12-27 | 2021-10-29 | 北京星选科技有限公司 | 空间索引建立方法、装置、电子设备及可读存储介质 |
CN108170807A (zh) * | 2017-12-28 | 2018-06-15 | 百度在线网络技术(北京)有限公司 | 地图数据的处理、地图绘制方法、装置、设备及存储介质 |
CN108170807B (zh) * | 2017-12-28 | 2020-12-22 | 百度在线网络技术(北京)有限公司 | 地图数据的处理、地图绘制方法、装置、设备及存储介质 |
CN109584338A (zh) * | 2018-11-27 | 2019-04-05 | 天津字节跳动科技有限公司 | 图层处理方法、装置和电子设备 |
CN109887052A (zh) * | 2019-01-29 | 2019-06-14 | 广联达科技股份有限公司 | 一种二维多边形偏移方法 |
CN109887052B (zh) * | 2019-01-29 | 2023-08-25 | 广联达科技股份有限公司 | 一种二维多边形偏移方法 |
CN111428811A (zh) * | 2020-04-14 | 2020-07-17 | 中国测绘科学研究院 | 一种单环多边形自相交模式识别及处理方法 |
CN112987654A (zh) * | 2021-02-02 | 2021-06-18 | 广州奇芯机器人技术有限公司 | 人造石数控加工编程方法 |
CN112987654B (zh) * | 2021-02-02 | 2022-01-14 | 广州奇芯机器人技术有限公司 | 人造石数控加工编程方法 |
CN115984291A (zh) * | 2023-01-03 | 2023-04-18 | 西安工业大学 | 一种地灾险情区域重构方法 |
CN115984291B (zh) * | 2023-01-03 | 2023-11-24 | 西安工业大学 | 一种地灾险情区域重构方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101923552B (zh) | 2013-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101923552B (zh) | 一种多边形矢量图层快速叠合方法 | |
CN101661514B (zh) | 一种油藏黑油模型数值模拟系统 | |
Qi et al. | A spatiotemporal partitioning approach for large-scale vehicle routing problems with time windows | |
Ho et al. | Non-agricultural land use in post-reform China | |
Richter et al. | Optimization of waste management regions using recursive Thiessen polygons | |
CN102270236A (zh) | 一种基于栅格化gis 空间关系判断方法及其系统 | |
CN103778191B (zh) | 一种顾及空间邻近关系的矢量等高线数据划分方法 | |
CN102609982A (zh) | 空间地质数据非结构化模式的拓扑发现方法 | |
CN102609535A (zh) | 一种gis图层点数据叠加方法 | |
CN104574449A (zh) | 基于dem的投影面积计算方法 | |
CN101789048B (zh) | 一种快速提取版图关键面积的方法 | |
CN103268342A (zh) | 基于cuda的dem动态可视化加速系统和方法 | |
Cheng et al. | Updating conventional soil maps by mining soil–environment relationships from individual soil polygons | |
CN103399730B (zh) | 一种基于cpu+gpu架构的空间几何体线段相交判断并行处理方法 | |
CN104794335A (zh) | 一种通用多级空间抽样方法 | |
CN102208027B (zh) | 基于间隙度维数的土地利用空间格局评价方法 | |
CN113743659A (zh) | 一种基于成分法和马尔可夫元胞自动机的城市布局预测方法及应用 | |
CN112116709B (zh) | 一种提高地形表达精度的地形特征线处理方法 | |
CN104537254B (zh) | 一种基于社会统计数据的精细化制图方法 | |
CN105741280A (zh) | 一种模糊数学矢量分区评价方法及装置 | |
CN101908062A (zh) | Gis空间谓词判断方法及其系统 | |
CN105468693B (zh) | 一种高效的拓扑关系计算方法 | |
CN101504777A (zh) | 一种三维空间复合体对象间拓扑关系的分析方法 | |
CN112163330A (zh) | 一种配电网规划图形可视性优化方法 | |
Li et al. | Design and implementation of trajectory data management and analysis technology framework based on spatiotemporal grid model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130828 Termination date: 20191231 |
|
CF01 | Termination of patent right due to non-payment of annual fee |