发明内容
为了克服现有技术的不足,本发明提供一种基于分层次边界拓扑搜索模型的栅格转矢量并行系统。
一种基于分层次边界拓扑搜索模型的栅格转矢量并行系统,对遥感影像数据进行栅格数据矢量化,将遥感影像上具有相同属性内容的像元,转化为能够用包含有:不同面积、不同周长、不同属性、不同形状来表示的矢量图形元素,并且也能够表现出这些不同矢量图形元素之间,所存在的相邻、包容和被包容的空间拓扑关系。并且转化后的矢量图形元素属性与遥感影像上所对应的像元,在空间位置上具有完全相同的一一对应关系。
一种基于分层次边界拓扑搜索模型的栅格转矢量并行系统,通过分层次的边界点拓扑搜索分析计算模型,将栅格数据像元间的拓扑关系简化,在模型计算中自动生成包含有坐标位置信息的边界节点,并且这些边界节点数据还具有他从哪里开始、到哪里结束的边界走向的指向性信息;在多边形搜索中,通过边界节点数据的指向性,可以十分明确的定位与之相连的边界节点的确切位置信息,将这些具有特定关系的边界节点全部连接起来,就自动形成一个封闭多边形,并且通过判断封闭多边形的走向,如果是顺时针他就是一个独立多边形,他可能包含有岛多边形;如果是逆时针他就一定是被某个独立多边形所包容的岛多边形。而不可能出现多边形相互间的重叠、相交;相邻、包容拓扑关系错误和不完整情况,所有本发明具有方法简洁、生成的边界节点数据具有明确的指向性和唯一性的特定拓扑关系。
而且本发明的另外一个特点是,可以对栅格数据中的某些指定的像元属性值或内容,进行栅格转矢量计算。而不存在现有栅格转矢量方法中,只能一次将栅格数据全部转化为矢量数据的强制性限制。因此本发明可以极大的提高转化效率和应用领域。
本发明的栅格转矢量方法,只需要对需要转换的图像数据加载一次,就能够自动完成整个转换过程,不需要进行任何转换后的后期处理工作,并且转换后不可能出现多边形相互间重叠、相交;相邻、包容拓扑关系错误和不完整的情况。
此本发明特别适合于超大数据量、栅格数据中像元相邻关系极其复杂的栅格转矢量计算。该方法提高在森林资源监测、湿地资源监测、土地资源监测等各种资源在分布范围、资源变化、预测分析等方面的数据处理效率;特别是需要对监测目标进行实时跟踪处理的自然灾害在发生、发展情况中的监测分析预警系统;及目标识别、目标制导等军事应用领域中的需要进行栅格转矢量的计算应用;并且该方法在转化后的矢量数据中,不存在转换误差、不需要进行任何后期处理操作,故该方法具有计算模型简单、转换效率高、速度快,自动化程度高和可有选择性的将栅格数据转化为矢量数据的突出特点。
一种基于分层次边界拓扑搜索模型的栅格转矢量并行系统,包括数据预处理流程器、栅格转矢量流程器、创建矢量数据流程器、创建矢量文件流程器;
数据预处理流程;
在获取遥感影像数据后,为了实现方法的简单化、避免在计算中需要对栅格数据中的四个边界上(第一行、最后一行、第一列和最后一列)的数据进行特殊计算,减少计算中的条件分支判断,提高运算效率,达到用一个统一直观的处理流程进行计算的目的,对栅格数据进行了边界扩展处理,即进行数据预处理操作。
数据预处理的目的是在将原栅格数据的四周添加一圈新的像元数据。
对于所要添加的像元数据,要求是该数据的像元值或属性内容,要与原栅格数据中任何一个的像元值或属性内容都不相同。
数据预处理的第二个目的是根据像元值或属性内容的分类,设置栅格转矢量的条件。是将栅格数据全部转换为矢量数据;还是只转换某些指定像元值或属性内容中某些类型的像元,即设置栅格转矢量所依据的基本条件。
在数据预处理结束后,启动栅格转矢量流程器,该流程是一个可以同时进行并行计算的流程,所需要启动的流程的个数,将根据所设置的栅格转矢量条件中的转换类型数量来确定。
栅格转矢量流程;
在栅格转矢量流程中,具体到某一个流程将的操作是:根据栅格转矢量条件中的具体转换类型,对扩展后的栅格数据,进行边界拓扑搜索模型计算,对计算中搜索到的边界点(称为节点),压入到在方法中预先设置的先入先出堆栈中,同时启动多边形搜索调度与控制流程,同步对边界点(称为节点)数据进行多边形搜索计算;多边形搜索计算也是一个同时对多个多边形,进行搜索并行计算的过程,直到将压入堆栈的边界点(称为节点)全部生成多边形矢量数据时结束此流程,即完成栅格转矢量的多边形搜索工作。
创建矢量数据流程;
在栅格转矢量结束后,启动创建多边形矢量数据流程。创建多边形矢量数据的目的是,为多边形数据结构中的每个岛多边形,找到一个能够包容他的最小独立多边形,找到这个独立多边形后,将岛多边形的坐标点链表中的坐标数据,添加到包容他的独立多边形的坐标点链表的末端,修改独立多边形的面积为:S=S-SD,S为独立多边形面积,SD为岛多边形面积;并给独立多边形的岛多边形数量的属性值+1,他的初始值为0。
重复上述操作直到为所有岛多边形找到包容他的独立多边形为止。
创建矢量文件流程;
在创建矢量文件流程中,首先根据栅格数据所使用的坐标系信息,创建矢量文件和坐标系,然后根据多边形矢量数据中独立多边形的数量,建立循环搜索过程,每次读取一个多边形矢量数量,并按照多边形矢量数据的数据结构写入到矢量文件中,当将多边形矢量数据中的所有独立多边形矢量数据全部写入到矢量文件中时,完成创建矢量文件流程器,结束栅格转矢量流程器,结束对一个栅格文件的转换工作。
本发明的优点是对经过预处理(指数计算、阈值分割、分类等计算处理)的遥感影像进行矢量化,将遥感影像上具有相同属性内容的像元,转化为能够用包含有:不同面积、不同周长、不同属性、不同形状来表示的矢量图形元素,并且也能够表现出这些不同矢量图形元素之间,所存在的相邻、包容和被包容的空间拓扑关系。通过转化后的矢量图形,可以更方便的对图形元素的属性信息,分析他在空间位置上所发生的面积变化、空间位置变化、属性信息间的相互转化和演替过程进行监测和预测,为进行缓冲区分析、叠加分析(叠加求交、叠加求和)等与空间分析计算相关联的地理信息处理能力提供了可能,增加和扩大了遥感影像数据在地理信息应用领域的范围,也为地理信息应用领域提供了更多的基础数据。
本申请技术通过分层次边界拓扑搜索模型,在模型计算中自动形成带有边界节点坐标和节点方向的边界节点,节点的方向性是进行闭合多边形搜索的限制条件,同时也是构造多边形之间相邻、包容和被包容拓扑关系的基础。在栅格转矢量过程中,不需要进行任何转换后的后期处理工作,就能够自动完成整个转换过程;同时由于该方法采用分层次边界拓扑搜索模型的计算方法,在转换后不可能出现多边形相互间重叠、相交;相邻、包容拓扑关系错误和不完整情况。
因此本发明在处理其超大数据量、拓扑关系极其复杂的遥感影像数据时,更能够显示出该发明的转换效率和高速性能。该技术的应用可以提高在大面积、大范围的各类资源调查中的效率和自动化程度,及时准确地的获取各种资源信息,从而达到节省人力物力的目的。
实施例1:如图1、图2、图3、图4、图5、图6、图7、图8所示,一种基于分层次边界拓扑搜索模型的栅格转矢量并行系统,充分利用计算机技术在网格计算、云计算、并行计算等方面高速发展所取得的技术成果,通过采用多层次的边界拓扑搜索模型进行并行计算,自动生成带有边界节点坐标和节点方向的边界节点,通过对节点的搜索,构造出包含有多边形之间的相邻、包容和被包容等拓扑关系的矢量文件。在栅格转矢量过程中,只需要对需要转换的图像数据加载一次,就能够自动完成整个转换过程;不需要进行任何转换后的后期处理工作,并且在转换后不可能出现多边形相互间重叠、相交;相邻、包容拓扑关系错误和不完整的情况。
因此本申请技术在处理数据量庞大、拓扑关系极其复杂的遥感影像数据时,更加能够显示出该专利技术的转换效率和高速性能。
一种基于分层次边界拓扑搜索模型的栅格转矢量并行系统。
一、数据预处理流程步骤:
在本发明中,对栅格数据结构的描述如下:
用N表示该数据的最大行数,第一行为0,最后一行为N,具体到某一行时用n表示。
用M表示该数据的最大列数,第一列为0,最后一列为M,具体到某一列时用m表示。
在获取遥感影像数据后,为了实现方法的简单化、避免在计算中需要对栅格数据中的四个边界上(第一行、最后一行、第一列和最后一列)的数据进行特殊计算,减少计算中的条件分支判断,提高运算效率,达到用一个统一直观的处理流程进行计算的目的,对栅格数据进行了边界扩展处理,即进行数据预处理操作。
数据预处理的目的是在将原栅格数据的四周添加一圈新的像元数据。
对于所要添加的像元数据,要求是该数据的像元值或属性内容,要与原栅格数据中任何一个的像元值或属性内容都不相同。
数据预处理的第二个目的是根据像元值或属性内容的分类,设置栅格转矢量的条件。是将栅格数据全部转换为矢量数据;还是只转换某些指定像元值或属性内容中某些类型的像元,即设置栅格转矢量所依据的基本条件。
在边界搜索流程中,将根据所设置的栅格转矢量条件,只对满足转换条件的栅格数据进行转换。栅格转矢量条件,用数组ZHTJ(i)表示,需要进行转换的属性类型数量,用ZHLX_SL表示。
数据预处理流程见图3;
如原栅格数据为18行,13列,包含有9种属性类别,原栅格数据见表1所示;扩展处理后的栅格数据为20行,15列,包含有10种属性类别,扩展后的栅格数据见表2所示。
在方法中规定采用将原像元属性类别的最大数值+1所得到的属性值,作为扩展数据的属性值,添加到原栅格数据四周,以保证所添加的扩展数据与原栅格四周边界上数据属性值的完全不同。或者用原栅格数据的像元的最大值+50的方式添加扩展数据。数据扩展后的栅格数据包含有10中属性种类,比原数据增加了一种属性类型。
表1原栅格数据示例,N*M=18*13
1 |
1 |
1 |
3 |
3 |
4 |
4 |
3 |
3 |
5 |
5 |
2 |
2 |
1 |
1 |
2 |
3 |
3 |
3 |
4 |
4 |
4 |
5 |
1 |
5 |
2 |
1 |
2 |
2 |
2 |
3 |
3 |
3 |
4 |
4 |
5 |
1 |
5 |
5 |
5 |
2 |
2 |
3 |
3 |
3 |
3 |
5 |
5 |
5 |
5 |
5 |
5 |
5 |
3 |
3 |
3 |
3 |
3 |
7 |
7 |
5 |
5 |
5 |
5 |
6 |
5 |
5 |
5 |
3 |
3 |
7 |
7 |
7 |
5 |
8 |
5 |
6 |
6 |
5 |
5 |
4 |
4 |
4 |
7 |
7 |
7 |
8 |
8 |
6 |
6 |
6 |
4 |
4 |
4 |
4 |
4 |
6 |
7 |
7 |
7 |
7 |
8 |
4 |
6 |
9 |
4 |
4 |
4 |
6 |
6 |
6 |
7 |
8 |
8 |
8 |
4 |
4 |
9 |
9 |
6 |
6 |
6 |
6 |
6 |
9 |
9 |
8 |
8 |
4 |
4 |
9 |
9 |
6 |
6 |
9 |
6 |
9 |
9 |
9 |
8 |
4 |
4 |
5 |
5 |
9 |
6 |
6 |
9 |
9 |
9 |
9 |
9 |
9 |
7 |
7 |
5 |
5 |
9 |
9 |
6 |
9 |
1 |
1 |
1 |
1 |
9 |
7 |
5 |
5 |
4 |
9 |
9 |
9 |
9 |
1 |
1 |
3 |
1 |
9 |
7 |
7 |
5 |
4 |
9 |
9 |
1 |
1 |
1 |
3 |
3 |
1 |
1 |
9 |
5 |
5 |
4 |
6 |
9 |
9 |
1 |
3 |
3 |
3 |
3 |
3 |
1 |
9 |
9 |
2 |
8 |
9 |
9 |
1 |
1 |
1 |
1 |
1 |
3 |
1 |
9 |
9 |
2 |
8 |
8 |
8 |
9 |
9 |
9 |
9 |
1 |
1 |
1 |
9 |
5 |
表2扩展后栅格数据N*M=20*15
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
1 |
1 |
1 |
3 |
3 |
4 |
4 |
3 |
3 |
5 |
5 |
2 |
2 |
10 |
10 |
1 |
1 |
2 |
3 |
3 |
3 |
4 |
4 |
4 |
5 |
1 |
5 |
2 |
10 |
10 |
1 |
2 |
2 |
2 |
3 |
3 |
3 |
4 |
4 |
5 |
1 |
5 |
5 |
10 |
10 |
5 |
2 |
2 |
3 |
3 |
3 |
3 |
5 |
5 |
5 |
5 |
5 |
5 |
10 |
10 |
5 |
3 |
3 |
3 |
3 |
3 |
7 |
7 |
5 |
5 |
5 |
5 |
6 |
10 |
10 |
5 |
5 |
5 |
3 |
3 |
7 |
7 |
7 |
5 |
8 |
5 |
6 |
6 |
10 |
10 |
5 |
5 |
4 |
4 |
4 |
7 |
7 |
7 |
8 |
8 |
6 |
6 |
6 |
10 |
10 |
4 |
4 |
4 |
4 |
4 |
6 |
7 |
7 |
7 |
7 |
8 |
4 |
6 |
10 |
10 |
9 |
4 |
4 |
4 |
6 |
6 |
6 |
7 |
8 |
8 |
8 |
4 |
4 |
10 |
10 |
9 |
9 |
6 |
6 |
6 |
6 |
6 |
9 |
9 |
8 |
8 |
4 |
4 |
10 |
10 |
9 |
9 |
6 |
6 |
9 |
6 |
9 |
9 |
9 |
8 |
4 |
4 |
5 |
10 |
10 |
5 |
9 |
6 |
6 |
9 |
9 |
9 |
9 |
9 |
9 |
7 |
7 |
5 |
10 |
10 |
5 |
9 |
9 |
6 |
9 |
1 |
1 |
1 |
1 |
9 |
7 |
5 |
5 |
10 |
10 |
4 |
9 |
9 |
9 |
9 |
1 |
1 |
3 |
1 |
9 |
7 |
7 |
5 |
10 |
10 |
4 |
9 |
9 |
1 |
1 |
1 |
3 |
3 |
1 |
1 |
9 |
5 |
5 |
10 |
10 |
4 |
6 |
9 |
9 |
1 |
3 |
3 |
3 |
3 |
3 |
1 |
9 |
9 |
10 |
10 |
2 |
8 |
9 |
9 |
1 |
1 |
1 |
1 |
1 |
3 |
1 |
9 |
9 |
10 |
10 |
2 |
8 |
8 |
8 |
9 |
9 |
9 |
9 |
1 |
1 |
1 |
9 |
5 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
10 |
二、栅格转矢量流程步骤;
栅格转矢量流程器是依据边界拓扑搜索模型,一次只针对栅格数据中某一个像元属性类型或像元值(数据预处理流程器中的设置栅格转矢量条件中的一个具体参数),对栅格数据进行遍历搜索的过程,对在搜索中得到的节点(边界点)数据,供多边形搜索时使用。
而在多边形搜索时:是从创建一个多边形数据结构开始的,通过遍历节点数据间的连接关系,找出那些节点间相互连接符合特定条件的方向要求和坐标点位置要求的节点,并且这些节点通过相互间的连接,形成一个首尾相连的闭合多边形,将这个闭合多边形作为多边形数据结构中的一条多边形记录进行保存。重复上述操作,直到将所有在边界拓扑搜索模型计算中搜索到的节点数据,全部搜索成一个个封闭多边形,作为一条条多边形记录,添加到多边形数据结构中,完成一个分层次栅格转矢量的多边形搜索过程。
分层次边界拓扑搜索模型:
栅格转矢量方法研究的问题是,如果有一块像元类型或像元值(或像元值在一定范围内)完全相同的区域(可以是任意形状),那么与该区域相邻的所有其他像元,其像元类型或像元值(或像元值不在那个范围内的像元)就一定与这块区域不同;如何用一条矢量线,将这个区域处于边缘位置上像元,和与之相邻的所有像元分割开来,并且这条矢量线还要将这块区域完全包围起来,形成一个封闭的多边形;并且在这个多边形中还不能出现线段交叉、重复等情况,同时这个多边形还应该具有完整的拓扑关系,如包容、被包容等拓扑关系。
针对栅格转矢量问题,本申请提出了基于分层次边界拓扑搜索模型的栅格转矢量方法,含有以下步骤;
栅格数据中的一个像元就是对应于地表上的一个二维正方形区域(也有矩形的),该矩形的四条边,就是此像元与其他相邻像元的分界线;对于一个由3*3像元组成的像元矩阵来讲,处于矩阵中心的像元,称之为中心点像元,在中心点像元周围还分布有八个像元。
从拓扑关系上来讲,与中心点像元共同拥有分界线的相邻像元,只有位于中心点像元的上、下、左、右四个像元;这四个像元称为(边)相邻像元。与此中心点像元相关的像元,还有位于正方形四个顶点上的四个像元,这四个像元与中心点像元共同拥有正方形的四个顶点坐标,这四个像元称为点相邻像元。
从中心点像元与相邻像元的关系中可以看出,在进行栅格转矢量时,既要考虑(边)相邻像元之间共用分界线的问题,还要考虑点相邻像元可能出现的不同情况;一个中心点像元与周围八个像元间所构成的排列组合情况,将会是一个非常庞大和极其复杂的相邻关系组合,这也是现有栅格转矢量技术所共同面临的一个共同技术难题。
如果在栅格数据中,如果有一块像元类型或像元值(或像元值在一定范围内)完全相同的区域(可以是任意形状),将这个区域的像元当作一个独立数据层;那么与该区域相邻的所有像元,他的像元类型或像元值(或像元值不在那个范围内的像元)就一定不同,将所有这些相邻像元都当作一个相邻数据层;依据上述分层次处理的技术路线,通过将独立数据层与相邻数据层间的分界线都提取出来,连接成一个个封闭多边形,达到栅格转矢量的目的,是本申请的一个核心技术,即分层次栅格转矢量。
由于采用分层次的栅格转矢量方法,使得该专利具有一次只对一种或几种像元类型或像元值(或像元值在一定范围内)进行栅格到矢量的转换,突破了一次只能对栅格数据进行全部转换的传统限制,他是本发明的一个突出特点。
采用分层次的进行栅格转矢量的优点有:一、彻底的简化了栅格数据像元间的相邻关系;二、避免了矢量化后出现的多边形相互交叉、重复、空洞、悬挂线等拓扑关系不完整和错误的情况;三、该方法特别适合于超大数据量、栅格数据像元关系极其复杂的栅格数据处理;四、可以对栅格数据中的某些指定的属性类型进行栅格转矢量操作,而不需要全部进行矢量化,可以极大的提高他的应用领域和转化效率;五、由于分层次后栅格数据拓扑关系简单,方法简单清楚,特别适合于使用硬件电路技术实现栅格转矢量;及使用并行计算、集群计算、网格计算、云计算等高性能计算平台中实现栅格转矢量技术。
针对如何将独立数据层与相邻数据层间的分界线提取出来的问题,本发明提出了边界拓扑搜索模型方法,该方法采用3*3像元矩阵进行描述,按照顺时针方向从与中心点像元上部相邻的像元开始、依次向右侧相邻像元、下部相邻像元和左侧相邻像元的顺序,分别将中心点像元与四个相邻像元进行比较计算,看他们间的属性值或像元值是否相同,来决定中心点像元与四个相邻像元间是否存在分界线,如果不同,表示有分界线,用1来表示,;如果相同,表示没有分界线,用0来表示。3*3像元矩阵定义见表3所示。
表33*3像元矩阵定义
0a |
0b |
0c |
1a |
1b |
1c |
2a |
2b |
2c |
为了便于描述方法,对3*3矩阵中的行列像元数据进行如下定义:
第一行像元数据分别定义为:0a,0b,0c;第二行为1a,1b,1c;第三行为2a,2b,2c。
第一列像元数据分别定义为:0a,1a,2a;第二行为0b,1b,2b;第三行为0c,1c,2c。
在3*3像元矩阵的中心位置上的像元,称为中心点像元1b,其像元位置在矩阵的中心位置(1,1)。相对于该中心点像元,矩阵的第一行位于中心点上方,称为上部;矩阵的第三行位于中心点下方,称为下部;矩阵的第一列位于中心点的左侧,称为左侧;矩阵的第三列位于中心点的右侧,称为右侧。
与中心点像元相邻的四个像元,按照顺时针顺序计算的四个像元分别为:0b、1c、2b和1a。
将中心点像元与四个相邻像元的比较计算结果,组成一个四位编码,即节点编码;用来描述中心点像元与四个相邻像元间分界线的分布情况。边界拓扑搜索模型计算产生的节点编码表见表4所示。
表4边界拓扑搜索模型计算产生的节点编码表
从表3中可以看到,节点共有16种类型,节点编码从0000到1111;
节点编码为0000时,表示中心点像元与四个边相邻像元的相同,说明此像元不是边界节点;节点编码为1111时,中心点像元与四个边相邻像元的都不相同,说明此像元是一个独立节点,此像元可以独自形成一个封闭多边形;而节点编码从0001到1110的所有节点,是从包含一条边界线到三条边界线的一个排列组合情况。
虽然节点类型有很多种(15种),但归纳起来其开始方向和结束方向相对于节点来说,只有上部向右型、右侧向下型、下部向左型、左侧向上型顺时针排列的四种类型。
结束方向与相邻节点的开始方向,节点间相互连接的指向性见图4,图5,图6,图7所示。
由于边界节点是采用具有指向性的边界拓扑搜索计算模型计算产生的,所以一个节点的构成是由:节点的开始方向、结束方向、和几个坐标点组成的一条具有指向性的线段;并且在节点间相互连接时,也必须符合指向性所限定的两个方向中的某一个、才能将两个节点连接起来。同时在节点间相互连接时,可以是以结束方向连接开始方向,也可以是以开始方向连接结束方向的一个双向连接指向性,节点的双向连接指向性保证了独立数据层的所有边界节点能够形成一个首尾衔接的封闭多边形。
从图4,图5,图6,图7中可以发现,一个节点的结束方向,正好指向与之相连节点的开始方向;而节点的结束点坐标,也是与之相连节点的开始点坐标,这个坐标点是两个节点间相互连接的一个共用坐标点。
节点间的相互连接,在连接方向和连接点(坐标点)的唯一性,保证了栅格数据和矢量数据在空间位置对应关系上的精准度和相互间的可还原性。同时他也保证了由这些节点形成的多边形,其拓扑关系具有完整性,不会在多边形中出现重叠、相交等线段连接错误;同样在拓扑关系上也不会出现相交、重叠、包容等错误,及拓扑关系不完整的情况,为多边形搜索和创建多边形拓扑关系奠定了基础。同时通过节点的指向性信息,在对多边形进行搜索时,可以极大的提高运算速度和搜索效率。
节点坐标(x,y),采用栅格数据中的一个的像元相对大小来表示,这样在进行多边形搜索时会更方便一些,因为他们都是一个像元大小的整倍数。
中心点像元b1(n,m)的四个顶点坐标按照边界拓扑搜索模型要求按顺时针顺序排列。
1、左上角坐标:n,m;2、右上角坐标:n+1,m;
3、右下角坐标:n+1,m+1;4、左下角坐标:n,m+1。
节点(n,m)的结束方向类型与相邻节点的开始方向连接类型及位置坐标关系如下:
上部向右型:
节点1000的结束点坐标为(n,m+1),与节点1000相连接的节点开始方向有1000或0001;连接节点的开始坐标为(n,m+1);
右侧向下型:
节点0100的结束点坐标为(n+1,m+1),0100相连接的节点开始方向有0100或1000;连接节点的开始坐标为(n+1,m+1);
下部向左型:
节点0010的结束点坐标为(n,m+1),0010相连接的节点开始方向有0010或0100;连接节点的开始坐标为(n,m+1);
左侧向上型:
节点0001的结束点坐标为(n,m),0001相连接的节点开始方向有0001或0010;连接节点的开始坐标为(n,m);
采用边界拓扑搜索模型进行边界节点计算时,需要将栅格数据中的每个像元,都作为中心点像元,同时读取中心点像元和四个相邻像元进行比较计算,确认每个中心点像元是否为边界节点,对栅格数据进行全遍历的一个搜索计算过程。
这也是要求对栅格数据进行扩展的根本目的,扩展后的栅格数据在1,1位置上的像元,对应于原栅格数据0,0位置上的像元;而扩展后的栅格数据N-1,M-1位置上的像元,就是原栅格数据N,M位置上的像元;在对扩展后的栅格数据进行全遍历时,从1,1位置像元开始到N-1,M-1位置像元结束,就达到了对原栅格数据的全遍历,并且原栅格数据处于四周边缘位置上的像元,也全部成为了中心点像元;在依据边界拓扑搜索模型进行边界节点计算时,就不需要对处于四周边界上是像元进行条件判别和分支处理,达到简化方法和提高效率的目的。
栅格转矢量流程步骤:
栅格转矢量流程器是在对栅格数据进行遍历搜索的过程中,在遍历过程中根据栅格转矢量条件,的某个具体参数,依据边界拓扑搜索模型进行计算,将计算中得到的节点数据,压入先入先出堆栈中,供多边形搜索时使用。栅格转矢量流程器见图8。
在此流程中,可以通过对栅格数据按照栅格数据的列数,划分出几组,同时进行并行搜索计算,其数据划分要求是:如第一组从0-1000,那么他的搜索范围是1-999,剩余一列不进行边界节点计算;第二组则从999-2000,那么他的搜索计算范围是1000-1999。即组的划分要求在开始计算列的前后都要保留一列,作为中心点像元在3*3像元矩阵计算中参照像元。
分组并行计算后,在每组的多边形搜索中,可能会出现多边形没有闭合的情况,需要对每组之间的未闭合的多边形按照节点间的指向和开始点坐标、结束点坐标方向进行判断,将没有闭合的多边形全部变成封闭多边形。
其具体划分为几组比较合适,则需要根据硬件系统的可使用资源状况进行选择。
对于边界拓扑搜索模型而言,边界节点的搜索过程是:首先从列方向开始,选择3列栅格数据,如第一次选择0,1,2列,第二次选择1,2,3列,一次增加一列,直到选择M-2,M-1,M列,完成栅格数据列方向的循环;结束边界拓扑搜索计算流程,列循环次数为M-2。
在每个列循环中嵌套一个行循环过程,行循环过程是:每次选择3行数据,构成3*3像元矩阵,如第一次选择0,1,2行,第二次选择1,2,3行,一次增加一行,直到选择N-2,N-1,N列,完成一次行方向的循环;进入下一个列循环。行循环次数为N-2。
从上述循环过程来看,他的行列循环次数正好对于原栅格数据的行列数。
在行循环中,对每次选取的3*3像元矩阵中的五个像元,将中心点像元与上部相邻、右侧相邻、下部相邻和左侧相邻的这四个相邻像元进行比较计算,其计算结果构成一个四位编码,如果编码不为0000,则保存这个编码为节点数据。在保存节点数据时,还需要根据节点数据结构内容要求进行保存。节点数据结构见表5。
表5中的信息,是充分利用了边界拓扑搜索计算模型的优势,将节点中所包含的拓扑信息进行显化处理,其内容如下:
表5节点数据结构表
多边形搜索调度与控制流程步骤:
在进行分层次边界拓扑搜索模型进行计算时,如果有节点数据产生,并压入先入先出堆栈时,启动多边形搜索控制与调度流程。
当启动多边形搜索计算流程时,也需要建立一个针对多边形搜索的并行计算资源使用情况登记表,记录启动并行计算资源的数量、运行状况、多边形序号、是否接收节点、非正常退出等信息。用来管理和监控多个多边形搜索计算的并行计算流程。
多边形搜索控制与调度流程步骤;
多边形搜索控制与调度流程(简称调度与控制流程)。是一个从节点堆栈中取出节点数据操作,分发给多边形搜索计算流程(简称搜索计算流程);同时接收从搜索计算流程中返回的计算结果、运行状态、启动创建多边形矢量数据流程(简称创建矢量数据流程器),并对返回结果和状态进行处理的一个循环操作流程。
在调度与控制流程启动时,同时启动一个搜索计算流程,并将从节点堆栈中读取的第一个节点数据,分发给这个搜索计算流程,此流程将返回接收节点信息,流程处于等待接收节点数据状态。继续从节点堆栈中取出节点数据(包括第二个节点数据),分发给已经启动并且处于等待状态的搜索计算流程,如果这个节点数据满足多边形搜索条件,返回接收节点信息和流程处于等待接收节点数据状态。多边形搜索调度与控制流程见图8所示。
如上所述,对本发明的实施例进行了详细地说明,但是只要实质上没有脱离本发明的发明点及效果可以有很多的变形,这对本领域的技术人员来说是显而易见的。因此,这样的变形例也全部包含在本发明的保护范围之内。