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

一种无拓扑结构矢量图形的多边形快速合并方法技术

技术编号:6114269 阅读:584 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种无拓扑结构矢量图形的多边形快速合并方法,本发明专利技术方法设计了一种新的矢量图形数据结构,并采用该结构进行多边形合并操作:针对导入图形中待合并的两个多边形,先找到含邻接弧段的环线,并标记公共弧段为已使用,然后采用同向追踪的方法在两个环线中寻找连续未使用弧段,并将生成的新环线和待删除多边形中的其他环线赋予待保留的多边形,删除多边形,最终导出合并后的矢量图形。本发明专利技术采用简便方式建立了拓扑结构,可有效降低时间和运算开销。

【技术实现步骤摘要】

本专利技术属于矢量图形处理
,特别涉及一种无拓扑结构矢量图形的多边形 合并方法。
技术介绍
目前栅格影像矢量化后得到的图形大多为无拓扑结构矢量图形,该图形呈网络形 态,由彼此相邻但不重合的多边形构成。POLYGON型的矢量图形,由若干个多边形结构体组 成,每个多边形结构体内包含一个容纳封闭环线的子结构体,其中每个封闭环线又包含一 组首尾相同的节点集。可见,原有的POLYGON型矢量图形中,每个多边形结构内只记录了自 身节点集信息,缺乏拓扑关系,因此在进行多边形合并时,必须通过大量节点坐标的比较, 才能确定各多边形的邻近关系,在合并处理中需要大量时间和运算开销。另外,如果为矢量 图形生成拓扑关系,一方面生成拓扑信息也需要大量运算和时间开销,另一方面目前使用 最为广泛、可移植性最好的矢量文件格式shp格式,并不能保存拓扑信息,因此每次重新打 开都需要耗费大量时间重新生成拓扑关系。由此可见,目前急需一种简便有效的新矢量图 形数据结构,一方面可以用于保存和传播,另一方面可以进行多边形快速合并等操作。
技术实现思路
本专利技术的目的是针对现有技术的不足,提供一种无拓扑结构矢量图形的多边形快 速合并方法。本专利技术的目的是通过以下技术方案来实现的一种无拓扑结构矢量图形的多边形 快速合并方法,包括如下步骤(1)导入待合并的并且具有本专利技术所述矢量数据结构的矢量图形;(2)取出需合并两个多边形Al、A2(如图1),其标号分别为“ 1 ”、“2” ;(3)从Al中找到含有与A2相邻公共弧段的封闭环线,同时将公共弧段的bUsed变量标 记为TRUE ;(4)从A2中找到含有与Al相邻公共弧段的封闭环线,同时将公共弧段的bUsed变量设 为 TRUE ;(5)开始遍历Al的选定封闭环线AlCircle中的vBds数组,即遍历公共弧段;(6)将A2中不含公共弧段的所有封闭环线也加入到Al多边形的vcCircle数组中;(7)删除Al中含有公共弧段的封闭环线;(8)在该矢量图形中删除A2多边形;(9)遍历原先与A2相邻的所有多边形,将与A2相邻的公共弧段的nLeftPolygonLabel 标记“2”改为Al的标记“1”;(10)重复步骤2至步骤9,合并所有需合并的多边形;(11)导出合并后的矢量图形。本专利技术的有益效果是,1、本专利技术提出一种无拓扑结构矢量图形的快速合并方法,该方法包含两方面创新 (1)创立了一种新的多边形多层数据结构,增加记录了公共弧段起始点及其邻接信息的数 据结构;(2)提出一种“同向追踪有效弧段”的多边形合并方法。本文方法可以有效提高矢 量图形的合并速度,并且可以保证合并的正确性。2、本专利技术方法设计了一种新的矢量图形数据结构,并采用该结构进行多边形合并 操作针对导入图形中待合并的两个多边形,先找到含邻接弧段的环线,并标记公共弧段为 已使用,然后采用同向追踪的方法在两个环线中寻找连续未使用弧段,并将生成的新环线 和待删除多边形中的其他环线赋予待保留的多边形,删除多边形,最终导出合并后的矢量 图形。本专利技术采用简便方式建立了拓扑结构,可有效降低时间和运算开销。附图说明图1为本专利技术方法中多边形快速合并示意图。 具体实施例方式本专利技术建立的矢量图形数据结构如下所示struct Polygon{vector<Circle;!<> vcCircle ; int nLabel ;ι ;其中,vector是C++标准模板库(Standard Template Library)中定义的一个可用于 容纳各种数据类型的动态数组。每个多边形中包含一个容纳所有封闭环线数据指针的动态 数组vcCircle,和一个表示多边形标号nLabel,用以唯一标识该多边形。Circle是封闭环 线的数据结构,定义如下struct Circle{vector<point> vcPnt ; vector<BD> vcBds ;ι ;每个封闭环线包含一个容纳所有节点的动态数组vcPnt和一个容纳所有公共弧段的 动态数组vcBds。其中point是节点的数据结构,BD是公共弧段的数据结构,它们的定义如 下struct point { double χ ; double y ;ι ;其中X,y分别是节点的横坐标和纵坐标,它们均是实型数据;struct BD {int nStartPos ;int nLeftPoIygonLabel ;int nRightPo1ygonLabe1 ;BOOL bUsed ;};该BD结构中存储了三个interger型数据和一个BOOL型数据,其中r^tartPos用于存 储该公共弧段起始点在该环线点集中的序号,nLeftPolygonLabel记录该公共弧段左侧多 边形标号,nRightPolygonLabel记录该公共弧段右侧多边形标号,Wsed用于在合并时标 记该公共弧段是否使用过,初始默认值为FALSE。本专利技术无拓扑结构矢量图形的多边形快速合并方法的步骤如下 1、导入待合并的并且具有本专利技术所述矢量数据结构的矢量图形。2、取出需合并两个多边形A1、A2 (如图1),其标号分别为“1”、“2”。3、从Al中找到含有与A2相邻公共弧段的封闭环线,即图1中由abcde五条公共 弧段组成的封闭环线(以下简称为AlCircle)。同时将公共弧段c、e的bUsed变量标记为 TRUE04、同理,从A2中找到含有与Al相邻公共弧段的封闭环线,即图1中由fghijekc 八条公共弧段组成的封闭环线(以下简称为A2Circle),同时将公共弧段c、e (与Al中方向 相反)的Wsed变量设为TRUE。5、开始遍历Al的选定封闭环线AlCircle中的vBds数组,即遍历abcde五条公共 弧段,具体包括以下子步骤。5. 1、如果当前公共弧段的I^sed标记为TRUE,则跳过,不处理。5. 2、反之,首先设置该公共弧段的I^sed等于TRUE,然后新建一个空的封闭环线 变量newCircle,记录下起始点startpoint,并进行如下处理。5. 2. 1、记录下当前公共弧段的终止点endpoint,若endpoint等于startpoint,则 进入步骤5. 3。5. 2. 2、将当前公共弧段中的数据加入newCircle中。5. 2. 3、从Al的所有公共弧段中搜索以endpoint为起点且Wsed标记为FALSE 的公共弧段,若找到了则重复5. 2. 1-5. 2. 3步骤;若未找到,则进入A2的所有公共弧段中搜 索以endpoint为起点且Wsed标记为FALSE的公共弧段,然后重复5. 2. 1-5. 2. 3步骤。5. 3、将该新建的封闭环线变量newCircle加入到Al多边形的vcCircle数组中。6、将A2中不含公共弧段的所有封闭环线也加入到Al多边形的vcCircle数组中。7、删除Al中含有公共弧段的封闭环线,如图1中即删除AlCircle。8、在该矢量图形中删除A2多边形。9、遍历原先与A2相邻的所有多边形,将与A2相邻的公共弧段的 nLeftPolygonLabel 标记 “2” 改为 Al 的标记 “1”。10、重复步骤2至步骤9,合并所有需合并的多边形。11、导出合并本文档来自技高网...

【技术保护点】
1.一种无拓扑结构矢量图形的多边形快速合并方法,其特征在于,包括如下步骤:(1)导入待合并的并且具有本专利技术所述矢量数据结构的矢量图形;(2)取出需合并两个多边形A1、A2(如图1),其标号分别为“1”、“2”;(3)从A1中找到含有与A2相邻公共弧段的封闭环线,同时将公共弧段的bUsed变量标记为TRUE;(4)从A2中找到含有与A1相邻公共弧段的封闭环线,同时将公共弧段的bUsed变量设为TRUE;(5)开始遍历A1的选定封闭环线A1Circle中的vBds数组,即遍历公共弧段;(6)将A2中不含公共弧段的所有封闭环线也加入到A1多边形的vcCircle数组中;(7)删除A1中含有公共弧段的封闭环线;(8)在该矢量图形中删除A2多边形;(9)遍历原先与A2相邻的所有多边形,将与A2相邻的公共弧段的nLeftPolygonLabel标记“2”改为A1的标记“1”;(10)重复步骤2至步骤9,合并所有需合并的多边形;(11)导出合并后的矢量图形。

【技术特征摘要】

【专利技术属性】
技术研发人员:陈秋晓吴宁
申请(专利权)人:浙江大学
类型:发明
国别省市:86

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

1