当前位置: 首页 > 专利查询>南京大学专利>正文

基于改进边界代数法的相交多边形提取方法技术

技术编号:19746256 阅读:24 留言:0更新日期:2018-12-12 04:55
本发明专利技术涉及一种基于改进边界代数法的相交多边形提取方法,包括以下步骤:对所有图层中的多边形顺序进行编号;计算包含所有图层的MBR,数组hDstDS、pIDArray和RLEGroup分别存放栅格单元的属性值、多边形ID和游程;对所有多边形使用边界代数算法依次进行栅格化,在栅格化过程中赋予各多边形的属性值均为1;在数组hDstDS中获取当前多边形MBR包含的栅格单元,并逐行读取获取其属性值,并根据不同的属性值进行相应处理;从数组RLEGroup存储的游程中提取相应的相交多边形组,即每个游程中的数组pGroup即对应一个相交多边形组。本发明专利技术计算复杂度低,尤其适用于规模化的多边形数据集的相交多边形提取。

【技术实现步骤摘要】
基于改进边界代数法的相交多边形提取方法
本专利技术涉及一种基于改进边界代数法的相交多边形提取方法,属于图像处理

技术介绍
多边形相交计算是地理信息系统(GeographicalInformationSystem,GIS)中的重要计算类型,被广泛地应用于多边形拓扑检查、缓冲区生成、叠置分析等GIS空间分析类型,具有典型的计算复杂、密集的算法特征。该类型空间计算的一般步骤包括:(1)遍历所有多边形数据集并搜索、确定相交多边形;(2)提取相交多边形并完成对相交部分结果的求解。目前已有大量学者针对该类型算法的处理效率和精度展开研究,根据其使用方法的不同,可分为基于矢量的方法和基于栅格的方法两种类型。基于矢量的方法主要面向空间对象描述,各多边形对象之间的空间关系判断需要基于计算几何算法进行定位、分析和检索。其基本处理过程包括:利用多边形的最小外接矩形(MinimalBoundingRectangle,简称MBR)表征多边形的空间形状,首先过滤出可能相交的候选多边形,进而对候选多边形进行精炼确定相交多边形组,最后对相交多边形组进行裁剪。尽管不同的多边形空间计算算法原理不同,但具有相同的算法特征,即本质操作均是过滤出具有相交关系的多边形,并对多边形点集集合进行裁剪。因此,计算密集型多边形空间计算的核心问题在于多边形之间的裁剪及相交多边形的确定。现有成熟的多边形裁剪算法主要是针对两个多边形进行;针对海量多边形数据,通用的方法是采用“暴力”算法逐个遍历源数据判断当前多边形与其他多边形的空间关系,并反复调用裁剪算法实现相交多边形的裁剪,不但计算复杂度高、效率低下,而且难以适用于规模化的多边形数据集的相交计算。但利用空间索引只能减少后续多边形的判断次数,其形成的多边形组中仍然包含大量不相交多边形,因而该方法仍然会浪费大量的时间在不相交多边形的计算上,从而降低了计算效率。栅格数据模型是与矢量数据模型是同等重要的空间对象表示方法。相对于矢量地理数据格式而言,栅格数据分布规则、独立性较高。因此采用基于栅格的计算方法可极大地提高空间计算效率。基于栅格的计算方法是在简单的栅格图像中通过栅格单元之间属性值的简单代数运算实现空间分析。该方法的一般计算过程包括三个步骤:(1)将矢量多边形图层分别进行栅格化填充,获得两个处理图层的栅格化结果;(2)对两个图层的栅格化图像根据其属性值进行栅格计算,以获得指定空间计算结果;(3)对计算结果进行栅格矢量化,提取多边形边界及其所属岛洞,并构建多边形拓扑关系,从而完成计算。目前,已有较多学者采用该方法实现对多边形数据的空间计算,但现有的方法往往只能处理两个或两个以上图层中的多边形的相交、合并等栅格计算,无法处理同一图层内多边形相互重叠的情形时的相交计算。
技术实现思路
本专利技术要解决技术问题是:克服上述技术的缺点,提供一种计算复杂度低、适用于规模化的多边形数据集的基于改进边界代数法的相交多边形提取方法。为了解决上述技术问题,本专利技术提出的技术方案是:一种基于改进边界代数法的相交多边形提取方法,包括以下步骤:步骤一、对所有图层中的多边形顺序进行编号,每个多边形对应唯一的多边形ID;步骤二、计算包含所有图层的MBR,根据栅格尺寸,生成初始值为0的数组hDstDS以存放栅格单元的属性值,其大小为nYSize行×nXSize列,同时生成与数组hDstDS相同大小、初始值为-1的数组pIDArray以存放多边形ID;生成一个新的数组RLEGroup以存放游程;其中,一个栅格行中栅格单元的属性值为pNum的游程定义为RLE{StartX,EndX,LocateY,(pID0,pID1,…,pIDpNum-1),pNum};其中,StartX和EndX为该栅格行中属性值为pNum的起始栅格单元与结束栅格单元的横坐标,LocateY为该栅格行的纵坐标,(pID0,pID1,…,pIDpNum-1)为存放相交多边形ID的数组pGroup步骤三、对步骤一中的所有多边形使用边界代数算法依次进行栅格化,在栅格化过程中赋予各多边形的属性值均为1,并更新数组hDstDS的值为栅格单元的属性值;在数组hDstDS中获取当前多边形MBR包含的栅格单元,并逐行读取,对于纵坐标为LocateY的栅格行中的任一栅格单元(StartX,LocateY),若该栅格单元位于该多边形内部,则计算其在hDstDS中的存放位置locate=LocateY×nXSize+StartX,并获取其属性值value=hDstDS[locate];1)若该栅格单元的属性值value<2,则该栅格单元仅位于一个多边形内部,不予处理;2)若该栅格单元的属性值value=2,则该栅格单元位于两个相交多边形内部;在该栅格行中以当前栅格单元为起点继续扫描后续栅格单元,以形成从栅格单元(StartX,LocateY)至栅格单元(EndX,LocateY)的栅格序列,其中StartX≤EndX;上述栅格序列中的任一栅格单元(LocateXi,LocateY),StartX≤LocateXi≤EndX,须位于该多边形内部,并满足以下条件:这样,该栅格序列中的所有栅格单元均位于两个相交多边形内部;同时,这两个相交多边形ID分别为pIDArray[locate]和pCurrentID;创建一个新的游程以存放上述栅格序列,该游程可表示为{StartX,EndX,LocateY,(pIDArray[locate],pCurrentID),2},并将该游程存放至数组RLEGroup中;3)若该栅格单元的属性值value>2,则该栅格单元位于三个或三个以上相交多边形内部;在该栅格行中以当前栅格单元为起点继续扫描后续栅格单元,以形成从栅格单元(StartX,LocateY)至栅格单元(EndX,LocateY)的栅格序列,其中StartX≤EndX;上述栅格序列中的任一栅格单元(LocateXi,LocateY),其中StartX≤LocateXi≤EndX,须位于多边形内部,并满足以下条件:这样,该栅格序列中的所有栅格单元均位于value个相交多边形内部,其中一个多边形ID为pCurrentID,另外value-1个多边形ID存放于已有的游程中;从栅格单元(max(StartXj,StartX),LocateY)至栅格单元(min(EndXj,EndX),LocateY),搜索包含value-1个多边形ID的游程RLEj{StartXj,EndXj,LocateY,(pID0,pID1,…,pIDvalue-2),value-1},首先将其分解为两个新的游程,分别为{StartXj,max(StartXj,StartX)-1,LocateY,(pID0,pID1,…,pIDvalue-2),value-1}和{min(EndXj,EndX)+1,EndXj,LocateY,(pID0,pID1,…,pIDvalue-2),value-1},其中min(EndXj,EndX)≤EndXj,StartXj≤min(StartXj,StartX),并将两个新的游程放入数组RLEGroup中,然后将原游程RLEj从数组RLEGroup中删除;同时生成一个新本文档来自技高网
...

