建筑物矢量边界简化的方法与流程

文档序号:13222598阅读:395来源:国知局
技术领域本发明涉及地理信息处理领域,具体地,涉及一种建筑物矢量边界简化的方法。

背景技术:
随着地理信息系统(GeographicInformationSystem,GIS)与计算机技术的不断发展,越来越多的数据变得可以研究与利用,而计算机内存以及网络带宽是有限的,如何有效的对海量数据进行处理和传输,也是困扰专家们的一大难题。对GIS领域所研究的数据而言,一般来说包括属性数据与空间数据两大类型,相比于属性数据,空间数据所占的存储空间往往很大,而随着数据分辨率的提高,空间数据量也会不断增大,对于建筑物矢量数据而言,在城市规划、土地分类包括灾害评估等多方面都会有所应用。多边形的复杂程度常常制约着数据的运算速度,而且往往其数据不需要过于精细,例如对于较小比例尺地图,过于精细的多边形边界是没有意义的。所以对建筑物矢量进行边界简化,一方面可以减少数据所占存储空间,另一方面也更适合进行研究以及后续的制图工作。目前现存的多边形边界简化方法有很多,具体分类包括顶点删除法、边收缩法、Douglas-Peucker(道格拉斯普克)法等等,其中每种方法的计算特点、适用范围都不太相同。顶点删除法是通过计算顶点与相邻两边的夹角、相邻两边的长度、顶点的相关度等参数,然后判断是否删除该顶点,该方法原理较易理解,适用于较为平缓的曲线数据压缩,但每次进行删除点后都需重新计算相应参数并对其进行排序,计算效率不高,且该方法并没有对多边形整体进行考虑,无法剔除错误内环等误差信息;边收缩法又称边塌陷算法,其方法的主要思路是一次操作将一条边收缩为一个顶点,通过往复操作,直到多边形顶点数目减少到指定数量,该方法的优点在于可以较好的保持原始多边形形状,由于其多边形顶点数目已人为指定,所以不会出现例如顶点数小于3的错误多边形情况,但对于面积过小的内环,该方法无法剔除。与顶点删除法类似,该方法同样计算效率不高,且若边收缩过多,有可能会导致多边形形状信息丢失;Douglas-Peucker法是垂距法的改良版本,通过计算顶点到两点连线的垂距,每次删除垂距大于阈值的顶点,该方法由于采用迭代思想,所以具有较高的计算效率以及广泛的应用范围,但是其对于垂距的计算较为复杂,并且阈值如何确定也是较难解决的问题。该方法同样没有从多边形整体角度来考虑问题,对于错误内环等情况较难解决。建筑物简化过程现阶段应用较为广泛,比较常用的ArcGIS系列软件中也可实现相应操作,其所用算法较为复杂,主要内容包括将所有接近90度的建筑物边界角定为90度,以保证建筑物边界整齐;依据设定条件减少顶点数目,以简化多边形边界,保证简化后结果与原始区域大致相同;对于简化后多边形面积小于给定最小阈值的情况,则删除该多边形;若所给定简化误差允许范围较大,则直接用与原始图形重心相同的矩形来进行代替等。

