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

文档序号:6357221阅读:430来源:国知局
专利名称:一种无拓扑结构矢量图形的多边形快速合并方法
技术领域
本发明属于矢量图形处理技术领域,特别涉及一种无拓扑结构矢量图形的多边形 合并方法。
背景技术
目前栅格影像矢量化后得到的图形大多为无拓扑结构矢量图形,该图形呈网络形 态,由彼此相邻但不重合的多边形构成。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)从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)导出合并后的矢量图形。
2.根据权利要求1所述无拓扑结构矢量图形的多边形快速合并方法,其特征在于,所 述步骤(5)具体包括以下子步骤;(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为起点且bUsed标记为FALSE的公共弧段,然后重复5. 2. 1-5. 2. 3步骤;(5. 3)将该新建的封闭环线变量newCircle加入到Al多边形的vcCircle数组中。
全文摘要
本发明公开了一种无拓扑结构矢量图形的多边形快速合并方法,本发明方法设计了一种新的矢量图形数据结构,并采用该结构进行多边形合并操作针对导入图形中待合并的两个多边形,先找到含邻接弧段的环线,并标记公共弧段为已使用,然后采用同向追踪的方法在两个环线中寻找连续未使用弧段,并将生成的新环线和待删除多边形中的其他环线赋予待保留的多边形,删除多边形,最终导出合并后的矢量图形。本发明采用简便方式建立了拓扑结构,可有效降低时间和运算开销。
文档编号G06T11/00GK102103759SQ201110080279
公开日2011年6月22日 申请日期2011年3月31日 优先权日2011年3月31日
发明者吴宁, 陈秋晓 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1