用于交互式地编辑gis拓扑数据集的方法

文档序号:6466271阅读:223来源:国知局

专利名称::用于交互式地编辑gis拓扑数据集的方法
技术领域
:本发明涉及GIS矢量数据编辑技术,特别是一种用于交互式地编辑GIS拓扑数据集的方法。地理信息系统(GeographicInformationSystem,GIS)的矢量数据模型包括两种类型,即Spaghetti数据模型和拓扑数据模型(陈述彭等地理信息系统导论,科学出版社,2000年,P31-43)。在Spaghetti模型中,空间点用一个空间坐标表示,线由一串坐标(称为节点)组成,面是由线形成的闭合多边形。拓扑模型的基本对象类型包括结点、弧段和区域,弧段由一系列点(又称节点)连接而成,它始于起始结点、终于终止结点;结点是弧段相交或终止的点;一个区域是由一个外环和零个或多个内环组成的闭合范围,一个环由一条或多条弧段连接而成。在Spaghetti模型中,几何对象(点、线、面等)与坐标数据直接相对应,不存储相互之间拓扑关系。在拓扑结构中,除了存储坐标数据外,还记录了拓扑信息,如结点的关联弧段,弧段的起始和终止结点、左右区域,组、拓扑数据模型具有很多优点,如不需要通过坐标计算来判读拓扑关系,给空间查询、分析处理带来了方便;多边形的边界数据以弧段网络存储,可显著压缩图形数据的数据量;容易在生成拓扑结构的过程中查找出数据输入的错误;可以方便处理多边形中嵌套的"岛"及进行多边形合并处理等。鉴于以上原因,许多GIS软件都支持基于拓扑数据模型的应用,如ARC/INFO、MapGIS、GeoStar等。目前的GIS软件虽然支持基于拓扑数据模型的应用,但并不支持直接对拓扑数据集进行交互式编辑处理,包括交互式地创建或移动拓扑对象、以及在编辑过程中不可或缺的撤消(Undo)、恢复(Redo)操作。目前,对于非拓扑结构的矢量数据,已经有很好的交互式创建或修改方法,但对于拓扑数据集的创建,必须通过先创建非拓扑数据集,再利用所述非拓朴数据集进行拓扑构建来实现;对于拓扑数据集的修改,也必须通过修改与所述拓扑数据集相对应的非拓扑数据集,再对所述非拓扑数据集中的全部数据进行拓扑重构来实现。这些传统方法虽然能够保证数据拓扑关系的正确性和完整性,但由于其不是通过直接对拓
背景技术
:扑数据集操作来实现的,其操作过程繁复,操作结果也不是直接可见的,不便于在编辑过程中实时发现和改正拓扑错误,降低了拓扑数据集编辑处理的安全性、交互性和工作效率,限制了拓扑数据模型的应用。为了克服传统GIS拓扑数据创建、修改方法的不足,本发明提供了一种用于实现GIS拓扑数据集创建和修改的交互式编辑方法,该方法不仅能够以交互式地输入坐标点生成线段的方式向GIS拓扑数据集中追加拓扑对象来创建拓扑数据集,也能实现通过交互式地移动弧段或结点来修改拓扑数据集,另外,本发明还通过加入事务机制,实现了撤消、恢复处理操作,用于当在拓扑数据编辑处理过程中发现编辑结果与预期不符或需要回放之前的数据状态时,撤消先前的编辑操作或恢复先前撤消的编辑操作,以达到提高GIS拓扑数据集编辑的安全性、可交互性和工作效率的目的。为了达到上述目的,本发明釆用的技术方案包括1、一种交互式地编辑GIS拓扑数据集的方法,所述拓扑数据集中包括零个或多个拓扑对象,所述拓扑对象的类型包括结点、弧段和区域;所述方法在计算机上实现,所述拓扑数据集被装载并显示在所述计算机上;所述交互式地编辑GIS拓扑数据集的方法包括以下步骤(1.1)为所述拓扑数据集建立空间索引;(1.2)创建一事务管理器;(1.3)选择一编辑方式,并采用所述编辑方式编辑所述拓扑数据集;(1.4)输入停止命令以停止编辑所述拓扑数据集;或者,返回步骤(1.3)继续编辑所述拓扑数据集。2、优选的,如l所述的方法,其中所述编辑方式包括创建操作,所述创建搡作的步骤包括(2.1)创建一线段;(2.2)输入一坐标,将所述线段的起点和终点移到该坐标;(2.3)输入结東命令以结東当前创建操作;或者,输入一坐标,并将所述线段的终点移到该坐标;(2.4)如果所述线段的起点和终点重合,则返回步骤(2.3)继续;(2.5)开始一编辑事务;(2.6)用所述线段更新所述拓扑数据集,并生成所述编辑事务;(2.7)将所述编辑事务加入所述事务管理器;(2.8)将所述线段的起点移到所述线段的终点;(2.9)返回步骤(2.2)继续。3、优选的,如2所述的方法,其中所述用线段更新拓扑数据集的步骤包括(3.1)定义一结点表;(3.2)用所述线段打断所述GIS拓扑数据集中该线段的相交弧段,并将所有交点处的结点加入所述结点表;(3.3)对所述结点表中的结点,按到所述线段起点的距离从小到大排序;(3.4)唯一化所述结点表;'(3.5)检查所述结点表,如果所述结点表为空,则进一步处理的步骤包括(3.5.1)检查所述结点表的第一个结点与所述线段的起点是否重合,如果不重合,则在所述线段的起点位置创建一结点,并将该结点插入所述结点表的表首;(3.5.2)检查所述结点表的最后一个结点与所述线段的终点是否重合,如果不重合,则在所述线段的终点位置创建一结点,并将该结点插入所述结点表的表尾;(3.6)否则,如果所述结点表不为空,则在所述线段的起点和终点位置分别创建一结点,并将它们插入所述结点表;(3.7)对于所述结点表中的每一前后结点对,连接其中的结点创建一弧段,并重构所述弧段的左、右区域。4、优选的,如l所述的方法,其中所述编辑方式还包括移动拓扑对象,所述移动拓扑对象的步骤包括(4.1)输入一向量以表示移动的方向和距离;(4.2)将所述拓扑对象沿所述向量方向移动一段距离,该段距离的长度与所述向量长度相等;(4.3)进行拓扑检查,如果所述拓扑对象的关联弧段的左、右区域与移动前不同或出现了拓扑错误,则将所述目标恢复到原始位置,并终止处理;(4.4)开始一编辑事务;(4.5)将关于对所述拓扑对象的更新操作的描述数据保存到所述编辑事务;(4.6)将所述编辑事务加入所述事务管理器。5、优选的,如2所述的方法,其中所述生成编辑事务的方法是在所述编辑事务开始之后到结東之前,如果所述拓扑数据集中有拓扑对象将要被更新,则将关于对所述拓扑对象的更新操作的描述数据保存到所述编辑事务。6、优选的,如4或5所述的方法,其中所述将关于对拓扑对象的更新操作的描述数据保存到编辑事务的方法包括(6.1)创建一更新事件,所述更新事件包括一个对象类型标识、一个对象ID、一个更新操作类型标识和一个用于保存操作数据的结构;(6.2)根据所述拓扑对象的类型、ID和更新操作类型填充所述更新事件;(6.3)将所述更新事件加入到所述编辑事务中。7、优选的,如l所述的方法,其中所述编辑方式还包括撤消操作,所述撤消操作'的方法包括'(7.1)从其中所述事务管理器中获取前一个编辑事务;(7.2)如果所述编辑事务存在,则进一步处理的步骤包括(7.2.1)将所述事务管理器的当前插入位置前移一位;(7.2.2)回滚所述编辑事务。8、优选的,如l所述的方法,其中所述编辑方法还包括恢复操作,所述恢复操作的方法包括(8.1)从其中所述事务管理器中获取后一个编辑事务;(8.2)如果所述编辑事务存在,则进一步处理的步骤包括(8.2.1)将所述事务管理器的当前插入位置后移一位;(8.2.2)回滚所述编辑事务。9、优选的,如7或8所述的方法,其中所述回滚编辑事务的步骤包括(9.1)创建一计数器,并将其初始值设为所述编辑事务的事件个数;(9.2)从所述编辑事务中取出与所述计数器的值相应位置上的更新事件;(9.3)如果所述更新事件存在,则进一步处理的步骤包括(9.3.1)依据所述更新事件的对象类型标识和对象ID,从拓扑数据集中査找相应的拓扑对象;(9.3.2)如果所述拓扑对象不存在,则创建所述拓扑对象,其类型和ID与所述更新事件的对象类型标识和对象ID—致;(9.3.3)按所述更新事件标识的更新操作类型,利用所述更新事件记录的操作数据,反向更新所述拓扑对象,并根据所述拓扑对象的类型、ID和所述反向更新操作类型重新填充所述更新事件;(9.3.4)将所述第一计数器的值减1;(9.3.5)返回步骤(9.2)继续;(9.4)将所述编辑事务的事件列表反向排序。与现有技术相比,本发明具有以下优点首先,本发明提供了一种交互式地创建GIS拓扑数据集的方法,该方法以交互式地输入坐标点生成线段的方式向GIS拓扑数据集中追加拓扑对象来创建拓扑数据集,克服了传统方法中无法通过交互式地输入坐标点直接创建拓扑数据集的缺陷,提高了操作结果的可见性,也提高了GIS拓扑数据集创建的工作效率。'其次,本发明还提供了一种通过交互式地移动弧段或结点来修改GIS拓扑数据集的方法,该方法不仅能够实现GIS拓扑数据集中的弧段或结点对象的移动操作,同时还通过加入检查机制,在接收移动操作结果之前,先检查所述移动操作是否导致了拓扑对象之间的拓扑关系变化或拓扑错误,保证了移动操作的安全性。另外,本发明还通过引入事务处理机制,实现了撤消、恢复操作,用于当在拓扑数据编辑处理过程中发现编辑结果与预期不符或需要回放之前的数据状态时,撤消先前的编辑操作或恢复先前撤消的编辑操作,提高了GIS拓扑数据最后,本发明在实现创建GIS拓扑数据集操作的撤消、恢复方法时,以输入线段对所述GIS拓扑数据集进行的更新处理为单位生成编辑事务,并以此为单位响应用户的撤消、恢复命令,进一步提高了编辑过程的安全性、交互性。图1示出了本发明的实施例的一个GIS拓扑数据集图形实例;图2示出了图1所示的GIS拓扑数据集存储结构;图3示出了根据本发明的实施例中用于实现GIS拓朴数据集的UML模型;图4示出了本发明的实施例中用于实现编辑事务管理器的UML模型;图5示出了根据本发明的实施例的交互式地编辑GIS拓扑数据集的方法流程;图6示出了根据本发明的实施例的用于交互式地创建GIS拓扑数据集的方法流程图7示出了根据本发明的实施例的用线段更新GIS拓扑数据集的方法流程图8示出了根据本发明的实施例的利用结点表中的前后结点对创建新弧段的处理方法流程;图9示出了根据本发明的实施例的用于移动拓扑对象的处理方法流程;图IO示出了根据本发明的实施例的生成编辑事务的处理方法流程;图11示出了根据本发明的实施例的撤消操作的处理方法流程;图12示出了根据本发明的实施例的恢复操作的处理方法流程;图13示出了根据本发明的实施例的回滚编辑事务的处理方法流程。具体实施例方式下面是对本发明一个优选实施例,结合附图进行的详细说明。本优选实施例在计算机上实现,其中的GIS拓扑数据集需要首先被创建或装载到计算机上,并在显示器上显示,所述GIS拓扑数据集中由零个或多个拓扑对象组成,其中的拓扑对象类型包括结点、弧段和区域三种类型,结点是弧段相交或终止的点;弧段始于起始结点、终于终止结点,它由零个或多个点连接而成,连接成弧段的这些点称为节点;一个区域是由一个外环和零个或多个内环组成的闭合范围,一个环由一条或多条弧段连接而成。图1示出了本发明的实施例的一个GIS拓扑数据集图形实例100。该GIS拓扑数据集包括5个结点,它们是NOl、N02、N03、N04和N05;6条弧段,即AOl、A02、A03、A04、A05和A06;3个区域R01、R02和R03;图中V01V11为形成弧段的节点。为了便于相关领域的人员进一步理解本发明中所述GIS拓扑数据集,图2示出了图1所示的GIS拓扑数据集存储结构200。包括结点表201、区域表202和弧段表203。结点表201中每一行表示一个结点,该表中ID为该结点的唯一标识;弧段属性的值为与该结点关联的弧段的ID,—个结点可以有一个或多条关联弧段,其中正值表示起始端、负值表示终止端;坐标属性的值表示该结点的坐标,第一个为义坐标,第二个为y坐标。弧段表中每一行表示一条弧段,表中ID为该弧段的唯一标识;起始结点、终止结点属性值为与结点表ID属性对应的结点标识;左区域、右区域属性值为与区域表ID属性对应的区域标识,其中的空值表示对应的区域不存在;节点属性值为该弧段的结点序列,其中的空值表示对应弧段没有节点。区域表中每一行表示一个区域,表中的ID为该区域的唯一标识;弧段属性值表示围成该区域的弧段列表,该弧段列表可以分为多组,每一组表示一个环,由一个或多个弧段ID组成,其中弧段ID前的负号表示对该弧段反向,这些环中的第一个为外环,其它为内环,外环为反时针方向,内环为顺时针方向。为方便说明本发明核心内容的细节,在下面的关于本发明的实施例的描述中主要釆用了面向对象的思想及类c+十语法。在不影响本文核心内容的前提下,为方便代码阅读,下述代码中釆用的数据结构未经优化,高效的算法实现中可使用其它更高效的数据结构。为了便于相关领域的人员更明确地理解本发明中所述GIS拓扑数据集,图3示出了根据本发明的实施例中用于实现GIS拓扑数据集的UML模型300。该模型说明了根据本发明的实施例的GIS拓扑数据集的数据结构。该模型中的结点CM&类305、弧段C^/ge类306和区域C4"a类307等拓扑对象类均继承自同一基类——CTo;w(9ty'e"类303,所述6To/w(9'ert类303具有两个属性,即对象ID和最大外包矩形(w&),其中对象ID用于唯一标识每个拓扑对象,最大外包矩形MBR类型313釆用上、下、左、右四个值来近似描述拓扑对象的空间范围;C^/ge/tem类301用于描述弧段的方向或结点类型,其DIRECTION类型312数据成员A'rec"ow描述其成员弧段的方向,其取值pra/rive表示弧段正向或起始结点、/,zveHe表示弧段反向或终止结点;结点类CA^fe类305还继承了坐标点CPo/"/类304的属性x坐标和.y坐标,用于保存结点的位置,另外,结点类CNo&类305还包含一个或多个C£dge/tem类301实例,用于保存以此结点为起始结点或终止结点的弧段的信息,每个结点的C^/ge/^m类301实例按其与所述结点的连接端线段和x轴正向的夹角从小到大排序;弧段类C五dge类306具有/ra附、to、n'gZ^和/e々四个数据成员,分别为指向弧段的起始结点、终止结点、右区域和左区域的指针,另外,弧段类类306还包含零个或多个CPo/W类304实例,用于存储该弧段路径的节点序列;环类C%>ig类302包含一个或多个C^/取7^w类301实例,这些C£V/ge/fem类301实例的弧段按顺序连接形成一个闭合的环;C4"a类307包含一个或多个环类C衍"g类302实例,这些环类实例中的第一个为外环,其它为内环,外环为反时针方向,内环为顺时针方向。GIS拓扑数据集类Cro/oSw类311包含节点集CMx/eSd类308、弧段集C^^geS^类309和区域集C4aSef类310实例,分别用来管理结点、弧段或区域对象,其中的拓扑对象指针依其所指对象ID从小到大顺序排列,以便在需要时能根据对象ID釆用二分查找算法快速获取对象指针。节点集CA^feS&类308、弧段集C^/gM&类309和区域集C^e^Sd类310都包含一个空间索引GS;^a//wfer类314实例。G》a"a//mfec类314是一个用来对结点、弧段或区域对象进行空间索引的类,它能依据结点、弧段或区域对象的最大外包矩形的空间分布,按一定方式重新组织拓扑对象的指针,以便在检索拓扑对象时迅速排除特定空间范围以外的大量拓扑对象,显著提高与特定空间范围相交或特定空间范围内的拓扑对象的检索速度和效率。在本发明中,利用线段打断弧段、检查拓扑关系等,都涉及大量基于空间范围拓扑对象检索,有关处理方法将在随后的部分予以介绍。关于空间索引的具体实现,已有比较成熟的技术,本发明实施例釆用了R-树空间索引技术(爿"to"/wGw"ma":W-7h":爿i^朋鹿'c7"(fec》rMC^/reS/加WSearc/n-"g,尸raceW"gs1984爿CM/"tem加'o腿/Ow/ere"ceow尸47-57),.釆用其它空间索引技术,如四叉树、格网划分等也能实现本发明的技术效果。为了便于相关领域的技术人员理解本发明中所述编辑事务表,图4示出了本发明的实施例中用于实现编辑事务管理器的UML模型400。其中,C4rray401为数组类模板,其成员函数/n^/z用于将一数组元素插入数组的末尾;用于将一数组元素插入数组中其参数指定的位置;用于从数组中删除其参数//wfec指定的元素;/fem用于从数组中取出其参数指定元素的指针,当参数小于0或大于或等于数组中的元素总数时返回一个空指针,表示指定元素不存在。编辑事务表类C五(i"7)'朋c"面丄z'W402和编辑事务类Crra"c"ow403是C4/ra少模板类401的绑定实现,其中C7a"c"o"类403包含一个或多个C^Z/必ve",类404实例,用于保存在一个事务开始到结東期间发生的拓扑对象数据更新事件,这些事件类实例按发生的先后排序。C&^rra"c"朋丄/W类402包含一个或多个Crra"c//o类403实例,用于保存编辑事务;数据更新事件类C^Z/^w^404用于记录一个拓扑对象在一次更新中的有关信息,其数据成员包括对象类型标识06—7^e、对象标识ID、更新类型Qp—7^e和操作数据存储结构EVENTDATA408成员其中,对象类型标识为Object—Type类型406,其取值及含义见表1;更新类型C>;—2>;e为(9;era^一W;e类型405,其取值及含义见表2;操作数据存储结构成员的内容与对象类型和更新类表1<table>tableseeoriginaldocumentpage13</column></row><table>Crrawc"o"Afgr类402是本实施例用于实现响应撤消和恢复操作命令的数据结构,它包括一个用于存储编辑事务的C^^rra"c"wz丄W类407成员7>fl"c"o"ZW和一个用于指示当前插入位置的成员变量cwrre",,以及G^/Vevrrac,/ow、(7e^VexzTrawc"cw、/"seW等函数成员。其中,成员函数Ge^Vevrra"c"'顯用于从7朋c"o"丄W成员中取出当前插入位置的前一个编辑事务,艮卩访问rrawcrio"丄/W的成员函数,访问参数/"cfex设为cwrrew",如果所述前一个编辑事务存在,则返回该编辑事务的指针,并将当前插入位置前移一位,即将cwreW减少1,否则,返回空指针,表示所述前一个编辑事务不存在;G^Afe^Tra"ctow用于从rra"c^w丄W中取出当前插入位置上的编辑事务,即访问rra"c"o"丄W的成员函数"em,访问参数/"cfec设为cMm7仏如果所述编辑事务存在,则返回该编辑事务的指针,并将当前插入位置后移一位,即将cwm"Z增加l,否则,返回空指针,表示所述编辑事务不存在;成员函数/""W用于将其参数所指定的编辑事务t插入到rra"c^w丄W中,插入位置有cwreW指定,插入处理完成后,将o/mW的值增加l;成员变量o^re^的初始值为0。图5示出了根据本发明的实施例的交互式地编辑GIS拓扑数据集的方法流程500。本实施例中所述GIS拓扑数据集的实现釆用图3示出的CTo;w&Z类311,C7b/o5^类311包含节点集7VocfeS"316、弧段集五c/g^S^317和区域集爿wa&^318三个成员,分别用来管理结点、弧段或区域对象。该方法开始前需要先进行准备工作(步骤501),包括创建或装载所述GIS拓扑数据集,以及在显示器上显示所述GIS拓扑数据集。在步骤502中,为所述GIS拓扑数据集建立空间索引314,以便于快速检索与特定空间范围相交的拓扑对象或者包含在特定空间范围内的拓扑对象。在步骤503中,创建一事务管理器407,该事务管理器的数据结构为图4示出的C7)Ymc^wMgr类407,所述事务管理器用于管理所述GIS拓扑数据集编辑过程中的编辑事务,用于在发现编辑结果与预期不符或需要回放之前的数据状态时,响应用户的撤消或恢复操作。在步骤504中,选择一编辑方式编辑所述GIS拓扑数据集。所述编辑方式的选择方法,可以釆用键盘按键映射,也可以通过菜单或工具按钮命令,或者其它类似方法实现。例如如果用户按下了键盘A键,则执行创建操作;如果用户按下了键盘M键,则执行移动操作;如果用户按下了键盘D键,则执行删除操作;如果用户按下了键盘F5键,则执行撤消操作;如果用户按下了键盘F6键,则执行恢复操作等。在步骤505中,如果要终止编辑(步骤506)所述GIS拓扑数据集,则输入停止编辑命令;否则,返回步骤504继续编辑。图6示出了根据本发明的实施例的用于交互式地创建GIS拓扑数据集的方法流程图600。该方法通过交互式地输入坐标点生成线段的方式向GIS拓扑数据集中追加拓扑对象,并以输入线段对所述GIS拓扑数据集进行的更新处理为单位生成编辑事务。该方法中,在步骤601,先创建一线段乙然后,在步骤602中,输入一坐标,将所述线段Z的起点和终点移到该坐标。在步骤603中,首先检查用户命令输入,如果用户输入了结束操作命令,则结束当前创建操作(步骤604),返回主程序;否则,输入一坐标,将所述线段丄的终点移到该坐标(步骤605)。在步骤606中,检查所述线段丄的起点和终点的坐标,如果所述线段丄的起点和终点的坐标相同,则返回步骤603。否则,按以下步骤处理先定义一个编辑事务403(步骤607);然后执行步骤608,用所述线段丄更新所述GIS拓扑数据集,并生成所述编辑事务(图10);在所述GIS拓扑数据集更新完成后,将所述编辑事务加入事务管理器(步骤609);接着,将所述线段丄的起点移到所述线段的终点(步骤610),返回步骤603继续。图7示出了根据本发明的实施例的用线段更新GIS拓扑数据集的方法流程图700。其中,在步骤701中,先定义一结点表。'然后,在步骤702中,用所述线段打断所述GIS拓扑集中与所述线段相交的弧段,并将所有交点处的结点加入所述结点表,具体方法是先通过空间索引从所述GIS拓扑集中检索出与所述线段相交的弧段,逐一计算其与所述线段的交点,对于这些交点,分两种情况进行处理(1)对于在结点上的交点,直接将其加入到所述结点表;(2)对于不在结点上的交点,则在该交点位置创建一结点,并用此结点将与线段丄在此交点处相交弧段打断,同时将此新结点加入到所述结点表。在步骤703中,对所述结点表中的结点,按到所述线段起点的距离从小到大排序。在步骤704中,唯一化所述结点表,对于所述结点表中的重复出现的结点,在步骤705中,先检查所述结点表是否为空,如果所述结点表为空,则在所述线段的起点和终点位置分别创建一结点,并将它们插入所述结点表(步骤707);否则,继续检查所述结点表的第一个结点与所述线段的起点是否重合(步结点,并将该结点插入所述结点表的表尾(步骤710)。最后,在步骤711中,对于所述结点表中的每一前后结点对,连接其中的结点创建一弧段(图8),并重构所述弧段的左、右区域。在重构所述弧段的左、右区域时,先以所述弧段为起始弧段,搜索其左、右环,在判断它们是否存在,如果不存在,则将其左、右区域赋值为包含所述弧段的区域7^;否则,销毁包含所述区域i仏再用所述左环为外环重建该区域,同时所述右环为外环创建一骤706),如果不重合,则在所述线段的起点位l所述结点表的表首(步骤708);继续检查所述乡段的终点是否重合(步骤709),如果不重合,贝并将该结点插入个结点与所述线个新区域i6,再将其左、右区域分别赋值为区域Ra,Rb;关于以所述弧段为起始弧段,搜索其左、右环的方法,已有成熟算法(齐华自动建立多边形拓扑关系算法步骤的优化与改进,测绘学报,第26卷第3期,1997.08)。图8示出了根据本发明的实施例的利用结点表中的前后结点对创建新弧段的处理方法流程800。该处理方法始于步骤801,将所述结点表的结点总数保存到变量S,并初始化当前结点编号/为0;接着,从所述结点表中取出第/个结点W、第/+1个结点M+1(步骤802);然后连接结点M、创建一条新弧段(步骤803),再将当前结点编号/增加1,即设/=/+1(步骤804),再返回步骤802,如此循环直到当/大于或等于S时,返回主程序(步骤805)。图9示出了根据本发明的实施例的用于移动拓朴对象的处理方法流程900。该方法在移动拓扑对象之前先需要进行拓扑检查,以保证所述拓扑对象移动后不改变拓扑对象之间的拓扑关系,以及保证拓扑数据集中拓扑关系的正确性。在该处理方法中,先输入两个坐标以创建两个向量A和户2(步骤901和步骤902),生成位移向量M,其中M-尸2-尸,(步骤903),以表示移动的方向和距离;接着,在步骤904中,将所述拓扑对象的沿位移向量M的方向平移一段距离A该段距离的长度等于所述位移向量的长度,即d叫MI;然后,进行拓扑检查(步骤905),在检查过程中,如果发现所述拓扑对象的关联弧段的左、右区域与移动前不同或出现了拓扑错误,则将所述拓扑对象恢复到原始位置(步骤906),然后转到步骤910返回主程序;否则,继续进行以下处理首先,创建一个编辑事务403(步骤907);接着,在步骤908中,将关于对所述拓扑对象的更新操作的描述数据保存到所述编辑事务1011;最后,将所述编辑事务加入事务管理器(步骤909)。这里所述拓扑错误包括与所述拓扑对象关联的弧段存在自相交或者和其它弧段相交。图10示出了根据本发明的实施例的生成编辑事务的处理方法流程1000。该处理在一事务开始1001之后到结東1003之前进行,在一个拓扑对象需要更新之前1008,先将关于对所述拓扑对象的更新操作的描述数据保存到所述编辑事务IOII,其方法是先向事件生成模块1002发送更新对象消息1007,事件生成模块在收到消息之后,创建一更新事件404(步骤1004),接着根据所述拓扑对象的对象类型、对象ID和更新操作类型填充所述更新事件(步骤1005),所述更新事件填充的内容详见图4、表1和表2,在所述更新事件填充完成后,再将此更新事件加入到所述编辑事务中(步骤1006),之后,返回更新事件完成消息1010,更新处理1009继续进行。图11示出了根据本发明的实施例的撤消操作的处理方法流程1100。该方法用于撤消事务管理器中当前插入位置的前一个编辑事务。其中,在步骤1101,先从所述事务管理器中获取当前插入位置的前一个编辑事务。然后,在步骤1102中,判断所述编辑事务是否存在。如果所述编辑事务不存在,则转到步骤1105,直接返回主程序;否则,如果所述编辑事务存在,则继续步骤1103、11'04。在步骤1103中,将所述事务管理器的当前插入位置前移一位。在步骤1104中,回滚所述编辑事务。该方法中涉及到的有关方法详见图4及相关描述。图12示出了根据本发明的实施例的恢复操作的处理方法流程1200。该方法用于恢复事务管理器中的后一个编辑事务,即当前插入位置上的编辑事务。其中,在步骤1201中,从所述事务管理器中获取当前插入位置上的编辑事务。然后,在步骤1202中,判断所述编辑事务是否存在。如果所述编辑事务不存在,则转到步骤1205,直接返回主程序;否则,如果所述编辑事务存在,则继续步骤1203、1204。在步骤1203中,将所述事务管理器的当前插入位置后移一位。在步骤1204中,回滚所述编辑事务。该方法中涉及到的有关方法详见图4及相关描述。图13示出了根据本发明的实施例的回滚编辑事务的处理方法流程1300。其中,在步骤1301,创建一计数器,并将其初始值设为所述编辑事务的事件个数。然后,在步骤1302中,从所述编辑事务中取出与所述计数器的值相应位置上的更新事件。接着,在步骤1303中,先检查所述更新事件是否存在,如果不存在,则直接转至步骤1309;否则,先依据所述更新事件的对象类型标识和对象ID,从拓扑数据集中查找相应的拓扑对象(步骤1304),然后检查所述拓扑对象是否存在(步骤1305),如果所述不存在,则创建所述拓扑对象,并设置其类型和ID与所述更新事件的对象类型标识和对象ID—致(步骤1306)。在步骤1307中,按所述更新事件标识的更新操作类型,利用所述更新事件记录的操作数据,反向更新所述拓扑对象,并根据所述拓扑对象的类型、ID和所述反向更新类型重新填充所述更新事件。各更新操作类型的反向更新操作见表2的反向更新类型。接着,在步骤1308中,将所述第一计数器的值减少1,然后返回步骤1302继续。在步骤1309中,先将所述编辑事务的事件列表的排序反向,然后返回主程序。该方法中涉及到的有关方法详见图4及相关描述。在以上对本发明的详细介绍中,应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制权利要求1、一种交互式地编辑GIS拓扑数据集的方法,所述拓扑数据集中包括零个或多个拓扑对象,所述拓扑对象的类型包括结点、弧段和区域;所述方法在计算机上实现,所述拓扑数据集被装载并显示在所述计算机上;所述交互式地编辑GIS拓扑数据集的方法,其特征在于,它包括以下步骤(1.1)为所述拓扑数据集建立空间索引;(1.2)创建一事务管理器;(1.3)选择一编辑方式,并采用所述编辑方式编辑所述拓扑数据集;(1.4)输入停止命令以停止编辑所述拓扑数据集;或者,返回步骤(1.3)继续编辑所述拓扑数据集。2、如权利要求l所述的方法,其特征在于,其中所述编辑方式包括创建操作,所述创建搡作的步骤包括(2.1)创建一线段;(2.2)输入一坐标,将所述线段的起点和终点移到该坐标;(2.3)输入结東命令以结束当前创建操作;或者,输入一坐标,并将所述线段的终点移到该坐标;(2.4)如果所述线段的起点和终点重合,则返回步骤(2.3)继续;(2.5)开始一编辑事务;(2.6)用所述线段更新所述拓扑数据集,并生成所述编辑事务;(2.7)将所述编辑事务加入所述事务管理器;(2.8)将所述线段的起点移到所述线段的终点;(2.9)返回步骤(2.2)继续。3、如权利要求2所述的方法,其特征在于,其中所述用线段更新拓扑数据集的步骤包括(3.1)定义一结点表;(3.2)用所述线段打断所述GIS拓扑数据集中该线段的相交弧段,并将所有交点处的结点加入所述结点表;(33)对所述结点表中的结点,按到所述线段起点的距离从小到大排序;(3.4)唯一化所述结点表;(3.5)检查所述结点表,如果所述结点表为空,则进一步处理的步骤包括(3.5.1)检查所述结点表的第一个结点与所述线段的起点是否重合,如果不重合,则在所述线段的起点位置创建一结点,并将该结点插入所述结点表的表首;(3.5.2)检查所述结点表的最后一个结点与所述线段的终点是否重合,如果不重合,则在所述线段的终点位置创建一结点,并将该结点插入所述结点表的表尾;(3.6)否则,如果所述结点表不为空,则在所述线段的起点和终点位置分别创建一结点,并将它们插入所述结点表;(3.7)对于所述结点表中的每一前后结点对,连接其中的结点创建一弧段,并重构所述弧段的左、右区域。4、如权利要求l所述的方法,其特征在于,其中所述编辑方式还包括移动拓扑对象,所述移动拓扑对象的步骤包括'(4.1)输入一向量以表示移动的方向和距离;(4.2)将所述拓扑对象沿所述向量方向移动一段距离,该段距离的长度与所述向量长度相等;(4.3)进行拓扑检査,如果所述拓扑对象的关联弧段的左、右区域与移动前不同或出现了拓扑错误,则将^f述目标恢复到原始位置,并终止处理;(4.4)开始一编辑事务;(4.5)将关于对所述拓扑对象的更新操作的描述数据保存到所述编辑事务;(4.6)将所述编辑事务加入所述事务管理器。5、如权利要求2所述的方法,其特征在于,其中所述生成编辑事务的方法是在所述编辑事务开始之后到结束之前,如果所述拓扑数据集中有拓扑对象将要被更新,则将关于对所述拓扑对象的更新操作的描述数据保存到所述编辑事务。6、如权利要求4或5所述的方法,其特征在于,其中所述将关于对拓扑对象的更新操作的描述数据保存到编辑事务的方法包括(6.1)创建一更新事件,所述更新事件包括一个对象类型标识、一个对象ID、一个更新操作类型标识和一个用于保存操作数据的结构;(6.2)根据所述拓扑对象的类型、ID和更新操作类型填充所述更新事件;(6.3)将所述更新事件加入到所述编辑事务中。7、如权利要求l所述的方法,其特征在于,其中所述编辑方式还包括撤消操作,所述撤消操作的方法包括(7.1)从其中所述事务管理器中获取前一个编辑事务;(7.2)如果所述编辑事务存在,则进一步处理的步骤包括(7.2.1)将所述事务管理器的当前插入位置前移一位;(7.2.2)回滚所述编辑事务。8、如权利要求l所述的方法,其特征在于,其中所述编辑方法还包括恢复操作,所述恢复操作的方法包括(8.1)从其中所述事务管理器中获取后一个编辑事务;(8.2)如果所述编辑事务存在,则进一步处理的步骤包括(8.2.1)将所述事务管理器的当前插入位置后移一位;(8.2.2)回滚所述编辑事务。9、如权利要求7或8所述的方法,其特征在于,其中所述回滚编辑事务的步骤包括''(9.1)创建一计数器,并将其初始值设为所述编辑事务的事件个数;(9.2)从所述编辑事务中取出与所述计数器的值相应位置上的更新事件;(9.3)如果所述更新事件存在,则进一步处理的步骤包括.(9.3.1)依据所述更新事件的对象类型标识和对象ID,从拓扑数据集中查找相应的拓扑对象;(9.3.2)如果所述拓扑对象不存在,则创建所述拓扑对象,其类型和ID与所述更新事件的对象类型标识和对象ID—致;(9.3.3)按所述更新事件标识的更新操作类型,利用所述更新事件记录的操作数据,反向更新所述拓扑对象,并根据所述拓扑对象的类型、ID和所述反向更新操作类型重新填充所述更新事件;(9.3.4)将所述第一计数器的值减1;(9.3.5)返回步骤(9.2)继续;(9.4)将所述编辑事务的事件列表的排序反向。全文摘要一种用于实现交互式地编辑GIS拓扑数据集的方法,能够以交互式地输入坐标点生成线段的方式向GIS拓扑数据集中追加拓扑对象来创建拓扑数据集,也能实现通过交互式地移动弧段或结点来修改拓扑数据集,还能通过加入事务机制,实现撤消、恢复操作,用于当在拓扑数据编辑处理过程中发现编辑结果与预期不符或需要回放之前的数据状态时,撤消先前的编辑操作或恢复先前撤消的编辑操作,以达到提高GIS拓扑数据集编辑的安全性、可交互性和工作效率的目的。文档编号G06F17/30GK101359337SQ20081014305公开日2009年2月4日申请日期2008年10月6日优先权日2008年10月6日发明者邱永红申请人:邱永红
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1