1.一种拓扑保真的全球离散格网系统中矢量要素格网化方法,其特征在于:依次包括以下步骤:(1)输入需要格网化的原始矢量数据,然后确定原始矢量数据的类型;此处原始矢量数据类型包括矢量点数据、矢量线数据和矢量面数据;
(2)基于九交模型分别给出矢量点数据、矢量线数据和矢量面数据在格网化过程中可能出现的拓扑畸变;
(3)对各个原始矢量数据类型均分别进行以下处理:初始格网化、拓扑畸变检测和拓扑畸变修复;
(4)按照模型格式输出最终格网化结果;
其中,所述初始格网化通过原始矢量数据的地图比例尺确定初始格网层级,而后对矢量点数据、矢量线数据和矢量面数据分别确定表达实体几何的所有格元;
所述拓扑畸变检测根据格元空间关系确定初始格网化后的拓扑关系,并找出拓扑关系发生改变的对象,并记录导致畸变的相关格元;
所述拓扑畸变修复利用格网系统的多分辨率层次特性,将上一步记录的格元替换为分辨率更高的格元,确认这些格元的归属并重新检测拓扑畸变,递归修复直至所有拓扑畸变都消失。
2.根据权利要求1所述的拓扑保真的全球离散格网系统中矢量要素格网化方法,其特征在于:所述步骤(2)中拓扑畸变包括下述情况:(A)根据九交模型,点是没有边界的零维对象,点之间的拓扑关系有相等和相离两种;
若原始两矢量点的空间坐标完全相同,则这两矢量点在拓扑上相等,否则相离;矢量点格网化后,原本两相离的矢量点若转换为同一格元,此时点对象的拓扑关系就由相离变为相等;
(B)根据九交模型,线对象之间的拓扑关系有相离与交叠两种;若构成两矢量线的直线段存在交点,则这两矢量线交叠,否则为相离;矢量线格网化后,原本相离的两矢量线转换而成的格元串若包含相同格元,此时线对象的拓扑关系由相离变为交叠。
(C)根据九交模型,面对象之间的拓扑关系有相接和相离两种;矢量面数据在格网化后,出现5类拓扑变化,即包括:对于单个面,格网化后出现面完全消失及一个面被分割为多个面的情况,对于两个面之间,原本相接的两面若变得相离,原本相离的也变为相接,对于三个面之间出现失去包围关系的情况。
3.根据权利要求1所述的拓扑保真的全球离散格网系统中矢量要素格网化方法,其特征在于:所述步骤(3)中每个矢量点均包括一个x坐标值和一个y坐标值,点对象在特定格网层级用单个格元表示,对矢量点数据进行格网化的具体步骤如下:
1)、初始格网化:将表达矢量点空间位置的地理坐标转换为相应的格元编码,格元编码标识的格元即为矢量点所在的球面格网区域;
2)、检测该拓扑畸变时,只需遍历所有点对象,对比当前点对象与其他点对象在原始矢量数据与初始格网化后的拓扑关系,即:假设点i与j的原始空间坐标为(xi,yi)及(xj,yj),而初始格网化后的格元编码为codei及codej,若xi≠xj||yi≠yj,而codei=codej,则表明点i与点j在初始格网化后产生拓扑关系畸变,由相离变为相等;
3)、修复拓扑畸变时,对所有发生拓扑畸变的点对象,使用更高一层级的格元描述其位置信息,若此时还存在拓扑畸变,则再使用更高一层级格元,递归此过程直至所有拓扑畸变都被消除。
4.根据权利要求1所述的拓扑保真的全球离散格网系统中矢量要素格网化方法,其特征在于:所述步骤(3)中每个矢量线对象在特定格网层级用一组连续相邻格元表示,对矢量线数据进行格网化的具体步骤如下:
1)、原始矢量线数据记录有直线段端点,在初始格网化时需根据直线段的两端点确定直线段所经过的格元串:将平面直线距离拓展为球面大圆弧距离,并结合球面格元的邻接搜索算法,将平面三角形格网上的顶点到顶点离散线算法运用到球面三角形格网中;
2)、检测该拓扑畸变时,只需对比线对象初始格网化前后的拓扑关系即可,即:若原始矢量线k与t没有交点,而初始格网化后表达k与t的格元串编码集合codeSetk和codeSett,交集不为空,即 则表明线i与j在初始格网化后产生拓扑关系畸变,由相离变为交叠;
3)、修复拓扑畸变时,对所有发生拓扑畸变的相关线对象,使用更高一层级的格元描述其位置形态,并递归直至所有线对象间的拓扑关系都被修复。
5.根据权利要求4所述拓扑保真的全球离散格网系统中矢量要素格网化方法,其特征在于:在对矢量线数据初始格网化时,采用以下方法将构成矢量线的所有直线段格网化:步骤1:输入直线段两端点,将两端点转换为格元表示,以确定格元串的起始格元startCell和终止endCell。
步骤2:新建空格元串列表,初始化当前格元curCell为起始格元startCell。
步骤3:若当前格元curCell为终止格元endCell,输出格元串列表,算法结束;否则进入下一步。
步骤4:将当前格元curCell加入到格元串列表中。
步骤5:根据球面格元的邻接搜索算法获得当前格元curCell的三个边邻接格元adjCell1、adjCell2及adjCell3。
步骤6:对于不在格元串列表中的邻接格元,计算各顶点到直线段的球面大圆弧距离,获得每个邻接格元距直线段的最远距离,取最远距离最小的邻接格元为下一当前格元curCell,返回步骤3。
6.根据权利要求1所述的拓扑保真的全球离散格网系统中矢量要素格网化方法,其特征在于:所述步骤(3)中对矢量面数据格网化的具体步骤如下:
1)、根据原始矢量面与格元的位置关系,将原始矢量面的边界相交的格元归成三类:
(1.1)稳定格元:对于某矢量面,完全被其内外环之间范围所包含的格元即为该面的稳定格元,由于稳定格元只与单个矢量面相交,所以若根据面积占优原则,某矢量面的稳定格元只能被归属为该面,不存在其他可能;
(1.2)不稳定格元:对于某矢量面,与其外环或内环相交的格元为该面的不稳定格元,因为不稳定格元可能与多个矢量面相交,所以若根据面积占优原则,某矢量面的不稳定格元可能被归属为该面,也可能被归属为与其相交的其他面;
(1.3)关键格元:对于某矢量面,与其狭窄区域相交的格元为该面的关键格元,关键格元也与矢量面的边界相交,是特殊的不稳定格元,因为是不稳定格元集中聚集的区域,所以某矢量面的关键格元部分,容易被错误划分,从而可能会导致该面的拓扑关系发生变化;
2)、初始格网化:使用面积占优原则来确定不稳定格元的归属,同时记录原始矢量面之间的拓扑邻接关系,同时,为记录各面的稳定格元、不稳定格元及关键格元,为每个面创建了三个不重复列表:对于某面,若某格元为该面的稳定格元,则将该格元的编码加入到该面的稳定格元编码列表中;若某格元为该面的不稳定格元,则将该格元的编码加入到该面的不稳定格元编码列表中;若某格元为该面的关键格元,则将该格元的编码加入到该面的关键格元编码列表中;
3)、检测拓扑畸变:首先根据两个邻接矩阵Mo及Mg来检测拓扑畸变,Mo及Mg为n×n的邻接矩阵,n为原始矢量面数量,当面r与面s邻接时,M[r][s]=M[s][r]=1,否则M[r][s]=M[s][r]=0;
记录原始矢量面拓扑邻接关系的矩阵Mo,通过查询原始矢量数据的拓扑关系可获得,而对于记录初始格网化后各面之间拓扑邻接关系的Mg,则需要再根据初始格网化过程中记录的不稳定格元判断得到,若对于某不稳定格元,假设该不稳定格元被归属为面r,而它的某个邻接格元被归属为面s(r≠s),则可知格网化后面r与面s是邻接的,并置Mg[r][s]=Mg[s][r]=1,遍历所有不稳定格元,即可得到格网化后所有面之间的拓扑关系邻接矩阵Mg;
使用邻接矩阵Mo和Mg检测出格网化后的四类拓扑畸变:若对于面r,其格网化后不与其他任何面邻接,即 则面r在格网化后消失;若Mo[r][s]=1,且Mg[r][s]=0,则面r和面s的拓扑关系由相邻变成相离;若Mo[r][s]=0,且Mg[r][s]=1,则面r和面s的拓扑关系由相离变成相邻;若对于面r,其格网化后有且只有一个面s使Mo[r]s]=
1,而存在多于一个面h使Mg[r][h]=1,则面r原本被面s包围,但格网化后包围关系消失;
对于另一类拓扑畸变,即矢量面格网化后被分割,此时面的边界将会被分割成若干个不连通的部分,对于每一个面,首先通过不稳定格元找到该面格网化后的边界:若面对象的某不稳定格元被归属为该面,则该边界格元是该面的边界,否则其被归属为该面的邻接格元为该面的边界;而后以边界的一格元为起点,使用洪水填充算法遍历边界格元,若有边界中的格元未被填充,则说明边界不连通,该面格网化后被分割;
4)、检测完各类拓扑畸变后,所有拓扑关系在格网化后发生改变的面都已被找到;而后根据面积占优原则确定所有新格元的归属,这些新格元中,若某格元完全被某面包含,则将其归为该面的稳定格元,否则将新格元归为该面的不稳定格元,再根据不稳定格元确定该面的关键格元;最后,返回拓扑畸变检测步骤,如果还存在畸变则递归修复直至所有拓扑畸变都消失。