【技术保护点】
1.一种基于改进边界代数法的相交多边形提取方法,包括以下步骤:步骤一、对所有图层中的多边形顺序进行编号,每个多边形对应唯一的多边形ID;步骤二、计算包含所有图层的MBR,根据栅格尺寸,生成初始值为0的数组hDstDS以存放栅格单元的属性值,其大小为nYSize行×nXSize列,同时生成与数组hDstDS相同大小、初始值为‑1的数组pIDArray以存放多边形ID;生成一个新的数组RLEGroup以存放游程;其中,一个栅格行中栅格单元的属性值为pNum的游程定义为RLE{StartX,EndX,LocateY,(pID0,pID1,…,pIDpNum‑1),pNum};其中,StartX和EndX为该栅格行中属性值为pNum的起始栅格单元与结束栅格单元的横坐标,LocateY为该栅格行的纵坐标,(pID0,pID1,…,pIDpNum‑1)为存放相交多边形ID的数组pGroup;步骤三、对步骤一中的所有多边形使用边界代数算法依次进行栅格化,在栅格化过程中赋予各多边形的属性值均为1,并更新数组hDstDS的值为栅格单元的属性值;在数组hDstDS中获取当前多边形MBR包含的栅格单元,并逐行读取,对于纵坐标为LocateY的栅格行中的任一栅格单元(StartX,LocateY),若该栅格单元位于该多边形内部,则计算其在hDstDS中的存放位置locate=LocateY×nXSize+StartX,并获取其属性值value=hDstDS[locate];1)若该栅格单元的属性值value...