技术实现要素:
本发明的目的是提供一种方法,该方法能够有效简化建筑物矢量边界。为了实现上述目的,本发明提供一种建筑物矢量边界简化方法,该方法包括:从建筑物的矢量图中获取建筑物矢量多边形;确定所述矢量多边形的边角点;根据所述矢量多边形的周长或所述边角点之间的距离确定距离筛选阈值;以及遍历所述矢量多边形的全部边界点,将所遍历到的边界点和与该边界点相邻的边界点之间的距离与所述距离筛选阈值相比较,当所述距离小于所述距离筛选阈值且该相邻的边界点不是所述边角点时,删除该相邻的边界点。进一步地,该方法还包括:再次遍历所述矢量多边形的全部边界点;以及将所遍历到的边界点和与该边界点相邻的两个边界点组成的夹角与预设的角度阈值相比较,当所述夹角小于所述角度阈值时,删除该遍历到的边界点,该删除的边界点不是所述边角点。进一步地,所述确定所述边角点的步骤包括:获取所述矢量多边形的全部边界点的坐标;定义所述矢量多边形初始的四个边角点的坐标变量;遍历所述矢量多边形的全部边界点,将每个边界点的坐标变量与所定义的每个边角点的坐标变量相比较,当边界点的坐标变量符合替换条件时,将该边界点的坐标变量定义为新的边角点的坐标变量。进一步地,在比较边界点和边角点的坐标变量时,分别将两个点的横坐标和纵坐标做差,当横坐标差值和纵坐标差值中的一者小于预定差值阈值而另一者大于所述预定差值阈值时符合所述替换条件。进一步地,该方法包括通过以下步骤确定所述矢量多边形的周长:计算所述矢量多边形的全部边界点中所有相邻的边界点之间的距离;以及对所计算的距离求和得到所述矢量多边形的周长。进一步地,所述根据所述矢量多边形的周长确定距离筛选阈值的步骤包括:确定所述距离筛选阈值为所述周长的1/n,其中n为正整数。进一步地,所述根据所述边角点之间的距离确定距离筛选阈值的步骤包括:确定所述距离筛选阈值为所述边角点之间的距离中最短距离的1/m,其中m为正整数。进一步地,该方法包括:从所述建筑物的矢量图中获取多个建筑物矢量多边形,以及针对每个矢量多边形确定所述边角点和所述距离筛选阈值。进一步地,该方法包括:如果删除边界点后所述矢量多边形的边界点数少于3则删除该矢量多边形。进一步地,所述四个边角点包括:左上角、左下角、右上角、右下角。通过上述技术方案,利用距离筛选阈值与角度阈值对不符合条件的边界点进行剔除,可以很好的应用于建筑物矢量边界简化过程,所涉及到的计算过程简单,且每一步剔除步骤灵活,用户可以根据实际简化结果确定是否进行下一步简化。本发明的其它特征和优点将在随后的具体实施方式部分予以详细说明。附图说明附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明,但并不构成对本发明的限制。在附图中:图1是本发明实施方式提供的一种建筑物矢量边界简化方法流程图;图2是本发明优选实施方式提供的建筑物矢量边界简化方法流程图;图3是建筑物矢量边角点选择流程图;图4(a)是规则建筑物的边角点选择结果示意图;图4(b)是不规则建筑物的边角点选择结果示意图;图5是建筑物矢量依据距离阈值剔除边界点流程图图6(a)是规则建筑物依据距离阈值剔除边界点结果示意图;图6(b)是不规则建筑物依据距离阈值剔除边界点结果示意图;图7是建筑物矢量依据角度阈值剔除边界点流程图;图8(a)是规则建筑物依据角度阈值剔除边界点结果示意图;图8(b)是不规则建筑物依据角度阈值剔除边界点结果示意图;以及图9是建筑物矢量边界简化结果对比示意图。具体实施方式以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。图1是本发明实施方式提供的一种建筑物矢量边界简化方法流程图。如图1所示,本发明实施方式提供的建筑物矢量边界简化方法可以包括:步骤S101:从建筑物的矢量图中获取建筑物矢量多边形;步骤S102:确定所述矢量多边形的边角点;步骤S103:根据所述矢量多边形的周长或所述边角点之间的距离确定距离筛选阈值;以及步骤S104:遍历所述矢量多边形的全部边界点,将所遍历到的边界点和与该边界点相邻的边界点之间的距离与所述距离筛选阈值相比较,当所述距离小于所述距离筛选阈值且该相邻的边界点不是所述边角点时,删除该相邻的边界点。通过上述技术方案,首先通过遍历确定该建筑物多边形边角点的位置,目的是确定该建筑物的矩形形状边界,避免出现切角情况。利用距离筛选阈值对不符合条件的边界点进行筛选,能够依据距离阈值剔除长度过短的边,以达到删除毛边的效果。如图2所示,在通过距离阈值对边界点进行筛选之后,上述方法还可以包括:步骤S105:再次遍历所述矢量多边形的全部边界点;以及将所遍历到的边界点和与该边界点相邻的两个边界点组成的夹角与预设的角度阈值相比较,当所述夹角小于所述角度阈值时,删除该遍历到的边界点,该删除的边界点不是所述边角点。计算每两边之间夹角,剔除夹角过小的点,使建筑物边界更为齐整。在两步剔除过程中,不剔除建筑物边角点,以保证建筑物形状完整。该方法的计算复杂度较低,同时在进行边界简化时可以分步进行,用户可以根据具体情况对参数阈值进行设置或选择是否进行下一步简化,使得方法更具灵活性。在实施方式中,确定边角点的步骤可以包括:获取所述矢量多边形的全部边界点的坐标;定义所述矢量多边形初始的四个边角点的坐标变量;遍历所述矢量多边形的全部边界点,将每个边界点的坐标变量与所定义的每个边角点的坐标变量相比较,当边界点的坐标变量符合替换条件时,将该边界点的坐标变量定义为新的边角点的坐标变量。在实施方式中,为了确定边角点,可以对矢量多边形的全部边界点进行遍历,记录具有最大或最小横纵坐标的点。对于矩形建筑物矢量而言,最终记录的边角点可以包括右上角、右下角、左上角、左下角等四个点,对于边界不是规则矩形的情况,即某一坐标最大值点不在边角上,则依据另一坐标距离差值判断是否记录该点,最终保证得到的边角点之间连线形成的图形可以尽可能覆盖原始多边形。具体地,在比较边界点和边角点的坐标变量时,可以分别将两个点的横坐标和纵坐标做差,当横坐标差值和纵坐标差值中的一者小于预定差值阈值而另一者大于所述预定差值阈值时符合所述替换条件。在实施方式中,该方法可以包括通过以下步骤确定所述矢量多边形的周长:计算所述矢量多边形的全部边界点中所有相邻的边界点之间的距离;以及对所计算的距离求和得到所述矢量多边形的周长。利用上述步骤,通过计算多边形边界上每两点之间距离的长度,对其求和可以得到多边形周长。其中两点之间距离为欧式距离,需依据点坐标进行计算。对于存在多个矢量多边形的情况,可以针对每个矢量多边形重复执行上述实施方式提供的方法。上述实施方式的方法可以包括:从所述建筑物的矢量图中获取多个建筑物矢量多边形,以及针对每个矢量多边形确定所述边角点和所述距离筛选阈值,然后继续进行方法的各个步骤。在实施方式中,如果删除边界点后所述矢量多边形的边界点数少于3则可以认定原始信息存在误差,从而删除该矢量多边形。以下结合附图3-9对本发明的原理进行详细说明。需要说明的是,在进行建筑物矢量多边形简化前,首先需从空间数据文件中读取建筑物多边形的坐标信息,随后再进行相应的操作,诸如边角点确定、阈值设定以及多边形边界简化等。本发明的实施方式是基于.shp格式文件进行,该矢量文件格式在GIS领域中应用较广,对于面状要素而言,其中包括多个多边形矢量,每个多边形中包含多个环,每个环中包含多个点,每个点通过X,Y坐标以唯一确定该点。本发明实施方式提供的方法首先将形成每一建筑物多边形的边界点坐标按固定格式提取出来,以便后续处理。另外,本发明并不限定距离筛选的步骤和角度筛选的步骤的先后顺序。图3是建筑物边角点选择流程图,图4是建筑物边角点选择结果示意图,其中图4(a)为规则建筑物多边形,图4(b)为不规则建筑物多边形。由于建筑物多边形往往具有形状较规则且拐角呈直角的特点,所以本发明设计了多边形边角点选择的方法,需要注意的是,在进行边角点选择过程时,若某一多边形由多个环所构成即呈“回”字型或存在空洞,那么每一环(或每个矢量多边形)都要分别进行简化操作。算法的基本思路是遍历每一环的全部边界点,设定四个临时点以记录该多边形的4个边角点的坐标,通过比较每一点的坐标大小,记录多边形的右上角、右下角、左下角、左上角坐标。对于如图4(a)所示的规则建筑物的边角点选取,无需进行过多的判断,而若建筑物形状为如图4(b)所示的不规则多边形,则还需进行特殊判断。图4(b)中多边形存在两个右上角点与两个右下角点,那么在两点的横纵坐标差别不大的情况下,选哪一点作为边角点均是合理的;而若是某点的某一坐标仅比另一点的该坐标多出一点点,而同时另一坐标却相差较大,则选后者作为边角点。上述方法可以通过C++编程实现,举例的部分关键代码如下所示:在进行边角点选择之后,需对多边形上每一环的周长进行计算,从而确定距离筛选阈值。周长的计算方式是对全部边界点两两之间的距离求和,根据多边形周长的大小设定该筛选阈值,一方面考虑到了不同多边形的实际大小不同,避免了统一剔除阈值可能造成的过度简化情况;另一方面也使得阈值的确定较为简便,提高了算法的计算效率。在本发明的实施方式中,可以确定所述距离筛选阈值为所述周长的1/n,其中n为正整数。例如,将筛选阈值设为多边形周长的二十分之一。还需注意的是,若多边形边角点之间的距离中长边比短边超出很多,可以根据短边长设置该筛选阈值。在这样的实施方式中,确定所述距离筛选阈值为所述边角点之间的距离中最短距离的1/m,其中m为正整数,例如将筛选阈值设为边角点之间的距离中最短距离的四分之一。图5是建筑物矢量多边形依据距离阈值剔除边界点的流程图,图6是依据距离阈值剔除边界点的结果示意图,图6(a)表示规则建筑物多边形,图6(b)表示不规则建筑物多边形,其中有毛边的矢量多边形为原始建筑物边界,平整的多边形为依据距离阈值剔除边界点后的结果。在得到距离筛选阈值后,对建筑物多边形的全部边界点进行遍历(例如,依次遍历),计算边界点两两之间的距离,若两点距离小于距离阈值,则删除后一点。需要注意的是,在第一步选择的边角点不能被剔除,以保证建筑物多边形结构完整。若依据距离阈值剔除后发现该环上点的数目不足三个,则表明无法形成该环,所以认定为原始信息存在误差从而将该环剔除。而如果剔除后所得到的环围成面积过于小,则同样认定为该环是原始信息中存在的误差信息,并将其剔除,具体判断条件可以根据建筑物类型及平均面积大小等信息进行设定。通过距离阈值剔除边界点,可以如图6所示除掉大部分“毛边”,使得建筑物的矢量边界更为平滑。以C++为例,该过程部分关键代码如下:图7是建筑物矢量多边形依据角度阈值剔除边界点的流程图,图8是依据角度阈值剔除边界点的结果示意图,图8(a)表示规则建筑物多边形,图8(b)表示不规则建筑物多边形,其中存在较多曲线的矢量多边形为建筑物边界经过距离阈值剔除边界点后的简化结果,而较为平整的多边形则为依据角度阈值剔除边界点后的结果。在经过距离筛选阈值进行边界点剔除之后,可以得到相对于原始建筑物矢量而言更为平滑的多边形矢量,但该结果中多边形边界往往不够整齐,不利于进行制图以及其他的分析研究工作,所以还需依据角度阈值来对边界点进行进一步剔除。角度阈值的选择相比于距离阈值的选择更为简单,用户可依据自身需求结合具体情况进行设定,由于一般来说建筑物拐角近似为直角,所以在本发明的实施方式中,例如可以将角度阈值设置为45度,即若某边界点与两边所成的夹角小于45度,则该点会被剔除。该过程需再次遍历多边形全部边界点,并计算每一点与两边的夹角,依据角度阈值判断是否需剔除该点,与距离阈值剔除过程相同,若某一多边形最终剩余边界点数目小于三或围成面积小于给定阈值,则剔除该多边形。夹角计算的代码如下:图9是建筑物矢量边界简化结果对比示意图。如图9所示,从整体来看,两组简化效果基本一致,ArcGIS所用简化算法得出结果的优点在于面积与原始建筑物矢量基本一致,但存在着些许切边现象,对第三个建筑物多边形并没有剔除明显错误的两个内环;本发明实施方式提供的方法很好的遵循了建筑物的形状特点,所得矢量简化结果夹角基本都为直角,且有效的剔除了多余的内环,不足之处在于边角点的选择可能不够精确。从算法效率上来比较,对于少量的多边形矢量,两种简化方法都很快,基本体现不出差别,而矢量数据一旦增大,本发明所用算法由于其O(n)的时间复杂度,相比于ArcGIS简化方法优势明显。本发明的上述实例由C++语言编写,在PC平台上实现。该发明的特点在于充分考虑了建筑物矢量相比于一般多边形的独特性,即边界较平整且拐角往往为直角,从而在设计算法时结合上述特点,首先选择多边形边角点,然后利用距离阈值与角度阈值对不符合条件的边界点进行剔除,并考虑到多边形内出现小内环等数据错误情况。本发明可以很好的应用于建筑物矢量边界简化过程,所涉及到的计算过程均简单易懂,且每一步剔除工作均较为灵活,用户可以根据实际简化结果确定是否进行下一步简化。以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1