【技术特征摘要】
1.一种基于改进边界代数法的相交多边形提取方法,包括以下步骤:步骤一、对所有图层中的多边形顺序进行编号,每个多边形对应唯一的多边形ID;步骤二、计算包含所有图层的MBR,根据栅格尺寸,生成初始值为0的数组hDstDS以存放栅格单元的属性值,其大小为nYSize行×nXSize列,同时生成与数组hDstDS相同大小、初始值为-1的数组pIDArray以存放多边形ID;生成一个新的数组RLEGroup以存放游程;其中,一个栅格行中栅格单元的属性值为pNum的游程定义为RLE{StartX,EndX,LocateY,(pID0,pID1,…,pIDpNum-1),pNum};其中,StartX和EndX为该栅格行中属性值为pNum的起始栅格单元与结束栅格单元的横坐标,LocateY为该栅格行的纵坐标,(pID0,pID1,…,pIDpNum-1)为存放相交多边形ID的数组pGroup;步骤三、对步骤一中的所有多边形使用边界代数算法依次进行栅格化,在栅格化过程中赋予各多边形的属性值均为1,并更新数组hDstDS的值为栅格单元的属性值;在数组hDstDS中获取当前多边形MBR包含的栅格单元,并逐行读取,对于纵坐标为LocateY的栅格行中的任一栅格单元(StartX,LocateY),若该栅格单元位于该多边形内部,则计算其在hDstDS中的存放位置locate=LocateY×nXSize+StartX,并获取其属性值value=hDstDS[locate];1)若该栅格单元的属性值value<2,则该栅格单元仅位于一个多边形内部,不予处理;2)若该栅格单元的属性值value=2,则该栅格单元位于两个相交多边形内部;在该栅格行中以当前栅格单元为起点继续扫描后续栅格单元,以形成从栅格单元(StartX,LocateY)至栅格单元(EndX,LocateY)的栅格序列,其中StartX≤EndX;上述栅格序列中的任一栅格单元(LocateXi,LocateY),StartX≤LocateXi≤EndX,须位于该多边形内部,并满足以下条件:这样,该栅格序列中的所有栅格单元均位于两个相交多边形内部;同时,这两个相交多边形ID分别为pIDArray[locate]和pCurrentID;创建一个新的游程以存放上述栅格序列,该游程可表示为{StartX,EndX,LocateY,(pIDArray[locate],pCurrentID),2},并将该游程存放至数组RLEG...

【专利技术属性】
技术研发人员:周琛李满春陈振杰姜朋辉程亮
申请(专利权)人:南京大学
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1